### 6.28.17 Suites de Sturm : `sturmseq`

`sturmseq` a comme paramètre une expression polynômiale P ou une fraction rationnelle P/Q.
`sturmseq` renvoie la liste des suites de Sturm et de leur multiplicité pour P ou pour P et pour Q.
La suite de sturm R1,R2,... est obtenue à partir du facteur F sans carré de P. Pour obtenir F à partir de la décomposition de P en facteurs premiers, on élimine les termes carrés et on transforme les puissances impaires en puissances 1.
R1 est l’opposé du reste de la division euclidienne de F par F′ puis, R2 est l’opposé du reste de la division euclidienne de F′ par R1
....
et ainsi de suite jusqu’à ce que Rk=0.
On tape :

`sturmseq(2*x```^```3+2)`

ou

`sturmseq(2*y```^```3+2,y)`

On obtient :

`[2,[[1,0,0,1],[3,0,0],-9],1]`

Le premier terme donne le PGCD des coefficients du numérateur (ici 2), le dernier terme donne le dénominateur (ici 1). Entre les deux on a la suite des polynômes [x3+1,3x2,−9].
On tape :

`sturmseq((12*x```^```3+4)/(6*x```^```2+3),x)`

On obtient :

`[4,[[3,0,0,1],[9,0,0],-81],3,[[2,0,1],[4,0],-16]]`

Le premier terme donne le PGCD des coefficients du numérateur (ici 4), puis la suite de Sturm du numérateur ([[3,0,0,1],[9,0,0],-81]), puis le le PGCD des coefficient du dénominateur (ici 3), et la suite de Sturm du dénominateur ([[2,0,1],[4,0],-16]). On a la suite des polynômes [3x3+1,9x2, −81] pour le numérateur et, [2x2+1,4x,−16] pour le dénominateur.
On tape :

`sturmseq((x```^```3+1)```^```2,x)`

On obtient :

`[1,1]`

En effet les termes carrés sont éliminés et F=1.
On tape :

`sturmseq(3*(3*x```^```3+1)/(2*x+2),x)`

On obtient :

`[3,[[3,0,0,1],[9,0,0],-81],2,[[1,1],1]]`

Le premier terme donne le PGCD des coefficients du numérateur (ici `3`),
le deuxième terme donne la suite de polynômes (ici `3x```^```3+1, 9x```^```2, -81`),
le troisième terme donne le PGCD des coefficients du dénominateur (ici `2`),
le quatrième terme indique la suite de polynômes du dénominateur (`x+1,1`).
Attention!!!!
P doit être donné par son expression symbolique et,si on tape :
`sturmseq([1,0,0,1],x)`,
on obtient :
`Bad argument type`.