bonjour,
je veux résoudre un systèmes des équations par la méthode numérique Runge Kutta. la méthode fonctionne bien lorsque je fixe le paramètre w, mais j'aime avoir des résultats pour différent valeurs de w.
code de Runge Kutta:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clear;clc;clf;
dt=0.5;T=10;
h=dt;
x1=0;
x2=0;
i=1;
 
for t=0:h:T
f1=h*f(t,x1,x2); g1=h*g(t,x1,x2);
f2=h*f((t+h/2),(x1+f1/2),(x2+g1/2));g2=h*g((t+h/2),(x1+f1/2),(x2+g1/2));
f3=h*f((t+h/2),(x1+f2/2),(x2+g2/2));g3=h*g((t+h/2),(x1+f2/2),(x2+g2/2));
f4=h*f((t+h),(x1+f3),(x2+g3)); g4=h*g((t+h),(x1+f3),(x2+g3));
x1=x1+((f1+f4)+2*(f2+f3))/6.0;
x2=x2+((g1+g4)+2*(g2+g3))/6.0;
X(i)=x1;
Y(i)=x2;
i=i+1;
end
t=[0:h:T];
plot(t,X,'-p',t,Y,'-*');
grid on;
xlabel('time(s)');
legend('displacement(m)','velocity(m/s)',2)
f et g sont des fonctions

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
function v1=f(t,x1,x2)
v1=x2;
%%%%%%%%%%%%
function v2=g(tx1,x2)
k=1; m=1; c=0;
F=100*cos(w*t);
v2=(F-k*x1-c*x2)/m;
merci d'avance