Évaluer un polynôme : horner

### 6.28.21 Évaluer un polynôme : `horner`

si `horner` a deux paramètres : un polynôme `P` donné sous forme symbolique ou par la liste de ses coefficients et un nombre `a`.
`horner` renvoie `P(a)` calculé par la méthode de Hörner.
On tape :

`horner(x```^```2-2*x+1,2)`

ou :

`horner([1,-2,1],2)`

On obtient :

`1`

On peut mettre un troisième argument optionnel pour indiquer la variable à remplacer, par exemple

`horner(y```^```2-2*x*y+1,2,y)`

Si `horner` a trois paramètres : deux listes `ak` et `xk` et un nom de variable par exemple `x`.
`horner` évalue un polynome d’interpolation en `x` à partir des différences divisées `ak` et des `xk` (cf 6.28.33).
On tape :

`horner([15,9,0,2],[1,2,3,4],x)`

On obtient :

`(2*(x-3)*(x-2)+9)*(x-1)+15`

On tape :

`simplify((2*(x-3)*(x-2)+9)*(x-1)+1 )`

On obtient :

`-6+31*x-12*x```^```2+2*x```^```3`

On vérifie, en utilisant la commande `lagrange`.
Si P(x):=−6+31*x−12*x2+2*x3, on a
[P(1),P(2),P(3],P(4)]=[15,24,33,54]
On tape :

`lagrange([1,2,3,4],[15,24,33,54],x)`

On obtient :

`(2*(x-3)*(x-2)+9)*(x-1)+15`

On tape :

`lagrange([1,2,3,4],[15,24,33,54],lagrange)`

On obtient les différences divisées de P :

`[15,9,0,2]`