§ 2 Méthodes de résolution de l'équation f(x)=0

§ 2.1 Méthode graphique

Nous verrons qu'un graphique ne constitue pas une méthode générale de résolution des équations. Cependant, un graphique peut nous apporter des informations utiles dont nous pourrons tirer parti.

Dans cette partie, il ne nous importe pas de savoir si les graphiques ont été réalisés à la main ou par ordinateur. Nous porterons plutôt notre attention sur les questions suivantes :
	quel graphique faire ?
	que nous dit le graphique au sujet des solutions de l'équation ?

Exemple 1

Soit à résoudre l'équation

(x^3)+1=3 x

Premier point de vue

Considérons qu'il s'agit d'une équation de la forme g(x) = h(x) 
avec g(x) = (x^3)+1      et      h(x) = 3 x.      
Dessinons la situation.

Plot[{(x^3)+1,3 x},{x,-4,4}]

Résoudre une équation signifie rechercher les abscisses des points d'intersection de deux courbes.
Les solutions sont à lire sur l'axe des x : on y voit trois solutions (Subscript[x, 1]), (Subscript[x, 2]), (Subscript[x, 3]).
Au lieu de dire "solutions", on dit aussi racines.

esr=NSolve[(x^3)+1==3 x,x];
g1=Plot[{(x^3)+1,3 x},{x,-4,4},PlotRange->{-8,8},ImageSize->{350,200},Epilog->{Dashing[{0.02`,0.01`}],Line/@({{x,3 x},{x,0}}/.esr),Text["\!\(\*SubscriptBox[\(x\), \(1\)]\)",{x,0}/.esr[[1]],{0,-1}],Text["\!\(\*SubscriptBox[\(x\), \(2\)]\)",{x,0}/.esr[[2]],{0,1}],Text["\!\(\*SubscriptBox[\(x\), \(3\)]\)",{x,0}/.esr[[3]],{0,1}]}]

Un graphique peut montrer qu'une équation possède une ou plusieurs solutions et permet de les localiser approximativement.

Deuxième point de vue

Passons tous les termes de l'équation dans le premier membre

(x^3)-3 x+1=0

L'équation prend la forme f(x) = 0.
Dessinons la situation.

Plot[(x^3)-3 x+1,{x,-4,4}]

Les solutions sont situées à l'intersection de la courbe avec l'axe des abscisses. On y voit trois racines.
Nous constatons que résoudre une équation peut toujours se ramener à la  recherche les zéros d’une fonction.
Dans la suite du cours, nous adopterons le plus souvent ce deuxième point de vue.

Exemple 2

Recherchons graphiquement les solutions de l'équation
	 0.001(x^3)+0.999(x^2)-x-0.05=0.

Plot[0.001(x^3)+0.999 (x^2)-x-0.05,{x,-10,10}]

Au premier abord, il semblerait que l'équation possède une solution.
Effectuons un zoom pour observer ce qui se passe au voisinage de 0.

Plot[0.001 (x^3)+0.999 (x^2)-x-0.05,{x,-1,2}]

On voit maintenant que l'équation possède deux solutions distinctes (Subscript[x, 1])≃0   et    (Subscript[x, 2])≃1.

Pour savoir si l'équation possède d'autres racines, prenons un intervalle plus large

Plot[0.001 (x^3)+0.999 (x^2)-x-0.05,{x,-100,100}]

A ce stade, on peut être tenté de conclure que l'équation possède exactement deux solutions.
Or, c'est faux. L'équation possède une troisième racine (Subscript[x, 3])≈-1000

Plot[0.001(x^3)+0.999 (x^2)-x-0.05,{x,-1010,10}]

Nous savons qu'il n'y a pas de quatrième solution. Ce n'est pas un graphique qui peut nous le dire mais un raisonnement : l'équation est polynomiale du troisième degré.

Un graphique peut montrer l'existence de solutions mais il ne permet pas, en général, de déterminer le nombre de solutions.

Exemple 3

Il existe cependant des cas particuliers où un graphique permet de déterminer le nombre de solutions. Mais il faut alors impérativement savoir comment le graphique continue dans le plan au-delà de la partie dessinée, jusqu'à l'infini.

Pour x exprimé en radians, considérons l'équation

cos(x)=x

Plot[{Cos[x],x},{x,-10,10}]

Etant donné qu'une fonction est linéaire et que l'autre  est périodique, nous pouvons aisément nous représenter comment les deux courbes se poursuivent au-delà de la partie dessinée, jusqu'à l'infini.
Dans ce cas, nous pouvons nous convaincre que l'équation possède une et une seule solution.

