Algèbre T1
3. Tester sylvester(3,4) et LinearAlgebra[SylvesterMatrix](f,g,x) avec
f = 2x 2 + 3x + 1 et g = 7x 2 + x + 3. Puis écrire une procédure
resultant1:=proc(f,g) calculant Res(f, g) comme un déterminant (pour
deux polynômes non tous les deux de degré 0, sans quoi la matrice de Sylvester « dégénère »). On utilisera la commande LinearAlgebra[Determinant].
Tester sur l’exemple précédent et comparer avec le résultat de la commande
resultant de Maple.
Écrire ensuite des procédures de test destinées à vérifier les propriétés (a), (b)
et (c). Par exemple :
>test2:=proc(m,n)
f:=add(a[i]*x^i,i=0..m); g:=add(b[i]*x^i,i=0..m);
r:=rem(f,g,x);
return(evalb(-1)^(m*n)*b[n]^(m-degree(r,x))*
normal(resultant(g,r,x)/resultant(f,g,x))=1);
end:
Les démontrer au papier-crayon (commencer par remplacer f par
f − b n /a m x m−n g, effectuer des opérations sur les lignes de la matrice de
Sylvester et utiliser les propriétés du déterminant).
Remarque. On a un peu triché : il faudrait utiliser la procédure resultant1. Or
Maple ne parvient pas à écrire la matrice de Sylvester lorsque les coefficients
des polynômes sont dans Q(a i , b j ). Il y parvient uniquement pour Q[a i , b j ].
Pour bien faire, il faudrait donc réécrire une procédure SylvesterMatrix.
Par contre, on utilisera resultant1 pour les tests relatifs à (a) et (c) où ce
problème ne se pose pas.
Enfin, écrire une procédure resultant2 calculant le résultant à partir de ces
trois formules. Noter la ressemblance avec l’algorithme d’Euclide. Tester sur
les exemples habituels. Prendre également f = xy − 1 et g = x 2 + y 2 − 4 : le
résultant appartient à A = Z[y].
4. Écrivons f = a m
m
i=1 (t − x i ) et g = b n
n
i=1 (t − y i ) : les racines sont donc des
paramètres formels, autrement dit, on travaille dans l’anneau Z[x i , y j , a m , b n ]
qui contient le résultant. Vérifier pour m = 3 et n = 4 que Res(f, g) est un
polynôme homogène de degré m + n (les différents monômes s’obtiennent en
appliquant op). Il s’agit de remplacer les a i et b j par leur expression en fonction
des x i et y j . La procédure ci-dessous y pourvoit :
>remplace:=proc(n,a,x) local P,t,i;
294
3. Tester sylvester(3,4) et LinearAlgebra[SylvesterMatrix](f,g,x) avec
f = 2x 2 + 3x + 1 et g = 7x 2 + x + 3. Puis écrire une procédure
resultant1:=proc(f,g) calculant Res(f, g) comme un déterminant (pour
deux polynômes non tous les deux de degré 0, sans quoi la matrice de Sylvester « dégénère »). On utilisera la commande LinearAlgebra[Determinant].
Tester sur l’exemple précédent et comparer avec le résultat de la commande
resultant de Maple.
Écrire ensuite des procédures de test destinées à vérifier les propriétés (a), (b)
et (c). Par exemple :
>test2:=proc(m,n)
f:=add(a[i]*x^i,i=0..m); g:=add(b[i]*x^i,i=0..m);
r:=rem(f,g,x);
return(evalb(-1)^(m*n)*b[n]^(m-degree(r,x))*
normal(resultant(g,r,x)/resultant(f,g,x))=1);
end:
Les démontrer au papier-crayon (commencer par remplacer f par
f − b n /a m x m−n g, effectuer des opérations sur les lignes de la matrice de
Sylvester et utiliser les propriétés du déterminant).
Remarque. On a un peu triché : il faudrait utiliser la procédure resultant1. Or
Maple ne parvient pas à écrire la matrice de Sylvester lorsque les coefficients
des polynômes sont dans Q(a i , b j ). Il y parvient uniquement pour Q[a i , b j ].
Pour bien faire, il faudrait donc réécrire une procédure SylvesterMatrix.
Par contre, on utilisera resultant1 pour les tests relatifs à (a) et (c) où ce
problème ne se pose pas.
Enfin, écrire une procédure resultant2 calculant le résultant à partir de ces
trois formules. Noter la ressemblance avec l’algorithme d’Euclide. Tester sur
les exemples habituels. Prendre également f = xy − 1 et g = x 2 + y 2 − 4 : le
résultant appartient à A = Z[y].
4. Écrivons f = a m
m
i=1 (t − x i ) et g = b n
n
i=1 (t − y i ) : les racines sont donc des
paramètres formels, autrement dit, on travaille dans l’anneau Z[x i , y j , a m , b n ]
qui contient le résultant. Vérifier pour m = 3 et n = 4 que Res(f, g) est un
polynôme homogène de degré m + n (les différents monômes s’obtiennent en
appliquant op). Il s’agit de remplacer les a i et b j par leur expression en fonction
des x i et y j . La procédure ci-dessous y pourvoit :
>remplace:=proc(n,a,x) local P,t,i;
294
