La corde, la tangente et le ciseau
Les trois chercheurs de racines lancés sur la même équation, chronomètre en main : 39 étapes, 10 itérations, 5 itérations. Le tableau complet des trois ordres, les scripts, et la méthode qui ne perd jamais la racine mais qui rampe.
Le chapitre F1 s’est clos sur une équation sans formule et sur la dichotomie. Ses Coulisses ont chronométré les tangentes. Le laboratoire du chapitre F2 a introduit la troisième et dernière méthode du programme, la sécante, et sa marge a promis un joyau : son ordre de convergence est le nombre d’or.
La famille est maintenant complète. Voici la course, sur la même équation et depuis les mêmes bornes.
Toutes les valeurs de cette page ont été recalculées ; les scripts sont donnés en entier, prêts à exécuter.
Le tableau de famille
| Méthode | Ordre | Ce qu’elle exige | Itérations pour douze décimales |
|---|---|---|---|
| Dichotomie sur | la continuité, et un changement de signe | 39 | |
| Sécante depuis , | rien de plus que | 10 | |
| Tangentes depuis | , et un bon point de départ | 5 |
L’ordre se lit dans la façon dont l’erreur se contracte. Ordre : chaque étape multiplie l’erreur par une constante, ici , ce qui fait gagner environ décimale par tour, autrement dit un peu plus de trois étapes par décimale. (Ce nombre est le logarithme décimal de , l’outil qui compte les chiffres ; il arrivera au chapitre F3, et l’on peut ici se contenter de le constater.) Ordre : chaque étape élève l’erreur à la puissance , ce qui multiplie par le nombre de décimales exactes. La différence n’est pas de vitesse, elle est de nature.
Les trois erreurs, tour par tour
Le tableau ci-dessous donne à chaque itération. Il vaut tous les discours.
| Dichotomie | Sécante | Tangentes | |
|---|---|---|---|
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | — | — | |
| 7 | — | — | |
| 8 | — | — | |
| 9 | — | — | |
| 10 | — | — | |
| 20 | — | — | |
| 30 | — | — | |
| 39 | — | — |
Lisez la colonne des tangentes : le nombre de zéros après la virgule double à chaque ligne. Lisez celle de la sécante : il est à peu près la somme des deux précédents, ; ; ; ; ; ; . C’est la récurrence de Fibonacci, et c’est de là que sort le nombre d’or : l’ordre exact de la sécante est le nombre vérifiant .
Lisez enfin celle de la dichotomie : trente-neuf étapes pour arriver où la tangente arrive en cinq. Elle est lente. Elle est aussi la seule des trois qui garantisse son erreur avant même de commencer : après étapes sur , elle est inférieure à , quoi qu’il arrive.
Les trois scripts
def dichotomie(f, a, b, eps):
n = 0
while (b - a) / 2 > eps:
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
n += 1
return (a + b) / 2, n
def secante(f, x0, x1, eps):
n = 1
while abs(x1 - x0) > eps:
pas = f(x1) * (x1 - x0) / (f(x1) - f(x0))
x0, x1 = x1, x1 - pas
n += 1
return x1, n
def tangentes(f, fp, x0, eps):
n = 0
while abs(f(x0)) > eps:
x0 = x0 - f(x0) / fp(x0)
n += 1
return x0, n
f = lambda x: x**5 - x - 1
fp = lambda x: 5 * x**4 - 1
print(dichotomie(f, 1, 2, 1e-12)) # (1.1673039782608612, 39)
print(secante(f, 1, 2, 1e-12)) # (1.1673039782614187, 10)
print(tangentes(f, fp, 1, 1e-12)) # (1.1673039782614396, 5)
Un mot sur la dernière décimale, parce qu’elle raconte quelque chose. Les trois sorties ne coïncident pas au dernier chiffre, et c’est normal : chaque méthode s’arrête sur son propre critère naturel. La dichotomie surveille la largeur de son encadrement, la sécante l’écart entre deux itérés successifs, les tangentes la petitesse de . Ce sont trois façons différentes de dire « c’est assez près », et elles ne s’arrêtent pas au même tour.
Vous lirez par ailleurs, dans l’extra du chapitre F1, quatre itérations pour les tangentes là où cette page en annonce cinq. Ce n’est pas une contradiction, et le critère d’arrêt n’y est pour rien : les deux pages emploient le même. La différence est ailleurs, et la section suivante lui est consacrée.
Le point de départ décide de tout
Un détail que le tableau cache, et qui compte plus que l’ordre de convergence : partez des tangentes depuis au lieu de , et il faut sept itérations au lieu de cinq. Deux tours perdus à redescendre, parce que la courbe est très raide en et que la tangente y renvoie loin. Partez au contraire de , et quatre suffisent : c’est le départ qu’avait choisi l’extra du chapitre F1, et c’est toute l’explication de l’écart entre ses quatre itérations et nos cinq.
C’est le défaut structurel de la méthode la plus rapide : sa vitesse est locale. Loin de la racine, elle n’a aucune garantie, et si passe près de zéro, la tangente est presque horizontale et projette le point à l’autre bout du monde. La dichotomie, elle, ne peut pas échouer : elle enferme la racine et resserre. C’est toute l’opposition du chapitre, et elle est ancienne : la sûreté contre la vitesse.
La corde qui ne perd jamais la racine, et qui rampe
Le cours a présenté la fausse position : on garde un encadrement avec , comme en dichotomie, mais on coupe à la corde plutôt qu’au milieu. Sur notre fonction, convexe sur puisque , et qui y traverse l’axe en croissant, le cours annonce que la borne ne bougera jamais. Vérifions, et regardons le prix.
a, b = 1.0, 2.0
for k in range(12):
c = a - f(a) * (b - a) / (f(b) - f(a))
if f(a) * f(c) <= 0:
b = c
else:
a = c
print(k + 1, round(c, 9))
Les douze premières coupes :
| Coupe | Valeur | Coupe | Valeur |
|---|---|---|---|
| 1 | 7 | ||
| 2 | 8 | ||
| 3 | 9 | ||
| 4 | 10 | ||
| 5 | 11 | ||
| 6 | 12 |
La prédiction du cours est exacte : la borne droite reste bloquée à , et les coupes montent vers la racine en croissant, toutes du même côté. Mais regardez la douzième : , alors que la racine vaut . Douze tours pour deux décimales. La sécante, aux mêmes douze tours, aurait dépassé la précision de la machine.
Voilà le paradoxe, et il est instructif. La fausse position et la sécante emploient exactement la même corde. La sécante garde les deux derniers points ; la fausse position garde les deux points qui encadrent. La seconde y gagne une garantie que la première n’a pas, et elle y perd son ordre : sur une fonction convexe, l’extrémité immobile la condamne à ramper. La convexité, ici, ne fait pas que décorer l’algorithme : c’est elle qui prédit quelle borne se figera, et donc qui explique la lenteur avant même de lancer le calcul.
Ce que choisissent les bibliothèques
Aucune bibliothèque de calcul sérieuse n’implémente une seule de ces trois méthodes. Elles les combinent : on tente une étape rapide, corde ou tangente, on vérifie qu’elle est retombée dans l’encadrement courant, et sinon on la jette pour une bissection. On obtient la vitesse en régime normal et la garantie en cas de mauvaise surprise. C’est l’idée des méthodes hybrides, et c’est la même que celle de l’extra du chapitre F1 sur la course entre dichotomie et tangentes.
Quand la dérivée est chère à calculer, ou simplement indisponible parce que est le résultat d’une simulation, c’est la corde qui l’emporte : ordre sans jamais dériver quoi que ce soit. Entre la tortue et le lièvre, le compromis est doré.
Sources
- Cours F2, paragraphe 6 ; Coulisses n°5, pièce 45 La corde au rythme doré.
- Cours F1, paragraphe 6, et l’extra « La course dichotomie contre Newton » du chapitre F1, dont cette page est la suite directe.
- Tous les nombres de cette page ont été recalculés en Python, la racine de référence étant obtenue par itération de Newton en arithmétique décimale à soixante chiffres.