1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| //- Le système différentiel
function dy = f(t,X)
dy(1) = -X(2);
dy(2) = X(1);
endfunction
// les solutions exactes
z=0:0.01:10
function [sol]=f1(z)
sol = cos(z);
endfunction
function [sol]=g1(z)
sol = sin(z);
endfunction
y = f1(z);
y2 = g1(z);
//- Conditions initiales
t0=0;
y0=1;
y00=0;
t1=10;
n=1000;
function [t,X]=euler_explicite(f,t0,y0,y00,t1,n)
// Initialisation des vecteurs x et y
t=[t0 zeros(1,n)];
X = cell(2,1);
X(1).entries = [y0 zeros(1,n)];
X(2).entries = [y00 zeros(1,n)];
// Pas de temps
h=(t1-t0)/n;
// Calcul de y(xi)
for i=1:n
t(i+1)=t(i)+h;
X(1).entries(i+1)=X(1).entries(i)+h*f(t(i),X(1).entries(i));
X(2).entries(i+1)=X(2).entries(i)+h*f(t(i),X(2).entries(i));
end
endfunction
[t,ye] = euler_explicite(f,t0,y0,y00,t1,n);
//- Dessiner la fonction
plot(t,ye); |
Partager