MÉTHODE 4

Encadrer une solution par dichotomie

Continuité et convexité • Terminale spécialité mathématiques

Objectif : obtenir un encadrement précis d’une solution que l’on ne sait pas calculer exactement, puis en déduire une valeur approchée avec une erreur maîtrisée.

L’idée : couper un intervalle en deux et conserver la moitié qui contient la solution. On recommence jusqu’à atteindre la précision demandée.

1. Justifier d’abord qu’une solution existe

On écrit l’équation sous la forme \(f(x)=0\). On choisit un intervalle \([a\,;b]\), avec \(a<b\), sur lequel \(f\) est continue.

Si \(f(a)\) et \(f(b)\) sont de signes strictement opposés, c’est-à-dire \(f(a)f(b)<0\), le théorème des valeurs intermédiaires garantit au moins une solution dans \(]a\,;b[\).

Si \(f\) est aussi strictement monotone sur \([a\,;b]\), cette solution est unique. On la note \(\alpha\).

Pour la rédaction de cette justification, on peut reprendre la méthode 1 : montrer qu’une équation admet une unique solution.

Cas simple : si \(f(a)=0\) ou \(f(b)=0\), une solution est déjà trouvée à une borne. De même, si un milieu vérifie \(f(m)=0\), on s’arrête : la solution a été obtenue exactement.

La stricte monotonie est utilisée ici pour identifier une unique solution. Le partage en intervalles de signes opposés reste possible pour une fonction continue qui possède plusieurs zéros.

2. Choisir la bonne moitié de l’intervalle

1. Calculer le milieu

On calcule \(m=\dfrac{a+b}{2}\), puis \(f(m)\).

2. Vérifier le cas exact

Si \(f(m)=0\), alors \(\alpha=m\). Le calcul est terminé.

3. Conserver les signes opposés

On garde la moitié dont les deux valeurs aux bornes sont de signes opposés.

4. Recommencer si nécessaire

On utilise les nouvelles bornes et on répète tant que la longueur de l’intervalle dépasse la précision demandée.

La règle de décision, valable pour une fonction croissante ou décroissante
Résultat du calculDécision
\(f(m)=0\)On s’arrête : \(\alpha=m\).
\(f(a)f(m)<0\)On conserve \([a\,;m]\).
\(f(m)f(b)<0\)On conserve \([m\,;b]\).

Le réflexe : comparer les signes aux bornes. Le signe de \(f(m)\) seul ne suffit pas pour choisir systématiquement la droite ou la gauche.

3. Un exemple entièrement corrigé

Énoncé. Encadrer la solution de \(x^3+x=1\) sur \([0\,;1]\) dans un intervalle de longueur inférieure ou égale à \(10^{-2}\).

Étape 1 — Justifier l’existence et l’unicité

On pose \(f(x)=x^3+x-1\). Cette fonction polynomiale est continue sur \([0\,;1]\). Sa dérivée est :

