0% ont trouvé ce document utile (0 vote)
99 vues2 pages

TP Edo 1

Ce document présente un TP sur la résolution numérique des équations différentielles ordinaires. Il décrit l'utilisation des schémas d'Euler explicite et point milieu pour résoudre un problème modèle et déterminer leur ordre numérique. Le document contient également le code Python correspondant.

Transféré par

neuen konto
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
99 vues2 pages

TP Edo 1

Ce document présente un TP sur la résolution numérique des équations différentielles ordinaires. Il décrit l'utilisation des schémas d'Euler explicite et point milieu pour résoudre un problème modèle et déterminer leur ordre numérique. Le document contient également le code Python correspondant.

Transféré par

neuen konto
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ENSAM-MEKNES 3EME ANNEE

TP N◦ 1 RESOLUTION NUMERIQUE
DES EDO 2022-2023

TP N◦ 1 Résolution numérique des EDO


Schémas d’Euler et ordre

Exercice 1 Euler explicite


On cherche à mettre en œuvre la méthode d’Euler explicite pour la résolution numérique du
problème de Cauchy (
y 0 (t) = f (t, y(t)), t ∈ [0, T ]
y(0) = y0 .
Elle consiste, pour un pas h donné, à construire une suite d’approximations (yn ) de la solution
y aux temps tn = nh, par la formule

yn+1 = yn + hf (tn , yn ).

Par la suite, on utilise l’exemple modèle y 0 = t − ty avec la condition initiale y(0) = 2. La


−t2
solution exacte de cet exemple est donnée par y(t) = 1 + e 2 .
A la fin de cette série de TP vous trouvez le programme principal, le programme du schéma
d’Euler explicite et le programme de la fonction f . (Voir au dos de la feuille)

1. Tester le programme et interpréter la figure affichée

2. Programmer la solution exacte, puis calculer l’erreur d’approximation;

3. Tracer les deux solutions sur la même figure;

4. Effectuer des simulations pour différentes valeurs du pas h (h = T /N avec N = 10 : 10 :


1000);

5. Tracer la courbe du log des erreurs d’approximation en fonction du log des pas h;

6. Quel est l’ordre obtenue numériquement du schéma d’Euler explicite.


L’ordre numérique est la pente de la droite de la régression linéaire des points.

Exercice 2 Euler point milieu


On utilise ici l’exemple modèle précédent y 0 (t) = t − ty(t), y(0) = 2. La solution exacte est
−t2
donnée par y(t) = 1 + e 2 .
Le schéma d’Euler point milieu consiste à construire une suite d’approximations (yn ) de la
solution y de la façon suivante :

yn+1/2 = yn + h2 f (tn , yn )
yn+1 = yn + hf (tn + h2 , yn+1/2 ).

1. Ecrire une fonction "EulerPointMilieu" qui permet de calculer la solution approchée yn


par la méthode d’Euler point milieu.

2. Tracer les deux solutions approchées (Euler explicite et point milieu) et la solution exacte
sur la même figure

3. Déterminer numériquement l’ordre de la méthode d’Euler point milieu.

1
ENSAM-MEKNES 3EME ANNEE
TP N◦ 1 RESOLUTION NUMERIQUE
DES EDO 2022-2023

4. Programmer le schéma semi-implicite et le schéma de Heun.


5. Programmer le schéma d’Euler implicite.
________________________________
# Programme principal
import numpy as np
import [Link] as plt
T=2.
t0=0
u0=2.
N=10
h=T/N
t,u=SchemaExp(fonct,u0,t0,T,N)
# ue = solext(t) # doit etre programme
# er=[Link]((ue-u),ord=[Link])
[Link](t,u,color=’k’,ls=’--’,label="solution approchée")
# [Link](t,ue,color=’b’,ls=’:’,label="solution exacte")
[Link](’time’)
[Link](’solution u’)
[Link](’Solution approchee par Euler explicite’)
[Link]()
[Link]()
________________________________
________________________________
#Schema Euler Explicite : fonction "SchemaExp"
#
def SchemaExp(f,u0,t0,T,N):
h=T/N
t=[Link](t0,T,N+1)
u=[Link](N+1)
u[0]=u0
for i in range(N):
u[i+1]=u[i]+h*f(t[i],u[i])
return t,u
______________________
________________________________
#programme de la fonction f
#
def fonct(t,u):
return t-t*u
________________________________
________________________________
# Calcul de l’ordre numerique
# lh = liste des pas
# ler : liste des erreurs correspondantes à lh
print([Link](lh,ler,1))
________________________________

Vous aimerez peut-être aussi