Chapitre 6
Algorithmes num´ eriques
6.1 Equations non lin´ eaires
Le probl` eme g´ en´ eral
Etant donn´ee une fonction f : I → IR continue, le probl`eme est d’obtenir efficacement une (resp : les) solutions de f(x) = 0 dans un intervalle I. La condition f(a)f (b) < 0 assure l’existence d’une solution. Une ´etude th´eorique plus fine peut ˆetre n´ecessaire pour isoler une unique solution dans un intervalle.
6.1.1 Dichotomie
Entr´ ee: a < b, f continue avec f(a)f (b) ≤ 0, pr´ecision ǫ.
Sortie: encadrement d’une solution de f (x) = 0.
tantque b − a > ǫ faire c ← a + b
2 ;
si f (a)f(c) ≤ 0 alors b ← c;
sinon a ← c;
fsi ftantque
retourner a, b;
Algorithme 1: Dichotomie
L’algorithme donne une solution avec la pr´ecision ǫ avec un nombre d’it´eration n = E(log
2(b − a) − log
2(ǫ)) + 1.
Exercice 6.1.1 En utilisant les fonction usuelles du module math´ematique de Python, appliquez la Dichotomie entre [2, 4] `a la fonction sin pour trouver une valeur approch´ee de π.
thonverb
(python)
✞
from math import ∗ pri nt s i n ( 1 . 5 7 )
✡✝ ✆
1
6.1.2 Algorithme du point fixe
Entr´ ee: terme initial x
0et fonction g ; Sortie: n et x
n;
n ← 0 ; x ← x
0;
Initialisation du bool´een arret;
tantque arret vaut F alse faire x ← g (x) ;n ← n + 1;
mise `a jour de arrˆet;
ftantque
retourner n, x;
Algorithme 2: Algorithme du point fixe
Condition d’arrˆet : pr´ecision, sortie de l’intervalle, nombre maximal d’it´eration.
Th´ eor` eme 6.1.2 Si g est une application d´efinie sur [a, b] telle que :
∀x ∈ [a, b] g (x) ∈ [a, b] , et
g est contractante : ∃k < 1 ∀x ∀y |g(x) − g (y)| ≤ k|x − y| ,
alors g admet un unique point fixe ℓ sur [a, b], et l’algorithme du point fixe converge vers ℓ, pour toute valeur initiale x
0dans [a, b].
Accroissement finis : la condition de contraction est satisfaite si la d´eriv´ee est major´ee en valeur absolue par k < 1.
Exercice 6.1.3 On souhaite utiliser la m´ethode pr´ec´edente avec u
0= 1 et f
1= x + 2
2x et f
2= x
2+ 2
2x .
1) Programmez n it´erations en Python. Etudiez la convergence selon u
0et sa vitesse.
2) Quelle instruction xcas donne directement le dessin ci dessous ?
Vitesse de convergence : Consid´erons une suite (u
n) de limite ℓ, et e
n= ℓ − u
n. Si on a une majoration |e
n+1| ≤ k|e
n|, on dit que la convergence est (au moins) lin´eaire. Si on a une majoration
|e
n+1| ≤ k|e
n|
p, on dit que la convergence est (au moins) d’ordre p (quadratique pour p = 2). Dans le th´eor`eme du point fixe pr´ec´edent, la convergence est au moins lin´eaire.
6.2 M´ ethodes de Newton et de Lagrange
On consid`ere l’´equation
f (x) = 0 , x ∈ [a, b] .
On suppose que f est de classe C
2, et change de signe sur [a, b]. La m´ethode consiste `a remplacer, la fonction par une interpolation de degr´e 1 : P
1(x) = f [α] + f [α, β](x − α). (Dans le cas α = β l´e diff´erence divis´ee ´etendue est : f[α, α] = f
′(α).
2
Sous r´eserve que la diff´erence divis´ee f[α, β] soit non nulle, cela conduit `a une solution ap- proch´ee : α − f(α)
f [α, β] .
On recommence le proc´ed´e avec un support α
n, β
nam´elior´e `a chaque it´eration.
6.2.1 M´ ethode de Newton (tangente)
On utilise `a chaque it´eration le support x
n, x
n. La formule pour x
n+1: x
n+1= x
n− f (x
n)
f
′(x
n) . Etude de l’erreur : si ℓ est solution, et e
n= ℓ − x
n, alors :
e
n+1= −1 2
f
′′(u
n)
f
′(x
n) e
2n, a < u
n< b .
Th´ eor` eme 6.2.1 Si f : [a, b] → [a, b] est une fonction de classe C
2, avec : f(a)f (b) < 0, f
′et f
′′de signe constant sur [a, b], et
f (a) f
′(a)
< b − a ,
f (b) f
′(b)
< b − a ,
alors il y a une unique solution dans l’intervalle, et la m´ethode de Newton converge vers cette solution avec une vitesse au moins quadratique.
Entr´ ee: terme initial x
0et fonction f ; Sortie: n et x
n;
n ← 0 ; x ← x
0;
Initialisation du bool´een arrˆet;
tantque arrˆet vaut F alse faire x ← x − f (x)
f
′(x) ;n ← n + 1;
mise `a jour de arrˆet;
ftantque retourner n, x;
Exercice 6.2.2 On souhaite illustrer la convergence quadratique. Nous utiliserons pour cela un logiciel permettant une pr´ecision arbitraire tel que xcas.
1) Pour n’effectuer ce calcul qu’une seule fois, affectez `a la variable sq2 une valeur approch´ee de sqrt2 avec 1000 chiffres.
2) Programmez la m´ethode de Newton pour la fonction x
2− 2, et v´erifiez qu’elle fonctionne.
3) a) Adaptez maintenant votre programme pour qu’il calcule la suite u
navec 1000 chiffres.
b) Affichez `a chaque it´eration la diff´erence u
n− sq2 avec 15 chiffres significatifs.
c) Commentez la convergence quadratique. En combien d’it´erations obtenez vous 1000 chiffres exacts pour sqrt2 ?
6.2.2 M´ ethode de Lagrange (s´ ecante)
On utilise `a chaque it´eration le support x
n, x
n−1. La formule pour x
n+1: x
n+1= x
n− f (x
n)
f [x
n, x
n−1] . Etude de l’erreur : si ℓ est solution, et e
n= ℓ − x
n, alors :
e
n+1= −1 2
f
′′(u
n)
f
′(v
n) e
ne
n−1, a < u
n, v
n< b .
3
6.2.3 Exercice ; Fractals
On consid`ere l’ensemble E des compacts de C. On munit E de la distance de Haussdorff : d(K
1, K
2) = max {max{d(x, K
2), x ∈ K
1}, max{d(x, K
1), x ∈ K
2}}
o` u la distance d’un point `a un compact d(x, K) n’est autre que inf {|x − y|, y ∈ K}.
On admettra que (E , d) est un espace m´etrique complet, et donc que le th´eor`eme du point fixe est valable.
1) Essayez :
(giac/xcas)
✞
T:= t r i a n g l e (0 ,1 ,1 + i ) ; T2:=T+1;
T3:=T∗exp ( i∗p i / 3 ) ; T∗( 1 / 3 ) ;
T/ 3 ;
✡✝ ✆
Pour translater une suite d’objets geometriques, on utilisera la fonction translation plutot qu’une syntaxe du type : [D1,D2]+1 qui risque fort de ne pas marcher `a cause de l’addition des vecteurs de taille differentes. En revanche on remarquera que la rotation et l’homoth´etie d’une suite d’objets g´eom´etriques marchent parfaitement : [D1,D2]*i;
2) On consid`ere les applications de C dans C : f
1: x 7→ x/3, f
2: x 7→ 1 + x.e
iπ/33 , f
3: x 7→
1 + e
iπ/3+ x.e
−iπ/33 , f
4: x 7→ 2 + x
3 . Repr´esentez sous xcas l’image par ces applications du segment [O, 1]. On pourra trouver la syntaxe d’une similitude sous xcas.
3) On consid`ere l’application F : E → E d´efinie par K 7→
4
[
i=1