Des maths avec Python

Programming, Math · course

Browse all programmation documents

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