Розрахунок інтегралів за допомогою методів Гауса та Чебишева
Розрахунок інтегралів за допомогою методів Гауса та Чебишева
7 Міністерство освіти і науки України Вінницький державний технічний університетІнститут ІНАЕКСУФакультет АКСУКафедра АІВТКурсова робота з дисципліни :«Обчислювальні методи та застосування ЕОМ»Керівник професор, д.т.н._______________ Квєтний Р.Н.Студент гр. 3АВ-0_______________ Кучерявий В.Р.2003ЗмістЗавдання1.Загальні відомості 2.Вибір методу інструментальних засобів вирішення задач 3.Функціональне призначення програми 4.Розробка та опис логічної частини програми5.Керівництво оператору6.Результати обчисленьВисновкиЛітератураДодаток АБлок-схема алгоритмуДодаток БЛістинг програмиАнотаціяВ даній курсовій роботі проведено дослідження різницевого методу для розв'язання крайової задачі. Дослідження проводиться на прикладі заданого диференційного рівняння. Дається опис методу та задачі в цілому. 1. Загальні відомостіФормула ЧебишеваФормула обчислення може бути приведена до вигляду (1)заміною зміннихПри виведенні формули Чебишева використовуються такі умови:* коефіцієнти АІ рівні між собою;* квадратурна формула (1) точна для всіх поліномів до степеня п включно.При цих умовах формула (1) має вигляд: (2)Для знаходженнявикористовуємо другу умову, згідно з якою формула (2) повинна бути точною для функції виглядуПісля підстановки цих функцій в (2) отримаємо систему рівняньСистема рівнянь має розв'язок при п <8 та п=9. В цій обмеженій точності і полягає недолік формули Чебишева. Значеннядля різних п наведені в довідниках.Для довільного інтервалу (а, b) формула (2) приймає виглядДеПохибка обчислень за методом Чебишева:Формула ГауссаФормула Гаусса називається формулою найвищої алгебраїчної точності. Для формули розрахунку найвища точність може бути досягнута для поліномів степеня (2п - 1), які визначаються 2n постійними і (і=1,2,...,n).Завдання полягає у визначенні коефіцієнтіві абсцис точок . Для знаходження цих постійних розглянемо виконання формули розрахунку для функцій виглядуВраховуючи, щоотримаємо систему рівняньЦя система нелінійна, і її звичайне розв'язання пов'язане із значними обчислювальними труднощами. Але якщо використовувати систему для поліномів виглядуде - поліном Лежандра, тоді її можна звести до лінійної відносно коефіцієнтів з заданими точками. Оскільки степені поліномів в співвідношенні не перевищують 2п -1, повинна виконуватися система (4) і формула (5) приймає виглядВ результаті властивості ортогональності ліва частина виразу дорівнює 0, тодіщо завжди забезпечується при будь-яких значеннях в точках, які відповідають кореням відповідних поліномів Лежандра.Підставляючи ці значення в систему і враховуючи перші n. рівнянь, можна визначити коефіцієнти.Формула розрахунку, де - нулі полінома Лежандра, авизначаються із системи, називається формулою Гаусса.Значеннядля різних п наведені в довідниках.Для довільного Інтервалу (а,b) формула для методу Гаусса приймає виглядДеОцінка похибки формули Гаусса з п вузлами визначається із співвідношенняде- максимальне значення похідної на ділянці 2.Вибір методу інструментальних засобів вирішення задачРозв'язок даної задачі реалізовано на ЕОМ, причому було складено алгоритм та програму в середовищі Borland Delphi 7. Програма є досить простою та зрозумілою для користувача середнього рівня. Готову програму можна використовувати навіть на мінімальних системних параметрах процесора типу Intel P-100, 8 Мb ОЗУ та операційній системі MS-Windows 95. 3. Функціональне призначення Розроблена програма дозволяє розрахувати вказаний інтеграл: , методами Чебишева та Гауса з кроками 0,1 і 0,05. Результати виводяться у текстовій формі. 4. Розробка та опис логічної частини програми В даній курсовій роботі було розроблено програмне забезпечення для розв'язання та дослідження заданого диференційного рівняння. Розвязок ведеться за різницевим алгоритмом. Кодування на мові Паскаль проводилося з застосуванням інтуїтивно-зрозумілих назв змінних та процедур. Також відступи та табуляція дозволяє досить легко збагнути структуру програми. В інтерфейсі також не допущено зайвих елементів. 5. Керівництво оператору Для завантаження програми необхідно запустити програмний файл Project1.exe. При цьому зявиться вікно (рис. 1), де можна задати початкові умови, переглянути постановку задачі а також ознайомитися з розв'язком при натисненні кнопки Розвязок. Рисунок 1. Інтерфейс програми. 6. Результати обчислень Результати обчислень: Метод Гауса: 0,9962219100 Похибка: 0,0004163754 Метод Чебишева: 0,9961046200 Похибка: 0,0111120270 Точне розвязання (Mathcad): 1,1367262 Висновки При виконані даної курсової роботи я навчилась розраховувати інтеграли за допомогою методів Гауса та Чебишева. Було відмічено, що метод Гауса є значно точнішим від Чебишева, за що і отримав назву метода найвищої математичної точності. Література Самарський А.А. Вступ в чисельні методи. - М.: Наука, 1987. - 286 с. 2.Квєтний Р.Н., Маліков В.Т. Обчислювльні методи та використання ЕОМ. Вища школа, 1989 - 55 с., 104 с. Додаток A - Алгоритм роботи програми Додаток Б - Лістинг програми unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Math; type TForm1 = class(TForm) GroupBox2: TGroupBox; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; Memo1: TMemo; LabeledEdit1: TLabeledEdit; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); begin Form2.ShowModal; end; procedure TForm1.BitBtn2Click(Sender: TObject); const c = 1.5; d = 2.0; n = 3; tc:array[1..3] of extended = (-0.707107, 0, 0.707107); tg:array[1..3] of extended = (-0.77459667, 0, 0.77459667); Ag:array[1..3] of extended = (5/9, 8/9, 5/9); function f(x:extended):extended; begin result := c*x/2+1/cos(d*x); end; function f_4(x:extended):extended; begin result := power(d,4)* (24-20*power(cos(d*x),2)+ power(cos(d*x),4))/ power(cos(d*x),5); end; function f_6(x:extended):extended; begin result := -power(d,6)* (-720-840*power(cos(d*x),2)- 182*power(cos(d*x),4)+power(cos(d*x),6))/ power(cos(d*x),7); end; var i :integer; h, x,a,b:Extended; sumC,sumG,iG,iC,ec,max:Extended; errC,errG:Extended; begin try h:=StrToFloat(LabeledEdit1.Text); a := 0.0; b := 0.785-h; errC:=0; errG:=0; x:=a; sumC:=0; sumG:=0; while x<b do begin iG:=0; iC:=0; ec:=0; max:=0; for i:=1 to 3 do begin iC:=iC+(f((2*x+h)/2+h/2*tC[i])); iG:=iG+(Ag[i]*f((2*x+h)/2+h/2*tG[i])); ec:=ec+power((2*x+h)/2+h/2*tC[i]-(2*x+h)/2,n+1)*f_4((2*x+h)/2+h/2*tC[i]); if f_6((2*x+h)/2+h/2*tG[i])>max then max:=f_6((2*x+h)/2+h/2*tG[i]); end; iC:=iC*h/n; iG:=iG*h/2; sumC:=sumC+iC; sumG:=sumG+iG; max:=power(h,2*n+1)*power(6,4)*max/power(2,2*n+1)/power(120,3)/(2*n+1); if h/18*ec>errC then errC:=h/18*ec; if max>errG then errG:=max; x:=x+h; end; a := 0.785+h; b := 1; x:=a; while x<b do begin iG:=0; iC:=0; ec:=0; max:=0; for i:=1 to 3 do begin iC:=iC+(f((2*x+h)/2+h/2*tC[i])); iG:=iG+(Ag[i]*f((2*x+h)/2+h/2*tG[i])); ec:=ec+power((2*x+h)/2+h/2*tC[i]-(2*x+h)/2,n+1)*f_4((2*x+h)/2+h/2*tC[i]); if f_6((2*x+h)/2+h/2*tG[i])>max then max:=f_6((2*x+h)/2+h/2*tG[i]); end; iC:=iC*h/n; iG:=iG*h/2; sumC:=sumC+iC; sumG:=sumG+iG; max:=power(h,2*n+1)*power(6,4)*max/power(2,2*n+1)/power(120,3)/(2*n+1); if h/18*ec>errC then errC:=h/18*ec; if max>errG then errG:=max; x:=x+h; end; with Memo1.Lines do begin clear; Add('Результати обчислень: '); Add(' Метод Гауса: '+FloatToStrF(sumG,ffFixed,8,10)); Add(' Похибка: '+FloatToStrF(errG,ffFixed,8,10)); Add(' Метод Чебишева: '+FloatToStrF(sumC,ffFixed,8,10)); Add(' Похибка: '+FloatToStrF(errC,ffFixed,8,10)); Add(' Точне розвязання (Mathcad): '+FloatToStrF(1.1367262217813367605,ffFixed,8,10)); end; except on EConvertError do Application.MessageBox('Неправильно введен_ дан_', 'Увага'); end; end; end.
|