1.2-((2*0.2)/1.2)

Порядък на грешката O((h^2))

h=0.2;
(h^2)

1.2+0.2*0.867

програмиране на алгоритъм за метода на Ойлер:

a=0; b=1; h=0.2;
n=((b-a)/h);
x=a;y=1;
f[x_,y_]:=y-((2x)/y);
Print["i = ", 0, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y]]
For[i=1,i≤n,i++,
y=y+h*f[x,y];
x=x+h;
Print["i = ", i, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y]]
]

Добавяме проверка чрез точното решение:

a=0; b=1; h=0.2;
n=((b-a)/h);
yt[x_]:=Sqrt[2x+1];
x=a;y=1;
f[x_,y_]:=y-((2x)/y);
Print["i = ", 0, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x]]
For[i=1,i≤n,i++,
y=y+h*f[x,y];
x=x+h;
Print["i = ", i, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x]]
]

Добавяме печат на истинската грешка (Subscript[r, i]) =|(Subscript[y, приближено]) - (Subscript[y, точно])|:

a=0; b=1; h=0.2;
n=((b-a)/h);
yt=.;x=.
yt[x_]:=Sqrt[2x+1];
f[x_,y_]:=y-((2x)/y);
x=a;y=1;
Print["i = ", 0, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
For[i=1,i≤n,i++,
y=y+h*f[x,y];
x=x+h;
Print["i = ", i, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
]

Намаляаваме стъпката h = 0.01

a=0; b=1; h=0.01;
n=((b-a)/h);
yt=.;x=.
yt[x_]:=Sqrt[2x+1];
f[x_,y_]:=y-((2x)/y);
x=a;y=1;
Print["i = ", 0, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
For[i=1,i≤n,i++,
y=y+h*f[x,y];
x=x+h;
Print["i = ", i, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
]

Намаляаваме стъпката h = 0.001

a=0; b=1; h=0.001;
n=((b-a)/h);
yt=.;x=.
yt[x_]:=Sqrt[2x+1];
f[x_,y_]:=y-((2x)/y);
x=a;y=1;
Print["i = ", 0, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
For[i=1,i≤n,i++,
y=y+h*f[x,y];
x=x+h;
Print["i = ", i, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
]

Модифициран метод на Ойлер

1.1-((2*0.1)/1.1)

1+0.2*0.91812

a=0; b=1; h=0.2;
n=((b-a)/h);
yt=.;x=.;f=.
yt[x_]:=Sqrt[2x+1];
f[x_,y_]:=y-((2x)/y);
x=a;y=1;
y12=y+(h/2)f[x,y];
x12=x+h/2;
Print["i = ", 0, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y, " (Subscript[x, i + 1/2]) = ", x12, " (Subscript[y, i + 1/2]) = ", y12,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y],  " f((Subscript[x, i + 1/2]),(Subscript[y, i + 1/2])) = ", f[x12,y12], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
For[i=1,i≤n,i++,
y12=y+(h/2)f[x,y];
x12=x+h/2;
y=y+h*f[x12,y12];
x=x+h;
Print["i = ", i, " (Subscript[x, i]) = ", x, " (Subscript[y, i]) = ", y, " (Subscript[x, i + 1/2]) = ", x12, " (Subscript[y, i + 1/2]) = ", y12,  " f((Subscript[x, i]),(Subscript[y, i])) = ", f[x,y],  " f((Subscript[x, i + 1/2]),(Subscript[y, i + 1/2])) = ", f[x12,y12], " \!\(\*SubscriptBox[\(y\), \(точно, i\)]\) = ", yt[x], " (Subscript[r, i]) = ", Abs[y-yt[x]]]
]