odeint python

cartésien2015-2017

odeint python

Message par cartésien2015-2017 » 14 févr. 2017 19:00

Bonjour, je cherche à utiliser python pour résoudre numériquement une équation.*

Je vois comment fonctionne odeint pour une équation du type : y''(t) = F(y(t),y'(t),t)

Mais comment s'en sortir pour résoudre un système d'équations couplées ??

ie : on a trois fonctions x,y,teta
et la dérivée seconde de x dépend de x,y,teta,x',y',teta'
et de même pour celle de y et de teta

Merci à vous

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: odeint python

Message par fakbill » 16 févr. 2017 20:59

https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.integrate.odeint.html
L'exemple part d'une équa diff d'ordre deux qu'on transforme en un système couplé pour le résoudre.
Quel est ton système? Quel est le pb?
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

cartésien2015-2017

Re: odeint python

Message par cartésien2015-2017 » 22 févr. 2017 15:30

Bonjour, mon problème est que mon équation ne concerne pas une seule fonction comme dans otre exemple mais trois fonctions x,y,teta

Messages : 0

Inscription : 11 déc. 2015 08:24

Profil de l'utilisateur : Élève de lycée

Re: odeint python

Message par left_shift » 22 févr. 2017 20:44

Il faut se placer dans un espace vectoriel de dimension 6 et considérer le vecteur V = (x, y, theta, x', y', theta') ; ce dernier vérifie une équation différentielle de la forme V'= F(V, t) et peut donc être résolu numériquement à l'aide de odeint.

cartésien2015-2017

Re: odeint python

Message par cartésien2015-2017 » 23 févr. 2017 16:16

Bonjour, merci j'ai essayé mais cela ne fonctionne pas.. En fait j'aimerais savoir pour ce vecteur V, je le prends de quel type concrètement?

Messages : 0

Inscription : 11 déc. 2015 08:24

Profil de l'utilisateur : Élève de lycée

Re: odeint python

Message par left_shift » 23 févr. 2017 19:19

Concrètement, il faut que V soit une liste Python ou un tableau numpy. Et il faut que la fonction F soit définie peu ou prou de la manière suivante :

def F(V, t):
....x, y, theta, dx, dy, dtheta = V
# ici tu insère la définition de d2x, d2y, d2theta en fonction de t et des paramètres ci-dessus
....return [dx, dy, dtheta, d2x, d2y, d2theta]

Ensuite tu discrétise l'intervalle de temps que tu souhaites et tu lance odeint :

t = numpy.linspace(a, b, 256)
x, y, theta, dx, dy, dtheta = odeint(F, V0, t)

où V0 est le vecteur des conditions initiales.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: odeint python

Message par fakbill » 23 févr. 2017 21:46

Essaye de comprendre car c'est un truc important en analyse numérique:
https://docs.scipy.org/doc/scipy-0.18.1 ... deint.html
L'algo ne sait résoudre que le l'ordre1.
"l'atsuce" est donc de poser z=y' et de résoudre un système d'odre1 en le vecteur (y,z).
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

cartésien2015-2017

Re: odeint python

Message par cartésien2015-2017 » 26 févr. 2017 20:18

j'ai compris merci !

Répondre