---------------------------------------- -- Companion Matrices ---------------------------------------- -- Abraham Martin del Campo -- 7 Abr 2016 ---------------------------------------- R = QQ[x,y,z]; I = ideal( z^2+1/5*x-1/5*y+2/25, y^2-1/5*x+1/5*z+2/25, x^2+1/5*y-1/5*z+2/25, x*y+x*z+y*z+1/25 ); InI = ideal leadTerm I -- el ideal inicial y vemos que I es Base de Grobner dim I -- verificamos que I tiene dimension 0 M = R/InI -- creamos el cociente, o sea, el anillo coordenado B = basis M -- la base de monomios estandar Br = sub(B,R) -- podemos considerar los monomios estandar como elementos de R use R; -- necesitamos cambiar de anillo, porque ahora estabamos usando R/I xB = x * Br -- estos son todos los monomios estandard multiplicados por x xB = first entries xB --lo convertimos en una lista xB_1 % I -- escribe a x^2 en forma normal, i.e., como x^2 mod I L = apply(xB, f -> f% I) -- estos son todos los elementos de xBr en forma normal l = L_1 -- si tomamos un elemento, por ejemplo x^2 mod I coefficients l -- calcula los coeficientes de l y tambien los monomios estandard que aparecen -- asi, obtenemos los coeficientes de l en terminos de la base de monomios estandar (M,C) = coefficients(l, Monomials=>first(entries(Br))) -- la columna C es la que queremos que sea una columna de nuestra matriz compañera -- podemos tomar todos de un jalón formando una matriz LL = matrix{L} (Mx,Cx) = coefficients(LL, Monomials=>first(entries(Br))) Cx -- is the companion matrix of multiplying by x eigenvalues sub(Cx,QQ) degree I random(CC) J = eliminate(I,{x,y}) S = QQ[z] minimalPrimes sub(J,S) minimalPrimes I quit;