\[f'(x)=3x^2+1>0.\]

Elle est donc strictement croissante sur cet intervalle. De plus, \(f(0)=-1<0\) et \(f(1)=1>0\). Le TVI et la stricte monotonie garantissent une unique solution \(\alpha\in]0\,;1[\).

Étape 2 — Effectuer le premier partage

Le milieu de \([0\,;1]\) est \(m=0{,}5\), et :

\[f(0{,}5)=0{,}5^3+0{,}5-1=-0{,}375<0.\]

Comme \(f(0{,}5)<0<f(1)\), on conserve \([0{,}5\,;1]\).

Étape 3 — Recommencer sur le nouvel intervalle

Le nouveau milieu est \(0{,}75\), avec \(f(0{,}75)=0{,}171875>0\). Les signes sont opposés aux bornes de \([0{,}5\,;0{,}75]\) : on conserve cet intervalle.

Sept partages pour f(x) = x³ + x − 1
Étape\(a\)\(b\)Milieu \(m\)Signe de \(f(m)\)Intervalle conservé
1010,5−[0,5 ; 1]
20,510,75+[0,5 ; 0,75]
30,50,750,625−[0,625 ; 0,75]
40,6250,750,6875+[0,625 ; 0,6875]
50,6250,68750,65625−[0,65625 ; 0,6875]
60,656250,68750,671875−[0,671875 ; 0,6875]
70,6718750,68750,6796875−[0,6796875 ; 0,6875]

Les bornes décimales du tableau sont exactes. Le tableau affiche seulement le signe de la valeur calculée en chaque milieu.

Étape 4 — Vérifier la précision et conclure

Après sept partages :

\[\boxed{0{,}6796875<\alpha<0{,}6875}.\]

La longueur de cet intervalle vaut :

\[0{,}6875-0{,}6796875=0{,}0078125\leq0{,}01.\]

La précision demandée pour l’encadrement est atteinte.

Les trois premiers partages, à la même échelle

Départ : [0 ; 1]
Étape 1 : [0,5 ; 1]
Étape 2 : [0,5 ; 0,75]
Étape 3 : [0,625 ; 0,75]

La partie verte représente l’intervalle conservé. Sa longueur est divisée par deux à chaque étape, et la solution reste à l’intérieur.

Rédaction type pour conserver un intervalle :

« On a \(f(a)<0<f(m)\). Comme \(f\) est continue sur \([a\,;m]\), le TVI garantit une solution dans \(]a\,;m[\). L’unicité déjà démontrée permet d’affirmer que cette solution est \(\alpha\). On conserve donc \([a\,;m]\). »

On adapte les signes si la fonction est décroissante.

4. Relier le nombre d’étapes à la précision

Soit \(L_0=b_0-a_0\) la longueur de l’intervalle initial. Après \(n\) partages, si l’on n’a pas trouvé la solution exactement :

\[\boxed{L_n=\frac{L_0}{2^n}}.\]

Pour obtenir un intervalle de longueur au plus \(\varepsilon>0\), on cherche le plus petit entier \(n\geq0\) tel que \(\dfrac{L_0}{2^n}\leq\varepsilon\).

Dans l’exemple, \(L_0=1\) et \(\varepsilon=0{,}01\). Or \(1/2^6=0{,}015625>0{,}01\) et \(1/2^7=0{,}0078125\leq0{,}01\) : sept partages suffisent.

Choisir une valeur approchée : si \(\alpha\in[a_n\,;b_n]\), le milieu \(c_n=\dfrac{a_n+b_n}{2}\) vérifie :

\[\boxed{|\alpha-c_n|\leq\frac{b_n-a_n}{2}}.\]

Dans notre exemple, le milieu vaut \(c_7=0{,}68359375\), avec une erreur inférieure ou égale à \(0{,}00390625\).

Si l’on demande une valeur approchée avec une erreur au plus \(\delta\) : il suffit donc d’obtenir un intervalle de longueur au plus \(2\delta\), puis de prendre son milieu.

Encadrement, approximation et arrondi sont trois informations différentes. Un intervalle court donne une approximation avec une erreur contrôlée. Pour annoncer un arrondi, il faut vérifier que toutes les valeurs possibles s’arrondissent de la même façon.

Exemple : connaître seulement \(1{,}234<\alpha<1{,}235\) ne permet pas de choisir l’arrondi à trois décimales, car cet intervalle traverse le seuil \(1{,}2345\).

5. Un algorithme Python à comprendre

Avant d’utiliser ce programme, on justifie la continuité et l’unicité de la solution sur l’intervalle choisi. Le paramètre epsilon est la longueur maximale de l’intervalle renvoyé.

def dichotomie(f, a, b, epsilon):
    if epsilon <= 0 or a >= b:
        raise ValueError("Vérifier les bornes et la précision.")
    fa, fb = f(a), f(b)
    if fa == 0:
        return a, a
    if fb == 0:
        return b, b
    if (fa < 0) == (fb < 0):
        raise ValueError("Les signes aux bornes doivent être opposés.")
    while b - a > epsilon:
        m = (a + b) / 2
        fm = f(m)
        if fm == 0:
            return m, m
        if (fa < 0) != (fm < 0):
            b = m
        else:
            a, fa = m, fm
    return a, b


def f(x):
    return x**3 + x - 1


a, b = dichotomie(f, 0.0, 1.0, 0.01)
print(a, b)
print((a + b) / 2)

Les signes sont comparés directement : le programme fonctionne aussi bien pour une fonction croissante que pour une fonction décroissante.

Pour l’exemple ci-dessus, il renvoie les bornes 0.6796875 et 0.6875, puis le milieu 0.68359375. Python utilise le point comme séparateur décimal.

Si un milieu ou une borne est une solution exacte, les deux nombres renvoyés sont égaux.

6. Les pièges fréquents

  • Oublier la continuité. Des signes opposés ne suffisent pas : \(f(x)=1/x\) change de signe entre \(-1\) et \(1\), mais n’est pas définie en \(0\) et ne s’annule jamais.
  • Confondre existence et unicité. La dichotomie ne remplace pas la justification que la solution étudiée est unique.
  • Choisir le côté avec le seul signe de \(f(m)\). Il faut garder deux valeurs aux bornes de signes opposés ; le choix dépend aussi du signe à une borne.
  • Arrondir les bornes trop tôt. Conserver les valeurs calculées pendant les étapes, puis rédiger un encadrement valide.
  • Prendre un affichage arrondi à zéro pour une preuve. Une valeur très petite peut s’afficher 0.000 sans être exactement nulle.
  • Confondre longueur et erreur. L’erreur maximale du milieu est la moitié de la longueur de l’intervalle.
  • Annoncer un arrondi sans contrôler le seuil. Vérifier que l’intervalle ne traverse pas un seuil d’arrondi.

7. Exercices d’application

Chaque question possède un corrigé détaillé à déplier. Justifie le choix de l’intervalle conservé et précise la signification de la précision obtenue.

Exercice 1 — Encadrer une racine cubique

On considère \(h(x)=x^3-2\) sur \([1\,;2]\).

1. Montrer que \(h(x)=0\) possède une unique solution \(\beta\) dans \(]1\,;2[\).

Afficher le corrigé de la question 1

La fonction \(h\) est polynomiale, donc continue sur \([1\,;2]\). Sa dérivée est \(h'(x)=3x^2>0\) sur cet intervalle : elle est strictement croissante.

De plus, \(h(1)=-1<0\) et \(h(2)=6>0\). Par le TVI, une solution existe dans \(]1\,;2[\), et la stricte croissance garantit son unicité.

2. Effectuer les trois premiers partages par dichotomie et donner l’intervalle conservé à chaque étape.

Afficher le corrigé de la question 2
Les trois premiers partages pour h(x) = x³ − 2
Étape\(a\)\(b\)Milieu \(m\)Signe de \(h(m)\)Intervalle conservé
1121,5+[1 ; 1,5]
211,51,25−[1,25 ; 1,5]
31,251,51,375+[1,25 ; 1,375]

Les calculs donnent \(h(1{,}5)=1{,}375>0\), \(h(1{,}25)=-0{,}046875<0\), puis \(h(1{,}375)=0{,}599609375>0\).

On conserve à chaque fois les valeurs aux bornes de signes opposés. Après trois partages, \(1{,}25<\beta<1{,}375\).

3. Combien de partages sont nécessaires au minimum pour garantir un intervalle de longueur au plus \(10^{-2}\) ? Donner l’encadrement obtenu et une valeur approchée avec une borne sur son erreur.

Afficher le corrigé de la question 3

La longueur initiale est \(1\). On cherche le plus petit entier \(n\) tel que \(1/2^n\leq0{,}01\). Comme \(1/2^6=0{,}015625>0{,}01\) et \(1/2^7=0{,}0078125\leq0{,}01\), il faut sept partages au total, donc quatre de plus après la question 2.

La suite des partages, jusqu’à la précision demandée
Étape\(a\)\(b\)Milieu \(m\)Signe de \(h(m)\)Intervalle conservé
41,251,3751,3125+[1,25 ; 1,3125]
51,251,31251,28125+[1,25 ; 1,28125]
61,251,281251,265625+[1,25 ; 1,265625]
71,251,2656251,2578125−[1,2578125 ; 1,265625]
\[\boxed{1{,}2578125<\beta<1{,}265625}.\]

Le milieu est \(c=1{,}26171875\), avec :

\[|\beta-c|\leq\frac{0{,}0078125}{2}=0{,}00390625.\]

Exercice 2 — Une fonction décroissante

On considère \(g(x)=e^{-x}-x\) sur \([0\,;1]\).

1. Justifier que \(g(x)=0\) possède une unique solution \(\gamma\) dans \(]0\,;1[\).

Afficher le corrigé de la question 1

La fonction \(g\) est continue sur \([0\,;1]\). On a \(g'(x)=-e^{-x}-1<0\), donc elle est strictement décroissante.

De plus, \(g(0)=1>0\), tandis que \(g(1)=e^{-1}-1<0\). Le TVI donne l’existence d’une solution dans \(]0\,;1[\), et la stricte décroissance donne l’unicité.

2. Effectuer les trois premiers partages par dichotomie. Les calculs de \(g(m)\) peuvent être effectués à la calculatrice.

Afficher le corrigé de la question 2

Les valeurs approchées ci-dessous permettent d’identifier les signes sans ambiguïté :

  • \(g(0{,}5)\approx0{,}10653>0\) : on conserve \([0{,}5\,;1]\).
  • \(g(0{,}75)\approx-0{,}27763<0\) : on conserve \([0{,}5\,;0{,}75]\).
  • \(g(0{,}625)\approx-0{,}08974<0\) : on conserve \([0{,}5\,;0{,}625]\).

Après trois partages : \(0{,}5<\gamma<0{,}625\).

La fonction étant décroissante, les signes positifs sont ici du côté gauche de la solution. La règle générale des signes opposés reste valable.

3. On obtient \(g(0{,}5670)>0\) et \(g(0{,}5675)<0\). Donner un encadrement de \(\gamma\), puis une valeur approchée avec une erreur au plus \(2{,}5\times10^{-4}\).

Afficher le corrigé de la question 3

Par continuité et unicité, la solution appartient à l’intervalle formé par ces deux bornes :

\[\boxed{0{,}5670<\gamma<0{,}5675}.\]

Le milieu vaut \(c=\dfrac{0{,}5670+0{,}5675}{2}=0{,}56725\). La longueur de l’intervalle est \(0{,}0005\), donc :

\[|\gamma-0{,}56725|\leq0{,}00025=2{,}5\times10^{-4}.\]

On peut choisir \(0{,}56725\) comme valeur approchée avec l’erreur demandée.

Exercice 3 — Comprendre la précision

Une équation possède une unique solution \(\alpha\) dans \([2\,;5]\). On effectue des partages par dichotomie ; aucun milieu rencontré n’est une solution exacte.

1. Quelle est la longueur de l’intervalle après huit partages ? Quelle erreur maximale peut-on garantir en prenant son milieu ?

Afficher le corrigé de la question 1

La longueur initiale vaut \(L_0=5-2=3\). Après huit partages :

\[L_8=\frac{3}{2^8}=\frac{3}{256}=0{,}01171875.\]

L’erreur maximale pour le milieu est la moitié de cette longueur :

\[\frac{L_8}{2}=0{,}005859375.\]

2. Déterminer le nombre minimal de partages permettant de garantir un intervalle de longueur au plus \(10^{-3}\).

Afficher le corrigé de la question 2

On cherche le plus petit entier \(n\) tel que \(3/2^n\leq0{,}001\).

\[\frac{3}{2^{11}}=0{,}00146484375>0{,}001,\qquad\frac{3}{2^{12}}=0{,}000732421875\leq0{,}001.\]

Douze partages sont nécessaires au minimum pour cette garantie de longueur.

3. Un encadrement \(2{,}718<\alpha<2{,}719\) permet-il de connaître l’arrondi à trois décimales ? Et si l’on obtient ensuite \(2{,}7182<\alpha<2{,}7184\) ?

Afficher le corrigé de la question 3

Le premier encadrement traverse le seuil \(2{,}7185\). Des valeurs de l’intervalle s’arrondissent à \(2{,}718\), d’autres à \(2{,}719\) : il ne permet donc pas de choisir l’arrondi.

Le second intervalle est entièrement compris entre \(2{,}7175\) et \(2{,}7185\), et ne contient aucun de ces seuils. Toutes ses valeurs s’arrondissent à \(2{,}718\).

Avec le second encadrement, l’arrondi de \(\alpha\) à trois décimales est donc \(2{,}718\).

Méthode express
  1. Écrire l’équation sous la forme \(f(x)=0\).
  2. Justifier la continuité, l’existence et l’unicité sur l’intervalle choisi.
  3. Calculer le milieu et conserver les deux bornes de signes opposés.
  4. Répéter jusqu’à obtenir une longueur inférieure ou égale à la précision demandée.
  5. Donner l’encadrement et, si nécessaire, son milieu avec la borne sur l’erreur.