Chapitre 6 Algorithmes numériques - IMJ-PRG

publicité
Chapitre 6
Algorithmes numériques
6.1
Equations non linéaires
Le problème général
Etant donnée une fonction f : I → IR continue, le problème 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 étude théorique plus fine peut être nécessaire pour isoler une unique solution
dans un intervalle.
6.1.1
Dichotomie
Entrée: a < b, f continue avec f (a)f (b) ≤ 0, précision ǫ.
Sortie: encadrement d’une solution de f (x) = 0.
tantque b − a > ǫ faire
a+b
;
c←
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écision ǫ avec un nombre d’itération n = E(log2 (b −
a) − log2 (ǫ)) + 1.
Exercice 6.1.1 En utilisant les fonction usuelles du module mathématique de Python, appliquez
la Dichotomie entre [2, 4] à la fonction sin pour trouver une valeur approchée de π.
thonverb
✞
from math import ∗
print s i n ( 1 . 5 7 )
✝
✡
(python)
✆
1
6.1.2
Algorithme du point fixe
Entrée: terme initial x0 et fonction g;
Sortie: n et xn ;
n ← 0 ; x ← x0 ;
Initialisation du booléen arret;
tantque arret vaut F alse faire
x ← g(x) ;n ← n + 1;
mise à jour de arrêt;
ftantque
retourner n, x;
Algorithme 2: Algorithme du point fixe
Condition d’arrêt : précision, sortie de l’intervalle, nombre maximal d’itération.
Théorème 6.1.2 Si g est une application définie 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 x0 dans [a, b].
Accroissement finis : la condition de contraction est satisfaite si la dérivée est majorée en valeur
absolue par k < 1.
Exercice 6.1.3 On souhaite utiliser la méthode précédente avec u0 = 1 et f1 =
x+2
et f2 =
2x
x2 + 2
.
2x
1) Programmez n itérations en Python. Etudiez la convergence selon u0 et sa vitesse.
2) Quelle instruction xcas donne directement le dessin ci dessous ?
Vitesse de convergence : Considérons une suite (un ) de limite ℓ, et en = ℓ − un . Si on a une
majoration |en+1 | ≤ k|en |, on dit que la convergence est (au moins) linéaire. Si on a une majoration
|en+1 | ≤ k|en |p , on dit que la convergence est (au moins) d’ordre p (quadratique pour p = 2). Dans
le théorème du point fixe précédent, la convergence est au moins linéaire.
6.2
Méthodes de Newton et de Lagrange
On considère l’équation
f (x) = 0 , x ∈ [a, b] .
On suppose que f est de classe C 2 , et change de signe sur [a, b]. La méthode consiste à remplacer,
la fonction par une interpolation de degré 1 : P1 (x) = f [α] + f [α, β](x − α). (Dans le cas α = β lé
différence divisée étendue est : f [α, α] = f ′ (α).
2
Sous réserve que la différence divisée f [α, β] soit non nulle, cela conduit à une solution apf (α)
.
prochée : α −
f [α, β]
On recommence le procédé avec un support αn , βn amélioré à chaque itération.
6.2.1
Méthode de Newton (tangente)
On utilise à chaque itération le support xn , xn . La formule pour xn+1 :
xn+1 = xn −
f (xn )
.
f ′ (xn )
Etude de l’erreur : si ℓ est solution, et en = ℓ − xn , alors :
en+1 =
−1 f ′′ (un ) 2
e , a < un < b .
2 f ′ (xn ) n
Théorème 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) f (b) ′
f (b) < b−a ,
< b−a ,
alors il y a une unique solution dans l’intervalle, et la méthode de Newton converge vers cette
solution avec une vitesse au moins quadratique.
Entrée: terme initial x0 et fonction f ;
Sortie: n et xn ;
n ← 0 ; x ← x0 ;
Initialisation du booléen arrêt;
tantque arrêt vaut F alse faire
f (x)
;n ← n + 1;
x←x− ′
f (x)
mise à jour de arrêt;
ftantque
retourner n, x;
Exercice 6.2.2 On souhaite illustrer la convergence quadratique. Nous utiliserons pour cela un
logiciel permettant une précision arbitraire tel que xcas.
1) Pour n’effectuer ce calcul qu’une seule fois, affectez à la variable sq2 une valeur approchée
de sqrt2 avec 1000 chiffres.
2) Programmez la méthode de Newton pour la fonction x2 − 2, et vérifiez qu’elle fonctionne.
3) a) Adaptez maintenant votre programme pour qu’il calcule la suite un avec 1000 chiffres.
b) Affichez à chaque itération la différence un − sq2 avec 15 chiffres significatifs.
c) Commentez la convergence quadratique. En combien d’itérations obtenez vous 1000 chiffres
exacts pour sqrt2 ?
6.2.2
Méthode de Lagrange (sécante)
On utilise à chaque itération le support xn , xn−1 . La formule pour xn+1 :
xn+1 = xn −
f (xn )
.
f [xn , xn−1 ]
Etude de l’erreur : si ℓ est solution, et en = ℓ − xn , alors :
en+1 =
−1 f ′′ (un )
en en−1 , a < un , vn < b .
2 f ′ (vn )
3
6.2.3
Exercice ; Fractals
On considère l’ensemble E des compacts de C. On munit E de la distance de Haussdorff :
d(K1 , K2 ) = max {max{d(x, K2 ), x ∈ K1 }, max{d(x, K1 ), x ∈ K2 }}
où la distance d’un point à un compact d(x, K) n’est autre que inf {|x − y|, y ∈ K}.
On admettra que (E, d) est un espace métrique complet, et donc que le théorème du point fixe
est valable.
1) Essayez :
✞
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 ;
✝
✡
(giac/xcas)
✆
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 à cause de l’addition des vecteurs
de taille differentes. En revanche on remarquera que la rotation et l’homothétie d’une suite d’objets
géométriques marchent parfaitement : [D1,D2]*i;
1 + x.eiπ/3
, f3 : x 7→
2) On considère les applications de C dans C : f1 : x 7→ x/3, f2 : x 7→
3
1 + eiπ/3 + x.e−iπ/3
2+x
, f4 : x 7→
. Représentez sous xcas l’image par ces applications du segment
3
3
[O, 1]. On pourra trouver la syntaxe d’une similitude sous xcas.
3) On considère l’application F : E → E définie par K 7→
4
[
i=1
fi (K).
4) Créez une fonction qui dessine l’itéré n-ième d’un compact K par F .
a) Testez votre fonction avec le segment [0, 1]. (Attention à ne garder qu’une couche de
crochets pour vos listes d’objets géométriques)
b) Testez votre fonction avec un autre compact de C (par exemple un sapin). Conclusion ?
4
Téléchargement