Vous êtes sur la page 1sur 4

CPGE Informatique

Casablanca

Résolution numérique des équations différentielles

Exercice 1 :
Partie 1 : Equations différentielles du premier ordre
Une équation différentielle du premier ordre normalisée peut toujours s'écrire sous la
forme suivante :

Par exemple :

 () ( )
 ’ (t) = 2.t.sin (y(t)) + 1 avec y(1)=1
Méthodes de résolution des équations différentielles

On veut déterminer une solution approchée de l’équation différentielle :

( ) ( ( ))

Où : ( ( ))est une fonction continue sur l’intervalle [a, b] ; avec une condition
initiale : y(a)=y0
On considère une subdivision régulière t = (t0, t1, …, tn) de [a, b] de pas h = (b-a)/n, on a
donc :
ti =t0+ih =a+ih
a. Méthode d’Euler
Si h est suffisamment petit on a :

( ) ( ) ∫ ( ( )) ( ( ))

Avec la méthode d’Euler, les approximations sont alors calculées de proche en proche par :

( )
b. Méthode de prédiction-correction
La formule de la méthode de prédiction correction est donnée comme suit :

( ( ) ( ̅̅̅̅̅̅))
CPGE Informatique
Casablanca

̅̅̅̅̅̅ ( )
1. Définir une fonction Euler(f,a,b,y0,n) qui prend en paramètre la fonction f(t,y)
représentant l’équation différentielle à résoudre, les bornes de l’intervalle de résolution a
et b, n le nombre de sous intervalle à considérer et y0=y(a) et qui retourne une liste de
n+1 éléments solution de l’équation différentielle par la méthode d’Euler.
2. Définir une fonction Prediction(f,a,b,y0,n) qui prend en paramètre la fonction f(t,y)
représentant l’équation différentielle à résoudre, les bornes de l’intervalle de résolution a
et b, n le nombre de sous intervalle à considérer et y0=y(a) et qui retourne une liste de
n+1 éléments solution de l’équation différentielle par la méthode de prédiction
correction.
3. Ecrire un programme de test pour résoudre l’équation différentielle suivante sur
l’intervalle [0,3] :
()
( )
4. A l’aide de la fonction prédéfinie de python Odeint, écrire un programme de test pour
résoudre l’équation différentielle suivante sur l’intervalle [1,5] :
y’ (t) - 2.t.sin(y(t)) – 1=0
avec y(1)=1
NB:
 la fonction odeint est définie dans le module scipy.integrate.
 sa syntaxe est comme suit :odeint (f, y0, t), pour résoudre l’équation
y′(t)=f(y(t), t) sur un intervalle [a, b].
Exercice 2 :
Question1 :

A l'aide de la fonction odeint( ) du sous-module integrate de scipy, et du module matplotlib.pyplot,


donner le code permettant de tracer la courbe représentative sur l'intervalle [0; 4] (on prendra une
 y ' t . y  0

subdivision de 100 points) de la solution approchée de l’équation suivante : 
 y 0  1

Question 2 : Evolution d’une température en chimie

On note y(t) la température en degrés Celsius d’une réaction chimique en fonction du temps t, t
étant exprimé en heures.
Après étude, on constate que la température est solution de l’équation différentielle :

y '  y  e 0, 25t (E2)

Avec la condition initiale y(0)=20°C.


Ecrire un programme qui donne un tableau composé des températures de la réaction chimique
chaque demi-heure pendant la première journée de la réaction.
CPGE Informatique
Casablanca

Partie 2 : Equation différentielle d’ordre 2


Soit l’équation différentielle d’ordre 2 suivante :

y '' y ' y  t 2  4 sin(t ) avec y(0) = 1 et y’(0) = 2

La fonction odeint nous permet de résoudre des équations d’ordre 1. Alors, pour résoudre des
équations différentielles d’ordre 2 il suffit de les transformer en une équation d’ordre 1 en
considérant que l’inconnu n’est pas y mais le couple z(t) = (y(t), y’(t) ) avec z(t0) = ( y (t0), y’(t0) ).

On calcule alors

z’(t) = (y’, y’’) = (y’, -y’ + y + t2 - 4.sin(t)) = f (z(t), t)

Où f une fonction qu’on peut définir :

def f (z, t):

return np.array([z[1], -z[1] + z[0] + t**2 - 4*np.sin(t)])

La condition initiale z0= [1, 2]

Résolution de l’équation :

On peut résoudre ensuite l’équation différentielle sur l’intervalle [0, 4] :

t= np.linspace (0, 4, 100)

z0 = [1, 2]

z = odeint (f, z0, t)

La valeur de z : c’est la matrice

[[y(t0), y ’(t0)],

[y(t1), y ’(t1)],

………

[y(tn-1), y ’(tn-1)]]

Le tracé : Pour effectuer le tracé il faut extraire la première colonne de la matrice z par : y =
z[:,0] (les tableaux numpy). Effectuer ensuite le tracé :

y = z[ : , 0 ]

plt.plot(t, y)
CPGE Informatique
Casablanca

plt.show( )

1. Modifier la fonction Euler définie dans la partie 1 pour qu’elle résolve une équation de
second degré.
2. Ecrire un programme de test pour résoudre l’équation différentielle suivante sur l’intervalle
[0,3] :
3y’’+2y’+5y=e-t avec y(0)=5 et y’(0)=7
Exercice 2 :
Question 3 :

La trajectoire suivie par un objet relié à un parachute est un axe vertical noté (O, i ).
  
A un instant donné, le vecteur vitesse V de l’objet est défini par V(t)   (t ) i où v est une
fonction de la variable réelle positive t (temps).

Dans ces conditions de l’expérience, le vecteur R représentant la résistance de l’air est défini par
 
R  k V où k est un nombre réel strictement positif. (Voir Figure ci-dessous)

On admet que la position x(t)de l’objet et du parachute vérifie l’équation différentielle suivante :

m x'' (t )  k x(t )  mg (E3)

Où m est la masse totale de l’objet et du parachute et g le coefficient de l’accélération de la


pesanteur.

A partir de l’équation différentielle (E3) donner un programme de résolution numérique qui nous
permet de donner comme résultat la distance x de la chute (l’objet+parachute) après 2 minutes avec un
pas de 2 seconds.

On prendra :m=8 kg, g=10 ms-2, k=25 unités SI, position initiale x(0)=0 m et vitesse initiale
v(0)=v0=3,2 ms-1.

Vous aimerez peut-être aussi