Section 3.3 Méthode de Horner
Problème 3.3.1.
Comment utiliser efficacement l'ordinateur pour évaluer un polynôme?
Algorithme 1 : Approche naïve.
Considérant le polynôme
combien d'opérations mathématiques sont-elles nécessaires pour évaluer \(P(9)\text{?}\)
On a
Vu comme ça, il faut trois (comme le degré) additions et six (\(1+2+3\)) multiplications, soit neuf opérations.
Plus généralement, pour un polynôme de degré \(n\)
défini par la liste de ses coefficients \(\left[a_0,a_1,\ldots,a_n\right]\text{,}\) le calcul de \(P(x)\) peut nécessiter jusqu'à \(n\) additions et
multiplications, soit
opérations.
Cette approche naïve conduit à l'implémentation algorithmique
dont la complexitéest qualifiée de quadratique, c'est-à-dire qu'elle est polynomiale de degré deux.
Algorithme 2 : Méthode de Horner.
Pour améliorer l'algorithme précédent, on pourrait bien sûr utiliser l'exponentiation rapide vue à la section 3.2. Mais on peut faire encore mieux.
Reprenons l'exemple ci-dessus et notons que par factorisations successives de \(x\text{,}\) on obtient
Vue comme ça, l'évaluation de \(P(x)\) ne requiert plus que trois additions et trois multiplications, soit six opérations.
Plus généralement, on appelle forme de Horner du polynôme
la factorisation
qui nécessite \(n\) additions et \(n\) multiplications, soit \(2n\) opérations.
Pour bien comprendre comment programmer cela, il suffit de penser à la façon dont on effectue le calcul de \(P(x)\) une paire de parenthèses après l'autre. Par exemple, pour le polynôme
le calcul de
par la méthode de Horner revient à calculer les valeurs successives
dont la dernière donne
après trois additions et trois multiplications.
Dans le cas général, cet algorithme de calcul de \(P(x)\) peut donc être décrit comme suit.
Voici une implémentation itérative de la méthode de Horner.
La complexité de cet algorithme
est linéaire, donc bien meilleure que la complexité quadratique obtenue par l'approche naïve, comme l'illustrent les graphes ci-après.