PDA

Показать полную графическую версию : [Paskal] решение систем дифференциальных уравнений методом Эйлера( доработка)


Killer92
19-12-2010, 13:21
помогите, мне нужно из этой программы сделать программу для решения систем дифференциальных уравнений методом Эйлера на Турбо Паскале. Или напишите пожалуйста другую программу для решения систем дифференциальных уравнений методом Эйлера на Турбо Паскале.
Program Kurovaya;
{ ********************************************************
Решение задачи Коши для дифференциального уравнения
первого порядка методами:
Эйлера, Эйлера-Коши
******************************************************** }
uses Crt;
const c:array[1..4] of real = (0,0.5,0.5,1);
type
coef=array[0..4] of real;
var
i,j,m:integer;
a,b,h,x,y,y1,y2:real;
k0,k:coef;
ch:char;
{ ------------------------------------------------
Подпрограммы }
{ Правая часть дифференциального уравнения функции- f(x,y)}
function f(x,y:real):real;
begin
f:= x+y;
end;
{ -------------------------------------------------------- }
procedure Pausa;
begin
writeln;
writeln (' Для продолжения нажмите любую клавишу...');
repeat ch:=readkey
until ch <> '';
end;
{ ------------------------------------------------
Общая программа }

begin
clrscr;
writeln ('Введите значения концов отрезка* [a,b]');
read (a,b);
writeln ('Введите начальное значение функции y0 при x=x0');
read (y);
writeln (' Введите число значений функции на промежутке [a,b]');
read (m);
x:=a;
h:=(b-a)/m;
y1:=y;
y2:=y;
writeln (' Метод Эйлера, Метод Эйлера-Коши');
writeln ('x=',x:5:2,'y1=',y1:9:6,'y2=',y2:9:6');
for i:=1 to m do
begin
y1:=y1+h*f(x,y); { <-----------| Metod Eilera}
for j:=1 to 2 do
k0[j]:=h*f(x+2*c[j]*h, y2+2*c[j]*k0[j-1]);
y2:=y2+(k0[1]+k0[2])/2; { <-----------| Metod Eilera-Koshi}
x:=x+h;
writeln ('x=',x:5:2,' y1=',y1:9:6,' y2=',y2:9:6');
end;
pausa;
end.




© OSzone.net 2001-2012