Académique Documents
Professionnel Documents
Culture Documents
Théorème de Sturm
Application
Résoudre un système d’équations polynomiales
Algorithme de Sturm
Manh-Linh Nguyen
23 avril 2020
Résumé
2 Théorème de Sturm
3 Application
Un corps ordonné R est réel clos s’il satisfait l’une des conditions
équivalentes suivantes.
1 R n’admet pas d’extension algébrique ordonnée.
2 Tout élément positif de R a une racine carrée, et tout polynôme de
degré impaire dans R [X ] a une racine.
p p
3 12 / R , et R ( 1) est algébriquement clos.
Suite de Sturm
Soient u < v 2 R, et f 2 R[X ] sans facteur carré.
On veut compter le nombre de racines de f dans [u, v ].
Définition
Une suite de Sturm pour f sur [u, v ] est une suite de polynômes
S = (f = f0 , f 0 = f1 , . . . , fm )
1 fm 2 R ⇥ .
2 Il n’existe pas de x 2 [u, v ] et 0 6 j 6 m 1 tels que
fj (x) = fj+1 (x) = 0.
3 Si fj (x) = 0 pour x 2 [u, v ] et 1 6 j 6 m 1, alors
fj 1 (x)fj+1 (x) < 0.
4 fj (u) 6= 0 et fj (v ) 6= 0 pour tout 0 6 j 6 m.
Manh-Linh Nguyen Algorithme de Sturm
Rappels sur les corps réels clos
Théorème de Sturm
Application
Résoudre un système d’équations polynomiales
L’énoncé du théorème
Définition
La variation de signes de S en x et
Théorème (Sturm)
Si S est une suite de Sturm pour f sur [u, v ], le nombre de racines de f
sur [u, v ] est égal à WS (u) WS (v ).
La preuve du théorème
Posons ↵ := ↵1 . (Rappel : fm 2 R ⇥ ).
Soit J := {0 6 j 6 m 1 : fj (↵) = 0}. Si j 2
/ J, on aura
fj (u)fj (v ) > 0 par TVI.
Si j 2 J et j > 0, on aura fj 1 (↵)fj+1 (↵) < 0. De plus, j 1,
j +12 / J, donc fj 1 (u)fj 1 (v ) > 0 et fj+1 (u)fj+1 (v ) > 0.
Si 0 2 J, alors f (u)f (v ) < 0 et f 0 ne change pas sa signe sur [u, v ].
Ainsi f est strictement monotone sur [u, v ]. Dans les deux cas,
f (u)f 0 (u) < 0 et f (v )f 0 (v ) > 0.
Manh-Linh Nguyen Algorithme de Sturm
Rappels sur les corps réels clos
Théorème de Sturm
Application
Résoudre un système d’équations polynomiales
Les chemins bleus indiquent que les deux extrémités ont même signe. Les
chemins rouges indiquent que les deux extrémités ont des signes
opposées.
Si 0 2 J j 2 J, j > 0 j0 2
/J
f0 (u) f1 (u) ... fj 1 (u) fj (u) fj+1 (u) ... fj 0 (u) ...
f0 (v) f1 (v) ... fj 1 (v) fj (v) fj+1 (v) ... fj 0 (v) ...
Si 0 2
/J j 2 J, j > 0 j0 2
/J
Si f (↵) 6= 0 (i.e. 0 2
/ J), WS (u) WS (V ) = |J| |J| = 0.
Manh-Linh Nguyen Algorithme de Sturm
Rappels sur les corps réels clos
Théorème de Sturm
Application
Résoudre un système d’équations polynomiales
L’algorithme de Sturm
Comment construire une suite de Sturm pour f ? En effet, la construction
d’une telle suite ne dépend pas en général de l’intervalle [u, v ].
Théorème (Algorithme de Sturm)
Soit S = (f0 , f1 , . . . , fm ) la suite de polynômes donnée par
f0 = f , f1 = f 0 ,
fk = rem(fk 2 , fk 1 ) pour tout k > 2 ;
où
Vérification de l’algorithme
fm 2 R ⇥ . C’est la construction de S.
Il n’existe pas de x 2 [u, v ] et 0 6 j 6 m 1 tels que
fj (x) = fj+1 (x) = 0. Sinon, soit (x, j) un contre-exemple avec j plus
petit. Si j > 0, écrivons fj 1 = fj q fj+1 , où q 2 R[X ], qui implique
que fj 1 (x) = fj (x) = 0, contradiction. Si j = 0, f (x) = f 0 (x) = 0,
qui contradit la séparabilité de f .
Si fj (x) = 0 pour x 2 [u, v ] et 1 6 j 6 m 1, alors
fj 1 (x)fj+1 (x) < 0. En effet, si fj 1 = fj q fj+1 , où q 2 R[X ], alors
fj 1 (x) = fj+1 (x) 6= 0 selon la partie précédente.
fj (u) 6= 0 et fj (v ) 6= 0. C’est la construction de S.
Ainsi, rad(f ) est sans facteur carré, et les racines de f sont celles de
rad(f ). On suppose qu’alors f est unitare et sans facteur carré.
f0 = f = X 6 4X 3 + X 2,
0 5 2
f1 = f = 6X 12X + 1,
5
f2 = rem(f0 , f1 ) = 2X 3 X +2
6
25 3
f3 = rem(f1 , f2 ) = 18X 2 X+ ,
24 2
92687 5159
f4 = rem(f2 , f3 ) = X
93312 2592
12568084416
f5 = rem(f3 , f4 ) = .
175324081
f0 ( 2) f1 ( 2) f2 ( 2) f3 ( 2) f4 ( 2) f5 ( 2)
92 239 ⇡ 12 ⇡ 76 ⇡ 4 ⇡ 72
f0 (2) f1 (2) f2 (2) f3 (2) f4 (2) f5 (2)
32 145 ⇡ 16 ⇡ 71 ⇡ 0.004 ⇡ 72
Le nombre des racines de f est WS ( 2) WS (2) = 3 1 = 2.
Pour isoler les deux racines de f , calculons
n 1 2 3 ... 15
u 2 1 1 ... 0.8517 . . .
v 0 0 0.5 ... 0.8516 . . .
xn 1 0.5 0.75 ... 0.8516 . . .
f (xn ) 2 1.9844 . . . 0.8845 . . . ... 0.0005 . . .
n 1 2 3 ... 15
u 0 1 1.5 ... 1.6001 . . .
v 2 2 2 ... 1.6002 . . .
xn 1 1.5 1.75 ... 1.6002 . . .
f (xn ) 4 2.6094 . . . 7.3054 . . . ... 0.0015 . . .
On trouve deux racines approximées : 0.8516 et 1.6002.
Base de Gröbner
I = (f1 , . . . , fm ) ✓ R[X1 , . . . , Xn ].
Exemple
On veut résoudre le système
8
2 2 2
>
<x + y + z =4
2 2
x + 2y =5
>
:
xz = 1.
{x + 2z 3 3z, y 2 z2 1, 2z 4 3z 2 + 1}.