Approximation de racines : la théorie I. La méthode de dichotomie

publicité
16
Approximation de racines : la théorie
I.
La méthode de dichotomie
⋄ On dispose d’une fonction f : [a, b] → R
continue et telle que f (a) et f (b) sont de signes
contraires. La fonction f s’annule sur [a, b] et on
veut obtenir une valeur approchée à ε près (ε > 0
est également donné) d’une racine de f .
a
c=
a+b
2
b
Données : f , a, b, ε
tant que (b − a) > ε
c ← a+b
2
s i f (a) × f (c) É 0
alors b ←c
sinon a ←c
fin si
f i n tant que
Résultat :
def dichotomie(f,a,b,epsilon):
while (b-a)>epsilon:
c=float(a+b)/2
if f(a)*f(c)<=0:
b=c
else:
a=c
return float(a+b)/2
a +b
2
Exemple Python.
print dichotomie(lambda x:x**2-2,0,2,1e-3)
1.41455078125
Remarque. La construction lambda x:x**2-2 désigne la fonction qui à x associe x 2 −2.
Cette écriture est très pratique lorsque l’on a besoin d’utiliser une fonction mais que l’on
ne juge pas utile de lui donner de nom. On aurait aussi bien pu écrire :
def f(x): # Si f n'est pas utilisée par ailleurs !
return x**2-2
print dichotomie(f,0,2,1e-3)
http://alexandre.boisseau.free.fr/Prive/WWW/InfoPCSI/resume16.pdf
II.
La méthode de Newton
⋄ On considère une fonction f de classe C1 sur un intervalle I . On suppose que f s’annule
en α ∈ I et que f ′ ne s’annule pas sur I et on cherche à déterminer une valeur approchée de
α. On définit pour cela une suite (xn ) par récurrence :
– on prend x0 ∈ I (assez proche de α, lorsque l’on connait une estimation de α ou un
encadrement) ;
– pour n ∈ N, xn+1 est défini comme étant l’abscisse du point d’intersection de l’axe
des abscisses avec la tangente à la courbe représentative de f au point d’abscisse xn .
⋄ La suite (xn ) satisfait la relation de récurrence :
∀n ∈ N, xn+1 = xn −
f (xn )
f ′ (xn )
Sous les bonnes hypothèses, la suite (xn )
converge vers une solution de l’équation f (x) =
0. On va calculer xn pour un entier n donné.
Données : f , f ′ , x0 et n
x ←x0
pour k a l l a n t de 0 à n − 1
x ←x −
f i n pour
f (x)
f ′ (x)
x2
x1
x0
def newton(f,fprime,x0,n):
x=x0
for k in range(0,n):
x=x-float(f(x))/fprime(x)
return x
Résultat : x
Exemple Python.
from math import sin,cos
print newton(lambda x:-cos(x),lambda x:sin(x),1,5)
1.57079632679
BRemarque. Chacun des deux algorithmes a besoin de la fonction f (bien entendu) et
d’informations supplémentaires :
• Pour l’algorithme de dichotomie, il faut donner deux valeurs dont les images par f
sont de signes opposés ;
• Pour l’algorithme de Newton, il faut fournir la dérivée de f ainsi qu’une valeur de
départ (estimation initiale).
Téléchargement