python x

publicité
Informatique en PCSI et MPSI
Champollion 2013-2014
Méthodes d’Analyse Numériques
Implémentation et Application en Python
A. HASSAN, D. MENEU
5 février 2014
A. Hassan@Champollion
PCSI-MPSI – 1
• Résolution des équations
f (x) = 0
Résolution de f ( x ) = 0 où
f : I −→ R
• Résolution des équations différentielles
y ′ ( x ) = f ( y ( x ); x )
• Calcul des intégrales
Zb
f (t) dt
a
A. Hassan@Champollion
PCSI-MPSI – 2
Résolution de f ( x ) = 0 où f : I −→ R
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
A. Hassan@Champollion
PCSI-MPSI – 3
Méthodes Numériques de résolution de f ( x ) = 0
Pourquoi ? Certaines équation ne peuvent avoir des solutions exactes (Ex/ :
Équations polynômiales de degré ≥ ou tout simplement e− x − 2x = 0)
Hypothèse : f un application à valeurs réelles, continue sur [ a; b] telle que
f ( a). f (b) < 0.
D’après le théorème des valeurs intermédiaires il existe au moins un réel c tel
que f (c) = 0
Objectif : Calculer une valeur approchée de c.
Méthode : Construire une suite (rn )n∈N telle que rn −n−−−
→ c.
→+∞
Cette méthode ou recette est ce que l’on appelle algorithme.
Problème : Trouver de tel(s) algorithme(s) ?.
Un algorithme est plus efficace qu’un autre si la convergence vers la solution est
plus rapide avec un besoin moindre en mémoire.
Algorithmes étudiés :
• Dichotomie.
• Méthode de la tangente (ou de Newton-Raphson).
• Méthode de la sécante (ou de Lagrange)
(Ind. sera traitée en TP)
A. Hassan@Champollion
PCSI-MPSI – 4
Dichotomie
Hypothèse : f continue sur [ a; b] telle que f ( a). f (b) < 0
Principe de l’algorithme
: Convergence de l’algorithme :
Entrées : f , a0 , b0 et ε
Sorties : c solution de f ( x ) = 0 à ε près
a ← a 0 ; b ← b0
ecart ← | a − b|
if f ( a). f (b) > 0 then
Afficher : Intervalle non valide
else
while ecart > ε do
c ← ( a + b)/2
if f (c). f ( a) < 0 then
b←c
else
a←c
err ← ecart/2
Afficher : c
A. Hassan@Champollion
1. ∀n ∈ N ⇒ f ( an ) f (bn ) ≤ 0
2. Par
 construction :
( an ) croissante


 (bn ) décroissante
et


 | a − b | ∼ 1 | a − b | −−−−→ 0
