Міністерство освіти і науки України
Національний університет „ Львівська Політехніка ”
ІКТА
Кафедра БІТ
З В І Т
До лабораторної роботи №4
з курсу:
„ Комп’ютерні методи дослідження інформаційних процесів та систем ”
на тему:
„ Чисельне інтегрування функцій однієї змінної ”
Варіант 18
Львів – 2011
Мета роботи – ознайомлення з методами наближеного інтегрування означених інтегралів.
Метод Сімпсона
Цей метод значно точніший у порівнянні з методами прямокутників або трапецій.. Для досягнення тої ж точності в ньому можна брати менше число 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=
Оцінка похибки за правилом Рунге
Оцінка похибки методів інтегрування за формулами (4), (8), (18) досить часто виявляється малоефективною через труднощі, пов’язані з оцінкою похідних підінтегральної функції . Тому на практиці доволі часто користуються прийомом, запропонованим Рунге. Нехай точне значення інтеграла , - його наближене значення, обчислене за однією з квадратурних формул з кроком , - наближене значення інтеграла, обчислене за тою ж формулою з кроком .
Граничні значення абсолютних похибок можна записати у вигляді :
(20)
k - порядок точності формули ;
(21)
М - добуток сталої на похідну.
Відповідно можна записати
,
.
Віднімемо ці рівності:
Одержимо оцінку похибки за правилом Рунге (враховуючи (21)):
(22)
Користуючись формулою (22), можна уточнити наближене значення інтеграла, вважаючи, що:
Таку формулу називають формулою екстраполяції за Річардсоном.
Оцінка похибки за методом Рунге для формул прямокутників та трапецій (к=2):
,
для формул Сімпсона ():
.
Прийом багатократного зменшення кроку та оцінки похибки можна запрограмувати та одержати алгоритм автоматичного вибору кроку для наближеного обчислення інтеграла з заданою точністю.
Правило Рунге використовують, якщо задається гранична абсолютна похибка обчислення інтегралу.
Для одержання ефективної програми (при оцінці похибки за правилом Рунге) слід враховувати наступне. В формулах прямокутників, трапецій і Сімпсона при подвоєнні числа кроків нема необхідності обчислювати значення підінтегральної функції знову в усіх вузлах сітки, оскільки вузли сітки, одержані при числі кроків n , є вузлами сітки і при числі кроків 2n.
Завдання
Скласти програму обчислення означеного інтеграла вказаним викладачем методом.Методи прямокутників, трапецій і Сімпсона зі змінним кроком інтегрування,
Гаусса і Чебишова – з сталим.
№ вар.
Підінтегральна функція
Інтервал інтегрування
Метод
Абсолютна похибка
18
[0; 2]
Сімпсона
0,001
Блок-схема алгоритму програми
Схема до методу Сімпсона
Текст програми
#include <math.h>
#include <iostream>
#include <conio.h>
using namespace std;
double func(double x)
{
double r;
r = sin(pow(x,2));
return r;
}
double simpson( double (*Fx)(double), double a, double b, int h);
int main(int argc, char* argv[])
{
double I;
double a,b;
int h;
cout << " Enter a = ";
cin >> a;
cout << " Enter b = ";
cin >> b;
cout << " Enter h = ";
cin >> h;
I = simpson( &func, a, b, h );
cout << endl << " I = " << I;
getch();
}
double simpson( double (*Fx)(double), double a, double b, int 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;
getch(I);
}
Виконання програми
Висновок
В даній лабораторної роботи я ознайомився з методом чисельного
інтегрування функцій однієї змінної. В роботі я склав програму для знаходження інтеграла з граничною абсолютною похибкою Е = 0,001, відокремлений на відрізку [a, b] методом Сімпсона.