Vous êtes sur la page 1sur 18

Rappels sur les corps réels clos

Théorème de Sturm
Application
Résoudre un système d’équations polynomiales

Algorithme de Sturm

Manh-Linh Nguyen

Cours « Corps réels clos et structures o -minimales »

23 avril 2020

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

Résumé

1 Rappels sur les corps réels clos

2 Théorème de Sturm

3 Application

4 Résoudre un système d’équations polynomiales

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

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.

Si R est réel clos, la structure (R, +, , ·, 0, 1, <) est o-minimale.


Si R est ordonné, char R = 0. Ainsi, si f 2 R[X ], on a équivalence
p
1 f est séparable (i.e. ses racines dans R ( 1) sont simples).
0 ⇥
2 gcd(f , f ) 2 R .
3 f est sans facteur carré.

Théorème des valeurs intermédiaires. Si R est réel clos,


f 2 R[X ], u < v 2 R et f (u)f (v ) < 0, alors il existe x 2 (u, v ) tel
que f (x) = 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

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 )

satisfaisant les conditions suivantes.

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

Soient S = (f0 , . . . , fm ) une suite de polynômes dans R[X ], et x 2 R tels


que fj (x) 6= 0 pour tout 0 6 j 6 m.

Définition
La variation de signes de S en x et

WS (x) := #{0 6 j 6 m 1 : fj (x)fj+1 (x) < 0}.

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 ).

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

La preuve du théorème

Soient ↵1 < · · · < ↵r toutes les racines des f0 , . . . , fm 1 sur [u, v ].


Quitte à subdiviser u = u0 < u1 < · · · < ur = v , avec
ui 1 < ↵i < ui , on peut supposer que r = 1.
u = u0 ↵1 u1 ↵2 u2 ur 1 ↵r ur = v
...
1 1 1 1 1 1 1 1

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 f (↵) = 0 (i.e. 0 2 J), WS (u) WS (v ) = |J| (|J| 1) = 1.

Si 0 2
/J j 2 J, j > 0 j0 2
/J

f0 (u) ... fj 1 (u) fj (u) fj+1 (u) ... fj 0 (u) ...

f0 (v) ... fj 1 (v) fj (v) fj+1 (v) ... fj 0 (v) ...

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 ;

rem(p, q) designe le reste dans la division euclidienne de p par q,


m est le plus petit entier tel que fm 2 R ⇥ .

Si fj (u) 6= 0 et fj (v ) 6= 0 pour tout 0 6 j 6 m, alors S est une suite de


Sturm pour f sur [u, v ].

L’algorithme se termine, car f est séparable.


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

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.

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

Isolation des racines

Soit f 2 R[X ]. On veut isoler les racines de f dans R, c’est-à-dire trouver


les intervalles, sur chacun desquels f a une unique racine. Cela donnera
une approximation rugueuse des racines de f .
On peut effectivement calculer gcd(f , f 0 ) enQutilisant l’algorithme
r
d’Euclide. Soit rad(f ) := gcd(ff ,f 0 ) . Si f = a i=1 Prdr , avec Pi 2 R[X ]
unitaires, irréducibles, deux-à-deux distincts, di > 1, et a 2 R ⇥ , alors
r
Y
rad(f ) = Pr .
i=1

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é.

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

Isolation des racines


Lemme (Borne de Cauchy)
1
Soit f = X n + a1 x n + · · · + an 2 R[X ]. Si ↵ 2 R est une racine de f ,

|↵| < 1 + |a1 | + · · · + |an |.

En effet, si |↵| > 1, on aura


1 1
|↵|n = |↵n | = | a1 ↵ n ··· an | 6 |a1 ||↵|n + · · · + |an |
n 1 n 1
6 |↵| (|a1 | + · · · + |an |) < |↵| (1 + |a1 | + · · · + |an |).
d’où le résultat. p
Remarque. La borne est valable pour les racines dans C = R( 1).
Soit S = (f0 , f1 , . . . , fm ) la suite associée à f construite par l’algorithme
de Sturm. Soit M > 0 la borne de Cauchy de f . Quitte à augmenter M si
nécessaire, tel que fj (±M) 6= 0 pour tout 0 6 j 6 m, on obtient
#{x 2 R : f (x) = 0} = WS ( M) WS (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

Isolation des racines

On suppose que u < v 2 R, et fj (u), fj (v ) 6= 0 pour tout 0 6 j 6 m.


Pour isoler les racines de f sur un intervalle [u, v ], on applique
l’algorithme suivant.
1 Si WS (u) WS (v ) = 0, jeter l’intervalle et terminer.
Si WS (u) WS (v ) = 1, garder l’intervalle et terminer.
Si WS (u) WS (v ) > 2,
u+v
2 Compter w := 2 .

