Math
Racines en mouvement
Les racines d'un polynôme dans le plan complexe, courant tandis qu'un coefficient balaie : les deux racines de la cubique se rejoignent au discriminant et quittent l'axe réel en paire, six racines tournent sur un cercle, et les dix racines de Wilkinson sont projetées dans le plan par deux millionièmes sur un coefficient ; la paire la plus proche, le nombre de réelles et la borne de Cauchy mesurés en direct, et une tâche sur la collision.

Ce qui se passe
Un polynôme de degré n a n racines dans le plan complexe, toujours, c'est le théorème fondamental de l'algèbre, et elles bougent continûment quand un coefficient bouge. Ici un coefficient t balaie tout seul dès l'ouverture du module, et les racines courent sur le plan en laissant des traînées. Pour x³ − 3x + t les trois racines partent de −√3, 0 et √3 ; quand t croît, deux d'entre elles glissent l'une vers l'autre le long de l'axe réel, se rejoignent en t = 2, où le discriminant 108 − 27t² s'annule, et quittent l'axe ensemble en paire conjuguée, images miroir au-dessus et au-dessous : les coefficients étant réels, une racine complexe ne voyage jamais seule. Glisse sur le plan pour balayer t à la main. La quartique x⁴ − 5x² + t le fait deux fois ; z⁶ − t garde six racines sur un cercle dont le rayon est la racine sixième de t. Et le polynôme de Wilkinson, (x − 1)(x − 2)…(x − 10), est la raison pour laquelle les numériciens dorment mal : ses racines sont 1 à 10, son coefficient de x⁹ vaut −55, et pousser ce coefficient d'un dix-millième, deux millionièmes, projette les racines hors de la droite réelle de plus d'une demi-unité. Le cercle pâle est la borne de Cauchy : aucune racine n'en sort jamais. Les racines sont trouvées par l'itération d'Aberth et vérifiées contre un solveur indépendant.
Équations du module
Équations cubique : x³ − 3x + t ; discriminant 108 − 27t² ; t = 0 : −√3, 0, √3 ; t = 2 : −2 et une racine double en 1 ; t = 3 : −2.1038 et 1.0519 ± 0.5652i ; pour |t| < 2 trois racines réelles, au-delà une paire conjuguée en 1 ± i√((t − 2)/3) près de t = 2 quartique : x⁴ − 5x² + t ; x² = (5 ± √(25 − 4t))/2 ; t = 0 : 0, 0, ±√5 ; t = 4 : ±1, ±2 ; t = 6.25 : ±1.5811 deux fois cercle : z⁶ − t ; six racines sur le cercle de rayon |t|^(1/6), tournées de 30° lorsque t < 0 Wilkinson : (x − 1)(x − 2)…(x − 10) + εx⁹, ε = t·10^−5 ; le coefficient de x⁹ est −55, le terme constant est 10! = 3 628 800 ; ε = 10^−6 déplace une racine de 0.013 ; ε = 10^−4 (deux parties par million de −55) rend des racines complexes, |Im| jusqu'à 0.675, déplacements jusqu'à 0.90 solveur : Aberth–Ehrlich à partir de 0.9 du cercle de Cauchy, démarré à chaud depuis la dernière image pour que chaque racine garde sa traînée ; contrôlé contre numpy.roots à 10^−6 près dans le jumeau Cauchy : toute racine vérifie |z| ≤ 1 + max|a_i|/|a_n| exercice : amener deux racines de la cubique à moins de 0.2 l'une de l'autre : |t − 2| < 0.03 (la paire se trouve en 1 ± √(|t − 2|/3)) ; 1.98 donne 0.163, 1.95 donne 0.259 atelier : les racines déplacées dans le plan deviennent des coefficients par Vieta - Π(x − r_k) développé, conjugués conservés, une racine à moins de 0.03 de l'axe est ramenée sur lui ; Σ r_k = −a_(n−1)/a_n, Π r_k = (−1)^n·a₀/a_n résidu et plancher : |p(z)| comparé à 2n·ε·Σ|a_i||z|^i, l'erreur d'arrondi de Horner en z ; à la racine réelle de x³ − 3x + 3 : 8.9·10^−16 sous un plancher de 2.5·10^−14 ; à la racine 10 de Wilkinson le plancher vaut 0.003 sensibilité : |∂z/∂a_k| = |z|^k / |p′(z)| ; Wilkinson : la racine 10 bouge de 10⁹/9! = 2755.7 par unité de a₉, la racine 1 bouge de 2.8·10^−6 ; conditionnement Σ|a_i||z|^i / (|z||p′(z)|) = 184756 = C(20, 10) en 10, 110 en 1 racine multiple : un groupe de racines à moins de 10^−3 est signalé comme tel ; pour x³ − 3x + 2 la paire en 1 a |p′| = 1.1·10^−9 - une racine double est infiniment sensible


