| --> | load(grobner); |
Vamos a calcular la intersección de dos ideales.
Consideramos los ideales a=(F,G) y b=(H,K), siendo:
| --> |
F:X^2+Y; G:X+Y^2; H:X-1; K:Y^4-1; |
Para calcular la intersección de a y b consideramos una nueva indeterminada, T,
y un orden de forma que los monomios con T sean mayores que el resto. Por ejemplo
el orden lexicográfico con T>X>Y.
A continuación consideramos el ideal Ta+(1-T)b y calculamos una base de Groebner:
| --> | poly_reduced_grobner([T*F,T*G,(1-T)*H,(1-T)*K],[T,X,Y]); |
Ahora hacemos la intersección de este ideal con el anillo K[X,Y], lo que equivale
a considerar los elementos de la base de Groebner que pertenecena a este anillo. Así
pues la intersección es el ideal generado por {Y^6+Y^4-Y^2-X*Y+Y-X,Y^7-Y^6+Y^5-Y^3+Y^2-Y,Y^4-X^2}.
No es necesario hacer todo este proceso, ya que hay una función que calcula
directamente el ideal eliminación.
| --> | poly_elimination_ideal([T*F,T*G,(1-T)*H,(1-T)*K],1,[T,X,Y]); |
La otra aplicación que hemos visto de la teoría de eliminación es el cálculo del cociente
de dos ideales. En primer lugar el cociente (a:H) de un ideal y un polinomio.
Recordemos el proceso; se tiene (a:H)=(a/\(H))/H
Para calcular a/\(H) utilizamos el proceso anterior:
| --> | poly_elimination_ideal([T*F,T*G,(1-T)*H],1,[T,X,Y]); |
Ahora cada uno de estos polinomios hay que dividirlo por H
| --> |
poly_exact_divide(-X*Y^2+Y^2-X^2+X,H,[X,Y]); poly_exact_divide(X*Y^4-Y^4+X*Y-Y,H,[X,Y]); |
Por lo tanto tenemos que (a:H) es el ideal generado por {-Y^2-X,Y^4+Y}.
Veamos el ejemplo de (a:K)
| --> | poly_elimination_ideal([T*F,T*G,(1-T)*K],1,[T,X,Y]); |
Necesitamos estos elementos por separado para poder trabajar con ellos.
Para esto damos nombre a la lista anterior:
| --> | aux:%; |
ahora podemos extraer los dos elementos
| --> |
aux1:first(aux); aux2:second(aux); |
y para dividirlos por K aplicamos la orden que vimos anteriormente.
| --> |
poly_exact_divide(aux1,K,[X,Y]); poly_exact_divide(aux2,K,[X,Y]); |
Por lo tanto el ideal (a:K) es el generado por los polinomios {-Y^2-X,Y^3-Y^2+Y}
Observa que {-Y^2-X,Y^3-Y^2+Y} es una base de Groebner.
| --> | poly_reduced_grobner([-Y^2-X,Y^3-Y^2+Y],[X,Y]); |
EJERCICIO. Hacer una lista de ordenes para calcular la intersección de dos ideales
dados por un pequeño número de generadores.
Para esto tenéis que estudiar la forma en que Maxima utiliza las listas de elementos,
y cómo se pueden manipular estos.