22 lines
587 B
Plaintext
22 lines
587 B
Plaintext
>function dgleuler (f,x,y0) ...
|
|
$ y=zeros(size(x)); y[1]=y0;
|
|
$ for i=2 to cols(y);
|
|
$ y[i]=y[i-1]+f(x[i-1],y[i-1])*(x[i]-x[i-1]);
|
|
$ end;
|
|
$ return y;
|
|
$endfunction
|
|
>function f(x,y) := -k*(y-TR)
|
|
>k=0.07; TR=20; TS=100;
|
|
>x=0:1:100; dgleuler("f",x,TS)[-1]
|
|
20.0564137335
|
|
>x=0:2:100; dgleuler("f",x,TS)[-1]
|
|
20.0424631834
|
|
>TR+(TS-TR)*exp(-k*TS)
|
|
20.0729505572
|
|
>x=0:5:100; plot2d(x,dgleuler("f",x,TS)); ...
|
|
> plot2d(x,TR+(TS-TR)*exp(-k*x),>add,color=red);
|
|
>ode("f",x,TS)[-1] // Euler default solver LSODA
|
|
20.0729505568
|
|
>adaptiverunge("f",x,TS)[-1] // Adaptive Runge Method
|
|
20.0729505572
|