Il codice è scritto in Matlab, ma dovrebbe essere semplicemente traducibile in altri linguaggi di programmazione.
Per ogni esempio è riportata la soluzione analitica (se disponibile),
il numero di equazioni (dim=...
), maggiore di uno se si tratta
di un sistema, e un intervallo di prova con relativa condizione iniziale.
% ODE, soluzione: problema dei due corpi % dim = 2 function zp = f( t, z) m1 = 1; m2 = 0; r3 = ((z(3)-z(1))^2 + (z(4)-z(2))^2)^(3/2); zp = [z(5:8); m2 * (z(3) - z(1)) / r3; m2 * (z(4) - z(2)) / r3; m1 * (z(1) - z(3)) / r3; m1 * (z(2) - z(4)) / r3];
% ODE, soluzione: y=atan(exp(x)), y(0)=atan(1), x in [0,10] % dim = 1 function yp = f( x, y) yp = exp(x) .* cos(y) .* cos(y);
% ODE, soluzione: y=exp(x), y(0)=1 % dim = 1 function yp = f( x, y) yp = y;
% ODE, soluzione: y=exp(x.^2/2), y(-2)=exp(2), x in [-2,2] % dim = 1 function yp = f( x, y) yp = x .* y;
% ODE, soluzione: y=exp(-20*x)+sin(x), y(0)=1, x in [0,2.5] % dim = 1 % esempio che mette in crisi difcen (x in (0,a), a>.5) function yp = f( x, y) yp = -20*y+20*sin(x)+cos(x);
% ODE, soluzione: y=exp(-100*x)+1, y(0)=2, x in [0,1] % dim = 1 function yp = f( x, y) yp = -100*y + 100;
% ODE, soluzione: y=exp(-x), y(0)=1 % dim = 1 function yp = f( x, y) yp = -y;
% ODE, soluzione: y=exp(-x.^2), y(-3)=exp(-9), x in [-3,3] % dim = 1 function yp = f(x,y) yp = -2 * x .* y;
% ODE, soluzione: y=1./(1+x.^2), y(-5)=1/26, x in [-5,5] % dim = 1 % la soluzione e' la funzione di Runge function yp = f( x, y) yp = -2*x.*y.*y;
% ODE, soluzione: y=expm(x*A)*y0, y(0)=[1;1] % dim = 2 % equazione stiff: prova Eulero in [0,10] con 495, 500, 501, 505 punti function yp = f( x, y) A = [-100 1;0 -1/10]; yp = A*y;
% ODE, soluzione: y=x.*cos(x), y(0)=0, x in [0,12] % dim = 1 function yp = f( t, y) yp = y./t - t.*sin(t);
% ODE, soluzione: y=[x.*sin(x); y1'], y(0)=[0;0], x in [0,20] % dim = 2 % sistema associato alla equazione del second'ordine % y" = -y + 2*cos(x) function yp = f( t, y) yp = [y(2); -y(1)+2*cos(t)];
% ODE, soluzione: y=?, y(0)=1 % dim = 1 % % eulero e' stabile solo per h<1/50 function yp = f( x, y) yp = -100*y + exp(-x);