Cours de Calcul Numérique INFO-F-205 G. Bontempi S. Ben Taieb, C. Olsen Département d’Informatique Boulevard de Triomphe - CP 212 http://www.ulb.ac.be/di Cours de calcul numérique – p. 1/47 Résolution des équations non linéaires. • Définition du problème. • Définition de la convergence. • Méthodes: • de la bissection, • de la corde, • de la sécante, • de la fausse position ou Regula Falsi, • de Newton. • Itérations de point fixe. Cours de calcul numérique – p. 2/47 Exemple pratique: balle flottante Selon le théorème d’Archimede, tout corps plongé dans un fluide reçoit de la part de celui-ci une poussée verticale dirigée de bas en haut égale au poids du volume de fluide deplacé par le corps. r r−x x Cours de calcul numérique – p. 3/47 Exemple pratique: balle flottante • Le volume du fluide deplacé est le volume de la calotte spherique de hauteur x et rayon r V = Z x π(r 2 − (r − x + z)2 )dz = 0 1 2 πx (3r − x) 3 • Le poids du corps sphérique de densité ρ est P = ρ(4πr 3 )/3 • Supposons que le liquide ait densité unitaire • Afin de connaître la profondeur de l’immersion de la balle, il faut résoudre l’équation non linéaire πx2 (3r − x)/3 = ρ(4πr 3 )/3 qui pour r = 1 peut être simplifiée dans la forme x3 − 3x2 + 4ρ = 0 Cours de calcul numérique – p. 4/47 Exemple: cinematique d’un bras robotisé Considerons le bras d’un robot à deux articulations de longeur d1 et d2 , respectivement. La position du bras peut être décrite par l’angle α que la première articulation forme avec l’axe horizontale et l’angle β entre les deux articulations. Supposons de vouloir trouver les valeurs des deux angles tels que l’extremité de la deuxième articulation se trouve sur un point donné de coordonnées p1 , p2 . y d2 β p2 d1 α x p1 Cours de calcul numérique – p. 5/47 Exemple: cinematique d’un bras robotisé Il faut résoudre le système d’équations non linéaires ( p1 = d1 cos(α) + d2 cos(α + β) p2 = d1 sin(α) + d2 sin(α + β) Cours de calcul numérique – p. 6/47 Autres exemples • Trouver la racine cubique de 2. • Trouver le point d’équilibre d’un système dynamique. • Trouver l’intersection entre deux fonctions f (x) et g(x). Cours de calcul numérique – p. 7/47 Le problème Étant donné une fonction réelle continue d’une variable réelle f : I = [a, b] ⊆ R → R telle que f (α) = 0, trouver la racine réelle α. Plusieurs situations peuvent se produire : pas de solution 1 solution 2 solutions Notons que si α est une racine multiple de multiplicité m > 1, alors aussi f (k) (α) = 0, k = 0, . . . , m − 1 où f (k) est la fonction derivée d’ordre k. Cours de calcul numérique – p. 8/47 Solution itérative • Pour une fonction non linéaire quelconque, la solution analytique est rarement disponible. • Les méthodes numériques pour approcher une racine α sont en général itératives. • Si la méthode est itérative le problème consiste à construire une suite {x(k) } telle que lim x(k) = α k→∞ • En posant g ′ = f , le problème est lié à la recherche des extrêmes d’une fonction g (optimisation), car les zéros de f sont aussi les extrêmes de g. Cours de calcul numérique – p. 9/47 Convergence de la méthode Définition. On dit qu’une suite {x(k) } converge vers α avec un ordre p ≥ 1 si |x(k+1) − α| ≤ C, ∀k ≥ k0 ∃C > 0 : (k) p |x − α| où la constante C est dite le facteur de convergence de la méthode. • L’ordre p n’est pas forcement un nombre entier. • Si l’ordre p = 1 et C < 1, la convergence est dite linéaire. • La convergence est autant plus rapide que la valeur de p est grande. Cours de calcul numérique – p. 10/47 Convergence et fonctions non-linéaires • La convergence des méthodes itératives pour la détermination des racines d’une équation non linéaire dépend en général du choix de la donnée initiale x(0) . • Les méthodes qui convergent vers α pour tout choix de x(0) ∈ I sont dites globalement convergentes vers α. • La plupart des fois on ne peut établir que des résultats de convergence locale, c.à.d. valables seulement pour un x(0) qui appartient à un voisinage de la racine α. • Typiquement les méthodes à convergence locale ont un ordre de convergence plus grand. Cours de calcul numérique – p. 11/47 Méthode de la bissection La méthode est fondée sur le théorème suivant: Théorème (Zéros d’une fonction continue). Soit f une fonction continue f : [a, b] → R. Si f (a)f (b) < 0, alors ∃α ∈]a, b[ tel que f (α) = 0 a α b Cours de calcul numérique – p. 12/47 Algorithme de la bissection (0) a = a, b (0) (0) = b, et x = a(0) +b(0) . 2 Pour k ≥ 0 et tant que |Ik | = |b(k) − a(k) | > ǫ • Si f (x(k) ) = 0 alors x(k) est la racine α. • Si f (x(k) )f (a(k) ) < 0 • a(k+1) = a(k) , b(k+1) = x(k) • Si f (x(k) )f (b(k) ) < 0 • a(k+1) = x(k) , b(k+1) = b(k) • x(k+1) = a(k+1) +b(k+1) 2 Cours de calcul numérique – p. 13/47 Convergence de la méthode • |I0 | = |b − a| • |Ik | = |b(k) − a(k) | = |I0 | 2k |b−a| 2k = pour k ≥ 0 • En notant e(k) = α − x(k) l’ erreur absolue à l’étape k, on déduit que (k) |e (k) | = |α − x |b − a| |Ik | = k+1 |≤ 2 2 pour k ≥ 0 ce qui entraîne lim |e(k) | = 0 k→∞ • Donc la méthode de la bissection est globalement convergente. Cours de calcul numérique – p. 14/47 Nombre d’itérations Afin d’avoir à la (m − 1)-ième étape |e(m−1) | = |x(m−1) − α| ≤ |b − a| ≤ǫ m 2 la valeur m ∈ N doit satisfaire la relation 2m ≥ qui, puisque loga (x) = ln(x) ln(a) b−a ǫ où ln est le logarithme népérien, implique (b − a) ln((b − a)/ǫ) ln((b − a)/ǫ) m ≥ log2 = ≈ ǫ ln(2) 0.6931 où ǫ > 0 est une valeur fixée à l’avance. Cours de calcul numérique – p. 15/47 Exemple Si a = 0, b = 1 et ǫ = 1/100, ln((b − a)/ǫ) = 6.64 0.6931 Donc m = 7. Ceci signifie que à la sixième étape de l’algorithme la valeur absolue de l’erreur sera inférieure à 0.01. Cours de calcul numérique – p. 16/47 Généralités sur la méthode • La méthode de bissection ne prend pas en compte les informations données par les valeurs absolues de f (·) ni celles données par sa dérivée f ′ (·). • Soit |x(j) − α| l’erreur à l’étape j. Nous voulons déterminer à quelle étape k > j l’erreur sera un dixième de l’erreur à la jème étape. Puisque (k) |x |I0 | − α| ≤ k+1 2 (k) et |x |I0 | |x(j) − α| ≤ j+1 − α| = 10 2 · 10 une estimation rapide peut être obtenue en imposant l’égalité des deux bornes supérieures. Nous obtenons 2k+1 = 2j+1 · 10 ⇒ k − j = log2 (10) ≈ 3.32 c.à.d., l’algorithme de bissection converge lentement. Cours de calcul numérique – p. 17/47 Généralités sur la méthode (II) • la méthode ne garantit pas la réduction monotone de l’erreur. • la méthode n’est pas une méthode d’ordre 1 au sens de la définition d’ordre de convergence. • la méthode est typiquement utilisée pour avoir une bonne initialisation d’une méthode d’ordre supérieure. Cours de calcul numérique – p. 18/47 Méthodes linéarisées Développons f (·) en série de Taylor autour de la racine α f (α) = 0 = f (x′ ) + (α − x′ )f ′ (ξ) où ξ ∈ [x′ , α] où f (x′ ) 6= 0 Il suit f (x′ ) α=x − ′ f (ξ) ′ En d’autres termes, si on connaissait la valeur ξ on pourrait obtenir la solution α à partir de la solution approachée x′ . Cours de calcul numérique – p. 19/47 Méthodes linéarisées L’équation d’une droite qui passe par le point (x′ , f (x′ )) et qui a le pente f ′ (ξ) est la suivante y = f ′ (ξ)x + f (x′ ) − f ′ (ξ)x′ La relation 0 = f (x′ ) + (α − x′ )f ′ (ξ) peut être interprétée de manière géometrique de la manière suivante: le point α est l’intersection entre l’axe x et la droite qui passe par le point (x′ , f (x′ )) et qui a le pente f ′ (ξ) f() x’ ξ α Cours de calcul numérique – p. 20/47 Méthodes linéarisées Cette équation conduit à la méthode itérative suivante: f (x(k) ) + (x(k+1) − x(k) )qk = 0 ⇔ x(k+1) = x(k) − qk−1 f (x(k) ) où qk est une approximation de f ′ (ξ). Cela revient à 1. approcher une fonction non-linéaire par une droite et 2. déterminer x(k+1) comme l’intersection entre l’axe des x et la droite de pente qk passant par (x(k) , f (x(k) )). Nous montrerons 4 méthodes qui se différencient par le choix de qk . Cours de calcul numérique – p. 21/47 Choix de qk (I) x(k+1) = x(k) − qk−1 f (x(k) ) • Méthode de la corde f (b) − f (a) =q qk = b−a est la pente de la droite passant par A = (a, f (a)) et B = (b, f (b)); • Méthode de la sécante f (x(k) ) − f (x(k−1) ) qk = x(k) − x(k−1) est la pente de la droite passant par (x(k−1) , f (x(k−1) )) et (x(k) , f (x(k) )); Comparée à la méthode de la corde, cette méthode nécessite une donnée initiale supplémentaire x(−1) , ainsi que, le calcul d’un quotient pour chaque k. Cours de calcul numérique – p. 22/47 Choix de qk (II) • Méthode de la fausse position (k) qk = (k′ ) f (x ) − f (x x(k) − x(k′ ) ′ ) (k) où k est le plus grand indice inférieur à k tel que f (x (k′ ) )f (x ) < 0. • Méthode de Newton-Raphson On suppose f (·) continue sur I, f ′ (α) 6= 0 et on pose qk = f ′ (x(k) ) c.à.d. la pente de la tangente à f (·) en x(k) . Cette méthode nécessite l’évaluation de la fonction f (·) et de sa dérivée f ′ (·). Cours de calcul numérique – p. 23/47 Méthode de la corde B a A x (0) x(1) α b La méthode ne converge pas toujours. Si la méthode converge, elle converge avec un ordre p = 1. Cours de calcul numérique – p. 24/47 Méthode de la sécante A x(2) α x (1) x(0) b a B Convergence locale: si f ∈ C 2 , si les données initiales sont assez proches de α et f ′ (α) 6= 0, la méthode converge avec un ordre p = 1.63. Cours de calcul numérique – p. 25/47 Méthode de la fausse position A x(2) a x(1) (0) x b α B La méthode est globalement convergente et converge avec un ordre p = 1. Cours de calcul numérique – p. 26/47 Méthode de Newton A α a x(1) (0) x b x(2) B Convergence locale: si x(0) est assez proche de α et f ′ (α) 6= 0, la méthode converge avec un ordre p = 2. Cours de calcul numérique – p. 27/47 Itérations de point fixe • Définition (Point fixe). Le point fixe d’une fonction φ(·) est un nombre réel p tel que φ(p) = p. • Idée: transformer le problème f (x) = 0 où f : [a, b] → R en un problème équivalent x − φ(x) = 0 c-à-d. x = φ(x) où φ(·) est telle que φ(α) = α. • Cette transformation est toujours possible mais elle n’est pas unique. • Exemple: φ(x) = F (f (x)) + x où F (·) est une fonction continue telle que F (0) = 0. Cours de calcul numérique – p. 28/47 Algorithme d’itération de point fixe • Approcher les zéros de f (·) revient à déterminer les points fixes de φ(·). • Étant donné x(0) , l’algorithme itératif est le suivant x(k+1) = φ(x(k) ) pour k ≥ 0 où l’itération est dite de point fixe et φ(·) est dite la fonction d’itération associée. • La méthode est fortement consistante. • Dans ce qui suit, nous allons analyser sa convergence. Cours de calcul numérique – p. 29/47 Convergence de l’itération de point fixe (1) Théorème. Soit φ(·) une fonction continue et {x(k) }∞ k=0 une suite générée par l’itération de point fixe. Si la suite converge lim x(k) = α k→∞ alors le point limite α est un point fixe de φ(·). Exemple: considerons l’itération (k+1) x −x(k) =e où x(0) = 0.5 On peut montrer que lim x(k) = 0.567143 k→∞ où la limite est le point fixe de la fonction φ(x) = e−x et également la racine de la fonction f (x) = e−x − x. Cours de calcul numérique – p. 30/47 Convergence de l’itération de point fixe (2) Théorème. Soit φ(·) ∈ C 1 [a, b]. • Si ∀x ∈ [a, b], φ(x) ∈ [a, b] alors φ(·) a un point fixe dans [a, b] • Si, de plus, ∃K < 1 : |φ′ (x)| ≤ K ∀x ∈ [a, b] alors φ(·) a un unique point fixe α dans [a, b] et la suite {x(k) } converge vers α pour tout choix de x(0) . Dans ce cas α est appelé point attracteur. • Si |φ′ (x)| > 1 ∀x ∈ [a, b] alors la suite {x(k) } ne converge pas si x(0) 6= α . Dans ce cas α est appelé point répulsif. Notons que la deuxième partie de ce théorème donne des conditions suffisantes pour que la méthode de point fixe converge vers la racine α pour tout choix de la valeur initiale x(0) . Cours de calcul numérique – p. 31/47 Point attracteur φ(x (0) ) φ(x (1) ) α x (3) x (2) x (1) x (0) Cours de calcul numérique – p. 32/47 Point répulsif φ(x (1) ) φ(x (0) ) α x (0) x (1) x (2) x (3) Cours de calcul numérique – p. 33/47 Convergence locale En pratique il est souvent difficile de montrer la convergence globale. Dans ce cas , un résultat de convergence locale peut s’avérer utile. Théorème (Ostrowski). Soit α un point fixe d’une fonction φ continue et differentiable dans un voisinage I de α. Si |φ′ (α)| < 1 alors il existe δ > 0 tel que que la suite {x(k) } converge vers α pour tout x(0) tel que |x(0) − α| < δ . Si |φ′ (α)| > 1 la convergence est impossible. Si |φ′ (α)| = 1 on ne peut en général tirer aucune conclusion. Selon le problème considéré, il peut y avoir convergence ou divergence. Cours de calcul numérique – p. 34/47 Convergence d’ordre supérieur Théorème. Si • la fonction φ ∈ C p+1 (I) pour un certain voisinage I de α • p≥1 • φ(i) (α) = 0 pour 1 ≤ i ≤ p • φ(p+1) (α) 6= 0 alors la méthode de point fixe associée à la fonction d’itération φ est d’ordre p + 1 et φp+1 (α) x(k+1) − α = lim k→∞ (x(k) − α)p+1 (p + 1)! On dit alors que le point fixe est d’ordre p + 1. Cours de calcul numérique – p. 35/47 Analyse de la méthode de la corde La méthode de la corde peut être écrite sous la forme d’itération de point fixe x(k+1) = φ(x(k) ) où b−a φ(x) = x − f (x) f (b) − f (a) Puisque b−a f ′ (x) φ (x) = 1 − f (b) − f (a) ′ la condition de convergence locale |φ′ (α)| < 1 est équivalente à 0< b−a f ′ (α) < 2 f (b) − f (a) Si cette condition est satisfaite la convergence est linéaire (sauf le cas exceptionnel où φ′ (α) = 0). Cours de calcul numérique – p. 36/47 Analyse de la méthode de Newton La méthode de Newton peut être écrite sous la forme x(k+1) = φ(x(k) ) où f (x) φ(x) = x − ′ f (x) Puisque f (α) = 0, en supposant f ′ (α) 6= 0 on obtient (f ′ (x))2 − f (x)f ′′ (x) ′ ⇒ φ (α) = 0 φ (x) = 1 − ′ 2 (f (x)) ′ La méthode est convergente localement. On peut montrer qu’elle est convergente d’ordre p = 2. Cours de calcul numérique – p. 37/47 Exemples graphiques >> s_iter.m: recherche de la racine de la fonction f (x) = x3 − 8 >> s_fixpt.m: recherche du point fixe de la fonction φ(x) = log(x + 4) Cours de calcul numérique – p. 38/47 Erreur et résidu • Soit x(k) une solution approchée de la racine α à la k-ième itération. • Nous définissons l’erreur e(k) = α − x(k) et le résidu r (k) = f (x(k) ) − f (α) = f (x(k) ) • Si α est une racine de multiplicité m, c.-à-d. f (k) = 0 pour k = 1, . . . , m − 1, alors (k) f (x f (m) (α) (k) m f (m) (α) (k) m (k) (x − α) ⇔ r ≈ (e ) ) ≈ f (α) + m! m! c.-à-d. e(k) ≈ m! |f (m) (α)| 1/m (r (k) )1/m Cours de calcul numérique – p. 39/47 Erreur et incrément Soit x(k) la suite produite par l’algorithme de point fixe. Puisque e(k+1) = α − x(k+1) = φ(α) − φ(x(k) ) = = φ′ (η (k) )(α − x(k) ) = φ′ (η (k) )e(k) où η (k) est entre α et x(k) (th. valeur moyenne), on obtient x(k+1) − x(k) = α − x(k) − (α − x(k+1) ) = e(k) − e(k+1) = 1 − φ′ (η (k) ) e(k) et en supposant que on puisse remplacer φ′ (η (k) ) par φ′ (α) on obtient l’approximation 1 (k+1) (k) e(k) ≈ x − x 1 − φ′ (α) Cours de calcul numérique – p. 40/47 Critère d’arrêt sur le résidu Soit e(k) = α − x(k) et ε une tolérance fixée pour le calcul approché de α. Nous supposerons de plus f continûment différentiable dans un voisinage de α Contrôle du résidu: les itérations s’achèvent dès que |r (k) | = |f (x(k) )| < ε. Puisque 1/m m! (k) 1/m |f (x )| |e(k) | ≈ (m) |f (α)| pour m = 1 1. si |f ′ (α)| ≈ 1, alors e(k) ≈ ε. 2. si |f ′ (α)| << 1, |e(k) | peut être assez grand par rapport à ε. 3. si |f ′ (α)| >> 1, on a |e(k) | << ε, c.à.d. le test est trop restrictif. Cours de calcul numérique – p. 41/47 Critères d’arrêt sur l’incrément Contrôle de l’incrément: les itérations s’achèvent dès que |x(k+1) − x(k) | < ε. Puisque (k) e 1 (k+1) (k) ≈ (x − x ) 1 − φ′ (α) le test • n’est pas satisfaisant si φ′ (α) est proche de 1. • est optimal si φ′ (α) = 0 (comme pour la méthode de Newton) • est encore satisfaisant si −1 < φ′ (α) < 0. Voir la relation entre φ′ (α) et 1 1−φ′ (α) dans le graphique suivant. Cours de calcul numérique – p. 42/47 12 10 1/(1−φ’(α)) 8 6 4 2 0 −2 −1.5 −1 −0.5 φ’(α) 0 0.5 1 Cours de calcul numérique – p. 43/47 Critères d’arrêt sur l’incrément Il serait donc intéressant estimer la valeur de φ′ (α) tout en connaissant pas la valeur de α. Puisque (α − x(k+1) ) = φ′ (η (k) )(α − x(k) ) nous pouvons supposer (α − x(k+1) ) ≈ φ′ (α)(α − x(k) ) Il s’ensuit que (k+1) λ α−x(k+1) α−x(k) 1− (α − x ) − (α − x ) x −x = = (k) = α−x(k−1) (k−1) (k−1) (k) x −x (α − x ) − (α − x ) −1 α−x(k) (k+1) (k) (k) (k+1) Donc λ(k+1) 1 − φ′ (α) ≈ 1 φ′ (α) − 1 et lim λ(k) = φ′ (α) k→∞ Cours de calcul numérique – p. 44/47 Systèmes d’équations non linéaires Jusqu’ici nous n’avons considéré que la résolution des fonctions réelles d’une variable réelle. Soit F : Rn → Rn , n > 1 une fonction dont l’ensemble de définition et l’image sont multivariés. Par exemple considérons le système non-linéaire F (X) = 0 ( x21 + x22 − 1 = 0 2x1 + x2 − 1 = 0 Nous considérons le problème suivant: trouver X ∗ ∈ Rn tel que F (X ∗ ) = 0 Il est possible étendre au cas de la dimension n > 1 certains des algorithmes pour le cas scalaire. Cours de calcul numérique – p. 45/47 Méthode vectorielle de Newton Dans le cas scalaire (k+1) x (k) =x f (x(k) ) − ′ (k) = x(k) + δx(k) f (x ) où f ′ (x(k) )δx(k) = −f (x(k) ) Pour le cas vectoriel la méthode devient X (k+1) = X (k) + δX (k) où δX (k) ∈ Rn et JF (X (k) )δX (k) = −F (X (k) ) et JF (X) est la matrice Jacobienne [n, n] associée à F et évaluée au point X ∈ Rn . Cours de calcul numérique – p. 46/47 Méthode vectorielle de Newton • La méthode vectorielle demande la résolution d’un système linéaire avec matrice des coefficients JF (X (k) ) à chaque itération. • Il est possible montrer que si F ∈ C 1 , JF est inversible et X (0) est assez proche de la solution X ∗ , alors la méthode converge de manière quadratique. • Toutefois, la méthode présente plusieurs inconvenients: 1. elle demande le calcul symbolique du Jacobian, 2. la matrice JF pourrait être mal conditionnée 3. le calcul de l’inverse de JF peut être trop couteux pour n grand. • Pour ces raisons, plusieurs versions modifiées de la méthode de Newton ont été proposées (méthodes Quasi-Newton). • Une méthode modifiée de Newton consiste à garder la matrice Jacobienne (ou plutôt sa factorisation) inchangée pendant un certain nombre ≤ 2 d’étapes. Ceci réduit le coût du calcul mais aussi la vitesse de convergence. Cours de calcul numérique – p. 47/47