$$\newcommand{\mtn}{\mathbb{N}}\newcommand{\mtns}{\mathbb{N}^*}\newcommand{\mtz}{\mathbb{Z}}\newcommand{\mtr}{\mathbb{R}}\newcommand{\mtk}{\mathbb{K}}\newcommand{\mtq}{\mathbb{Q}}\newcommand{\mtc}{\mathbb{C}}\newcommand{\mch}{\mathcal{H}}\newcommand{\mcp}{\mathcal{P}}\newcommand{\mcb}{\mathcal{B}}\newcommand{\mcl}{\mathcal{L}} \newcommand{\mcm}{\mathcal{M}}\newcommand{\mcc}{\mathcal{C}} \newcommand{\mcmn}{\mathcal{M}}\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)} \newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}\newcommand{\mcsn}{\mathcal{S}_n} \newcommand{\mcs}{\mathcal{S}}\newcommand{\mcd}{\mathcal{D}} \newcommand{\mcsns}{\mathcal{S}_n^{++}}\newcommand{\glnk}{GL_n(\mtk)} \newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch} \DeclareMathOperator{\sh}{sh}\DeclareMathOperator{\th}{th} \DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card} \DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im} \DeclareMathOperator{\rang}{rg}\DeclareMathOperator{\Fr}{Fr} \DeclareMathOperator{\diam}{diam}\DeclareMathOperator{\supp}{supp} \newcommand{\veps}{\varepsilon}\newcommand{\mcu}{\mathcal{U}} \newcommand{\mcun}{\mcu_n}\newcommand{\dis}{\displaystyle} \newcommand{\croouv}{[\![}\newcommand{\crofer}{]\!]} \newcommand{\rab}{\mathcal{R}(a,b)}\newcommand{\pss}[2]{\langle #1,#2\rangle} $$
Bibm@th

Algorithme de Horner

  Au XVIIè s., les physiciens et les astronomes faisaient tous leurs calculs à la main, des calculs très compliqués en général (d'où le nom de calcul astronomique). Ils évaluent souvent des quantités polynômiales, par exemple 5x4-4x3+3x2-2x+1 pour x=3. Normalement, pour effectuer ce calcul, il faut calculer x,x2,x3,x4, soit 3 multiplications, puis 5x4,4x3,3x2,2x, soit 4 multiplications. En ajoutant les sommes, on obtient en tout 7 multiplications et 4 additions.

  Le mathématicien anglais Horner a mis au point une méthode efficace pour économiser des opérations, méthode encore utilisée de nos jours sur les ordinateurs. Remplaçons en effet l'expression 5x4-4x3+3x2-2x+1 par x(x(x(5x-4)+3)-2)+1, puis calculons successivement a=5, b=xa-4, c=xb+3, d=xc-2, et enfin e=xd+1. e est le résultat souhaité, obtenu après 4 multiplications et 4 additions. On économise donc des multiplications, qui est une opération plus longue à réaliser!