ФЭА / АИТ / Лабораторная работа №4 Вариант №4 Задание: y=e^-x+y
(автор - student, добавлено - 25-01-2014, 17:12)
СКАЧАТЬ:
Лабораторная работа №4 Вариант №4
Задание: y=e^-x+y Отрезок [2;3], Начальные значения x0,y0:[2;0.9], Шаг: h=0.1.
1) Решим дифференциальное уравнение методом Эйлера: Исходный код: Program Eilera4; Uses CRT; Var a,b,x,y,h:real; Begin clrscr; Write('(a;b):'); Readln(a,b); Write('(x0;y0):'); Readln(x,y); Write('h='); Readln(h); Writeln; Repeat WriteLn('x=',x:2:1,' ','y=',y:2:4); y:=y+h*(exp(-x)+y); x:=x+h; Until x>b; Readln; End. В результате решения уравнения методом Эйлера получили ряд следующих значений:
2) Ломаная Эйлера имеет следующий вид:
3) Решаем уравнение методом Рунге-Кутта. Исходный код: program Runge4; {$APPTYPE CONSOLE} uses SysUtils;
var a,b,x,y,k1,k2,k3,k4,h:real; function f(x,y:real):real; begin f:=exp((1/3)*ln(4*x-2))+y end; begin { TODO -oUser -cConsole Main : Insert code here } Write('Vvedite a:');ReadLN(a); Write('Vvedite b:');ReadLN(b); Write('Vvedite h:');ReadLN(h); x:=a; y:=1; While x<=b do begin WriteLn('x=',x:2:1,' ','y=',y:2:2); k1:=h*f(x,y); k2:=h*f(x+h/2,y+k1/2); k3:=h*f(x+h/2,y+k2/2); k4:=h*f(x+h,y+k3); y:=y+(1/6)*(k1+2*k2+2*k3+k4); x:=x+h end; ReadLN end.
В результате решения уравнения методом Рунге-Кутта получили ряд следующих значений:
Исходя из полученных данных:
Эйлер:
Рунге-Кутт:
видно, что метод Рунге-Кутта менее точный чем метод Эйлера. Похожие статьи:
|
|