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:
f et g sont des fonctions
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)
merci d'avance
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;
Partager