Bonsoir,

Voici mon code
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;
avec la fonction F

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!