Travaux pratiques 8

Download Report

Transcript Travaux pratiques 8

Lycée CHATEAUBRIAND - BCPST 1B
1
Travaux pratiques 8
Initiation aux méthodes numériques
∗
∗
∗
L’objectif du TP est de découvrir quelques méthodes d’analyse numérique relatives à :
1. le calcul approché de l’intégrale d’une fonction continue.
2. la recherche d’une solution approchée d’une équation de la forme f (x) = 0.
3. la résolution approchée d’une équation différentielle linéaire du premier ordre.
I. Calcul approché d’une intégrale
On rappelle le résultat suivant :
Z
1
dx
.
2
0 1+x
On souhaite comparer les valeurs approchées de π obtenues par les méthodes des rectangles et des
trapèzes.
π=4
1. Méthode des rectangles
On rappelle que d’après la méthode des rectangles à gauche on a :
Z
a
b
n−1
b−aX
f (t)dt '
f a + k b−a
.
n
n k=0
Écrire une fonction rectangle qui prend en argument une fonction f, les bornes a et b de l’intervalle
Rb
considéré ainsi qu’un entier naturel non nul n et qui renvoie la valeur approchée de a f (t)dt fournie
par la méthode des rectangles :
def rectangle(f,a,b,n):
Utiliser cette fonction pour déterminer une valeur approchée de π avec n=10, n=100 et n=1000.
2. Méthode des trapèzes
On rappelle que d’après la méthode des trapèzes on a :
!
Z b
n−1
b−a
)
+
f
(a
+
(k
+
1)
)
b − a X f (a + k b−a
b−a
n
n
=
f (t)dt '
n
2
n
a
k=0
!
n−1
f (a) + f (b) X
f (a + k b−a
+
) .
n
2
k=1
Écrire une fonction trapeze qui prend en argument une fonction f, les bornes a et b de l’intervalle
considéré ainsi qu’un entier naturel non nul n et qui renvoie la valeur de Tn .
2
TP 8
def trapeze(f,a,b,n):
Utiliser cette fonction pour déterminer une valeur approchée de π avec n=10, n=100 et n=1000.
Comparer les deux méthodes.
II. Solution approchée d’une équation de la forme f (x) = 0
1. Méthode de dichotomie
Écrire une fonction dichotomie qui prend en argument une fonction f, les bornes a et b de l’intervalle
(a < b) ainsi que la précision eps et qui renvoie une valeur approchée de la solution de l’équation
f (x) = 0 recherchée :
def dichotomie(f,a,b,eps):
On admet que l’équation x5 + 3x2 − 10 = 0 possède une solution unique dans [0; 2].
1. Créer dans Python la fonction f : x 7−→ x5 + 3x2 − 10.
2. En utilisant la fonction dichotomie, trouver une valeur approchée à 10−5 près de la solution
de l’équation f (x) = 0 dans [0; 2].
2. Méthode de Newton
Soit f une fonction de classe C 1 sur R telle que l’équation f (x) = 0 possède au moins une solution
telle que f 0 (x) 6= 0. Soit x0 ∈ R tel que f 0 (x0 ) 6= 0, on considère la suite (xn ) définie par :
∀ n ∈ N,
xn+1 = xn −
f (xn )
.
f 0 (xn )
On rappelle que pour x0 au voisinage d’une solution x∗ de l’équation, (xn ) tend vers x∗ . On adopte
comme critère d’arrêt le fait que l’écart entre deux termes consécutifs est inférieur à une précision ε
choisie.
Écrire une fonction newton qui prend en arguments une fonction f et sa dérivée fprime, le premier
terme de la suite x ainsi que la précision eps et qui renvoie une valeur approchée de la solution de
l’équation f (x) = 0 obtenue par la méthode de Newton :
def newton(f,fprime,x,eps):
Appliquer la méthode de Newton à la fonction précédente avec une précision ε = 10−5 afin de
déterminer une solution approchée de la solution de l’équation f (x) = 0 dans [0; 2].
III. Résolution numérique d’une équation différentielle
On se place dans le cas d’une équation différentielle de la forme :
(E)
dy
= a(t)y + b(t)
dt
où a et b sont des fonctions définies et continues sur R.
Soient (t0 , y0 ) ∈ R2 . On cherche à tracer la solution y de (E) vérifiant la condition initiale y(t0 ) = y0 .
Lycée CHATEAUBRIAND - BCPST 1B
3
1. La méthode d’Euler
La méthode d’Euler consiste à approcher la dérivée en un point par le taux d’accroissement en ce
point. Pour un pas h > 0 fixé (assez petit), on obtient ainsi l’équation approchée :
y(t + h) ' 1 + ha(t)]y(t) + hb(t).
Pour tout n ∈ N, on pose tn = t0 + nh, de sorte que :
∀ n ∈ N, y(tn+1 ) ' 1 + ha(tn ) y(tn ) + hb(tn ).
On introduit alors la suite de réels (yn )n∈N définie par :
(
y0 = y(t0 )
∀ n ∈ N, yn+1 = 1 + ha(tn ) yn + hb(tn ).
La suite (yn ) ainsi construite fournit une approximation de la suite (y(tn )), c’est-à-dire une approximation des valeurs prises par la solution considérée aux instants (tn ).
Écrire une fonction euler qui prend en argument des fonctions continues a et b, des réels t0, y0, le
pas h et un entier N, et qui renvoie la liste [y0,...,yN] issue de l’application de la méthode d’Euler
à partir de la donnée initiale (t0 , y0 ) avec N itérations.
def euler(a,b,t0,y0,h,N):
2. Un exemple simple
On se place dans le cas où a est la fonction constante égale à 1 et b la fonction nulle :
(E) y 0 = y.
On sait que la solution y telle que y(0) = 1 est la fonction exponentielle. On souhaite tracer sur
une même figure la solution théorique et une solution approchée sur l’intervalle [0; 2] obtenue par la
méthode d’Euler.
On choisit la solution numérique approchée avec h = 0.5 et N = 4 et on procède comme suit :
import numpy as np
import matplotlib.pyplot as plt
t=np.arange(0,2.01,0.01)
S=np.exp(t)
plt.plot(t,S)
t = [0, 0.01, . . . , 2]
S = [exp(0), exp(0.01), . . . , exp(2)]
trace la courbe de exp sur [0; 2]
t1=np.arange(0,2.5,0.5)
Sn1=euler(a,b,0,1,0.5,4)
plt.plot(t1,Sn1)
trace la courbe de la solution approchée sur [0; 2]
Tracer sur la même figure la solution numérique approchée sur [0; 2] pour d’autres valeurs du pas h.
On pourra choisir h = 0.2, h = 0.1, h = 0.01, . . .