Anterior: Introducción a grobner [Índice general][Índice]
Valor por defecto: lex
Controla qué orden de monomios utiliza en los cálculos con
polinomios y bases de Groebner. Si no se le asigna valor alguno,
se utilizará lex
.
Valor por defecto: expression_ring
Indica el anillo de coeficientes de los polinomios que se va
a utilizar en los cálculos. Si no se le asigna ningún valor,
se utilizará el anillo de expresiones propio de maxima.
A esta variable se le puede asignar el valor ring_of_integers
.
Valor por defecto: false
Nombre del orden por defecto para las variables eliminadas en
las funciones basadas en eliminaciones. Si no se le asigna
ningún valor, se utilizará lex
.
Valor por defecto: false
Nombre del orden por defecto para las variables almacenadas
en funciones basadas en eliminaciones. Si no se le asigna
ningún valor, se utilizará lex
.
Valor por defecto: false
Nombre del orden de eliminación por defecto utilizado en
los cálculos de eliminación. Si se le asigna un valor,
ignorará los guardados en poly_primary_elimination_order
y poly_secondary_elimination_order
.
El usuario se asegurará que este es un orden válido de eliminación.
Valor por defecto: false
Si vale true
, todas las funciones de este paquete devolverán
los polinomios como una lista de términos en el orden activo de
monomios, en lugar de una expresión ordinaria de maxima.
Valor por defecto: false
Si vale true
, genera una salida de seguimiento y depuración.
Valor por defecto: buchberger
Valores posibles:
buchberger
parallel_buchberger
gebauer_moeller
Es el nombre del algoritmo utilizado para encontrar las bases de Groebner.
Valor por defecto: false
Si no vale false
, siempre que sea posible el algoritmo
de división se detendrá tras la primera reducción.
poly_add
, poly_subtract
, poly_multiply
y poly_expt
son los operadores aritméticos para polinomios. Se ejecutan utilizando la
representación interna, pero los resultados se devuelven en forma de
expresión ordinaria de maxima.
Suma los polinomios poly1 y poly2.
(%i1) poly_add(z+x^2*y,x-z,[x,y,z]); 2 (%o1) x y + x
Resta el polinomio poly2 de poly1.
(%i1) poly_subtract(z+x^2*y,x-z,[x,y,z]); 2 (%o1) 2 z + x y - x
Multiplica poly1 por poly2.
(%i2) poly_multiply(z+x^2*y,x-z,[x,y,z])-(z+x^2*y)*(x-z),expand; (%o1) 0
Devuelve el polinomio syzygy (S-polinomio) de dos polinomios poly1 y poly2.
Devuelve el polinomio poly dividido por el MCD de sus coeficientes.
(%i1) poly_primitive_part(35*y+21*x,[x,y]); (%o1) 5 y + 3 x
Devuelve el polinomio poly dividido por el coeficiente principal. Da por supuesto que la división es posible, lo cual puede no ser siempre cierto en anillos que no son campos.
Esta función expande los polinomios. Equivale a expand(poly)
si poly es un polinomio. Si la representación no es compatible
con un polinomio de variables varlist, devuelve un error.
(%i1) poly_expand((x-y)*(y+x),[x,y]); 2 2 (%o1) x - y (%i2) poly_expand((y+x)^2,[x,y]); 2 2 (%o2) y + 2 x y + x (%i3) poly_expand((y+x)^5,[x,y]); 5 4 2 3 3 2 4 5 (%o3) y + 5 x y + 10 x y + 10 x y + 5 x y + x (%i4) poly_expand(-1-x*exp(y)+x^2/sqrt(y),[x]); 2 y x (%o4) - x %e + ------- - 1 sqrt(y) (%i5) poly_expand(-1-sin(x)^2+sin(x),[sin(x)]); 2 (%o5) - sin (x) + sin(x) - 1
Eleva el polinomio poly a la potencia number, siendo este un entero positivo. Si number no es un número entero positivo, devolverá un error.
(%i1) poly_expt(x-y,3,[x,y])-(x-y)^3,expand; (%o1) 0
poly_content
calcula el MCD de los coeficientes.
(%i1) poly_content(35*y+21*x,[x,y]); (%o1) 7
Realiza la seudo-división del polinomio poly por la lista de \(n\) polinomios de polylist. Devuelve varios resultados. El primer resultado es una lista de cocientes \(a\). El segundo resultado es el resto \(r\). El tercer resultado es un coeficiente escalar \(c\), tal que \(c*poly\) puede dividirse por polylist dentro del anillo de coeficientes, el cual no es necesariamente un campo. Por último, el cuarto resultado es un entero que guarda el recuento de reducciones realizadas. El objeto resultante satisface la ecuación:
\(c*poly=sum(a[i]*polylist[i],i=1...n)+r\).
Divide el polinomio poly1 por otro polinomio poly2. Da por supuesto que es posible la división de resto nulo. Devuelve el cociente.
poly_normal_form
encuentra la forma normal de un polinomio poly respecto
de un conjunto de polinomios polylist.
Devuelve true
si polylist es una base de Groebner respecto del orden
de términos activo, utilizando el criterio de Buchberger:
para cualesquiera polinomios \(h1\) y \(h2\) de polylist el
S-polinomio \(S(h1,h2)\) se reduce a 0 \(modulo\) polylist.
poly_buchberger
ejecuta el algoritmo de Buchberger sobre una
lista de polinomios y devuelve la base de Groebner resultante.
El k-ésimo ideal de eliminación \(I_k\) de un ideal \(I\) sobre
\(K[ x[1],...,x[n] ]\) es el ideal \(intersect(I, K[ x[k+1],...,x[n] ])\).
El ideal \(I:J\) es el ideal \({h|para todo w en J: w*h pertence a I}\).
El ideal \(I:p^inf\) es el ideal \({h| existe un n en N: p^n*h pertence a I}\).
El ideal \(I:J^inf\) es el ideal \({h| existe un n en N y un p en J: p^n*h pertence a I}\).
El ideal radical \(sqrt(I)\) es el ideal \({h| existe un n en N : h^n pertence a I }\).
poly_reduction
reduce una lista de polinomios polylist de manera
que cada polinomio se reduce completamente respecto de los otros polinomios.
Devuelve una sublista de la lista de polinomios polylist con el mismo ideal de monomios que polylist, pero mínimo, esto es, ningún monomio principal de los polinomios de la sublista divide a los monomios principales de los demás polinomios.
poly_normalize_list
aplica poly_normalize
a cada polinomio
de la lista. Esto significa que divide cada polinomio de polylist
por su coeficiente principal.
Devuelve la base de Groebner del ideal asociado a los polinomios de polylist. El resultado depende de las variables globales.
Devuelve la base de Groebner reducida del ideal asociado a los polinomios de polylist. El resultado depende de las variables globales.
poly_depends
comprueba si el polinomio depende de la variable var.
poly_elimination_ideal
devuelve la base de Groebner del \(n\)-ésimo
ideal de eliminación de un ideal especificado como una lista de polinomios
generadores (no necesariamente una base de Groebner).
Devuelve la base de Groebner reducida del ideal
\(I(polylist1):I(polylist2)\)
siendo \(polylist1\) y \(polylist2\) dos listas de polinomios.
poly_ideal_intersection
devuelve la intersección de dos ideales.
Devuelve el MCM de poly1 y poly2.
Devuelve el MCD de poly1 y poly2.
Véanse también ezgcd
, gcd
, gcdex
y
gcdivide
.
Ejemplo:
(%i1) p1:6*x^3+19*x^2+19*x+6; 3 2 (%o1) 6 x + 19 x + 19 x + 6 (%i2) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x; 5 4 3 2 (%o2) 6 x + 13 x + 12 x + 13 x + 6 x (%i3) poly_gcd(p1, p2, [x]); 2 (%o3) 6 x + 13 x + 6
poly_grobner_equal
comprueba si dos bases de Groebner generan el mismo
ideal. Devuelve true
si dos listas de polinomios polylist1 y polylist2,
supuestas bases de Groebner, generan el mismo ideal, o false
en caso contrario.
Eso equivale a comprobar si cada polinomio de la primera base se reduce a 0
módulo la segunda base y viceversa. Nótese que en el ejemplo que sigue la
primera lista no es una base de Groebner, por lo que el resultado es false
.
(%i1) poly_grobner_equal([y+x,x-y],[x,y],[x,y]); (%o1) false
poly_grobner_subsetp
comprueba si el ideal generado por polylist1
está contenido en el ideal generado por polylist2. Para que esta comprobación
tenga éxito, polylist2 debe ser una base de Groebner.
Devuelve true
si el polinomio poly pertenece al ideal generado por la
lista de polinomios polylist, la cual se supone una base de Groebner.
Devolverá false
en caso contrario.
Devuelve la base de Groebner reducida de la saturación del ideal
I(polylist):poly^inf
Desde un punto de vista geométrico, sobre un campo algebraicamente cerrado, este es el conjunto de polinomios del ideal generado por polylist que no se anulan sobre la variedad de poly.
Devuelve la base de Groebner reducida de la saturación del ideal
I(polylist1):I(polylist2)^inf
Desde un punto de vista geométrico, sobre un campo algebraicamente cerrado, este es el conjunto de polinomios del ideal generado por polylist1 que no se anulan sobre la variedad de polylist2.
polylist2 es una lista de n poliomios [poly1,...,polyn]
.
Devuelve la base de Groebner reducida del ideal
I(polylist):poly1^inf:...:polyn^inf
obtenida a partir de una secuencia de saturaciones sucesivas de los polinomios de la lista polylist2 del ideal generado por la lista de polinomios polylist1.
polylistlist es una lista de n listas de polinomios [polylist1,...,polylistn]
.
Devuelve la base de Groebner reducida de la saturación del ideal
I(polylist):I(polylist_1)^inf:...:I(polylist_n)^inf
poly_saturation_extension
ejecuta el truco de Rabinowitz.
Anterior: Introducción a grobner [Índice general][Índice]