Intégration méthode d'Euler

Intégration méthode d'Euler - Python - Programmation

Marsh Posté le 07-11-2009 à 23:18:00    

Salut.
 
J'essaie de résoudre avec la méthode d'Euler (pour commencer) deux équations différentielles (imbriquées l'une dans l'autre) qui décrivent le mouvement d'un proton dans un cyclotron. Les équations différentielles que j'obtiens sont les suivantes : dVx=w²Vy et dVy=w²Vx  où est une constante. Vy : vitesse suivant y. Vx : vitesse suivant x. Donc dVx et dVy sont les dérivée de ces vitesses. condition initiale : Vy(0) = Vy0
 
Dans mon script, l'utilisation de la boucle for me pose le problème suivant :
 
normalement pour utiliser une boucle for il faut définir une séquence avant. Par exemple je définis une séquence de valeurs de Vx puis je l'utiliser dans une boucle for pour trouver les valeurs de Vy en faisant :for i in Vx ...ect. Le problème dans mon script c'est que je cherche à la fois les valeurs de Vy et celles de Vx.
 
Comment régler ce problème ? faut il s'en passer de la boucle for ? merci ;)
 

Code :
  1. from pylab import *
  2. import numpy as N
  3. import math as M
  4. q=1.602e-19
  5. B=1
  6. m=1.67e-27
  7. pas=input('saisir la valeur du pas=')
  8. def dVy(Vx):
  9. return (-(q*B)/m)*Vx
  10. def dVx(Vy):
  11. return ((q*B)/m)*Vy
  12. def Euler(pas):
  13.     Vyi=5
  14.     Vy=([Vyi])
  15.     for [quoi] in [quoi] :
  16.    
  17.         Vxi1=Vyi+dVx(Vyi)*pas
  18.         Vxi1=Vxi
  19.         Vyi1=Vxi+dVy(Vxi)*pas
  20.         Vyi1=Vyi
  21.        
  22.     Vy=N.append(Vy,Vyi1)
  23.     Vx=N.append(Vx,Vxi1)
  24.     Vy=N.append(Vy,10)
  25.     Vx=N.append(Vx,10)
  26.     print Vx
  27.     print Vy
  28.    
  29. Euler(pas)


 

Reply

Marsh Posté le 07-11-2009 à 23:18:00   

Reply

Marsh Posté le 08-11-2009 à 09:56:54    

Il ne faut pas utiliser for mais un do while ou équivalent, avec une condition sur la précision, par ex.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed