Created
January 5, 2024 15:14
-
-
Save Observatorio-de-Matematica/f5fcef35a50b47347d9fabbd04026555 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ | |
/* [ Created with wxMaxima version 0.8.6 ] */ | |
/* [wxMaxima: comment start ] | |
PRIMERO HAY QUE CARGAR EL PAQUETE "GROBNER". LA ORDEN ES: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
load(grobner); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
AHORA DEFINIMOS LOS POLINOMIOS, Y LES DAMOS EL NOMBRE DE F Y G, RESPECTIVAMENTE. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
F: x^4*y^2+3*x^7-5*y^3; | |
G: y^7*x^4+y^3*x+x-1; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
EL PRODUCTO SE PUEDE REALIZAR DE LAS SIGUIENTES FORMAS: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
F*G; | |
poly_expand(F*G,[x,y]); | |
poly_multiply(F,G,[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
OBSERVA QUE PODEMOS OBTENER LA EXPANSIÓN DEL PRODUCTO DE DOS FORMAS DISTINTAS. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
PARA LA SUMA NO TENEMOS PROBLEMAS APARENTES. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
F+G; | |
poly_add(F,G,[x,y]); | |
poly_subtract(F,G,[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
SE PUEDEN CALCULAR LOS S-POLINOMIOS MEDIANTE LA ORDEN: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_s_polynomial(F,G,[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
LA DIVISIÓN DE UN POLINOMIO POR UN CONJUNTO DE POLINOMIOS SE REALIZA MEDIANTE LA ORDEN: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
H: x^4*y^3+1; | |
poly_pseudo_divide(H,[F,G],[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
LA INTERPRETACIÓN DEL ÚLTIMO RESULTADO ES LA SIGUIENTE | |
(%i)poly_pseudo_divide(H,[F,G],[x,y]); | |
(%o)[[L1,L2],R,a,n] | |
a*H=L1*F+L2*G+R | |
n ES EL NÚMERO DE REDUCCIONES REALIZADAS. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
SE PUEDE COMPLETAR CON LA SIGUIENTE ORDEN, QUE DA DIRECTAMENTE EL RESTO DE LA DIVISIÓN: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_normal_form(H,[F,G],[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
EJERCICIO NATURAL. | |
Determina una base de Groebner del ideal generado por F y G. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
================================================ | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
EL CÁLCULO DE LA BASE DE GROEBNER SE PUEDE REALIZAR DIRECTAMENTE MEDIANTE LA ORDEN: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
F; | |
G; | |
poly_grobner([F,G],[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
¡BUENO, QUÉ VAMOS A HACER! PROBEMOS CON OTRO EJEMPLO MÁS SENCILLO. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_grobner([X^2*Y+1,X*Y^2+Y+3],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
UNA FORMA DE AVERIGUAR SI TENEMOS UNA BASE DE GROEBNER ES UTILIZAR LA ORDEN. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_buchberger_criterion([X^2*Y+1,X*Y^2+Y+3],[X,Y]); | |
poly_buchberger_criterion([X^2*Y+1,X*Y^2+Y+3,-X*Y+Y-3*X,Y-3*X^2-3*X+1,Y^2-2*Y+9*X+3,Y^3+Y^2+6*Y+9],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
PARA CALCULAR UNA BASE DE GROEBNER: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_buchberger([X^2*Y+1,X*Y^2+Y+3],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
PARA REDUCIR LOS ELEMENTOS DE UN CONJUNTO: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_reduction([X^2*Y+1,X*Y^2+Y+3],[X,Y]); | |
poly_reduction([x^2*y+1,y^2-3],[x,y]); | |
poly_reduction([x^2*y+1,y^2-3,y^3-y^2+2*x^3*y+2*x^2*y-3*y+2*x+5],[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
PARA MINIMIZAR UN CONJUNTO: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_minimization([x^2*y+1,y^2-3],[x,y]); | |
poly_minimization([x^2*y+1,2*y^2-6,y+3*x^2],[x,y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
PARA DETERMINAR UNA BASE DE GROEBNER REDUCIDA: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_reduced_grobner([X^2*Y+1,X*Y^2+Y+3],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
OBSERVA LA DIFERENCIA ENTRE poly_grobner Y poly_reduced_grobner. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
EJEMPLO DE HOY. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
SE TIENE EL IDEAL GENERADO POR G1 Y G2. VAMOS A SEGUIR EL MÉTODO PARA DETERMINAR UNA BASE DE GROEBNER. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
G1: X^2*Y+Y^2+1; | |
G2: X*Y^2+X-1; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
EL PRIMER S-POLINOMIO. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G1,G2,[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_pseudo_divide(S,[G1,G2],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
COMO TIENE RESTO NO NULO, DEBEMOS INCORPORARLO AL SISTEMA DE GENERADORES. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
G3: S; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
SEGUIMOS CALCULANDO S-POLINOMIOS. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G1,G3,[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_pseudo_divide(S,[G1,G2,G3],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
OTRO QUE TENEMOS QUE INCORPORAR AL SISTEMA DE GENERADORES. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
G4: S; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G1,G4,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
EN ESTE CASO EL RESTO ES CERO, LUEGO NO VARIAMOS EL SISTEMA DE GENERADORES. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
S4: poly_s_polynomial(G2,G3,[X,Y]); | |
poly_pseudo_divide(S4,[G1,G2,G3,G4],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
UN NUEVO ELEMENTO PARA EL SISTEMA DE GENERADORES. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
G5: Y^5+2*Y^3+Y-X+1; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G2,G4,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G2,G5,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
UN NUEVO ELEMENTO PARA EL SISTEMA DE GENERADORES. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
G6: Y^7+3*Y^5+3*Y^3+Y^2+Y; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G2,G6,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G1,G5,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G1,G6,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
UN NUEVO ELEMENTO PARA EL SISTEMA DE GENERADORES. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
G7: Y^6+3*Y^4+3*Y^2+Y+1; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G1,G7,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G2,G7,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G3,G4,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G3,G5,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G3,G6,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G3,G7,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G4,G5,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G4,G6,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G4,G7,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G5,G6,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G5,G7,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: input start ] */ | |
S: poly_s_polynomial(G6,G7,[X,Y]); | |
poly_pseudo_divide(S,[G1,G2,G3,G4,G5,G6,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
TENEMOS ENTONCES UNA BASE DE GROEBNER FORMADA POR LOS POLINOMIOS G1,G2,G3,G4,G5,G6,G7. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
PODÍAMOS HABER OBTENIDO UNA BASE DE GROEBNER DE FORMA INMEDIATA MEDIANTE LA ORDEN: | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_grobner([G1,G2],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
O BIEN UNA BASE DE GROEBNER REDUCIDA. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_reduced_grobner([G1,G2],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
VEAMOS COMO ESTUDIAR LA PERTENENCIA DE UN POLINOMIO A UN IDEAL. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
CONSIDERAMOS EL CASO DEL POLINOMIO Y EL IDEAL GENERADO POR G1 Y G2. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
H: X^2+Y*X^3; | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
ESTUDIAMOS QUE OCURRE AL DIVIDIRLO POR EL CONJUNTO DE GENERADORES {G1,G2}. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_pseudo_divide(H,[G1,G2],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
COMPROBAMOS QUE LA DIVISIÓN SE HA REALIZADO CORRECTAMENTE. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_expand(X*G1-G2+(X^2-1),[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
VEMOS QUE EL RESTO NO ES CERO, PERO ESTO NO NOS ASEGURA QUE H NO PERTENEZCA AL IDEAL | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
PARA COMPROBAR QUE H NO PERTENECE AL IDEAL TENEMOS QUE TRABAJAR CON UNA BASE DE GROEBNER. | |
EN ESTE CASO TOMAMOS LA BASE DE GROEBNER REDUCIDA {G5,G7}. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_pseudo_divide(H,[G5,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
AHORA SÍ PODEMOS AFIRMAR QUE H NO PERTENECE AL IDEAL. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: comment start ] | |
VEAMOS EL CASO DEL POLINOMIO G7. SABEMOS QUE PERTENECE AL IDEAL, | |
SIN EMBARGO AL HACER LA DIVISIÓN POR {G1,G2} EL RESTO NO ES CERO. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_pseudo_divide(G7,[G1,G2],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* [wxMaxima: comment start ] | |
AL HACER LA DIVISIÓN POR {G5,G7} EL RESTO ES CERO, DE DONDE SE DEDUCE QUE G7 PERTENECE AL IDEAL. | |
[wxMaxima: comment end ] */ | |
/* [wxMaxima: input start ] */ | |
poly_pseudo_divide(G7,[G5,G7],[X,Y]); | |
/* [wxMaxima: input end ] */ | |
/* Maxima can't load/batch files which end with a comment! */ | |
"Created with wxMaxima"$ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment