Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
34
2.Schematyróżnicowe
euler:=proc(f,t0,x0,h,rep)
localt,x,i,a;
a:=array(1..rep,1..2);
t:=t0;
x:=x0;
foritorepdo
a[i,1]:=evalf(t);
a[i,2]:=evalf(x);
x:=evalf(x+h*f(t,x));
t:=evalf(t+h)
od;
[seq([a[i,1],a[i,2]],i=1..rep)]
end
Wykonującprocedurę,otrzymujemy
>z:=euler(f,1,1,0.2,21);
z:1[[1.,1.],[1.2,1.6],[1.4,2.48],[1.6,3.752],
[1.8,5.57280],[2.0,8.16192],[2.2,11.8267],
[2.4,16.9973],[2.6,24.2763],[2.8,34.5068],
[3.0,48.8696],[3.2,69.0174],[3.4,97.2643],
[3.6,136.850],[3.8,192.310],[4.0,269.994],
[4.2,378.792],[4.4,531.149],[4.6,744.488],
[4.8,1043.20],[5.0,1461.44]]
Wykonajmytesameobliczenia,korzystajączeschematuTaylora(2.9).Wtymcelu
napiszmyproceduręrealizującątenschemat.
taylor:=proc(f,t0,x0,h,rep)
localt,x,i,a,f1,f2;
a:=array(1..rep,1..2);
f1:=diff(f(t,x),t);
f2:=diff(f(t,x),x);
t:=t0;
x:=x0;
foritorepdo
a[i,1]:=evalf(t);
a[i,2]:=evalf(x);
x:=evalf(x+h*f(t,x)
+1/2*h^2*f1(t,x)+1/2*h^2*f2(t,x)*f(t,x));