Metódou Runge-Kutta 4. rádu nájdite riešenie problému:
            y´=xy^2, y(0)=1

zadanie problému, prava strana, počiatočná podmienka,  krok metódy a koncový bod

f[x_,y_]:=x*y^2
h=0.05;
x0=0;
y0=1;
koniec=1;

Funkcia pre algoritmus metody Runge-Kutta a pre presné riešenie

RK[x_,y_,f_,h_]:=
Module[{k1,k2,k3,k4,riesenie},
k1=f[x,y];
k2=f[x+h/2,y+h*k1/2];
k3=f[x+h/2,y+h*k2/2];
k4=f[x+h,y+h*k3];
riesenie=y+h*(k1+2*k2+2*k3+k4)/6
]

Pres[x_]:=2/(2-x^2)

Počiatočná podmienka ako nulté riešenie a výpočet počtu krokov

x[0]=x0;
y[0]=y0;
n=koniec/h;

Samotný algorimtus výpočtu, zapísanie vysledkov do tabuliek, samotné numerické výsledky spolu, numerické presné výsledky a odchýlky(

Do[{x[i]=x0+i*h, y[i]=RK[x[i-1],y[i-1],f,h]}, {i,1,n,1}]
data=Table[{x[i],y[i]},{i,0,n}];
data1=Table[Abs[(y[i]-Pres[x[i]])],{i,0,n}];
vysledky=Table[{x[i],y[i],Pres[x[i]],Abs[(y[i]-Pres[x[i]])]},{i,0,n}];

error=Max[data1]

Tlač výsledkov

Print[" hodnota x  num. ries.  pres. ries   odchylka"]
PaddedForm[TableForm[vysledky],{5,4}]

graf presného riešenie

g=Plot[Pres[x],{x,0,1}, PlotRange->{{0,1},{0,2}}, PlotStyle->{ RGBColor[1,0,0],Thickness[0.01]}];

graf numerického riešenia

graf1=ListPlot[data, PlotRange->{{0,1},{0,2}},PlotStyle-> {RGBColor[0,0,1],PointSize[0.02]}]

Porovnanie presného a numerického riešenia

Show[g,graf1]

h=0.025;
n=koniec/h

Do[{x[i]=x0+i*h, y[i]=RK[x[i-1],y[i-1],f,h]}, {i,1,n,1}]
data=Table[{x[i],y[i]},{i,0,n}];
vysledky=Table[{x[i],y[i],Pres[x[i]],Abs[(y[i]-Pres[x[i]])]},{i,0,n}];

Print[" hodnota x  num. ries.  pres. ries   odchylka"]
PaddedForm[TableForm[vysledky],{5,4}]

graf2=ListPlot[data, PlotRange->{{0,1},{0,2}},PlotStyle-> {RGBColor[0,0,0],PointSize[0.01]}]

Show[g,graf1,graf2]

Výpočet EOC rád chyby

h=0.008;
Do[{hz=h/j,Print[hz],
n=koniec/hz,Print[n],
Do[{x[i]=x0+i*hz, y[i]=RK[x[i-1],y[i-1],f,hz]}, {i,1,n,1}],
data=Table[Abs[(y[i]-Pres[x[i]])],{i,0,n}],
error[j]=Max[data]},{j,1,2,1}]

a=error[1]
b=error[2]
rad=Log[2,a/b]