Академический Документы
Профессиональный Документы
Культура Документы
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
Methode dEuler
Methode dEuler scalaire
Methode dEuler vectorielle
Exemple : Cinetique chimique
Exemple : Oscillateur harmonique
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
(E )
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
avec y (1) =
1
2
t2
. (Cest en fait ici une recherche de
2
primitive.)
>>> import numpy as np
>>> t = np.linspace(-1,1,100)
# tableau des temps
>>> phi = lambda y,t: t
# fonction second membre
>>> from scipy import integrate
>>> y0 = 1/2
# condition initiale y[0] = y(-1) = 1/2
>>> y = integrate.odeint(phi, y0, t)
# y = tableau des y(t[k])
>>> import matplotlib.pyplot as plt
# trac
e
>>> plt.plot(t,y) ; plt.grid() ; plt.show()
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
t2
sur
2
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
y = y
avec y (0) = 1
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
y1 = f1 (y1 , t)
y2 = f2 (y2 , t)
d
y = y
dt
d
y = cos(t)
dt
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
dt y = y
avec : y (0) = 1 et y (0) = 0
y = cos(t)
dt
secrit comme un probl`eme de Cauchy vectoriel :
d
y
y
( )=(
)
y
cos(t)
dt
En posant Y = (
et
y (0)
1
)=(
)
y (0)
0
y
Y [0]
)=(
):
y
Y [1]
import numpy as np
F = lambda Y, t : np.array([Y[1], np.cos(t)])
from scipy import integrate
t = np.linspace(0,6,100)
# Subdivision r
eguli`
ere de [0,6]
y0 = np.array([-1,0])
# array des conditions initiales
y = integrate.odeint(F,y0,t)
# appel de odeint
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
xk+1
xk
f (x)dx = yk +
xk+1
(t, f (t))dt
xk
ba
yk+1
n
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Methode dEuler
import numpy as np
import matplotlib.pyplot as plt
def euler(a,b,Phi,y0,n):
"""M
ethode de Cauchy Euler dint
egration approch
ee de
y= Phi(x,f(x)) sur [a,b] avec condition initiale y0 = f(a)
avec n+1 points"""
x = np.linspace(a,b,n+1)
# Subdivision r
eguli`
ere de [a,b]
y = np.empty(n+1)
# tableau (1D) vide de n+1 elts
y[0] = y0
# Condition initiale
pas = (b-a)/n
for k in range(n):
y[k+1] = y[k] + pas * Phi(x[k],y[k])
return (x,y)
Attention np.empty() retournant un tableau unidimensionnel, cette
ecriture de la m
ethode
dEuler-Cauchy ne fonctionne quavec des
equations diff
erentielles scalaires du premier ordre (nous
verrons plus loin comment en donner une version vectorielle : remplacer par une liste que lon
remplit successivement de vecteurs).
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Methode dEuler-Cauchy
Integration de y = y 2 avec y (0) = 1 (essai sur [0, 1]).
>>>
>>>
>>>
>>>
1
(qui nest pas definie en x = 1...).
1x
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Cinetique chimique
Prenons le cas dune solution composee de reactifs A, B, C , o`
u deux
reactions chimiques A B et B C dordre 1 rentrent en jeu selon les lois.
d[A]
= [A]
dt
[A]
[A]
d
d[B]
[B] = [A] [B]
= [A] [B]
dt
dt
[C ]
[B]
d[C ]
=
[B]
dt
On sinteresse `
a levolution des concentrations des 3 reactifs A , B, C entre 0
et 8s, en partant des concentrations initiales [A] = 1, [B] = [C ] = 0.
Resolution :
import numpy as np
Phi = lambda Y, t: np.array([-Y[0], Y[0] - Y[1], Y[1]])
Y0 = np.array([1, 0, 0])
T, Sol = EulerVect(Phi,Y0,0,8,0.1)
Avec odeint() :
T = np.arange(0,8,0.1) ; Sol = integrate.odeint(Phi,Y0,t)
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Cinetique chimique
import matplotlib.pyplot as plt
plt.plot(T, Sol)
plt.title(Evolution des concentrations de $A$, $B$, $C$)
plt.legend(($[A]$, $[B]$, $[C]$))
plt.xlabel(Temps (s))
plt.show()
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Nous allons :
1. Trouver une equation differentielle satisfaite pas son elongation angulaire
(t).
2. Resoudre numeriquement lequation differentielle avec une position initiale
egale `
a (0) = 2 , une vitesse initiale nulle, et avec g = 9, 81m.s 1 et
l = 10cm.
3. Verifier la propriete de conservation de lenergie, cest `
a dire que :
1 2
l [(t)]2 g l cos (t)
2
reste constant au cours du temps.
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Em = Ec + Ep =
(t)
(t)
d
g
(
)=
dt (t)
sin ((t))
l
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
,
2
import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate
g = 9.81
l = 0.1
F = lambda Y,t: np.array([Y[1] , -g * np.sin(Y[0]) / l])
y0 = np.array([np.pi/2 , 0])
# Condition intiale
t, y = EulerVect(F,y0,0,6,0.01)
# R
esolution
plt.plot(t,y)
plt.legend((theta(t),d theta(t)/ dt))
plt.show()
On utilise comme fonction :
y1
d
y0
g
F (
) , t z
avec
Y = F (Y , t)
sin(y
y1
0)
dt
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
E = np.empty(100)
for i in range(100):
E[i] = 0.5 * l ** 2 * y[i][1] ** 2 - g * l * np.cos(y[i][0])
plt.plot(t,E) ; plt.show()
Remarque : Lenergie mecanique sobtient aussi sans boucle for et par
slicing :
E = 0.5 * l ** 2 * y[ : , 1] ** 2 - g * l * np.cos(y[ : , 0])
Equations diff
erentielles du 1er ordre
Int
egration d
equations diff
erentielle sous scipy
Equation diff
erentielles dordres sup
erieurs
M
ethode dEuler
M
ethode dEuler scalaire
M
ethode dEuler vectorielle
Exemple : Cin
etique chimique
Exemple : Oscillateur harmonique
La fluctuation de lenergie est de lordre de 107 . Elle est due aux erreurs
dapproximation. Pour eviter ce phenom`ene : plt.axis(equal) :
plt.axis(equal)
Ou encore :
plt.axis([0, 6, -2.2, 2.2])
# Donne la fen^
etre a
` afficher.