Главная » Файлы » Лабораторные работы » Лабораторные работы |
Методи наближеного розв’язання звичайних диференціальних рівнянь та їх систем
[ Скачать с сервера (151.5 Kb) ] | 23.05.2017, 00:45 |
Постановка задачі. Знайти наближений (числовий) розв’язок: 1) скалярного диференціального рівняння першого порядку 2) системи звичайних диференціальних рівнянь 3) диференціального рівняння другого порядку Всі завнання виконати двома методами: a) методом Ейлера; b) методом Рунге-Кутта та побудувати графіки одержаних розв’язків. До всіх методів розробити схеми алгоритмів та програми. Результати перевірити за допомогою математичного пакету MathCad. До звіту включити короткі теоретичні відомості по кожному методу, відповідні схеми алгоритмів та програми, результати обчислень, графіки одержаних розв’язків. Короткі теоретичні відомості Для наближеного розв’язання задачі Коші ( ) відрізок ділиться на частин з кроком . Проінтегрувавши рівняння 1 на інтервалі , отримаємо основну формулу для одержання наближених методів розв’язання задачі . Метод Ейлера Для розв’язання диференційних рівнянь першого порядку за методом Ейлера використовується наступне співвідношення: . Метод Ейлера для розв’язання систем звичайних диференційних рівнянь набуває вигляду: де , , Метод Рунге-Кутта Для розв’язання диференційних рівнянь першого порядку за методом Ейлера використовується наступне співвідношення: , . В яких , де , x, , . Метод Рунге-Кутта для розв’язання системи набуває виду: 1.1 Program laba1.1; uses crt; const a=0; b=1; var x,y:array[0..100] of real; n,i:integer; h:real; function f(x,y:real):real; begin f:=1-sin(2*x+y)+((0.3*y)/(2+x)); end; begin clrscr; x[0]:=a; y[0]:=1.5; n:=10; h:=(b-a)/n; for i:=0 to n do begin x[i+1]:=x[i]+h; y[i+1]:=y[i]+h*f(x[i],y[i]); end; for i:=0 to n do writeln('x[',i,']=',x[i]:5:2,' ','y[',i,']=', y[i]:7:4); readln; end. 1.2 Program laba2; uses crt; const a=0; b=1; var x,y,dy:array[0..100] of real; n,i:integer; h,k1,k2,k3,k4:real; function f(x,y:real):real; begin f:=1-sin(2*x+y)+((0.3*y)/(2+x)); end; begin clrscr; x[0]:=a; y[0]:=1.5; n:=10; h:=(b-a)/n; for i:=0 to n do begin x[i+1]:=x[i]+h; k1:=h*f(x[i],y[i]); k2:=h*f(x[i]+0.5*h,y[i]+0.5*k1); k3:=h*f(x[i]+0.5*h,y[i]+0.5*k2); k4:=h*f(x[i]+h,y[i]+k3); dy[i]:=(k1+2*k2+2*k3+k4)/6; y[i+1]:=y[i]+dy[i]; end; for i:=0 to n do writeln('x[',i,']=',x[i]:5:2,' ','y[',i,']=', y[i]:7:4); readln; end. | |
Просмотров: 455 | Загрузок: 18 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |