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ù w² 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 :
- from pylab import *
- import numpy as N
- import math as M
- q=1.602e-19
- B=1
- m=1.67e-27
- pas=input('saisir la valeur du pas=')
- def dVy(Vx):
- return (-(q*B)/m)*Vx
- def dVx(Vy):
- return ((q*B)/m)*Vy
- def Euler(pas):
- Vyi=5
- Vy=([Vyi])
- for [quoi] in [quoi] :
-
- Vxi1=Vyi+dVx(Vyi)*pas
- Vxi1=Vxi
- Vyi1=Vxi+dVy(Vxi)*pas
- Vyi1=Vyi
-
- Vy=N.append(Vy,Vyi1)
- Vx=N.append(Vx,Vxi1)
- Vy=N.append(Vy,10)
- Vx=N.append(Vx,10)
- print Vx
- print Vy
-
- Euler(pas)
|