Розв’язування диференційних рівнянь

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Чисельні методи в інформатиці

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Інститут ІКНІ Кафедра ПЗ ЗВІТ до лабораторної роботи № 5 На тему: “ Розв’язування диференційних рівнянь ” З дисципліни: “ Чисельні методи в інформатиці ” Мета роботи: навчитись обчислювати розв’язок задачі Коші (нелінійного диференційного рівняння першого порядку) на інтервалі [a,b], застосовуючи метод Ейлера або метод Рунге-Кутта 4-го порядку. Теоретичні відомості Розглянемо диференційне рівняння першого порядку:  (4.6.1) і початкову умову:  , де y0 – надано. Диференційна задача (4.6.1) зветься задачею Коші. Вона часто застосовується для моделювання динаміки різноманітних процесів. У такому разі t – час, y – величина, що описує стан об’єкту, y0 – його початковий стан. Нехай t0,t1,...,tN – моменти часу, для яких треба обчислити стан об’єкту. Величина hk = tk+1-tk зветься кроком інтегрування. Для розв’язування задачі Коши застосовуються алгоритми як з постійним, так і з змінним кроком. Далі будемо вважати, що крок є постійним, тоді, припускаючи, що t0=0, будемо мати:  . Будемо використовувати позначення:  Найбільш простим методом розв’язування задачі Коші є метод Ейлера. Робоча формула методу Ейлера має такий вигляд:  . (4.6.2) Більш точний модифікований метод Ейлера передбачає обчислення yk+1 у два етапи: спочатку обчислюється значення похідної Pk для моменту tk :  , (4.6.3) далі отримується величина yk+1:  . (4.6.4) Метод Рунге-Кутта четвертого порядку має таку схему. Спочатку обчислюються допоміжні величини:  (4.6.5) тоді обчислюється наступне значення шуканої функції:  . (4.6.6) Завдання Застосовуючи метод Ейлера або метод Рунге-Кутта 4-го порядку, знайти розв’язок задача Коші (нелінійного диференційного рівняння першого порядку) на інтервалі [a,b].  a = 0 , b = 2 , x(a) = 1 Текст програми unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, ExtCtrls; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; GroupBox1: TGroupBox; Label2: TLabel; Label3: TLabel; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Label4: TLabel; Label5: TLabel; Image1: TImage; Bevel1: TBevel; Label6: TLabel; XPManifest1: TXPManifest; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; k:integer; const a:integer = 0; b:integer = 2; y0:integer = 1; implementation {$R *.dfm} function Func(x,t:real):real; begin result:=sqr(cos(5*t))-4*sqr(x); end; function Poxidna(t:real):real; begin result:=-5*sin(10*t); end; function metodEjlera:real; var i:integer; y,h,t:real; begin y:=y0; h:=(b-a)/k; for i:=0 to k do begin t:=i*h; y:=y+h*Func(y,t); end; result:=y; end; function metodEjlera2:real; var i:integer; y,h,t:real; begin y:=y0; h:=(b-a)/k; for i:=0 to k do begin t:=i*h; y:=y+0.5*h*(Func(y,t)+Func(y+h*Poxidna(t),t+h)); end; result:=y; end; function metodRynge_Kytta:real; var i:integer; y,h,t,t2,t3,p1,p2,p3,p4:real; begin y:=y0; h:=(b-a)/k; for i:=0 to k do begin t:=i*h; t2:=(i+1)*h; t3:=(i+2)*h; p1:=Func(y,t); p2:=Func(y+0.5*h*Poxidna(t),t+0.5*h); p3:=Func(y+0.5*h*Poxidna(t2),t+0.5*h); p4:=Func(y+h*Poxidna(t3),t+h); y:=y+(h/6)*(p1+2*p2+2*p3+p4); end; result:=y; end; procedure TForm1.Button1Click(Sender: TObject); begin k:=Round(1/StrToFloat(Edit1.Text)); Edit2.Text:=FloatToStr(metodEjlera); Edit3.Text:=FloatToStr(metodEjlera2); Edit4.Text:=FloatToStr(metodRynge_Kytta); end; end. Протокол роботи програми  Висновок: під час виконання лабораторної роботи я навчився обчислювати розв’язок задачі Коші (нелінійного диференційного рівняння першого порядку) на інтервалі [a,b], застосовуючи метод Ейлера або метод Рунге-Кутта 4-го порядку.
Антиботан аватар за замовчуванням

31.03.2013 16:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!