Professional Documents
Culture Documents
Le principe
Prenons lexemple de P (x) = 3x5 2x4 + 7x3 + 2x2 + 5x 3.
Pour calculer P(x) le calcul classique ncessite . . . . . . multiplications et . . . . . . additions.
De mme si on gnralise Pour calculer P (x) = an xn + an1 xn1 + + a1 x + a0
il faut . . . . . . . . . . . . . . . . . . multiplications et . . . . . . . . . . . . . . . additions.
Dem :
{z
on met x en facteur
= an xn1 + + a3 x + a2 +a1 x + a0
|
= ......
{z
on met x en facteur
=
=
=
=
1
2
3
4
5
6
7
8
Entres : Les coefficients ai dans lordre dcroissant des exposants des monmes, le monme x
dbut
n :=degr du polynme P.
Q :=an
pour k allant de 1 n faire
Q := Q x + ank
fin
Sorties : Q qui est gal P(x) sous la forme dun polynme de Horner
Algorithme 1 : Algorithme de Horner
1
Pour faire les calculs la main il est plus facile de le prsenter autrement. Par exemple
f (x) = 4x3 8x2 7x 1
4
-8
-7
-1
x
4x
(4x
8)x
((4x
8)x
7)x
4 (4x 8) (4x 8)x 7 ((4x 8)x 7)x 1
Par exemple pour calculer f(2). Calculer de mme pour f (3), P (2).
4 -8 -7
-1
4
-8
-7
-1
3
-2
7
2
5
f
f
P
8
0 14
... ... ...
... ... ... ...
2
3
2
4 0 7 15
... ... ... ...
... ... ... ... ...
Donc f (2) = 15.
Donc f (3) = . . . . . .
Donc P (2) = . . . . . .
pour
-3
...
...
Dmonstration
Soit P un polynme de degr n, x0 un rel.
On cherche dterminer un polynme Q(x) tel que P (x) = (x x0 )Q(x) + P (x0 ).
Q est forcment un polynme de degr n 1 et on a :
P (x) = an xn + + a1 x + a0
= an xn + (
) xn1 + + (
) x2 + (
)x + (
bn1 = . . . . . .
bn2 = . . . . . .
P
an
an1 . . . a2 a1
a0
............
...............
x
.
.
.
.
.
.
.
.
.
.
.
.
.
..
a2 = . . . . . .
b1 = . . . . . .
bn1 bn2 . . .
b1 b0 P (x0 )
a1 = . . . . . .
b0 = . . . . . .
a0 = . . . . . .
P (x0 ) = . . . . . .
On retrouve bien par construction les coefficients (bk ) obtenus avec lalgorithme de Hrner et le dernier
coefficient est bien P (x0 ). On a dmontr lexistence et lunicit du polynme Q(x).
an = . . . . . .
an1 = . . . . . .
Nous avons dmontr que P (x) = (x x0 )Q(x) + P (x0 ) o Q(x) est le polynme obtenu avec lalgorithme de Hrner.
Si x0 est une racine de P alors On trouve p(x0 ) = . . . . . . et donc P (x) = . . . . . . . . .
Si on applique lalgorithme
on trouve P (x0 ) = 0, mais aussi les coefficients de Q(x).
Hrner
1
en compltant le tableau ci dessous.
Par exemple calculer f
2
-8
-7
-1
4
1
...
...
...
Nous allons donc modifier le programme prcdent pour faire apparaitre tous les coefficients
Horner2(C,x):={
local Q,k,n;
n:=size(C)-1; // Le degr du polynome P
Q:=[];
// on cre une liste vide
Q[0]:=C[0];
pour k de 1 jusque n faire
Q[k]:=(Q[k-1]*x)+C[k];
fpour;
retourne(Q)
}
En utilisant cette
le programme que nous avons cre calculer g(2) en dduire une factorisation
fois
1
de P . Calculer Q . En dduire une factorisation de Q(x) puis de P (x).
2
Prompt X
ClrList L6
Disp ``{AN,...,A0}''
Input L6
dim(L6)-1->N
L6(1)->Q
For(K,1,N,1)
Q*X+L6(K+1)->Q
End
Disp Q
Prompt X
ClrList L6
Disp ``{AN,...,A0}''
Input L6
dim(L6)-1->N
For(K,1,N,1)
L6(K)*X+L6(K+1)->L6(K+1)
End
Disp L6
On crira seulement le deuxime programme car il donne la liste des coefficients de Q(x).
Pour tester plus facilement le programme crire dans la liste L1 les coefficients 4 8 7 1.
Excuter le programme par exemple pour 0, 5. Horner2-0.5L1 et vous devez obtenir 0 pour le
premier programme et pour le deuxime la liste qui est en L6 = {4 10 2 0}.
On a donc P (0.5) = 0 et P (x) = (x + 0, 5)(4x2 10x 2).
On peut aussi modifier le programme pour faire afficher des fractions.
Remplacer Disp L6 par Disp L6Frac
Ce programme fonctionne aussi avec des complexes.
Avec python
def Horner(C,x):
n=len(C)
Q=C[0]
for k in range(1,n):
Q=Qx+C[k]
return Q
P=[4,8,7,1]
print(Horner(P,0))
def Horner(C,x):
n=len(C)
Q=[0]n;
Q[0]=C[0];
for k in range(1,n):
Q[k]=Q[k1]x+C[k]
return Q
P=[4,8,7,1]
print(Horner(P,0.5))
Correction de la dmonstration
Soit P un polynme de degr n, x0 un rel.
On cherche dterminer un polynme Q(x) tel que P (x) = (x x0 )Q(x) + P (x0 ).
Q est forcment un polynme de degr n 1 et on a :
P (x) = an xn + + a1 x + a0
bn1 = an
x
b
=
a
b
n2
0
n1
n1
n2 = x0 bn1 + an1
...
...
b1 x0 b2 = a2
b1 = x0 b2 + a2
x
b
=
a
b
0
0 1
1
0 = x0 b1 + a1
x0 b0 + P (x0 ) = a0
P (x0 ) = x0 b0 + a0
On retrouve bien les coefficients (bk ) obtenus avec lalgorithme de Hrner et le dernier coefficient est
bien P (x0 ).
Pour la programmation nous avons utilis les listes [an an1 . . . a1 a0 ] qui sont numrotes [p0 p1 p2 . . . pn1 pn ]
car les listes commencent 0 (ou 1 pour la TI).