Algorithme dichotomique et méthode de Newton

Download Report

Transcript Algorithme dichotomique et méthode de Newton

Résolution
d’équations sur les
réels
Stéphane Gonnord
Résolution d’équations sur les réels
Algorithme dichotomique et méthode de Newton
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Stéphane Gonnord
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
[email protected]
www.mp933.fr
Lycée du parc - Lyon
Vendredi 4 avril 2014
Lycée du parc
Bonus
Avec numpy
Autour de Newton
Plan
Résolution
d’équations sur les
réels
Stéphane Gonnord
Recherche dichotomique
Principe
Mise en place
Analyse de l’algorithme
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
Position du problème
Résolution
d’équations sur les
réels
Stéphane Gonnord
En maths, on résoud des équations... genre, encore plus
compliqué que ax 2 + bx + c = 0.
...
Ben non. Enfin oui, mais non !
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
I
ax = b ; AX = B...
2
I
ax + bx + c = 0 ; P (x ) = 0.
I
sin t = cos t, sin3 t + 3 cos5 t = 1/840...
I
La solution ? Une solution ? Les solutions ?
I
Précision ? Nombre de bits/décimales ?
I
Temps de calcul ?
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
Résolution
d’équations sur les
réels
Dichotomie : principe
I
Si f (a) < 0 < f (b) avec f continue, alors...
I
Ou encore : si f (b) < 0 < f (a)... ou encore
f (a)f (b) ≤ 0... voire f (a)f (b) ≤ 0 !
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
I
I
Principe : localiser la (une) racine vis à vis de
Exemple : f (x ) = x 2 − 2, a = 1, b = 2.
f (1) = −1 < 0 < 2 = f (2).
f (3/2) = 1/4 > 0 > f (1)
f (5/4) = −7/16 < 0 < f (3/2)
a+b
2
Mise en place
·
Analyse de l’algorithme
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
Résolution
d’équations sur les
réels
Un exemple standard
Stéphane Gonnord
À chaque étape, f (ak ) ≤ 0 ≤ f (bk ).
Plan
a0
b0
a1
b1
a2
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
b2
Méthode de Newton
Principe
a3
a4
b3
b4
Mise en place
y = x2 −2
Problèmes pratiques
Bonus
Avec numpy
a5 b5
1.25
1
1.375
1.40625
Autour de Newton
1.5
p
2
2
1.4375
Dichotomie : code
I
On maintient l’invariant f (g ) × f (d ) ≤ 0 ;
I
On casse [g , d ] en deux à chaque étape...jusqu’à
avoir g − d ≤ 2ε.
I
Et ça donne :
def dichotomie(f, a, b, epsilon):
g, d = a, b
fg, fd = f(g), f(d)
while d - g > 2*epsilon:
m = (g + d) / 2.
fm = f(m)
if fg * fm <= 0:
d, fd = m, fm
else:
g, fg = m, fm
return (g+d)/2
Résolution
d’équations sur les
réels
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
Résolution
d’équations sur les
réels
Dichotomie : résultats
Distance à la racine, en fonction du nombre d’itérations :
Plan
100
10
Stéphane Gonnord
Recherche
dichotomique
-2
Principe
Mise en place
10-4
Analyse de l’algorithme
Méthode de Newton
10-6
Principe
|x0 −r|
Mise en place
Problèmes pratiques
10-8
Bonus
Avec numpy
10-10
Autour de Newton
10-12
10-14
10-16 0
Milieu
Meilleur bord
10
20
n
30
40
50
Terminaison, validité, complexité
I
I
I
Invariant : f (g ) × f (d ) ≤ 0 (par récurrence) ; permet
de prouver la validité.
b−a
après k passages dans la
Variant : d − g =
2k
boucle ; preuve de la terminaison.
Complexité ?
I d − g ≤ 2ε dès que...
I
I
I
Après k itérations, |r − x0 | ≤
|r − x0 | ≤
1
10d
Résolution
d’équations sur les
réels
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
b−a
2k
après combien d’itérations ?
Exercice : après k itérations, combien de décimales
justes ?
Bonus
Avec numpy
Autour de Newton
Résolution
d’équations sur les
réels
Newton : f (x ) = x 2 − 2
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
y = x2 −2
Mise en place
Analyse de l’algorithme
Méthode de Newton
p
Principe
u2 ' 1.417
Mise en place
Problèmes pratiques
2 ' 1.414
Bonus
Avec numpy
Autour de Newton
u1 =1.5
Exercice : établir un+1 =
u0 =2
1
2
un +
2
un
Convergence vers
I
Résolution
d’équations sur les
réels
2
Stéphane Gonnord
Classique :
I
Les un sont ≥
I
un + 1 −
I
√
√
0 ≤ un −
2≤
√
√
2; √
(un − 2)2
2≤
2
Plan
;
n
2−2 ...
I
C’est ÉNÔÔÔÔÔRME !
I
Exercice : Combien d’itérations sont suffisantes pour
avoir 1000 décimales ?
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
Mise en place
I
On obtient d décimales en temps O (ln d ).
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
Résolution
d’équations sur les
réels
Cas général
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
f(un )
y = f(x)
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
un +1
un −un +1
f (un )
Exercice : établir un+1 = un − 0
f (un )
un
De la suite vers un algorithme
I
Quand s’arrêter ? |un+1 − un | ≤ ε est raisonnable...
I
Fastoche !
def Newton(f, fp, x0, epsilon):
u = x0
v = u - f(u)/fp(u)
while abs(v-u) > epsilon:
u, v = v, v - f(v)/fp(v)
return v
Résolution
d’équations sur les
réels
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
I
Problèmes :
I
I
I
il faut connaître f 0 ;
la convergence n’est pas assurée ;
problème si f 0 (v ) (ou son évaluation numérique) est
nulle.
Résolution
d’équations sur les
réels
Résultats
Stéphane Gonnord
Pour x 2 = 2 puis sin x = 0 sur [3, 4] :
Plan
100
10
-2
10
-4
Recherche
dichotomique
Newton sur x x2 −2
Newton sur x sinx
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
10-6
|xn −l|
Principe
Mise en place
10-8
Problèmes pratiques
Bonus
10-10
10
Avec numpy
Autour de Newton
-12
10-14
10-16 0
1
2
3
n
4
5
6
7
Résolution
d’équations sur les
réels
Deux problèmes
I
f 0 (x0 ) '
f (x0 + h) − f (x0 )
h
f (x0 + h) − f (x0 − h)
2h
I
Stéphane Gonnord
·
Plan
Recherche
dichotomique
Formule basique
Formule symétrique
Principe
Mise en place
Analyse de l’algorithme
|∆0 (h)−f0(0)|
100
10-1
10-2
10-3
10-4
10-5
10-6
10-7
10-8
10-9
10-10
10-11
10-12 -8
10
'
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
10-7
10-6
10-5
10-4
h
10-3
10-2
10-1
100
Test d’arrêt :
I |u
n+1 − un | ≤ ε n’implique pas |un+1 − x0 | ≤ ε
I |f (u )| ≤ ε est-il mieux ? Pas si f 0 (x ) = 0 !
0
n
Utilisation de numpy/scipy
Plusieurs fonctions dédiées :
I
Racines d’un polynôme (ici X 3 + 2X 2 − X − 2) :
>>> from numpy import *
>>> roots([1, 2, -1, -2])
array([ 1., -2., -1.])
Résolution
d’équations sur les
réels
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
I
Dichotomie (« slow but sure ») :
>>> bisect(sin, 3, 4)
3.141592653589214
I
Newton (ou sécante sans dérivée) :
I
>>> newton(sin, 3, cos)
3.1415926535897931
Etc : brentq, fsolve...
Mise en place
Problèmes pratiques
Bonus
Avec numpy
Autour de Newton
Autour de Newton
I
Newton existe aussi...
I
I
I
I
I
sur les complexes : f (z ) = z 2 − Z0 ; f (z ) = z 3 − 1 ; ...
1
chez les matrices : Mn+1 =
Mn + AMn−1 ; ...
2
dans Rn ;
en version cubique si on connaît f 0 et f 00 : Halley
Méthode de la sécante :
Résolution
d’équations sur les
réels
Stéphane Gonnord
Plan
Recherche
dichotomique
Principe
Mise en place
Analyse de l’algorithme
Méthode de Newton
Principe
Mise en place
Problèmes pratiques
I
I
I
I
Partir de deux points. Couper le graphe : nouveau
point qui remplace l’avant dernier.
Couper le graphe avec es deux derniers points ; etc.
Un dessin ?
Convergence, complexité : assez semblable à
Newton.
Bonus
Avec numpy
Autour de Newton