МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №4
з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем»
на тему: «Числове інтегрування функції однієї змінної»
Варіант 3
Львів 2015
МЕТА РОБОТИ
Oзнайомлення з методами наближеного інтегрування означених інтегралів.
ЗАВДАННЯ
Скласти програму обчислення означеного інтеграла вказаним викладачем методом. Методи прямокутників, трапецій і Сімпсона зі змінним кроком інтегрування, Гауса і Чебишева – зі сталим.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Метод Сімпсона
Цей метод значно точніший у порівнянні з методами прямокутників або трапецій.. Для досягнення тої ж точності в ньому можна брати менше число n ділянок розбиття та відповідно більший крок h, а при одному й тому ж кроці h він дає менші абсолютну та відносну похибки.
Розіб’ємо відрізок на парне число 2n частин довжиною
(9)
Нехай точкам розбиття ,, відповідають значення підінтегральної функції (тобто ,, i=)
Рис. 4
На відрізку проведемо через три точки параболу, якою замінимо підінтегральну функцію .
Рівняння параболи
(10)
(причому значення коефіцієнтів А, В, С невідомі). Якщо замінити площу криволінійної трапеції на відрізку площею криволінійної трапеції, обмеженої параболою (10), то можна записати
(11)
Винесемо спільний множник
(12)
Невідомі коефіцієнти А, В, С в рівняннях (10), (11) шукаються з умови, що при
Враховуючи, що
(13)
Перемножуючи другу рівність (13) на 4 та додаючи всі три рівності, знайдемо
(14)
що співпадає з квадратною дужкою рівняння (12). Отже,
(15)
Очевидно, що для кожної наступної пари ділянок одержимо таку ж формулу:
(16)
Додаючи рівності вигляду (15) та (16) по всіх відрізках, одержимо :
(17)
Це і є формула Сімпсона. Похибка методу (формули парабол) визначається за формулою :
, (18)
При написанні програм доцільно формулу Сімпсона зобразити у вигляді
, (19)
де , тобто i=
СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ФУНКЦІЙ, ВИКОРИСТАНИХ У ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ
a – змінна дійсного типу, яка позначає початок інтервалу;
b – змінна дійсного типу, яка позначає кінець інтервалу;
main() – головний метод;
ТЕКСТ ПРОГРАМИ
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <conio.h>
using namespace std;
double func(double x)
{
double r;
r = 1/sqrt(1+3*x+2*pow(x,2));
return r;
}
double simpson(double(*Fx)(double), double a, double b, double h);
int main(int argc, char* argv[])
{
double I;
double a, b;
double h;
cout << "\n Vvedit parametru:\n" << endl;
cout << "\t Enter a = ";
cin >> a;
cout << "\t Enter b = ";
cin >> b;
cout << "\t Enter h = ";
cin >> h;
I = simpson(&func, a, b, h);
cout << endl << " I = " << I;
_getch();
}
double simpson(double(*Fx)(double), double a, double b, double h)
{
double I, I2 = 0, I4 = 0;
I4 = Fx(a + h);
for (int k = 2; k <= b; k += 2)
{
I4 += Fx(a + (k + 1)*h);
I2 += Fx(a + k*h);
}
I = Fx(a) + Fx(b) + 4 * I4 + 2 * I2;
I *= h / 3;
return I;
}
РЕЗУЛЬТАТ РОБОТИ ПРОГРАМИ
ВИСНОВКИ
Після виконання цієї лабораторної роботи я ознайомився з методами наближеного інтегрування означених інтегралів. У цій лабораторній роботі мені потрібно було скласти програму для обчислення означеного інтеграла методом Сімпсона.