Cours de Calcul Numérique

publicité
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
Téléchargement