Plus généralement, c'est une étude de fonction qu'il faudrait faire.

Exemple 4 et définitions

Considérons l'équation

(x^3)-4 (x^2)-20x+1=0

Plot[(x^3)-4 (x^2)-20 x+1,{x,-10,10}]

De chaque solution de l'équation, on peut donner une approximation numérique :

(Subscript[x, 1])≈-2.9,      (Subscript[x, 2])≈0,   (Subscript[x, 3])≈7.

On peut également encadrer chaque solution :

-5<(Subscript[x, 1])<0,     -2<(Subscript[x, 2])<2,   5<(Subscript[x, 3])<10.

Par contre  5<(Subscript[x, 3])<∞ n'est pas un encadrement de (Subscript[x, 3]) car

encadrer une racine signifie donner un intervalle
 1°	fini,
 2°	inclus dans l'ensemble de définition de la fonction et
 3°	contenant au moins une racine.

L'encadrement des racines

(Subscript[x, 1])ϵ]-5; 0[,     (Subscript[x, 2])ϵ]-2; 2[,  (Subscript[x, 3])ϵ]5; 10[

ne sépare pas les racines car les intervalles ]-5; 0[ et ]-2; 2[ ne sont pas disjoints.

Séparer les racines signifie encadrer chaque racine de telle sorte que
	chaque intervalle contienne une et une seule solution.
Par exemple,

(Subscript[x, 1])ϵ]-4; -2[,     (Subscript[x, 2])ϵ]-1; 1[,  (Subscript[x, 3])ϵ]6; 8[

Exemple 5

Considérons l'équation

5400-390 x-13 (x^2)+(x^3)=0

Plot[5400-390 x-13 (x^2)+(x^3),{x,-10,10}]

On pourrait être tenté de dire que l'équation possède une solution (Subscript[x, 1])≈10. Remarquez cependant que l'axe horizontal n'a pas été dessiné à la hauteur y=0. Pour prévenir cette erreur d'inattention, il est prudent d'inclure la directive suivante :

Plot[5400-390 x-13 (x^2)+(x^3),{x,-10,10},AxesOrigin->{Automatic,0}]

Pour éviter d'avoir à insérer cette option dans chaque commande Plot, on peut déclarer cette option active jusqu'à la fin de la session en cours, c'est-à-dire jusqu'à ce que l'on quitte le Noyau.

SetOptions[Plot,AxesOrigin->{Automatic,0},ImageSize->{500,300}]

On peut maintenant partir à la recherche des zéros avec moins de risque d'erreur dans la lecture des graphiques.

Plot[5400-390 x-13 (x^2)+(x^3),{x,-21,25}]

Plot[5400-390 x-13 (x^2)+(x^3),{x,-21,-19}]

Plot[5400-390 x-13 (x^2)+(x^3),{x,14,19}]

Exercice 2-1- P 1

Dans le problème 1-1, estimez graphiquement la valeur du rayon r pour une aire totale A =100 (cm^2) et une hauteur h=10 cm.
Encadrez chaque solution entre deux entiers. Séparez les solutions obtenues (si nécessaire).
Expliquez pourquoi il n’y a pas d’autre solution.

Exercice 2-1-P 2

Dans le problème 1-2, estimez graphiquement la valeur de la projection  q pour une aire A=80(cm^2) et une 
projection p=5 cm.
Encadrez chaque solution entre deux entiers. Séparez les solutions obtenues (si nécessaire).
Expliquez pourquoi il n’y a pas d’autre solution.

Exercice 2-1-P 3

Dans le problème 1-3, estimez graphiquement la hauteur h, pour un rayon r=0.3 m et des masse volumique (Subscript[ρ, 0])=1000 kg (m^(-3)) et (Subscript[ρ, 1])=900 kg (m^(-3)).
Encadrez chaque solution entre deux entiers. Séparez les solutions obtenues (si nécessaire).
Expliquez pourquoi il n’y a pas d’autre solution.

Exercice 2-1-P 4

Dans le problème 1-4, pour t = 30 %, estimez graphiquement la valeur de l'angle α.
Encadrez chaque solution entre deux nombres arrondis au (1/10) de radian. Séparez les solutions obtenues (si nécessaire).
Expliquez pourquoi il n’y a pas d’autre solution.

Exercice 2-1-P 5

Dans le problème 1-5, pour c = 10000, n = 8, a = 2000, estimez graphiquement la valeur du taux i.
Encadrez chaque solution entre deux nombres entiers de %. Séparez les solutions obtenues (si nécessaire).
Expliquez pourquoi il n’y a pas d’autre solution.

§ 2.2 Méthode de la bissection

Etymologie

Bissection signifie "couper en deux".

Exemple 1

Pour décrire la méthode de la bissection, prenons comme exemple l'équation

(x^3)-4 (x^2)-20x+1=0.

Etape 1 : encadrement et séparation des racines

Clear[f,x]; f[x_]:=(x^3)-4 (x^2)-20x+1

Nous avons vu, dans le § 2-1, comment on peut encadrer les racines par une méthode graphique.

Plot[f[x],{x,-5,8},AxesOrigin->{Automatic,0}]

Si on ne dispose pas de l'ordinateur pour faire des graphiques, il existe une méthode plus économique pour encadrer les racines : c'est de repérer les intervalles sur lesquels la fonction change de signe. Effectuons une première tabulation

TableForm[Transpose[Table[{x,Sign[f[x]]},{x,-6,6}]],TableHeadings->{{"x","Sgn f(x)"},None}]

De cette tabelle, sachant que la fonction est continue, nous pouvons déduire les encadrements

(Subscript[x, 1])ϵ]-3; -2[,     (Subscript[x, 2])ϵ]0; 1[,  (Subscript[x, 3])ϵ]6; 7[

Etape 2-1 : bissection pour (Subscript[x, 1])

Il faut commencer par fixer la précision à laquelle nous voulons parvenir. Dans notre exemple, choisissons une précision de ± 0.001

Rappelons-nous que la fonction f est négative à gauche de l'intervalle et positive à droite :

{Sign[f[-3]],Sign[f[-2]]}

Calculons le signe de la fonction au milieu de l'intervalle :

Sign[f[-2.5]]

La fonction change de signe entre -3 et -2.5. Nous en déduisons un nouvel encadrement : (Subscript[x, 1])ϵ]-3; -2.5[

Recommençons l'opération. Calculons le signe de la fonction au milieu du nouvel intervalle:

Sign[f[-2.75]]

La fonction change de signe entre -3 et -2.75. Nous en déduisons un nouvel encadrement : (Subscript[x, 1])ϵ]-3; -2.75[

Poursuivons les calculs et présentons la suite des encadrements successifs dans un tableau (un fichier contenant la fonction permettant de faire ce tableau est disponible sur le site internet du cours dans “documents mathematica/annexes/equations/”):

bissection[f,{-3,-2},5]

bissection[f,{-3,-2},5]

Si sign(f(((a+b)/2)))=-1, alors ((a+b)/2) se place dans la colonne de gauche a, sinon il se place dans la colonne de droite b.

Lorsqu'on fait les calculs à la main, on observe un phénomène désagréable : le nombre de chiffres après la virgule augmente. Etant donné qu'on désire un résultat à la précision d'un millième, nous pouvons arrondir les résultats à trois chiffres après le point décimal. La méthode de la bissection est itérée jusqu'à l'obtention de la précision souhaitée. Dans notre exemple, on y parvient en 9 étapes.

bissection[f,{-3,-2},9,0.001]

bissection[f,{-3,-2},9,0.001]

Réponse : (Subscript[x, 1])=-2.933 ± 0.001

En 9 itérations, la longueur de l'intervalle est passée de 1 à 0.002, c'est-à-dire a été divisée par 500. A chaque itération, la longueur de l'intervalle a été divisée par 2. En 9 itérations, elle a été divisée par (2^9)=512 (arrondi à 500).

Etape 2-2 : bissection pour (Subscript[x, 2])

Rappelons-nous que la fonction f est positive à gauche de l'intervalle et négative à droite :

{Sign[f[0]],Sign[f[1]]}

Calculons le signe de la fonction au milieu de l'intervalle :

Sign[f[0.5]]

La fonction change de signe entre 0 et 0.5. Nous en déduisons un nouvel encadrement : (Subscript[x, 2])ϵ]0; 0.5[

Recommençons l'opération. Calculons le signe de la fonction au milieu du nouvel intervalle:

Sign[f[0.25]]

La fonction change de signe entre 0 et 0.25. Nous en déduisons un nouvel encadrement : (Subscript[x, 2])ϵ]0; 0.25[

Poursuivons les calculs et présentons la suite des approximations successives dans un tableau :

bissection[f,{0,1},9,0.001]

bissection[f,{0,1},9,0.001]

Réponse : (Subscript[x, 2])=0.049 ± 0.001

Si sign(f(((a+b)/2)))=+1, alors ((a+b)/2) se place dans la colonne de gauche a, sinon il se place dans la colonne de droite b.

Etape 2-3 : bissection pour (Subscript[x, 3])

Rappelons-nous que la fonction f est négative à gauche de l'intervalle et positive à droite :

{Sign[f[6]],Sign[f[7]]}

Calculons le signe de la fonction au milieu de l'intervalle :

Sign[f[6.5]]

La fonction change de signe entre 6.5 et 7. Nous en déduisons un nouvel encadrement : (Subscript[x, 3])ϵ]6.5; 7[

Recommençons l'opération. Calculons le signe de la fonction au milieu du nouvel intervalle:

Sign[f[6.75]]

La fonction change de signe entre 6.75 et 7. Nous en déduisons un nouvel encadrement : (Subscript[x, 3])ϵ]6.75; 7[

Poursuivons les calculs et présentons la suite des encadrements successifs dans un tableau :

bissection[f,{6,7},9,0.001]

bissection[f,{6,7},9,0.001]

Réponse : (Subscript[x, 3])=6.885 ± 0.001

Si sign(f(((a+b)/2)))=-1, alors ((a+b)/2) se place dans la colonne de gauche a, sinon il se place dans la colonne de droite b.

Erreur sur le résultat

La dernière réponse fournie par la méthode de la bissection est de la forme

x ∈ [a; b]

On écrit alors la réponse finale sous la forme

x =((a+b)/2) ±((b-a)/2)

en arrondissant ensuite les valeurs numériques.

Critère d'arrêt

Au départ, on se donne une précision Δx et on poursuit les calculs jusqu'à ce que cette précision soit atteinte:

((b-a)/2)≤Δx

Si la largeur du dernier intervalle obtenu avec la méthode de la bissection est inférieure au double de la précision désirée

(b-a)≤2Δx

on peut arrêter les calculs et écrire la réponse finale, sinon il faut effectuer un pas supplémentaire.

Avantages et inconvénients de la méthode de la bissection

Par rapport à d'autres méthodes, la bissection présente les avantages suivants :
1.	La méthode de la bissection ne nécessite que peu d'hypothèses sur la fonction f.
	Il suffit que la fonction f soit continue.
2.	La méthode de la bissection est sûre : la convergence est garantie.
3.	La méthode donne également une borne de l'erreur : sachant que la solution x appartient
	à l'intervalle [a, b], alors ((a+b)/2) est une approximation de x à la précision ±((b-a)/2).

Par contre, la méthode de la bissection présente les inconvénients suivants :
1.	La méthode est lente. Pour atteindre une précision relative de l'ordre de (10^(-9)),
	il est couramment nécessaire d'effectuer  environ 30 itérations. 
	Il existe d'autres méthodes plus efficaces, c'est-à-dire permettant d'atteindre
	la même précision en exigeant moins de calculs.
2.	Il n'existe pas de méthode basée sur la bissection qui soit pratiquement utilisable
	pour résoudre des systèmes d'équations. C'est pourquoi il est utile de connaître aussi
	d'autres méthodes qui, plus tard, pourront s'adapter à la résolution de systèmes d'équations. 
	Prochainement, nous étudierons encore la méthode de la sécante et la méthode du point fixe. 
	Plus tard, nous étudierons encore la méthode de Newton.

Exercice 2-2-1

Au moyen de la méthode de la bissection, résolvez numériquement l'équation

(2^x)=10

à la précision de ± 0.001
Pour cela, utilisez uniquement votre calculatrice puis dressez le tableau des approximations successives.
Contrôlez votre réponse en calculant directement la solution à l’aide de votre calculatrice.

Exercice 2-2-P 2

Avec les données A = 1000 (cm^2), p = 20 cm, résolvez numériquement le problème 1- P 2.

Au moyen de la méthode de la bissection, calculez la valeur numérique de q à la précision de ± 0.02
Dressez le tableau des approximations successives à la main.
Utilisez Mathematica comme calculatrice. Calculez ensuite a, b, c.

Exercice 2-2-P 5

Avec les données c = 8200 fr., n = 6, a = 2000 fr., résolvez numériquement le problème 1-P 5.

Au moyen de la méthode de la bissection, calculez la valeur numérique du taux à la précision de ± 0.1 %.
Dressez le tableau des approximations successives à la main. Utilisez Mathematica comme calculatrice.

Indication: en Suisse, le taux est plafonné par la loi à 18 %.

Exercice 2-2-2 programmation de la méthode de la bissection

Le but de cet exercice est de programmer une fonction bissection[f,{a,b},nbIt]  qui retourne l’intervalle obtenu après avoir fait nbIt bissections de l’intervalle [a;b]  pour une fonction f sachant que f et [a;b] vérifient les hypothèses d’utilisation de la méthode de la bissection.
	(1) 	Définir la fonction g(x)=(x^3)-4(x^2)-20x+1. 
		Cette fonction permettra de tester le bon fonctionnement du programme.
	(2) 	A l’aide des fonctions If et Sign,  définir une fonction biss[{a_,b_}] qui retourne l’intervalle 
		obtenu après avoir fait une bissection de l’intervalle [a;b] avec la fonction g.
	(3)	 A l’aide de la fonction NestList, donner les intervalles obtenus en faisant 5 bissections des intervalles 
		[-3,-2] et [0;1] avec la fonction  g.
	(4) 	Définir le module bissectionList[f,{a,b},nbIt] qui retourne la liste des intervalles obtenus 
		après avoir fait nbIt bissections de l’intervalle [a;b] avec une fonction f.
		Vérifier votre module en calculant les intervalles obtenus en faisant 5 bissections de l’intervalle [0;1] 
		avec la fonction  g.
	(5)	Modifier le module précédent en utilisant la fonction Nest afin d’obtenir la fonction désirée.
	(6)	Calculer l’intervalle obtenu après 20 bissections de l’intervalle [0;1] avec la fonction  g.

Exercice 2-2-3 programmation de la méthode de la bissection avec tolérance

Le but de cet exercice est de programmer une fonction bissectionTol[f,{a,b},tol] qui retourne le premier intervalle de longueur inférieure à 2tol obtenu après avoir fait le nombre de bissections nécessaire de l’intervalle [a;b]  avec une   fonction f sachant que f et [a;b] vérifient les hypothèses d’utilisation de la méthode de la bissection..

	(1) 	Définir la fonction g(x)=(x^3)-4(x^2)-20x+1.
		Cette fonction permettra de tester le bon fonctionnement du programme.
	(2)	 Définir une fonction biss[{a_,b_}] qui retourne l’intervalle obtenu après avoir fait une bissection de
		l’intervalle [a;b] avec la fonction g.
	(3)	A l’aide de la fonction If,  définir une fonction test[{a,b}] qui retourne vrai si l’intervalle [a;b] a
		une longueur supérieure à (10^(-4)).
	(4)	A l’aide de la fonction NestWhile, effectuer suffisamment de bissections à l’intervalle [0;1] avec la
		fonction g afin d’obtenir un intervalle de longueur inférieure à (10^(-4)).
	(5)	Définir la fonction bissectionTol[f,{a,b},tol] à l’aide d’un module.
	(6)	Calculer à l’aide de la fonction bissectionTol l’intervalle permettant d’obtenir un zéro de g se
		trouvant dans l’intervalle [0;1] avec une précision de(10^(-6)). En déduire la valeur du zéro ainsi que son
		erreur.

Exercice 2-2-4 nombre d’étapes nécessaires pour obtenir une précision voulue

(1) 	Nous considérons toujours la fonction g(x)=(x^3)-4(x^2)-20x+1.
		Calculez à la main le nombre d’étapes de la méthode de bissection nécessaires afin de calculer le zéro de g 
		se trouvant dans l’intervalle [0;1] avec une précision de (10^(-6)).
	(2)	Déterminez de manière générale le nombre d’étapes nécessaires afin de calculer le zéro d’une fonction f 
		quelconque en partant d’un intervalle initial [a;b] avec une précision de ϵ.

Réponses de l’exercice 2-2 P 2

q≅45.95, a≅65.95, b≅36.32, c≅55.05

Réponse de l’exercice 2-2 P5

i=(12.9±0.1)%

Réponses de l’exercice 2-2-2

(3) 	{{-3,-2},{-3,-2.5`},{-3,-2.75`},{-3,-2.875`},{-2.9375`,-2.875`},{-2.9375`,-2.90625`}}
	{{0,1},{0,0.5`},{0,0.25`},{0,0.125`},{0,0.0625`},{0.03125`,0.0625`}}
(6)	{0.0495148, 0.0495157}

Réponses de l’exercice 2-2-3

(4)	{0.0494995, 0.0495605}
(6) 	Mathematica retourne {0.0495148, 0.0495167}, le zéro est donc 0.04951572±0.00000095.

Réponse de l’exercice 2-2-4

(1)	19