Des maths avec Python
Chapitre 4
Chapitre 4
Z ros d'une fonction
Trouver les z ros d'une fonction f, c'est d terminer quelles abscisses cette fonction coupe l'axe
des x (points rouges dans l'image ci-dessous). Cela revient r soudre l' quation f (x) = 0.
Or, selon la fonction, l'entreprise peut se r v ler difficile, voir impossible, en utilisant des
m thodes alg briques. Pour les polyn mes par exemple, Galois a montr qu'il n'existe pas de
formules pour les polyn mes de degr sup rieur 4.
Dans ces cas, l'emploi de m thodes num riques est indispensable. Nous allons en voir quelques-
unes dans ce chapitre.
4.1.
Recoupement par intervalles (bracketing)
Il s'agit de construire des intervalles susceptibles de contenir un z ro. Ult rieurement, on raffinera
la recherche du z ro l'int rieur de l'intervalle.
On subdivise un domaine donn en sous-intervalles r guliers et on examine si la fonction
(suppos e continue) coupe l'axe des x en regardant le signe de la fonction valu e aux bords du sous-
intervalle.
Exercice 4.1
Exercice 4.1
Programmez la m thode de bracketing, puis testez-la avec les fonctions f (x) = sin(cos(2x2+1)) et
g(x) = x5 x2 -1, dans l'intervalle [0, 2], subdivis en 20 sous-intervalles.
Didier M ller
4-1
mai 2019
Z ros d'une fonction
4.2. M thode de dichotomie
Une dichotomie (du grec couper en deux ) permet de trouver rapidement une valeur approch e
de x telle que f (x) = 0. Cette m thode n'est pas sans rappeler le jeu devine mon nombre que nous
avons programm au chapitre 2.
Petite astuce :
si f (a) et f (b) sont
de signes oppos s,
alors f (a) f (b) < 0.
Soit f une fonction telle que :
"
"
f (a) et f (b) sont de signes oppos s
f est continue strictement croissante (ou d croissante) sur
M thode
1.
partir du couple de valeurs (a, b)
2.
valuer la fonction en
a+ b
2
3.
4.
si f ( a+ b
2 ) a le m me signe que f (a), remplacer a par
a+ b
2
, sinon remplacer b par
a+ b
2
aller en 2 avec le nouveau couple de valeurs (a, b) jusqu' ce que la diff rence entre a et b
soit inf rieure la pr cision voulue.
Exercice 4.2
Exercice 4.2
Illustrez la dichotomie sur le graphe ci-dessous, pour trouver le z ro compris entre -1 et 0.
Idem pour le z ro compris entre 0 et 1.
Exercice 4.3
Exercice 4.3
a) Calculez, avec la m thode de la dichotomie et l'aide d'une calculatrice, le z ro de la
fonction sin(cos(2x2+1)) se trouvant dans l'intervalle [0, 1], avec une pr cision de 0.0001.
b) Programmez la dichotomie pour r pondre la question a).
Courbe de la fonction sin(cos(2x2+1))
Didier M ller
4-2
Advertisement
mai 2019
Des maths avec Python
Chapitre 4
4.3.
Regula falsi
tant donn es les abscisses a et b, nous construisons la droite passant par les points (a, f (a)) et
(b, f (b)), comme dans la figure ci-dessous.
Remarquons que cette droite est une s cante de la fonction f. En utilisant la pente et un point,
l' quation de la droite peut s' crire :
y=
f ( b) f (a)
b a
( x a)+ f (a)
Nous d terminons maintenant c, l'abscisse du point d'intersection de cette droite avec l'axe des
abscisses (z ro de la s cante) donn e par :
f (b) f ( a)
b a
(c a)+ f ( a)=0
La r solution de l' quation pr c dente donne c :
c=a
b a
f (b) f ( a)
f (a)
D roulement du calcul
Comme la m thode de dichotomie, la regula falsi commence par deux points a1 et b1 tels que
f (a1) et f (b1) soient de signes oppos s, ce qui implique que la fonction continue f poss de au moins
un z ro dans l'intervalle . La m thode consiste produire une suite d'intervalles toujours plus
petits qui contiennent tous un z ro de f. l' tape k, le nombre
c k= ak
bk ak
f ( bk ) f ( ak )
f (ak )
est calcul . Comme expliqu ci-dessus, ck est l'abscisse de l'intersection de la droite passant par
(ak, f (ak)) et (bk, f (bk)) avec l'axe des abscisses. Si f (ak) et f (ck) sont de m me signe, alors nous
posons ak+1 = ck et bk+1 = bk, sinon nous posons ak+1 = ak et bk+1 = ck.
Ce proc d est r p t jusqu' ce f (ck) soit suffisamment proche de 0.
Didier M ller
4-3
mai 2019
Z ros d'une fonction
Exercice 4.4
Exercice 4.4
Illustrez le d roulement de la regula falsi sur le graphe ci-dessous, pour trouver le z ro compris
entre 0 et 1.
Exercice 4.5
Exercice 4.5
a) Trouvez, avec la m thode de la regula falsi et l'aide d'une calculatrice, le z ro de la
fonction sin(cos(2x2+1)) se trouvant dans l'intervalle [0, 1], avec une pr cision de 0.0001.
b) Programmez la regula falsi pour r pondre la question a).
4.4. M thode de Newton-Raphson
En analyse num rique, la m thode de Newton-Raphson, est un algorithme efficace pour
approcher un z ro d'une fonction. De mani re informelle, le nombre de d cimales correctes double
chaque tape.
Partant d'une valeur approximative raisonnable d'un z ro x0 d'une fonction f, on approche la
fonction par sa tangente au point (x0 ; f (x0)). Cette tangente est une fonction affine dont on sait
trouver l'unique z ro (que l'on appellera x1). Ce z ro de la tangente sera g n ralement plus proche du
vrai z ro de la fonction.
On recommence les m mes calculs en partant cette fois de x1, ce qui va nous donner l'abscisse x2,
etc.
Didier M ller
4-4
mai 2019
Des maths avec Python
Chapitre 4
Par r currence, on d finit la suite xn par : x n 1= xn
f x n
f ' x n
.
En principe, cette suite va converger vers le z ro cherch .
Advertisement
Si la fonction pr sente un extremum local, il y a un risque que la m thode ne converge pas, car la
valeur de la d riv e est nulle en un extremum et le nouveau point l'infini.
Exercice 4.6
Exercice 4.6
Retrouvez la valeur de xn+1 en partant de l' quation de la droite y-y0 = m(x-x0).
La pente m de la tangente en a est donn e par la d riv e f ' (a).
Exercice 4.7
Exercice 4.7
Illustrez le d roulement de la m thode de Newton-Raphson sur le graphe ci-dessous...
a)
b)
avec x0 = -0.25 ;
avec x0 = 0.
Exercice 4.8
Exercice 4.8
a) Calculez, avec la m thode de Newton-Raphson et l'aide d'une calculatrice, le z ro de la
fonction f (x) = sin(cos(2x2+1)) se trouvant dans l'intervalle [0 ; 1], avec une pr cision de
0.0001.
Indication : f ' (x) = -4x cos(cos(2x2+1)) sin(2x2+1).
b) Programmez la m thode de Newton-Raphson pour r pondre la question a).
c) Expliquez ce qui se passe en prenant x0 = 1, x0 = 1.1, et x0 = 1.2.
4.5. M thode de la s cante
La m thode de la s cante est une m thode d riv e de celle de Newton-Raphson o l'on remplace
la d riv e f ' ( x n) par
f ( x n) f ( x n 1)
xn x n 1
.
On obtient la relation de r currence x n+ 1= xn
xn x n 1
f ( x n) f ( x n 1)
f ( xn) .
L'initialisation n cessite deux points x0 et x1 proches de la solution recherch e. Il n'est pas
n cessaire que x0 et x1 encadrent une racine de f (x).
Didier M ller
4-5
mai 2019
Z ros d'une fonction
Exercice 4.9
Exercice 4.9
Illustrez le d roulement de la m thode de la s cante sur le graphe ci-dessous avec x0 = -0.7 et
x1 = -0.25.
Exercice 4.10
Exercice 4.10
a) Calculez, avec la m thode de la s cante et l'aide d'une calculatrice, le z ro de la fonction
f (x) = sin(cos(2x2+1)) se trouvant dans l'intervalle [0, 1], avec une pr cision de 0.0001.
b) Programmez la m thode de la s cante pour r pondre la question a).
c) Expliquez ce qui se passe en prenant x0 = 0 et x1 = 2.
4.6.
Programmation d'un traceur de courbe
Un traceur de courbes (on dit aussi parfois un grapheur) est un logiciel qui permet de calculer et
dessiner et la courbe repr sentative d'une fonction math matique.
Pour r aliser un tel logiciel en Python, il nous faudra quelques fonctions graphiques contenues
dans le module tkinter. Il s'agira essentiellement de tracer des segments de droite.
Voyons comment ouvrir une fen tre graphique et dessiner un segment l' cran :
Didier M ller
4-6
mai 2019
Des maths avec Python
Chapitre 4
from tkinter import *
fen = Tk()
can = Canvas(fen, bg='white', width=600, height=400)
can.pack(side=LEFT)
can.create_line(10, 10, 100, 200, width=2, fill='black') # segment
can.create_text(10, 5, text="A")
can.create_text(100, 205, text="B")
Reprenons ce programme ligne par ligne.
from tkinter import *
tkinter est le module qui permet de dessiner.
Advertisement
fen = Tk()
fen est la fen tre graphique.
can = Canvas(fen, bg='white', width=600, height=400)
can est le canevas dans lequel on va dessiner. Ici, il occupera toute le fen tre. Il a un fond blanc
(white) et pour dimensions 600 x 400 pixels.
can.pack(side=LEFT)
can est cal gauche de la fen tre, mais cela n'a pas d'importance ici.
can.create_line(10, 10, 100, 200, width=2, fill='black') # segment
Dans l'exemple, le segment va du point (10, 10) au point (100, 200). Il a une largeur de 2 pixels et
la couleur noire (black). On utilisera black pour les axes et les graduations, blue pour la courbe,
white comme couleur de fond et gray75 pour le quadrillage.
Attention ! L'origine (0, 0) est dans le coin sup rieur gauche de la fen tre. Le coin inf rieur droit
aura comme coordonn es (largeur, hauteur), dans notre exemple (600, 400).
can.create_text(10, 5, text="A")
can.create_text(100, 205, text="B")
Ces deux lignes crivent les lettres A et B aux coordonn es indiqu es.
Si on veut crire un nombre contenu dans une variable, il faudra convertir ce nombre en une
cha ne de caract res :
i = 4
can.create_text(100, 205, text=str(i))
Exercice 4.11
Exercice 4.11
Pour simplifier les choses, on supposera que la fonction f dessiner est continue. Pour fixer les
id es, prenons la fonction f (x) = x + sin(x2 + 4x 5).
On supposera aussi que les bornes de l'intervalle sont des nombres entiers. On prendra ici
l'intervalle [6, 3].
Proc dez par tapes :
1.
2.
tabulez la fonction dans l'intervalle et rep rez les valeurs y_min et y_max ;
d finissez la fonction affine qui transformera le couple (x ; f (x)) en un point de la fen tre
graphique ; le couple (a ; y_max) sera envoy sur le point (0 ; 0) et le couple (b ; y_min) sur
le point (largeur, hauteur).
tracez la courbe ;
dessinez les deux axes ;
graduez les axes ;
ajoutez un quadrillage.
3.
4.
5.
6.
Didier M ller
4-7
mai 2019
Z ros d'une fonction
Voici le r sultat final attendu :
4.7.
Suites de Sturm
Soit P(x) un polyn me n'ayant que des racines simples. La suite de Sturm de ce polyn me est
une suite de polyn mes qui permet de d terminer le nombre de racines de P dans un intervalle
donn .
On pose d'abord P0 = P et P1 = P 2. Pour calculer P2, on crit :
Charles-Fran ois
Sturm (1803-1855)
P0 = P1Q1 P2
o Q1 est le quotient de la division euclidienne et o le degr de P2 est strictement inf rieur
celui de P1.
En d'autres termes, P2 est l'oppos du reste dans la division euclidienne de P0 par P1. Puis on
recommence et on d finit Pk+1 comme l'oppos du reste dans la division euclidienne de Pk-1 par Pk,
Pk-1 = PkQk Pk+1 .
On s'arr te lorsqu'on obtient un polyn me constant Pn, ce qui arrive forc ment puisque les degr s
des polyn mes obtenus d croissent chaque division. La suite de Sturm du polyn me P est alors :
S (x) = (P0(x), P1(x), &, Pn(x)).
On note V (x) le nombre de changements de signes dans la suite S (x).
Le th or me de Sturm s' nonce pr sent ainsi :
Le nombre de racines de P dans l'intervalle est gal la diff rence V (a) V (b).
Didier M ller
4-8
mai 2019
Advertisement
Des maths avec Python
Chapitre 4
Exemple : Soit P (x) = x3 + 6x2 16. On a P0 = P, P1 = P '(x) = 3x2 + 12x.
Pour trouver P2, on divise P0 par P1 :
P0
x3 + 6x2
16
|
3 x 2 + 12
x
x 3 4
x 2
2x2
2
x 2 8
x
x/3 + 2/3
8x 16
-P2
On trouve P2 = (8x 16) = 8x + 16.
Pour trouver P3, on divise P1 par P2 :
P1
3
3x2 + 12x
x 2 6
x
6x
6
x 12
12
|
8 x +
16
3x/8 + 3/4
-P3
P1
Q1
P2
Q2
On trouve P3 = (12) = 12. Le processus s'arr te ici, puisque P3 est un polyn me constant.
On a trouv la suite de Sturm de P : S (x) = (x3 + 6x2 16, 3x2 + 12x, 8x + 16, 12).
On peut maintenant savoir combien P a de z ros dans l'intervalle . Prenons par exemple
l'intervalle [7, 2] :
S (7) = (65, 63, 40, 12). Il y a 3 changements de signe
dans cette suite, donc V (7) = 3.
S (2) = (16, 36, 32, 12). Cette fois, il n'y a pas de
changement de signe, donc V (2) = 0.
Comme V (7)V (2) = 3, le polyn me x3 + 6x2 16 admet
ses 3 racines dans l'intervalle [7, 2].
Dans l'intervalle [0, 2] :
S (0) = (16, 0, 16, 12). Il y a un seul changement de signe dans cette suite, donc V(0) = 1.
Puisque V (0)V (2) = 1, le polyn me x3 + 6x2 16 admet une racine dans l'intervalle [0, 2].
Exercice 4.12
Exercice 4.12
Calculez la suite de Sturm du polyn me P (x) = x4 8x2 6x 1.
Gr ce cette suite, d terminez le nombre de z ros de P dans les intervalles [4, 0] et [0, 4].
V rifiez ces r sultats avec votre traceur de courbe.
Sources
[1] Wikip dia, M thode de dichotomie , <http://fr.wikipedia.org/wiki/M thode_de_dichotomie>
[2] Wikip dia, M thode de la fausse position ,
<http://fr.wikipedia.org/wiki/M thode_de_la_fausse_position>
[3] Wikip dia, M thode de la s cante , <http://fr.wikipedia.org/wiki/M thode_de_la_s cante>
[4] Science & Vie Questions R ponses, Hors-S rie N 1, novembre 2016, quations du second
degr
Didier M ller
4-9
mai 2019