Master 1 - 2010 / 2011 —— Algèbre, Géométrie et calcul Etienne Mann [email protected] 14 Février 2010 TP2 - ALGORITHME DE DIVISION 1. L’algorithme de division Créer un fichier Division.m avec la commande touch Division.m. Lancer magma dans un terminal. Quand on déclare un anneau de polynôme, on peut spécifier l’ordre monômial désiré. • lex : ordre lexicographique • glex: ordre lexicographique gradué • grevlex : ordre lexicographique gradué retourné La syntaxe est A<x,y>:=PolynomialAlgebra(RationalField(),2,”lex”); (1) Ecrire une fonction LT qui à un polynôme renvoie son terme dominant suivant l’ordre monômial choisi. On pourra utiliser les commandes Coefficients(P) et Monomials(P). (2) Ecrire une fonction Div(m,L) qui prend un monôme m et une liste de monômes L et qui renvoie true si m est divisible par un monôme de la liste L. On pourra utiliser la fonction IsDivisibleBy. (3) Ecrire une fonction DivPosition(m,L) qui fait la même chose que la fonction Div mais qui renvoie aussi la position du monôme de L qui est multiple de m. On pourra utiliser la commande [*true, i*] ou [*false, 0*]. (4) Ecrire une fonction AlgoDivision(P,L) qui fait la division de P par L. Cette fonction renvoie la liste [a1 , . . . , a s , r] telle que f = a1 f1 + · · · + a s f s + r. Quelques exemples qu’on pourra traiter pour tester les fonctions : P = x7 y2 + x3 y2 − y + 1 L = [xy2 − x, x − y3 ] P = xy2 z2 + xy − yz L = [x − y2 , y − z3 , z2 − 1] Changer les ordres monômiaux lex,glex,grevlex. On pourra aussi permuter les éléments de L. 1