3 Perturber w tel que fj (w ) 6= 0 pour tout 0 6 j 6 m.


4 Appliquer l’algorithme à [u, w ] et [w , v ].

On obtient des intervalles {[ui , vi ]} tels que toute racine de f appartient


à exactement l’un de ces intervalles. De plus, comme fm (ui ) = fm (vi ), on
a nécessairement f (ui )f (vi ) < 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

Raffinement des racines


Étant donné un intervalle [u, v ] sur lequel f a exactement une racine x,
est f (u)f (v ) < 0, on peut calculer ↵ avec une précision arbitraire.
Methode de bisection.
u+v
1 Posons x := 2 .

2 Si f (x) = 0, terminer l’algorithme.


3 Si f (x)f (u) < 0. Répéter l’algorithme pour l’intervalle [u, u+v
2 ].
Sinon répéter l’algorithme pour l’intervalle [ u+v
2 , v ].
Après n itérations, la racine estimée est x, avec une erreur de "n 6 v
2n
u
.
Methode de Newton-Raphson. Soit xold 2 [u, v ] quelconque.
1 xnew := xold f (xold )/f 0 (xold ).
2 Répéter l’algorithem avec xnew en tant que xold .
max |f 00 |
2
Après n itérations, l’erreur "n satisfait "n 6
[u,v ]
2 min |f 0 | "n 1 .
[u,v ]

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

Exemple (à l’aide de Maple)


On veut trouver les racines de f = X 6 4X 3 + X 2 sur R, avec
tolérence d’érreur 10 4 .
Si |x| > 2, |x|6 > 4|x|3 + |x| + 2. Donc les racines de f sont contenues
dans ( 2, 2).
Calculons une suite de Sturm S = (f0 , f1 , . . . , f5 ).

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

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

Exemple (à l’aide de Maple)

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

f0 (0) f1 (0) f2 (0) f3 (0) f4 (0) f5 (0)


2 1 2 ⇡ 1.5 ⇡ 2 ⇡ 72

D’où WS (0) = 2, WS ( 2) WS (0) = WS (0) WS (2) = 1.


Ainsi, une racine de f est dans ( 2, 0), et l’autre racine est dans (0, 2).

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

Exemple (à l’aide de Maple)

Sur chacun des intervalles ( 2, 0) et (0,


⌃ 2), on applique
⌥ bisection.
L’érreur est " 6 22n . Il nous faut donc log2 102 4 = 15 itérations.

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.

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

Base de Gröbner

La base de Gröbner nous permet de résoudre un système


d’équations polynomiales à plusieurs variables en triangularisant le
système (rappelez l’élimination de Gauss).
Géométriquement, résoudre un système f1 = · · · = fm = 0 (où
f1 , . . . , fm 2 R[X1 , . . . , Xn ] est équivalent à trouver les points de R n
annulés par les éléments d’ideal

I = (f1 , . . . , fm ) ✓ R[X1 , . . . , Xn ].

On veut trouver un « joli » système de générateurs {g1 , . . . , gr }


pour I . Par exemple, gr 2 R[Xn ], gr 1 2 R[Xn 1 , Xn ], . . . En suite,
on peut commencer par trouver les racines de gr (qui est un
problème « traité »), puis gr 1 , . . .
Pour ce faire, il suffit d’appliquer l’algorithme de Buchberger à I ,
muni de l’ordre lexicographique sur les monômes de R[X1 , . . . , Xn ].

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

Exemple
On veut résoudre le système
8
2 2 2
>
<x + y + z =4
2 2
x + 2y =5
>
:
xz = 1.

Un « joli » système de générateurs (dit base de Gröbner) pour


l’idéal I = (x 2 + y 2 + z 2 4, x 2 + 2y 2 5, xz 1) ✓ R[x, y , z] est

{x + 2z 3 3z, y 2 z2 1, 2z 4 3z 2 + 1}.

On peut résoudre 2z 4 3z 2 + 1 = 0, puis y 2 z 2 1 = 0, puis


x + 2z 3 3z = 0. Il y a 8 solutions (x, y , z), à savoir
p p p p
(±1, ± 2, 1), (± 2, ± 6/2, 1/ 2).

Consultez Chapitres 1 et 2 de [D. A. Cox, J. Little, D. O’Shea, Using


Algebraic Geometry, Graduate Texts in Mathematics, Springer (1998)].
Manh-Linh Nguyen Algorithme de Sturm

Vous aimerez peut-être aussi