Методи на Адамс
Пример 2  от стр.65

Подготовка на първите четири стойности по метода на Рунге-Кута от IV-ти ред - записваме ги в променливите pointsnachalni, ypnachalni

x0=1.; xend=1.3;n=3;y0=0;
h=0.1;
f[x_,y_]:=(E^(-(y/x)))+(y/x);
yt[x_]:=x Log[1+Log[x]]; (* въвеждаме точното решение *)
x=x0;
y=y0;
points = {{x,y}};
yp={f[x,y]};
For[i=1,i≤ n,i++,
(* тяло на цикъла *)
k1 = h*f[x,y];
k2 = h*f[x+(1/2)h,y+(1/2)k1];
k3 = h*f[x+(1/2)h,y+(1/2)k2];
k4 = h*f[x+h,y+k3];
y=y+(1/6)(k1 + 2k2+ 2k3+k4);
x=x+h;
AppendTo[points,{x,y}];
AppendTo[yp, f[x,y]];
]
pointsnachalni = points
ypnachalni = yp

points[[4]]

points[[4,2]]

Едностъпков Адамс (формула ((6^I)) стр.62)

x0=1.; xend=2;
h=0.1; n = ((xend-x0)/h);
y0=pointsnachalni[[1,2]];
yp0 = ypnachalni[[1]];
f[x_,y_]:=(E^(-(y/x)))+(y/x);
yt[x_]:=x Log[1+Log[x]]; (* въвеждаме точното решение *)
x=x0;
y=y0;
dy=yp0;
points = {{x,y}};
yp={f[x,y]};
Print["i = ",0, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]
For[i=1,i≤ n,i++,
(* тяло на цикъла *)
y = y+h*dy;
x=x+h;
dy = f[x,y];
AppendTo[points,{x,y}];
AppendTo[yp, dy];
Print["i = ",i, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]
]
grfyt=Plot[yt[x],{x,x0,xend}, PlotStyle->Red];
grfp=ListPlot[points, PlotStyle->{Black, PointSize[0.02]}];
grfmO=Show[grfyt,grfp]
points
yp

Двустъпков Адамс (формула ((6^II)) стр.62)

x0=1.; xend=2;
h=0.1; n = ((xend-x0)/h);
y0=pointsnachalni[[1,2]];
y1=pointsnachalni[[2,2]];
yp0 = ypnachalni[[1]];
yp1 = ypnachalni[[2]];
f[x_,y_]:=(E^(-(y/x)))+(y/x);
yt[x_]:=x Log[1+Log[x]]; (* въвеждаме точното решение *)
x=x0+h;
y=y1;
dy=yp1;
dy1 = yp0;
points = {{x0,y0},{x,y}};
yp={f[x0,y0],f[x,y]};
(*Print["i = ",1, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]*)
For[i=2,i≤ n,i++,
(* тяло на цикъла *)
y = y+(h/2)*(3dy-dy1);
x=x+h;
dy1=dy;
dy = f[x,y];
AppendTo[points,{x,y}];
AppendTo[yp, dy];
Print["i = ",i, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]
]
grfyt=Plot[yt[x],{x,x0,xend}, PlotStyle->Red];
grfp=ListPlot[points, PlotStyle->{Black, PointSize[0.02]}];
grfmO=Show[grfyt,grfp]
points
yp

Тристъпков Адамс (формула ((6^III)) стр.62)

x0=1.; xend=2;
h=0.1; n = ((xend-x0)/h);
y0=pointsnachalni[[1,2]];
y1=pointsnachalni[[2,2]];
y2=pointsnachalni[[3,2]];
yp0 = ypnachalni[[1]];
yp1 = ypnachalni[[2]];
yp2 = ypnachalni[[3]];
f[x_,y_]:=(E^(-(y/x)))+(y/x);
yt[x_]:=x Log[1+Log[x]]; (* въвеждаме точното решение *)
x=x0+2h;
y=y2;
dy=yp2;
dy1 = yp1;
dy2=yp0;
points = {{x0,y0},{x0+h,y1},{x,y}}
yp={yp0,yp1,yp2}
{f[x0,y0],f[x0+h,y1],f[x0+2h,y2]}
(*Print["i = ",1, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]*)
For[i=3,i≤ n,i++,
(* тяло на цикъла *)
y = y+(h/12)*(23dy-16dy1+5dy2);
x=x+h;
dy2=dy1;
dy1=dy;
dy = f[x,y];
AppendTo[points,{x,y}];
AppendTo[yp, dy];
Print["i = ",i, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]
]
grfyt=Plot[yt[x],{x,x0,xend}, PlotStyle->Red];
grfp=ListPlot[points, PlotStyle->{Black, PointSize[0.02]}];
grfmO=Show[grfyt,grfp]
points
yp

(h^4)

Четиристъпков Адамс (формула ((6^IV)) стр.62)

x0=1.; xend=2;
h=0.1; n = ((xend-x0)/h);
y0=pointsnachalni[[1,2]];
y1=pointsnachalni[[2,2]];
y2=pointsnachalni[[3,2]];
y3=pointsnachalni[[4,2]];
yp0 = ypnachalni[[1]];
yp1 = ypnachalni[[2]];
yp2 = ypnachalni[[3]];
yp3 = ypnachalni[[4]];
f[x_,y_]:=(E^(-(y/x)))+(y/x);
yt[x_]:=x Log[1+Log[x]]; (* въвеждаме точното решение *)
x=x0+3h;
y=y3;
dy=yp3;
dy1 = yp2;
dy2=yp1;
dy3=yp0;
points = {{x0,y0},{x0+h,y1},{x0+2h,y2},{x,y}};
yp={yp0,yp1,yp2,yp3};
(*Print["i = ",1, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]*)
For[i=4,i≤ n,i++,
(* тяло на цикъла *)
y = y+(h/24)*(55dy-59dy1+37dy2-9dy3);
x=x+h;
dy3 = dy2;
dy2=dy1;
dy1=dy;
dy = f[x,y];
AppendTo[points,{x,y}];
AppendTo[yp, dy];
Print["i = ",i, " x = ",x, " y = ",y, " f(x,y) = ",f[x,y],  " \!\(\*SubscriptBox[\(y\), \(точно\)]\)(x) = ",yt[x], " грешка = ", Abs[y-yt[x]] ]
]
grfyt=Plot[yt[x],{x,x0,xend}, PlotStyle->Red];
grfp=ListPlot[points, PlotStyle->{Black, PointSize[0.02]}];
grfmO=Show[grfyt,grfp]
points
yp