Vous êtes sur la page 1sur 3

TP 1: PHYSIQUE NUMERIQUE - Equations diérentielles

NYANGUI Phicillia Leslie


07 janvier 2024

1 Travail à eectuer
1. Ecrire une fonction, qu'on note euler(f, a, b, y0, N), permettant d'intégrer une équation diérentielle de
la forme:

y ′ = f (t, y) avec y(a) = y0


sur l'intervalle [a, b] avec la méthode d'Euler décrite dans la partie 1.3. Ecrire un programme ed.py exploitant
cette fonction an de résoudre y ′ + y = t sur l'intervalle [0, 2] avec la condition aux limites y0 ≡ y(0) = 1. Déter-
miner en particulier la valeur de N permettant d'obtenir moins de 1% d'erreur en relatif sur la solution de
l'équation diérentielle. Représenter sur un même graphique la solution numérique et la solution analytique.

Voir script question 1.


Pour N = 100, il y a supperposition de la solution numérique et la solution analytique.

2. Ecrire deux fonctions, qu'on note rk2(f, a, b, y0, N) et rk4(f, a, b, y0, N), permettant d'intégrer l' équa-
tion diérentielle 20 sur l'intervalle [a, b] avec les méthodes de Runge-Kutta d'ordre 2 et 4 respectivement
décrites dans les parties 1.4 et 1.5.

Voir script question 2

Eectuer une comparaison détaillée avec les résultats obtenus dans la question 1 en exploitant les fonctions
rk2 et rk4 que vous avez écrites et la fonction odeint de la librairie scipy.integrate.

En éecuant les zoom 1, 2 et 3 dans le scripte, on constaté dans tous les cas une supperposition parfaite
entre les courbes de rk2 rk4 et odeint pour N = 10. Par contre la solution analytique est décalé. Nous
pouvons donc conclure que les trois méthodes rk rk4 et odeint sont précises par rapport à la solution
analytique.
Déterminer en particulier l'erreur relative sur la solution de l'équation diérentielle pour N = 10 et
pour chacune des trois méthodes.Représenter sur une même gure la solution analytique et les solutions
obtenues avec chacune des trois méthodes.

Pour N = 10, on a une erreur maximum relative rk2 = 1.0%, rk4 et odeint est 0.0%.
Nous pouvons donc conclure que les méthodes rk4 et odeint sont plus précises que rk2 pour cette taille de
pas spécique.
3. On considère un pendule pesant de longueur l dont le mouvement est régi par l'équation:

g
sin(θ) = 0
θ̈ +
l
où g représente l'intensité du champ de pesanteur et θ l'angle entre la verticale et le pendule.
Montrer en vous inspirant de la partie 1.1 que la résolution de l'équation diérentielle 21 peut se ramener à la
résolution de deux équations diérentielles couplées d'ordre 1 à mettre sous la forme:
dy1


 = f1 (t, y1, y2)
dt
 dy2 = f (t, y1, y2)

2
dt

1
où les fonctions fi (t, y1, y2) sont à préciser pour i = 1, 2.

L'équation diérentielle du mouvement d'un pendule est une équation diérentielle non linéaire d'ordre
2. Pour résoudre cette équation avec une méthode numérique comme Runge-Kutta, on va la convertir en un
système de deux équations diérentielles d'ordre 1.
Pour célà, on va introduire deux nouvelles variables : y1 = θ et y2 = θ̇ = dθ
dt (la vitesse angulaire). On a:

dy1
= y2 = f1 (t, y1 , y2 )
dt
dy2 g
= − sin(y1 ) = f2 (t, y1 , y2 )
dt l
On conclut que f1 (t, y1 , y2 ) est simplement égal à y2 , et f2 (t, y1 , y2 ) est égal à − gl sin(y1 ).

Ecrire un programme, qu'on note oscillator.py, exploitant une méthode de Runge-Kutta d'ordre 4 pour
résoudre l'équation diérentielle 21 . Prendre l = 9.81 cm et représenter sur une gure la solution calculée sur
un intervalle de temps [a, b] judicieusement choisi pour les conditions initiales suivantes: θ(0) = θ0 = 10◦ et
θ̇(0) = 0. Superposer sur la gure la solution analytique.

Voir script question 3.

4. Calculer la période des oscillations T en fonction de θ0 pour θ0 ∈] 0, π[ en intégrant les équations diéren-
tielles du mouvement et tracer TT0 en fonction de θ0 ( T0 représente la période des petites oscillations).
Pour calculer la période des oscillations T en fonction de θ0 pour θ0 ∈] 0, π[, il faut intégrer les équations
diérentielles du mouvement. Or, cette intégration ne peut pas être eectuée analytiquement pour un
pendule simple, car l'équation diérentielle est non linéaire. On va donc utiliser une méthode numérique,
comme la méthode de Runge-Kutta, pour résoudre l'équation diérentielle et obtenir la période des oscil-
lations.

Voir script question 4

Montrer également que :


Z π
T 2 2 dϕ
= p
T0 π 0 1 − k 2 sin2 ϕ

où T0 représente la période des petites oscillations et k = sin θ20 .


L'équation du mouvement pour un pendule simple est donnée par : On multiplie cette équation par dθ
dt
pour obtenir : En intégrant cette équation par rapport à t, on obtient :
 2
1 dθ g
= cos(θ) + E
2 dt l

où E est la constante d'intégration. En utilisant les conditions initiales, on trouve que : On peut alors
exprimer dt en fonction de dθ :

dt = q
g g

2 l cos(θ) − l cos(θ0 )

En eectuant un changement de variable en utilisant k = sin(θ0 /2) et dϕ = 21 dθ, on obtient :


2dϕ
dt = p
4 gl sin(ϕ)(1 − sin(ϕ)k 2 )

On peut alors trouver T en intégrant cette expression :


Z π
2 2dϕ
T =4
4 gl sin(ϕ)(1 − sin(ϕ)k 2 )
p
0

La période des petites oscillations T0 est donnée par :

2
s
l
T0 = 2π
g

Enn, le rapport des périodes est donné par :


Z π
T 2 2 dϕ
= q
T0 π 0 1 − k 2 sin2 (ϕ)

Conclusion
Ce travail pratique nous a permis de mettre en ÷uvre diverses méthodes mathématiques et numériques pour
résoudre des équations diérentielles. Nous avons d'abord réduit des équations d'ordre supérieur en systèmes
d'équations du premier ordre, ce qui a facilité leur étude et leur résolution numérique. Ensuite, nous avons
comparé les méthodes d'Euler et de Runge-Kutta, de diérents ordres, en les appliquant à des exemples concrets.
Nous avons ainsi pu apprécier leurs avantages et leurs limites, notamment en termes de précision et de stabilité.
Nous avons constaté que la méthode d'Euler, simple à implémenter, était moins précise que les méthodes de
Runge-Kutta, surtout pour des pas de temps élevés. Parmi les méthodes de Runge-Kutta, celle d'ordre 4 s'est
révélée la plus performante, en fournissant des solutions proches des solutions analytiques, même avec des pas de
temps relativement grands. Les programmes Python développés ont été essentiels pour visualiser et comparer
les résultats obtenus par ces diérentes méthodes, ainsi que pour analyser les erreurs relatives. Ce travail nous
a donc permis de comprendre les principes et les enjeux des méthodes numériques pour résoudre des équations
diérentielles, et de développer des compétences en programmation et en analyse de données.

Vous aimerez peut-être aussi