1. Un problème vieux de près de 4 000 ans
Des tablettes d'argile aux racines d'un polynôme.
Vers 1800 avant notre ère, en Mésopotamie, les apprentis scribes s'exercent sur des tablettes d'argile. Un de leurs problèmes favoris porte sur un champ rectangulaire : on donne la longueur et la largeur additionnées, \(s\), et l'aire, \(p\). Il faut retrouver la longueur \(L\) et la largeur \(l\).
Somme et produit de deux nombres : c'est ce que relie le théorème 3 du cours. Le polynôme \((x-L)(x-l)\) s'annule en \(L\) et en \(l\) ; développé, il s'écrit \(x^2-(L+l)x+Ll\), et on peut donc l'écrire directement. Les scribes, eux, suivaient une recette géométrique, en découpant et en recollant des morceaux de carré ; nous allons emprunter un autre chemin, le cours et l'ordinateur.
Le polynôme \((x-L)(x-l)\) s'annule en \(L\) et en \(l\). Développé, il s'écrit \(x^2-(L+l)x+Ll\), soit \(x^2-8x+12\). Contrôle par le théorème 3 : avec \(a=1\), la somme des racines vaut \(-b\) et leur produit \(c\). Attention au signe : c'est \(-b\) qui vaut la somme.
2. Une racine évidente suffit
Le second nombre se déduit du premier.
Pour le champ de la question précédente, de longueur et largeur additionnées 8, on cherche une racine du polynôme en essayant de petits nombres entiers : \(1\), \(2\), \(3\)… Dès qu'une racine est trouvée, la somme des racines donne l'autre, sans aucun calcul supplémentaire.
La méthode
Une racine \(x_1\) connue, la seconde vaut \(x_2=s-x_1\) puisque \(x_1+x_2=s\) (théorème 3). Le produit \(x_1x_2=p\) sert de vérification.
\(f(2)=4-16+12=0\) : \(2\) est une racine (définition 2). La somme des racines vaut \(8\), donc l'autre racine est \(8-2=6\) (théorème 3). Le rectangle mesure \(6\) sur \(2\) : son aire est bien \(12\).
3. Confier la recherche à Python
On valide l'outil sur un exemple dont on connaît la réponse.
Essayer des nombres un par un est long : un programme peut le faire pour nous. Avant de lui faire confiance, testons-le sur l'exemple du cours, \(f(x)=2x^2-7x+6\), dont on sait que les racines sont \(2\) et \(1{,}5\) (exemples 2 et 4).
Exécutez, puis remplacez n = 1 par n = 2 et exécutez de nouveau.
Python écrit les nombres avec un point : 1.5 pour \(1{,}5\). Si la console ne se
charge pas, le même programme s'exécute sur
https://sciency.co/console.
Lire les résultats
Avec n = 1, le programme affiche 2.0 seulement ; avec
n = 2, il affiche 1.5 et 2.0. L'outil retrouve bien les
deux racines connues, à condition de tester les bons nombres.
n = 1, le programme n'affiche que 2.0. Pourquoi la racine \(1{,}5\) n'apparaît-elle pas ?Le programme teste les nombres \(\dfrac{k}{n}\) pour \(k\) entier : avec \(n=1\), ce sont les entiers de \(-10\) à \(10\). Avec \(n=2\), il teste aussi les demis, et \(1{,}5\) apparaît. L'exemple 4 du cours le confirme : la seconde racine est \(1{,}5\).
4. Un champ aux mesures qui ne tombent pas juste
Là où ni le calcul à la main ni le premier programme ne suffisent.
Un champ a pour longueur et largeur additionnées \(4\) et pour aire \(2\). Ses mesures
sont donc les racines de \(f(x)=x^2-4x+2\). La courbe coupe bien deux fois
l'axe des abscisses… mais le programme précédent n'affiche rien, même avec
n = 1000 : ces racines ne sont pas des nombres décimaux.
Changeons de question : au lieu de chercher où \(f(x)\) vaut exactement \(0\), cherchons où il change de signe. Entre une valeur positive et une valeur négative, la courbe traverse l'axe : une racine s'y trouve.
| \(x\) | \(f(x)\) | signe |
|---|---|---|
| 0 | 2,00 | + |
| 0,1 | 1,61 | + |
| 0,2 | 1,24 | + |
| 0,3 | 0,89 | + |
| 0,4 | 0,56 | + |
| 0,5 | 0,25 | + |
| 0,6 | −0,04 | − |
| 0,7 | −0,31 | − |
| 0,8 | −0,56 | − |
\(f(0{,}5)\) est positif et \(f(0{,}6)\) est négatif : la plus petite racine est entre \(0{,}5\) et \(0{,}6\). Le champ a une largeur comprise entre \(0{,}5\) et \(0{,}6\).
n = 10. Entre quels nombres se trouve la plus petite racine ?\(f(0{,}4)=0{,}36\) est positif et \(f(0{,}5)=-0{,}25\) est négatif : \(f\) change de signe entre ces deux nombres, la courbe y traverse l'axe des abscisses. Le programme affiche aussi une ligne entre \(6{,}5\) et \(6{,}6\) : c'est l'encadrement de la plus grande racine.
5. Le programme du signe
Python encadre les racines aussi finement qu'on le souhaite.
Le programme ci-dessous parcourt les nombres \(\dfrac{k}{n}\) de \(0\) à \(4\) et affiche chaque intervalle aux bornes duquel \(f\) prend des valeurs de signes contraires : c'est-à-dire quand le produit \(f(a)\times f(b)\) est négatif.
Exécutez : deux lignes s'affichent, une par racine. Remplacez ensuite n = 10
par n = 100, puis par n = 1000 : les encadrements se resserrent.
Lien de secours : https://sciency.co/console.
Lire les résultats
Avec n = 10 : 0.5 0.6 et 3.4 3.5. Avec
n = 100 : 0.58 0.59 et 3.41 3.42. Le champ mesure donc
environ \(3{,}41\) sur \(0{,}59\) ; et \(3{,}41\times0{,}59\) est bien proche de \(2\).
La fonction étudiée est écrite dans def f(x) : pour un demi-périmètre \(6\) et une aire \(7\), on écrit return x**2 - 6*x + 7, c'est-à-dire \(x^2-6x+7\).
6. Une racine suffit encore
Le théorème 3 fait gagner la moitié du travail.
Inutile d'encadrer les deux racines : la somme donne l'une à partir de l'autre. Si \(0{,}58 < x_1 < 0{,}59\) et \(x_1+x_2=4\), alors \(x_2=4-x_1\) est compris entre \(4-0{,}59=3{,}41\) et \(4-0{,}58=3{,}42\) : on retrouve la seconde ligne du programme.
Attention au sens
Retrancher un nombre plus grand donne un résultat plus petit : la borne supérieure de \(x_1\) donne la borne inférieure de \(x_2\).
D'après le théorème 3, \(x_1+x_2=6\), donc \(x_2=6-x_1\). Comme \(x_1\) est entre \(0{,}55\) et \(0{,}56\), \(x_2\) est entre \(5{,}44\) et \(5{,}45\) : retrancher un nombre plus grand donne un résultat plus petit. Contrôle par le produit : \(x_1x_2\) doit valoir environ \(3\).
7. Ce qu'il faut retenir
Le fil, d'un bout à l'autre.
Le raisonnement
Deux nombres \(u\) et \(v\) de somme \(s\) et de produit \(p\) sont les racines de \((x-u)(x-v)=x^2-sx+p\). On cherche une racine : évidente si elle est entière, sinon encadrée par un changement de signe, aussi finement que l'on veut avec Python. La seconde racine s'obtient par la somme, et le produit sert de contrôle.
Votre parcours
Vous avez répondu à 0 question(s) sur 6 du premier coup.