|
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
bendesarts
Inscrit le: 27 Fév 2009 Messages: 234
|
Posté le: 22 Mai 2013 23:34 Sujet du message: Résolution d'une ODE |
|
|
Bonjour,
Je cherche à résoudre une ODE. La résolution doit être possible puisque j'ai le résultat venant d'un article où les calculs ont été fait avec matlab.
Là, je cherche à résoudre mon système d'équa diffs avec maple.
Voilà le code :
Code: |
restart;
with(linalg):
with(LinearAlgebra):
with(Student[MultivariateCalculus]):
with( DynamicSystems ):
with(plots):
eq1:=diff(xG[2](t), t, t) = -2000000*xG[2](t)-400*(diff(xG[2](t), t))+1000000*xG[3](t)-500000*cos(theta[3](t))+200*(diff(xG[3](t), t))+100*sin(theta[3](t))*(diff(theta[3](t), t));
eq2:=diff(yG[2](t), t, t) = -2000000*yG[2](t)-9.81-400*(diff(yG[2](t), t))+1000000*yG[3](t)-500000*sin(theta[3](t))+200*(diff(yG[3](t), t))-100*cos(theta[3](t))*(diff(theta[3](t), t));
eq3:=diff(theta[2](t), t, t) = 10-(.1000000000*(-1000000*yG[2](t)+1.000000000*10^5*sin(theta[2](t))-200*(diff(yG[2](t), t))+20.00000000*cos(theta[2](t))*(diff(theta[2](t), t))))*cos(theta[2](t))+(.1000000000*(-1000000*xG[2](t)+1.000000000*10^5*cos(theta[2](t))-200*(diff(xG[2](t), t))-20.00000000*sin(theta[2](t))*(diff(theta[2](t), t))))*sin(theta[2](t));
eq4:=diff(xG[3](t), t, t) = -2000000*xG[3](t)+1000000*xG[2](t)+1.000000000*10^5*cos(theta[2](t))-400*(diff(xG[3](t), t))+200*(diff(xG[2](t), t))-20.00000000*sin(theta[2](t))*(diff(theta[2](t), t))+1000000*xG[4](t)+200*(diff(xG[4](t), t));
eq5:=diff(yG[3](t), t, t) = -2000000*yG[3](t)+1000000*yG[2](t)+1.000000000*10^5*sin(theta[2](t))-400*(diff(yG[3](t), t))+200*(diff(yG[2](t), t))+20.00000000*cos(theta[2](t))*(diff(theta[2](t), t))+1000000*yG[4](t)+200*(diff(yG[4](t), t))-9.81;
eq6:=diff(theta[3](t), t, t) = -2*(diff(theta[3](t), t))+(1/2*(1000000*yG[3](t)-500000*sin(theta[3](t))-1000000*yG[2](t)-1.000000000*10^5*sin(theta[2](t))+200*(diff(yG[3](t), t))-100*cos(theta[3](t))*(diff(theta[3](t), t))-200*(diff(yG[2](t), t))-20.00000000*cos(theta[2](t))*(diff(theta[2](t), t))))*cos(theta[3](t))-(1/2*(1000000*xG[3](t)-500000*cos(theta[3](t))-1000000*xG[2](t)-1.000000000*10^5*cos(theta[2](t))+200*(diff(xG[3](t), t))+100*sin(theta[3](t))*(diff(theta[3](t), t))-200*(diff(xG[2](t), t))+20.00000000*sin(theta[2](t))*(diff(theta[2](t), t))))*sin(theta[3](t))+(1/2*(1000000*yG[4](t)-1000000*yG[3](t)-500000*sin(theta[3](t))+200*(diff(yG[4](t), t))-200*(diff(yG[3](t), t))-100*cos(theta[3](t))*(diff(theta[3](t), t))))*cos(theta[3](t))-(1/2*(1000000*xG[4](t)-1000000*xG[3](t)-500000*cos(theta[3](t))+200*(diff(xG[4](t), t))-200*(diff(xG[3](t), t))+100*sin(theta[3](t))*(diff(theta[3](t), t))))*sin(theta[3](t));
eq7:=diff(xG[4](t), t, t) = -1000000*xG[4](t)+1000000*xG[3](t)+500000*cos(theta[3](t))-205*(diff(xG[4](t), t))+200*(diff(xG[3](t), t))-100*sin(theta[3](t))*(diff(theta[3](t), t));
eq8:=diff(yG[4](t), t, t) = -2000000*yG[4](t)+1000000*yG[3](t)+500000*sin(theta[3](t))-1000200*(diff(yG[4](t), t))+200*(diff(yG[3](t), t))+100*cos(theta[3](t))*(diff(theta[3](t), t))-9.81;
Cinit:=D(xG[2])(0)=0,xG[2](0)=0.07,D(yG[2])(0)=0,yG[2](0)=0.07,D(theta[2])(0)=0,theta[2](0)=0.79,D(xG[3])(0)=0,xG[3](0)=0.64,D(yG[3])(0)=0,yG[3](0)=0.07,D(theta[3])(0)=0,theta[3](0)=-0.14,D(xG[4])(0)=0,xG[4](0)=1.13,D(yG[4])(0)=0,yG[4](0)=0;
sol:=dsolve({eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,Cinit},numeric);
ttheta[2]:=odeplot(sol,[t,theta[2](t)],0..2,numpoints=200,color=blue,legend="delta_theta[2] non linéarisé"):
display(ttheta[2]);
|
Est-ce qu'il y a des options à préciser pour pouvoir résoudre ?
Si çà ne se résout quand meme pas c'est que j'ai du mal recopié une équation mais à priori çà devrait se résoudre mais pour le moment je m'y prends (je pense) mal avec Maple.
Merci pour votre aide |
|
Revenir en haut de page |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 23 Mai 2013 11:40 Sujet du message: |
|
|
Bonjour,
Si on trace sur un intervalle dont la borne sup est plus petite que la valeur maxfun affichée dans le warning donné par Maple (j'ai pris 0.157), on obtient un graphe:
Code: |
> ttheta[2]:=odeplot(sol,[t,theta[2](t)],0..0.157,numpoints=20000,color=blue,legend="delta_theta[2] non linéarisé"):
|
(Le reste des lignes de code restant inchangé).
@+ |
|
Revenir en haut de page |
|
|
bendesarts
Inscrit le: 27 Fév 2009 Messages: 234
|
Posté le: 24 Mai 2013 10:24 Sujet du message: |
|
|
Bonjour,
Je ne sais pas pourquoi.
Mais en mettant 'maxfun'=10^8, c'est un peu long mais on arrive à un résultat correct. |
|
Revenir en haut de page |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 24 Mai 2013 13:17 Sujet du message: |
|
|
Bonjour,
Effectivement, le graphique obtenu est correct, en programmant:
Code: |
> sol:=dsolve({eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,Cinit},numeric,maxfun=10^8);
|
les autres lignes de code restant inchangées.
A+ |
|
Revenir en haut de page |
|
|
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - ©
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|