6.32.2 Encadrement exact des racines réelles d’un polynôme avec leur multiplicité: realroot
realroot a 1 ou 4 arguments : un polynôme
et un nombre rèel l et éventuellement deux réels a,b
et cherche les racines rèelles du polynôme
en utilisant l’algorithme de Vincent-Akritas-Strzebonski (VAS).
On peut aussi utiliser un argument supplémentaire pour dire que l’algorithme
utilise les suites de Sturm : on met alors sturm comme premier argument.
Mais les résultats seront moins précis.
realroot(P,l,a,b) et realroot(sturm,P,l,a,b) renvoient la liste des
intervalles de longueur <=l où se trouvent les racines réelles de
P situées dans a..b avec leur multiplicité.
realroot(P,l,a,b) utilise l’algorithme de Vincent-Akritas-Strzebonski
(VAS) alors que realroot(sturm,P,l,a,b) utilise les suites de Sturm qui
sont moins efficaces.
-
Si realroot a 1 argument (resp 2 arguments), realroot(P) (resp
realroot(sturm,P)) renvoie la liste des intervalles où se trouvent les
racines réelles de P avec leur multiplicité en utilisant l’algorithme de
Vincent-Akritas-Strzebonski (VAS) (resp en utilisant les suites de Sturm).
L’algorithme s’arrête dès qu’il a trouvé un intervalle qui contient une
racine.
On tape :
realroot(x^
3-7*x+7)
On obtient :
[[[-4,0],1],[[1,3/2],1],[[3/2,2],1]]
Ce qui veut dire qu’il y a une racine dans l’intervalle [-4,0] qui est de
multiplicité 1, une racine dans l’intervalle [1,3/2] qui est de
multiplicité 1 et une racine dans l’intervalle [3/2,2] qui est de
multiplicité 1.
On tape :
realroot(x^
5+2*x^
4-6*x^
3-7*x^
2+7*x+7)
On obtient :
[[[-5,-1],1],[-1,2],[[1,3/2],1],[[3/2,2],1]]
Ce qui veut dire que -1 est une racine de multiplicité 2, les 3 autres
racines sont de multiplicité 1 et se trouve dans les intervalles
[-5,-1],[1,3/2],[3/2,2].
On tape :
realroot(125*x^
3-700*x^
2+1225*x-686)
On obtient :
[[[1,2],2],[[2,4],1]]
Ce qui veut dire qu’il y a une racine de multiplicité 2 dans l’intervalle
[1,2] et une racine de multiplicité 1 dans l’intervalle [2,4].
- Si realroot a 2 arguments (resp 3 arguments), realroot(P,l)
(resp realroot(sturm,P,l)) renvoie la liste des
vecteurs de coordonnées la valeur des racines réelles et exactes du
polynôme et leur multiplicité ou des vecteurs de coordonnées un
intervalle contenant une racine réelle du polynôme et la multiplicité de
cette racine.
Si l’intervalle renvoyé est [a1,a2] on a |a1−a2|<l et
la racine x1 vérifie a1≤ x1 ≤ a2.
On tape :
realroot(x^
5+2*x^
4-6*x^
3-7*x^
2+7*x+7,1e-5)
On obtient :
[[[-1598513/524288,-1598509/524288],1],[-1,2],
[[2845609/2097152,2845625/2097152],1],
[[3548417/2097152,3548433/2097152],1]]
ce qui donne en valeurs approchèes :
[[[-3.04892158508,-3.04891395569],1.0],[-1.0,2.0],
[[1.35689210892,1.35689973831],1.0],
[[1.6920170784,1.69202470779],1.0]]
On tape :
realroot(sturm,x^
5+2*x^
4-6*x^
3-7*x^
2+7*x+7,1e-5)
On obtient :
[[[-99907/32768,-399627/131072],1],
[[177851/131072,44463/32768],1],
[[13861/8192,221777/131072],1],[-1,2]]
ce qui donne en valeurs approchèes :
[[[-3.04891967773,-3.04891204834],1.0],
[[1.35689544678,1.35690307617],1.0],
[[1.69201660156,1.69202423096],1.0],[-1.0,2.0]]
On tape :
realroot(x^
3-7*x+7,1e-5)
On obtient :
[[[-1598513/524288,-1598509/524288],1],
[[2845609/2097152,2845625/2097152],1],
[[3548417/2097152,3548433/2097152],1]]
ce qui donne en valeurs approchèes :
[[[-3.04892158508,-3.04891395569],1.0],
[[1.35689210892,1.35689973831],1.0],
[[1.6920170784,1.69202470779],1.0]]
- Si realroot a 4 arguments (resp 5 arguments),
realroot(P,l,a,b) (resp realroot(sturm,P,l,a,b)) ne renvoie que les
racines situées dans l’intervalle [a,b].
On tape pour avoir les racines réelles de x3+1 :
realroot(x^
3+1, 0.1)
On obtient :
[[-1,1]]
On tape pour avoir les racines réelles de x3−x2−2x+2 :
realroot(x^
3-x^
2-2*x+2, 0.1)
On obtient :
[[[-3/2,-45/32],1],[1,1],[[11/8,23/16],1]]
ou bien
realroot(sturm,x^
3-x^
2-2*x+2, 0.1)
On obtient :
[[1,1],[[(-3)/2,(-45)/32],1],[[45/32,3/2],1]]
On tape pour avoir les racines réelles de x3−x2−2x+2 dans l’intervalle
[0;2] :
realroot(x^
3-x^
2-2*x+2, 0.1,0,2)
ou
realroot(sturm,x^
3-x^
2-2*x+2, 0.1,0,2)
On obtient :
[[1,1],[[11/8,23/16],1]]