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