[ode45] solution de taille variable
Bonsoir,
Voici mon code
Code:
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:
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!