Trajectoire d'une particule en python
Bonsoir
Je souhaite obtenir une fonction python qui trace la trajectoire d'une particule de masse m en fonction de ses conditions initiales ( position et vitesse initiale ) et dont le mouvement est donné par les équations suivantes en coordonnées cartésiennes :
$$
\ddot x = -\frac{x}{(x^2+y^2)^{3/2}},
\qquad
\ddot y = -\frac{y}{(x^2+y^2)^{3/2}}.
$$L'algorithme n'a rien de compliqué on résout ces 2 équations différentielles à l'aide la méthode d'Euler puis on utilise matplotlib pour tracer les courbes souhaitées. J'ai codé une fonction euler qui permet de résoudre une équation différentielle d'ordre 1 sur un intervalle $[a,b]$ :
Merci de votre aide !
Je souhaite obtenir une fonction python qui trace la trajectoire d'une particule de masse m en fonction de ses conditions initiales ( position et vitesse initiale ) et dont le mouvement est donné par les équations suivantes en coordonnées cartésiennes :
$$
\ddot x = -\frac{x}{(x^2+y^2)^{3/2}},
\qquad
\ddot y = -\frac{y}{(x^2+y^2)^{3/2}}.
$$L'algorithme n'a rien de compliqué on résout ces 2 équations différentielles à l'aide la méthode d'Euler puis on utilise matplotlib pour tracer les courbes souhaitées. J'ai codé une fonction euler qui permet de résoudre une équation différentielle d'ordre 1 sur un intervalle $[a,b]$ :
import numpy as np def euler(f,a,b,h,y_0): X = np.arange (a , b+h , h) Y = [y_0] Y_p = [ f(a , y_0) ] for k in range (1 , len(X)-1): Y += [ Y_p[k-1]*h + Y[k-1] ] Y_p += [ f(X[k] , Y[k]) ] Y += [ Y_p[-1]*h+ Y[-1] ] return [X , Y]Quelqu'un saurait-il comment modifier cette fonction pour qu'elle résolve une équation différentielle d'ordre 2 ?
Merci de votre aide !
Réponses
-
D'abord, il est vraiment rentable et pas beaucoup plus difficile d'implémenter une méthode de type Runge-Kutta – même la plus simple.
Ensuite, une équation d'ordre deux en $y$, c'est une équation d'ordre $1$ en le vecteur $\binom{y}{y'}$. -
Il est surtout plus facile et plus efficace d'utiliser les fonctions qui résolvent de manière approchée les équations différentielles comme scipy.integrate.odeint !!!
-
Oui c’est vrai que odeint et la méthode de Runge-Kutta sont bien plus efficaces que la méthode d’Euler mais le problème repose sur l’utilisation de cette méthode.. Je vais essayer de me ramener à une équation d’ordre 1 comme conseillé par Math Coss
Merci de votre aide !
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 163.2K Toutes les catégories
- 9 Collège/Lycée
- 21.9K Algèbre
- 37.1K Analyse
- 6.2K Arithmétique
- 53 Catégories et structures
- 1K Combinatoire et Graphes
- 11 Sciences des données
- 5K Concours et Examens
- 11 CultureMath
- 47 Enseignement à distance
- 2.9K Fondements et Logique
- 10.3K Géométrie
- 65 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 68 Informatique théorique
- 3.8K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 314 Mathématiques et Physique
- 4.9K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10K Probabilités, théorie de la mesure
- 773 Shtam
- 4.2K Statistiques
- 3.7K Topologie
- 1.4K Vie du Forum et de ses membres