PROGRAM Ad_2;
USES
CRT;
LABEL
MET;
CONST
a = 1;
b = 2;
e = 0.01;
VAR
h : Real;
i,u : Integer;
Y1,Y2,Y3,X : Array [1..30] of Real;
BEGIN
clrscr;
h:=0.05;
Y1[1]:=1;
Y2[1]:=1;
Y3[1]:=1;
repeat
u:=0;
MET: for i:=1 to 2 do
begin
Y1[i+1]:=Y1+h*(Y1+h/2*(3*Y2-2*Y3));
Y2[i+1]:=Y2+h*(Y2+h/2*(-Y3-3*Y1));
Y3[i+1]:=Y3+h*(Y3+h/2*(2*Y1-Y2));
end;
if u=0
then
begin
h:=h/2;
u:=1;
goto MET
end;
until ((abs(Y1[2])-Y1[3])<=(3*e)) and ((abs(Y2[2])-Y2[3])<=(3*e))
and ((abs(Y3[2])-Y3[3])<=(3*e));
h:=h*2;
for i:=2 to (round((b-a)/h)+1) do
begin
Y1[i+1]:=Y1+h/2*(3*(3*Y2-2*Y3)-(3*Y2[i-1]-2*Y3[i-1]));
Y2[i+1]:=Y2+h/2*(3*(-Y3-3*Y1)-(-Y3[i-1]-3*Y1[i-1]));
Y3[i+1]:=Y3+h/2*(3*(2*Y1-Y2)-(2*Y1[i-1]-Y2[i-1]))
end;
writeln (' X Y1 Y2 Y3');
writeln ('-------------------------------------------');
for i:=1 to (round((b-a)/h)+1) do
begin
X:=a+h*(i-1);
writeln (X:7:4, Y1:12:4, Y2:12:4, Y3:12:4);
end;
writeln;
write (' ':5,'Шаг интегрирования: ',h:4:4);
readkey
END.
Метод Адамса 2-го порядка (Pascal)
Разработка программы решения систем обыкновенных дифференциальных
2.2.Исходные данные.
2.2.1. Метод решения.
Метод Адамса 2го порядка.
2.2.2. Метод выбора начальных точек в методе Адамса.
Модифицированный метод Эйлера.
2.2.3. Точность решения.
ε=0.01
2.2.4. Способ выбора шага.
Постоянный шаг, выбираемый по разности двух решений, получаемых с шагом h и h/2.
2.2.5. Порядок системы.
Система 3го порядка.
2.2.6. Характер системы.
Линейная автономная система.
2.2.7. Контрольный пример с заданной системой обыкновенных дифференциальных уравнений, границей отрезка, на котором должна быть решена система, и начальными условиями.
y'1=3y2-2y3
y'2=-y3-3y2
y'3=2y1-y2
y1(a)=1
y2(a)=1
y3(a)=1
a=1
b=2
Код:
Как погрешность найти (хотя бы по какой формуле) и что здесь не так?