Bonjour,
je souhaiterai resoudre l'equation suivante : |M|d²q/dt² + [C]dq/dt+[K]q= F(balourd + pesanteur)
ou M,K et C sont des matrices 8*8 dans une base modale telle que : X=phi*q
j'ai effetué ensuite la méthode des trapèzes et j'ai obtenu finalement le système suivant :
((4|M|/ot²)+2|C|/ot+|K|)*q1=|M|*(4*q0/ot²+4*dq0/ot+d²q0) + |C|*(2q0/ot+dq0)+f
avec: ot: pas de temps ( t1=t0+ot)
q0 : deplacement à l'instant t q1=deplacement à t+ot
dq0:vitesse à l'instant t " "
d²q0: acceleration à l"instant t " "
donc voilà ce que j'ai fait :
v=(2*%pi*10000)/60;
// vitesse de rotation
// variation de l'accélération du rotor à l'instant initial (conditions initiales)
t_initial=0;
F_b=m_b*v^2*[cos(v*t_initial);sin(v*t_initial);0;0;cos(v*t_initial);sin(v*t_initial);0;0];
Y1=F_b+F_p;
//vecteur balourd et pesanteur
q02=inv([M])*(Y1-[C]*q01-[K]*q00)
for t=0:dt:(2*%pi)/v
q10=q00;
q11=-q01 + (2/dt)*(q10-q00)
q12=-q02+(2/dt)*(q11-q01)
// resolution :
dq10=inv[((4*[M])/(dt^2)+(2/dt)*[C]+[K])]
*(F_p+F_b-[M]*q12-[C]*q11-[K]*q10)
q10=q10+dq10
q11=--q01 + (2/dt)*(q10-q00)
q12=-q02+(2/dt)*(q11-q01);
if (abs(dq10)/abs(q10))< 0.001
// inférieur à epsilon
q00=q10;
q01=q11;
q02=q12;
printf("c juste!!!")
else
printf("c faux!!!")
end
end
qu'en pensez vous?? je suis vraiment perdue parce que la programmation c pas mon fort!!!
pls aidez moi