Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Міністерство освіти і науки, молоді та спорту України
Львівський національний університет імені Івана Франка
Факультет електроніки
Звіт
Про виконання лабораторної №8
«Чисельне інтегрування. Формули Грегорі»
Виконав :
Студент групи ФЕІ-33
Ходонович В.Р
Перевірив :
доц. Шувар Р. Я
Львів-2011
Мета: вивчити методи чисельного інтегрування з використанням квадратурних формул Грегорі.
Основні відомості:
Найпростішою квадратурною формулою Ньютона-Котеса є формула трапецій, яка використовує два вузли
Для побудови більш точніших формул у випадку квадратурних формул Ньютлона-Котеса використовується більша кількість вузлів. Так для побудови квадратурної формули Сімпсона ми використовуємо три вузли. Можна піти іншим шляхом і для підвищення точності квадратурної формули використовувати інформацію не тільки про значення функції у вузлі, а про значення її похідних. Побудовані таким чином формули для чисельного інтегрування називаються квадратурними формулами Грегорі.
Побудуємо квадратурну формулу Грегорі на двох вузлах та у вигляді
Обмежимось спочатку двома першими членами розкладу
Значення коефіцієнтів та знайдемо за допомогою методу невизначених коефіцієнтів. Отримаємо систему рівнянь:
ЇЇ розвязок . Врахуємо тепер наступні два члени розкладу. Отримаємо формулу:
Значення коефіцієнтів та знайдемо методом невизначених Отримаємо систему рівнянь:
Задамо умову, що значення коефіцієнтів та є такими самими, що у попередньому випадку, тобто . Отримаємо
Знаходимо
, ;
Ми вивели формулу:
Отримана формула є точною для многочленів . Для побудови більш точніших формул використовуємо інформацію про значення вищих похідних
Накладаємо умову, що значення коефіцієнтів , які ми отримали раніше є ті ж самі, що і в попередній формулі. Отримаємо систему рівнянь
Знаходимо значення коефіцієнтів
Побудуємо наступну формулу з використанням значень третіх похідних.
Накладемо умову, що значення коефіцієнтів є ті ж самі, що в попередніх двох формулах, тобто ми шукатимемо квадратурну формулу наступного вигляду
Методом невизначених коефіцієнтів отримаємо систему рівнянь
Знаходимо значення коефіцієнтів
,
Ми отримали наступну формулу Грегорі
Отримана формула є точною для . Аналогічно можна побудувати і більш точніші формули. Перевагою такого підходу, що для підвищення точності необхідно не використовувати нову формулу, як у формулах Ньютона-Котеса, а обрахувати тільки новий доданок.
Побудуємо складову формулу Грегорі для відрізків:
Для обчислення похідних в крайніх точках і апроксимуємо підінтегральну функцію інтерполяційним многочленом Ньютона. Для вузла отримаємо:
Якщо обмежитись першими трьома членами, то ця формула буде точною для многочленів степені .
Обчислимо першу похідну
Аналогічно для вузла :
Врахувавши, що вузли є рівновіддаленими, виразимо розділені різниці через відповідні скінченні різниці.
В результаті отримаємо формулу, яка називається квадратурною формулою Грегорі:
Ця формула є точною для многочленів степеня . Аналогічно можна отримати і біль точнішу формулу:
Хід роботи
допомогою формули Грегорі.
Тест програми:
Program Lab8;
uses crt;
var
N :integer;
integ0 , integ :extended;
fout :text;
k, a, b, h :extended;
function func(x:extended):extended;
Begin
func := x*exp(x);
End;
function intfunc(xi:extended):extended;
Begin
intfunc := xi*exp(xi)-exp(xi);
End;
function factorial(n :extended):extended;
Begin
if (n=0) then
factorial := 1
else
Begin
if (n=1) then
factorial := 1
else
factorial := n*factorial(n-1);
End;
End;
function Cki (n:extended; k:extended):extended;
Begin
Cki := factorial(n)/(factorial(k)*factorial(n-k));
End;
function minusone(n:integer):integer;
Begin
if (n mod 2 = 0) then
minusone:=1
else
minusone := -1;
End;
function Rizn_up(kriz:integer):extended;
var
iriz :integer;
tempriz :extended;
Begin
tempriz:=0;
for iriz:=0 to kriz do
Begin
tempriz := tempriz + Cki(kriz,iriz)*minusone(kriz-iriz)*func(a+iriz*h);
End;
Rizn_up:=tempriz;
End;
function Rizn_down(krizd:integer):extended;
var
irizd :integer;
temprizd :extended;
Begin
temprizd:=0;
for irizd:=0 to krizd do
Begin
temprizd := temprizd + Cki(krizd,irizd)*minusone(irizd)*func(b-irizd*h);
End;
Rizn_down:=temprizd;
End;
BEGIN
clrscr;
a := 1e-5;
b := 1;
N := 300;
h := (b-a)/N;
Integ0 := intfunc(b)-intfunc(a);
assign(fout, 'Lab8.txt');
rewrite(fout);
Integ := 0;
Integ := Func(a)+func(b);
for n:=1 to N-1 do
Integ := Integ+2*func(a+n*h);
Integ := Integ*h/2;
Writeln(fout, 1, ' ', abs(Integ-Integ0));
Integ:=Integ + h*(Rizn_up(1)-Rizn_down(1))/12;
Writeln(fout, 2, ' ', abs(Integ-Integ0));
Integ:=Integ - h*(Rizn_up(2)+Rizn_down(2))/24;
Writeln(fout, 3, ' ', abs(Integ-Integ0));
Integ:=Integ + 19*h*(Rizn_up(3)-Rizn_down(3))/720;
Writeln(fout, 4, ' ', abs(Integ-Integ0));
Integ:=Integ - 3*h*(Rizn_up(4)+Rizn_down(4))/160;
Writeln(fout, 5, ' ', abs(Integ-Integ0));
Integ:=Integ + 863*h*(Rizn_up(5)-Rizn_down(5))/60480;
Writeln(fout, 6, ' ', abs(Integ-Integ0));
Integ:=Integ - 275*h*(Rizn_up(6)+Rizn_down(6))/24192;
Writeln(fout, 7, ' ', abs(Integ-Integ0));
close(fout);
END.
Функція y(x)= x*exp(x);
Межі інтегрування: (0;1).
Рис. . Графік залежності точності обчислення від числа використаних складових в формулі Грегорі
Висновки:
На даній лабораторній роботі я вивчив методи чисельного інтегрування з використанням квадратурних формул Грегорі. Результати вимірювань показав на графіку, що точність інтегрування зростає при рості числа доданків у формулі Грегорі.