Bonsoir,
Voici mon code
avec la fonction F
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for r=1:NMOD; mu_r=X(:,r)'*M*X(:,r); omega_r=w(r); c_r=0.5*(a(1)*omega_r+a(2)/omega_r); [T,Y]=ode45(@(t,x) F(t,x,BAL,NRAD,ddl,pos,BAL4,c_r,mu_r,omega_r,r,X),[0 time],[0 0]); eta(:,r)=Y(:,1); end;
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 function xp=F(t,x,BAL,NRAD,ddl,pos,BAL4,c_r,mu_r,omega_r,r,X) f_bal=BAL*NRAD^2; ff_bal=f_bal*exp(1i*NRAD*t); p=zeros(ddl,1); %arrière du moteur p(pos-5)=BAL4(3)*real(ff_bal); p(pos-4)=BAL4(3)*imag(ff_bal); %milieu du moteur p(pos+1)=BAL4(2)*real(ff_bal); p(pos+2)=BAL4(2)*imag(ff_bal); %avant du moteur p(pos+7)=BAL4(1)*real(ff_bal); p(pos+8)=BAL4(1)*imag(ff_bal); g_r=(X(:,r)'*p)/mu_r; xp=zeros(2,1); xp(1)=x(2); xp(2)=-(c_r/mu_r)*x(2)-omega_r^2*x(1)+g_r;
Mon problème, c'est que j'ai une solution Y de taille variable. Ainsi, lorque r=1, la taille de Y vaut 293*2 or que quand r=2, la taille de Y vaut 285*2.
Quelqu'un a-t-il déjà rencontré un problème similaire? Pour voir quelle c*** j'ai fait... A priori, on dirait que ODE possède un pas de temps non constant, si c'est cela le problème comment imposer que ce pas de temps soit constant? Merci!
Partager