n
n
0 n →+ ∞
n 0
2
( an ) et (bn ) adjacentes donc
( an ; bn ) −→ (c; c)
3. Continuité de f implique
f ( a n ) f ( bn ) → f 2 ( c ) ≥ 0
| {z }
≤0
⇒ 0 ≤ f 2 (c) ≤ 0
Bilan : f (c) = 0
PCSI-MPSI – 5
Implémentation de la Dichotomie en Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def dichotomie (f ,a ,b , prec =0.001):
"""
Entrees : fonction f , reels a et b , precision prec
Sorties : c une solution de f (x )=0 dans [ a; b ]
"""
err = abs (b - a ):
i f f ( a )* f( b ) >0: # tester si f ( a). f (b) ≤ 0 ou non
r e t u r n ’ Il faut choisir un autre intervalle ’
else :
while err > prec :
c =0.5*( a +b );
# on se place au milieu de a et b
i f f (a )* f( c ) <0:
b= c ;
else :
a= c ;
err =0.5* err :
return c
Inconvenients : On ne peut obtenir des racines de multiplicité
paire ? ! ! Par exemple ( x − 1)2 = 0 (pourquoi ?).
La vitesse de la convergence est de l’ordre 2−n où n est le
nombre d’itérations.
A. Hassan@Champollion
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
PCSI-MPSI – 6
Méthode de la tangente (Méthode de Newton ou
Newton-Raphson)
Hypothèse : f une application continue et dérivable sur [ a; b].
Remarque : La condition f ( a). f ( b) < 0 n’est pas nécessaire, mais c’est une condition de
sûreté (localisation de la solution avant recherche)
Principe et Algorithme : Soit xn une estimation courante et Mn ( xn ; f ( xn )) le
point correspondant de la courbe C f .
( T ) : Y − f ( xn ) = f ′ ( xn )( X − xn ) Équation de la tangente en Mn
L’estimation suivante xn+1 est l’abscisse de ( T ) ∩ (Ox )
Y =0
======⇒ 0 − f ( xn ) = f ′ ( xn )( xn+1 − xn )
X = x n+1
sous réserve
===′=======
⇒ x n +1 = x n −
f ( xn )6 =0
f ( xn )
f ′ ( xn )
(où
f ( xn )
f ′ ( xn )
: terme de correction)
Nécessite, en plus de f , le calcul de f ′ (ou une approximation de f ′ ).
Ne nécessite qu’une première estimation(théorème des valeurs intermédiaires
non utilisé)
A. Hassan@Champollion
PCSI-MPSI – 7
Illustration Graphique de la méthode Newton
Voici un exemple pour calculer
4
√
2 solution de x2 − 2 = 0
y
bc
3
2
1
0
-1
bc
bc bc
bc
bc
x0 = 2.5
x
-2
-3
-4
Méthode de Newton-Raphson : Résolution de x2 − 2 = 0
-5
A. Hassan@Champollion
PCSI-MPSI – 8
Autre exemple graphique
Résolution de x3 + 16x + πx2 + 16π − 384 = 0 par la méthode de Newton
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-1
-2
-3
-4
-5
y
-15.0
-9.5677
-4.90395
-15.0
A. Hassan@Champollion
3.02424
5.58097
6.69108
x
convergence vers une solution en n = 6 itérations
PCSI-MPSI – 9
Implémentation de la méthode de Newton en Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def f (x ):
""" definition de f """
# -------------- -- -- -- def df ( x ):
""" definition ou calcul de la derivee """
# -------------- -- -- -- def Newton (f ,df , x0 , prec =0.0001):
""" Entrees : f fonction , df s derivee et x0 premier estimation
prec precision
Sorties : x estimation de c une solution de f (x )=0 """
y =f ( x0 )
dy = df ( x0 )
iprec =1/ prec
while abs ( y ) > prec and dy < iprec :
x0 = x0 - y / dy
y =f ( x0 )
dy = df ( x0 )
r e t u r n x0
Si l’on dispose pas de la formule dérivée on procède par
f ( x + h) − f ( x)
.
h
h ≈0
dérivation numérique f ′ ( x ) ≈
A. Hassan@Champollion
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
PCSI-MPSI – 10
Analyse de l’algorithme de Newton-Raphson
Notons z la vraie solution f ( x ) = 0. xn estimation de z à l’étape n (xn+1 à l’étape
n + 1). On note rn = xn − z l’erreur d’estimation (écart simple)
soustraire
f ( xn )
f ( xn )
rn . f ′ ( xn ) − f ( xn )
x n +1 = x n − ′
(Newton) =====
==⇒ rn+1 = rn − ′
=
z
f ( xn )
f ( xn )
f ′ ( xn )
D’après le DL à l’ordre 2 au voisinage de z
f (z) = f ( xn ) + (z − xn ) f ′ ( xn ) +
0 = f ( xn ) − rn f ′ ( xn ) +
1 ′′
f ( xn )(z − xn )2 + o((z − xn )2 )
2
1 ′′
f ( xn )r2n + · · · ⇒
2
f ′′ ( xn ) 2
1 ′′
2
2
o
r
+
(
r
r n f ( x n ) − f ( x n ) = f ( x n )r n ⇒ r n +1 =
n)
2
2. f ′ ( xn ) n
′
f ′′ ( xn ) < k < 1 au voisinage de z (i.e. bornée) alors la convergence est
Si ′
2. f ( xn ) quadratique : rn ∼ 10−2 ⇒ rn+1 ∼ 10−4 ⇒ rn+2 ∼ 10−8 ⇒ rn+4 ∼ 10−16 . . . etc
i.e. doublement du nombre de chiffres significatifs à chaque étape
A. Hassan@Champollion
PCSI-MPSI – 11
Inconvénients et limites de la méthode de
Newton-Raphson
1.
2.
3.
Nécessité de connaître ou le calcul de f ′ qui est parfois
indisponible et/ou difficile.
f ′ peut s’annuler au voisinage de la solution
f n’est pas assez convexe (ou concave) au voisinage de la
solution.
bc
bc
bc bc
b
z
bc bc
bc
bc
b
z
bc
bc
f ′ ( x0 ) ≈ 0
z point d’inflexion
Remède ? mélanger Newton avec la dichotomie : Dichotomie
pour s’approcher de la solution z puis suivre par
Newton-Raphson
A. Hassan@Champollion
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
bc
bc
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
PCSI-MPSI – 12
Le problème de la chèvre
On dispose d’un champ circulaire de rayon R(= 1). Une chèvre
est attaché par une corde de longueur x à un piquet planté sur
la circonférence du champs.
Problème : Calculer x afin que la chèvre broute au maximum la
moitié de la surface du champ.
Montrer que :
S = S1 + S2 =
1 2
1
R (2α − sin(2α)) + x2 (2β − sin(2β)) ?
2
2
[ =α
CΩA
[ =β
ACΩ
Abc
x
R
bc
Ω
bc
bc
C
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
A. Hassan@Champollion
PCSI-MPSI – 13
Problème de la chèvre : Mise en équation
1.
2.
3.
4.
On note
x longueur de la corde. R rayon du champs circulaire.
[ et β = ACΩ
[ avec β ∈ [0; π [
α = AΩC
À partir du triangle
 ΩAC ⇒ α + 2β = π
 S1 = 1 R2 (2α − sin(2α))
2
S = S1 + S2 où
1
 S = x2 (2β − sin(2β))
2
2
On cherche x tel que (α et β dépendent de x)
1
1
1 2
R (2α − sin(2α)) + x2 (2β − sin(2β)) = πR2
2
2
2
1
R. sin(α) = x. sin( β) ⇐⇒ x = 2R sin α
2
π
Bilan : Résoudre sin(α) + (π − α) cos(α) − = 0
2
Cette équation n’a pas de solution analytique (on dit aussi
formelle)
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
A. Hassan@Champollion
PCSI-MPSI – 14
Implémentation en Python
1
2
3
4
5
6
7
8
9
10
11
12
# # charger des modules math {\ ’ e } matiques et graphiques :
from numpy import *
# charger le module numpy
from matplotlib . pyplot import * # charger le package matplotlib . pyplot
#
def f (t ):
""" surface broutee par la chevre
en fonction de l ’ angle central """
r e t u r n sin ( t )+( pi - t )* cos (t ) - pi /2
#
def df ( t ):
""" derivee de f """
r e t u r n (t - pi )* sin ( t )
On sait à l’avance que le problème possède une solution unique
(pourquoi ?).
Le calcul des valeurs en α = 1 et α = 2 de la fonction montre
que f (1). f (2) < 0
1
2
3
4
5
>>> ( f (1) , f (2))
(0.42778210697783337 , -1.136569071386065)
>>> # ou bien
>>> f (1)* f (2) <0
True
A. Hassan@Champollion
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
PCSI-MPSI – 15
Graphique
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#
# construction du graphique
#
clf ()
T= linspace (0 , mm .pi ,100)
Y =[]
f o r t in T :
Y . append ( chevre (t ))
clf ()
axis ([ -.5 , 3 , -1 , 4])
plot (T ,Y ,[0 ,3] ,[0 ,0])
title ( " Graphe " )
grid ( True )
savefig (" chevre . eps ")
show ()
hold ( ’ off ’)
f (t) = sin(t) − (π − t) cos(t) − π/2
2
1
0
bc
-1
-2
-3
A. Hassan@Champollion
PCSI-MPSI – 16
Résultats : (1) Dichotomie
Dichotomie : α est calculé avec une précision de 10−4 en 13
étapes
1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> a , b =1 ,2
>>> lx , n= dichotomy (f ,a , b )
>>> lx # liste des abscisses
[1.5 , 1.25 , 1.125 , 1.1875 , 1.21875 , 1.234375 ,
1.2421875 , 1.23828125 , 1.236328125 ,1.2353515625 ,
1.23583984375 , 1.236083984375 ,
1.2359619140625 , 1.23590087890625]
>>> n
# nombre d ’ etapes
13
>>> lx [13]
1.23590087890625
>>> # la longueur est
>>> x =2* sin ( lx [13]/2)
>>> x
1.158731696308239
>>>
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
A. Hassan@Champollion
PCSI-MPSI – 17
3
y
2
1
0
bc
bc
bc
α
-1
-2
-3
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
A. Hassan@Champollion
PCSI-MPSI – 18
Résultats : (2) Newton
3
y
2
b
1
0
bb
b
b
α
b
-1
-2
0
1
2
1
2
3
>>> Newton (f ,df ,1)
(1.2358967280205841 , 2)
A. Hassan@Champollion
PCSI-MPSI – 19
Exemple : Calcul des racines carrées (ou n-ième)
Il s’agit de résoudre l’équation x n − a = 0 sur R + .
L’algorithme de Newton conduit à la suite
x k +1 = x k +
xkn − a
nxkn−1
Résolution de f ( x ) = 0 où
f : I −→ R
Méthodes Numériques de
résolution de f ( x ) = 0
Dichotomie
Implémentation de la
Dichotomie en Python
Méthode de la tangente
(Méthode de Newton ou
Newton-Raphson)
Illustration Graphique de
la méthode Newton
Autre exemple graphique
Implémentation de la
méthode de Newton en
Python
Analyse de l’algorithme
de Newton-Raphson
Inconvénients et limites de
la méthode de
Newton-Raphson
Le problème de la chèvre
Problème de la chèvre:
Mise en équation
Implémentation en Python
Graphique
Résultats: (1) Dichotomie
Résultats: (2) Newton
Exemple: Calcul des
racines carrées (ou n-ième)
A. Hassan@Champollion
PCSI-MPSI – 20
Téléchargement