Apéndice con el ejemplo a mano y a ordenador.
This commit is contained in:
parent
c6de7dd6f6
commit
cd8da06919
Binary file not shown.
@ -56,6 +56,23 @@
|
||||
\algrenewcommand\algorithmicdo{\textbf{haz}}
|
||||
\algrenewcommand\algorithmicuntil{\textbf{hasta que}}
|
||||
|
||||
\usepackage{listings}
|
||||
\lstdefinestyle{estilocodigo}{
|
||||
backgroundcolor=\color{lightgray},
|
||||
numberstyle=\tiny,
|
||||
basicstyle=\ttfamily,
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=b,
|
||||
keepspaces=true,
|
||||
showspaces=false,
|
||||
showstringspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=2,
|
||||
language={}
|
||||
}
|
||||
\lstset{style=estilocodigo}
|
||||
|
||||
\usepackage{blkarray}
|
||||
\usepackage{booktabs}
|
||||
\aboverulesep=-0.2pt
|
||||
@ -762,7 +779,7 @@ urlcolor=black]{hyperref}
|
||||
Al final del algoritmo, $\left\lbrace d_1, \dots, d_t \right\rbrace$ es una base de Gröbner de $N$.
|
||||
\end{definicion}
|
||||
El funcionamiento de este algoritmo se sustenta en dos pilares. El primero es que, como cada vez que añadimos un nuevo elemento este es un resto, tenemos que los \submodulo{\Kx} \engendrado{\LM{d_1}, \dots, \LM{d_t}} forman una cadena ascendente la cual, por ser $\Kx^r$ noetheriano, debe finalizar en algún momento. Por esto mismo, el algoritmo termina. El segundo es el criterio que garantiza que nuestro conjunto generador sea una base de Gröbner.
|
||||
\begin{teorema}[criterio de Buchberger]
|
||||
\begin{teorema}[criterio de Buchberger] \label{Criterio de Buchberger}
|
||||
Sea $G$ un subconjunto de $\Kx^r$ equipado con un orden monomial de módulos $>$. $G$ es una base de Gröbner de \engendrado{G} si y solo si para toda pareja de elementos $f$ y $g$ en $G$ se tiene que el resto de $\spoly{f}{g} = 0$ entre $G$ es $0$.
|
||||
\end{teorema}
|
||||
\begin{proof}
|
||||
@ -795,7 +812,7 @@ urlcolor=black]{hyperref}
|
||||
\end{lema}
|
||||
|
||||
Con este resultado, ya podemos calcular sicigias.
|
||||
\begin{teorema}
|
||||
\begin{teorema} \label{Teorema Calculo Sicigias}
|
||||
contenidos...
|
||||
\end{teorema}
|
||||
|
||||
@ -989,7 +1006,209 @@ urlcolor=black]{hyperref}
|
||||
|
||||
\appendix
|
||||
\chapter{Un ejemplo completo de cálculo}
|
||||
|
||||
|
||||
El algoritmo para calcular las sicigias que nos permite obtener \derivaciones{f}, en esencia el algoritmo de Buchberger, tienen un alto coste computacional que hace impracticable ejecutarlos <<a mano>>. En la práctica, se utilizan sistemas de Álgebra Computacional que ya vienen preparados con estos algoritmos en sus versiones más óptimas. Sin embargo, como ocurre con muchas otras operaciones a lo largo de nuestra experiencia matemática, conviene saber cómo hacerlas a mano para tener una mayor intuición. En muchos textos que tratan sobre estos asuntos se suelen omitir los ejemplos a este tipo de operaciones o se dan algunos en casos demasiado sencillos ---ideales de \Kx{} en vez de \modulo{\Kx} de $\Kx^n$ donde da la casualidad que todo se anula a la primera--- por lo que creemos conveniente desarrollar en este apéndice por completo un caso no trivial para que el lector se lleve una imagen realista de qué ocurre detrás de la pantalla. Además, ilustraremos también después cómo se resuelve utilizando un sistema dedicado a este tipo de cálculos.
|
||||
|
||||
\section{A mano}
|
||||
En concreto, intentaremos calcular \derivaciones{f} donde $f = x^2z + y^3$ en el anillo \anillodepolinomios{\complejos}{x, y, z} con el orden \mayorqueposdeglex. Recordemos que lo que buscamos es una descripción total del conjunto
|
||||
\begin{equation*}
|
||||
\derivaciones{f} = \definicionconjunto{\vectorhorizontaltres{a}{b}{c} \in \anillodepolinomios{\complejos}{x, y, z}^3}{a\diffp{f}{x} + b \diffp{f}{y} + c\diffp{f}{z} = kf, \ k \in \anillodepolinomios{\complejos}{x, y, z}}.
|
||||
\end{equation*}
|
||||
Esto lo podíamos reescribir como
|
||||
\begin{equation*}
|
||||
\derivaciones{f} = \definicionconjunto{\vectorhorizontaltres{a}{b}{c} \in \anillodepolinomios{\complejos}{x, y, z}^3}{\vectorhorizontalcuatro{a}{b}{c}{k} \in \syz{\diffp{f}{x}, \diffp{f}{y}, \diffp{f}{z}, f}, \ k \in \anillodepolinomios{\complejos}{x, y, z}}.
|
||||
\end{equation*}
|
||||
Lo primero que tendremos que hacer será calcular el submódulo de sicigias \syz{2xz, 3y^2, x^2, x^2z + y^3} siguiendo el método indicado en \ref{Teorema Calculo Sicigias}. Comenzamos ampliando los distintos elementos a vectores para que sus componentes extra <<mantengan el registro>> de las anulaciones que hacemos. Así, tomamos
|
||||
\begin{equation*}
|
||||
g_1 := \vectorvertical{2xz \\ 1 \\ 0 \\ 0 \\ 0}\!\!, \ g_2 := \vectorvertical{3y^2 \\ 0 \\ 1 \\ 0 \\ 0}\!\!, \ g_3 := \vectorvertical{x^2 \\ 0 \\ 0 \\ 1 \\ 0}\ \text{y} \ \ g_4' := \vectorvertical{x^2z + y^3 \\ 0 \\ 0 \\ 0 \\ 1}.
|
||||
\end{equation*}
|
||||
Calculamos ahora una base de Gr\"obner a partir de estos elementos. Para empezar con el mejor pie posible, lo que haremos será convertir este conjunto en un conjunto reducido, es decir, que buscaremos garantizar que ninguno de los términos de $g_i$ sea divisible por algún \LM{g_j} donde $j \neq i$. En este caso, vemos que $g_1$, $g_2$ y $g_3$ no tienen ningún termino divisible, sin embargo $g_4'$ sí, así que lo reducimos:
|
||||
\begin{center}
|
||||
\begin{blockarray}{rrrrrcl}
|
||||
\begin{block}{rrrrrc|l}
|
||||
$x^2z\euno$ & +$y^3\euno$ & & & +$\ecinco$ & & \cocientecaja{2xz\euno + \edos} \\
|
||||
$-(x^2z\euno$ & & $+\frac{1}{2}x\edos)$ & & & & $\frac{1}{2}x$ \\
|
||||
\end{block}
|
||||
\begin{block}{rrrrrcl}
|
||||
\cmidrule{1-5}
|
||||
& $y^3\euno$ & $-\frac{1}{2}x\edos\phantom{)}$ & & +$\ecinco$ & & \\
|
||||
\end{block}
|
||||
\begin{block}{rrrrrc|l}
|
||||
& $-(y^3\euno $ & & $+\frac{1}{3}y\etres)$ & & & \cocientecaja{3y^2\euno + \etres} \\ \cmidrule{1-5}
|
||||
& & $-\frac{1}{2}x\edos$ & $-\frac{1}{3}y\etres\phantom{)}$ & +$\ecinco$ & & $\frac{1}{3}y$ \\
|
||||
\end{block}
|
||||
\end{blockarray}
|
||||
\end{center}
|
||||
Añadimos <<cajas de división>> conforme nos vayan haciendo falta ya que no solo dividimos por un elemento sino por varios a la vez, por lo que puede ser que para anular un término hagamos uso de uno, para anular otro usemos un elemento distinto e incluso puede que necesitemos volver a utilizar algún elemento de nuevo. Pero en esencia, el procedimiento de división es el mismo pero ahora podemos <<saltar>> de caja en caja.
|
||||
|
||||
El resto es irreducible por los demás elementos, así que lo usaremos como elemento $g_4$. Multiplicar por un escalar un elemento no afecta al resultado, por lo tanto, intentamos obtener la expresión más sencilla para este y así
|
||||
\begin{equation*}
|
||||
g_4 := -6\left( -\frac{1}{2}x\edos - \frac{1}{3}y\etres +\ecinco\right) = \vectorvertical{0 \\ 3x \\ 2y \\ 0 \\ -6}.
|
||||
\end{equation*}
|
||||
|
||||
Ahora sí, comenzamos a calcular la base de Gr\"obner. La primera pareja, $g_1$ y $g_2$, nos da
|
||||
\begin{equation*}
|
||||
\spoly{g_1}{g_2} = 3y^2g_1 - 2xzg_2 = \vectorvertical{6xy^2z \\ 3y^2 \\ 0 \\ 0 \\ 0} - \vectorvertical{6xy^2z \\ 0 \\ 2xz \\ 0 \\ 0} = \vectorvertical{0 \\ 3y^2 \\ -2xz \\ 0 \\ 0};
|
||||
\end{equation*}
|
||||
cuyo término líder se encuentra en la segunda componente. Como no hay ningún otro $g_i$ con término líder en la segunda componente, este elemento es irreducible y, por ello, lo añadimos como $g_5$ a la lista de elementos de la base. Pasamos ahora a la siguiente pareja, $g_1$ y $g_3$; aquí tenemos que
|
||||
\begin{equation*}
|
||||
\spoly{g_1}{g_3} = xg_1 - 2zg_3 = \vectorvertical{2x^2z \\ x \\ 0 \\ 0 \\ 0} - \vectorvertical{2x^2z \\ 0 \\ 0 \\ 2z \\ 0} = \vectorvertical{0 \\ x \\ 0 \\ -2z \\ 0}.
|
||||
\end{equation*}
|
||||
Este elemento sí que es reducible, por lo que le aplicamos el algoritmo de la división por \conjunto{g_1, g_2, g_3, g_4, g_5}:
|
||||
\begin{center}
|
||||
\begin{blockarray}{rrrrcl}
|
||||
\begin{block}{rrrrc|l}
|
||||
$x\edos$ & & $-2z\ecuatro$ & & & \cocientecaja{2xz\euno + \edos} \\
|
||||
$-(x\edos$ & $+\frac{2}{3}y\etres$ & & $-2\ecinco)$ & & $\frac{1}{3}$ \\
|
||||
\end{block}
|
||||
\begin{block}{rrrrcl}
|
||||
\cmidrule{1-4}
|
||||
& $-\frac{2}{3}y\etres$ & $-2z\ecuatro$ & $+2\ecinco\phantom{)}$ & & \\
|
||||
\end{block}
|
||||
\end{blockarray}
|
||||
\end{center}
|
||||
De nuevo, al no ser $0$ lo añadiremos a nuestra lista de generadores como $g_6$ pero antes lo multiplicamos por un escalar para hacer la expresión lo más sencilla posible:
|
||||
\begin{equation*}
|
||||
g_6 := \frac{-3}{2}\left( -\frac{2}{3}y\etres -2z\ecuatro +2\ecinco \right) = \vectorvertical{0 \\ 0 \\ y \\ 3z \\ -3}.
|
||||
\end{equation*}
|
||||
El resto de emparejamientos en los que esté $g_1$ cumplirán $\spoly{g_1}{g_i} = 0$ ya que los términos líderes no estarán en la misma componente. Lo mismo ocurre con las parejas formadas por $g_2$ o $g_3$ y $g_4$, $g_5$ o $g_6$; y lo mismo podemos razonar con aquellas formadas por $g_4$ o $g_5$ y $g_6$. A la hora de realizar este proceso a mano, conviene mantener un registro de cuáles son los elementos de la base y qué parejas hace falta evaluar. En este momento, la situación es la siguiente: la lista de generadores es
|
||||
\begin{equation*}
|
||||
g_1 = \vectorvertical{2xz \\ 1 \\ 0 \\ 0 \\ 0}\!\!, \ g_2 = \vectorvertical{3y^2 \\ 0 \\ 1 \\ 0 \\ 0}\!\!, \ g_3 = \vectorvertical{x^2 \\ 0 \\ 0 \\ 1 \\ 0}\!\!, \ g_4 = \vectorvertical{0 \\ 3x \\ 2y \\ 0 \\ -6}\!\!, \ g_5 = \vectorvertical{0 \\ 3y^2 \\ -2xz \\ 0 \\ 0} \ \text{y} \ g_6 = \vectorvertical{0 \\ 0 \\ y \\ 3z \\ -3}.
|
||||
\end{equation*}
|
||||
\begin{wrapfigure}{r}{0.35\textwidth}
|
||||
\vspace{-0.6cm}
|
||||
\begin{tabular}{r|cccccc}
|
||||
& 1 & 2 & 3 & 4 & 5 & 6 \\ \hline
|
||||
1 & \textbullet & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark \\
|
||||
2 & & \textbullet & & \checkmark & \checkmark & \checkmark \\
|
||||
3 & & & \textbullet & \checkmark & \checkmark & \checkmark \\
|
||||
4 & & & & \textbullet & & \checkmark \\
|
||||
5 & & & & & \textbullet & \checkmark
|
||||
\end{tabular}
|
||||
\end{wrapfigure}
|
||||
|
||||
y entre estos las parejas ya evaluadas se muestran en la tabla a la derecha marcadas con el símbolo \checkmark. Démonos cuenta de que $\spoly{g_i}{g_i} = 0$ y que $\spoly{g_i}{g_j} = -\spoly{g_j}{g_i}$, por lo que no hace falta prestar atención por debajo de la diagonal la cual indicamos con el símbolo \textbullet. En blanco dejamos las parejas que sí están pendientes de ser evaluadas. Así pues, continuamos con la pareja formada por $g_2$ y $g_3$:
|
||||
\begin{equation*}
|
||||
\spoly{g_2}{g_3} = x^2g_1 - 3y^2g_3 = \vectorvertical{3x^2y^2 \\ 0 \\ x^2 \\ 0 \\ 0} - \vectorvertical{3x^2y^2 \\ 0 \\ 0 \\ 3y^2 \\ 0} = \vectorvertical{0 \\ 0 \\ x^2 \\ -3y^2 \\ 0}.
|
||||
\end{equation*}
|
||||
Al tener su término líder en la tercera componente, solo podría ser reducido por $g_6$ y, como $\LM{g_6}$ no divide a su término líder, no se puede reducir y, por ello, lo tomamos como $g_7$. Proseguimos con la otra pareja que nos quedaba en la tabla anterior:
|
||||
\begin{equation*}
|
||||
\spoly{g_4}{g_5} = y^2g_4 - xg_5 = \vectorvertical{0 \\ 3xy^2 \\ 2y^3 \\ 0 \\ -6y^2} - \vectorvertical{0 \\ 3xy^2 \\ -2x^2z \\ 0 \\ 0} = \vectorvertical{0 \\ 0 \\ 2x^2z + 2y^3 \\ 0 \\ -6y^2}.
|
||||
\end{equation*}
|
||||
Este sí puede reducirse:
|
||||
\begin{center}
|
||||
\begin{blockarray}{rrrrcl}
|
||||
\begin{block}{rrrrc|l}
|
||||
$2x^2z\etres$ & +$2y^3\etres$ & & $-6y^2\ecinco\phantom{)}$ & & \cocientecaja{x^2\etres - 3y^2\ecuatro} \\
|
||||
$-(2x^2z\euno$ & & $-6y^2z\ecuatro)$ & & & $2z$ \\
|
||||
\end{block}
|
||||
\begin{block}{rrrrcl}
|
||||
\cmidrule{1-4}
|
||||
& $2y^3\etres$ & $+6y^2z\ecuatro\phantom{)}$ & $-6y^2\ecinco\phantom{)}$ & & \\
|
||||
\end{block}
|
||||
\begin{block}{rrrrc|l}
|
||||
& $-(2y^3\euno $ & $+6y^2z\ecuatro\phantom{)}$ & $-6y^2\ecinco)$ & & \cocientecaja{y\etres + 3z\ecuatro - 3\ecinco} \\ \cmidrule{1-4}
|
||||
& & & $0\phantom{)}$ & & $2y^2$ \\
|
||||
\end{block}
|
||||
\end{blockarray}
|
||||
\end{center}
|
||||
\begin{wrapfigure}{l}{0.35\textwidth}
|
||||
\begin{tabular}{r|ccccccc}
|
||||
& 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ \hline
|
||||
1 & \textbullet & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark \\
|
||||
2 & & \textbullet & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark \\
|
||||
3 & & & \textbullet & \checkmark & \checkmark & \checkmark & \checkmark \\
|
||||
4 & & & & \textbullet & \checkmark & \checkmark & \checkmark \\
|
||||
5 & & & & & \textbullet & \checkmark & \checkmark \\
|
||||
6 & & & & & & \textbullet &
|
||||
\end{tabular}
|
||||
\end{wrapfigure}
|
||||
|
||||
De hecho, como puede verse, se reduce al cero, así que no hay nada que añadir. Tras dar por evaluadas todas las parejas con términos líderes en componentes distintas nos queda la tabla actualizada que vemos a la izquierda. Solo queda por lo tanto una pareja por evaluar:
|
||||
\begin{equation*}
|
||||
\spoly{g_6}{g_7} = x^2g_6 - yg_7 = \vectorvertical{0 \\ 0 \\ x^2y \\ 3x^2z \\ -3x^2} - \vectorvertical{0 \\ 0 \\ x^2y \\ -3y^3 \\ 0} = \vectorvertical{0 \\ 0 \\ 0 \\ 3x^2z + 3y^3 \\ -3x^2}.
|
||||
\end{equation*}
|
||||
Al tener el término líder en la cuarta componente, concluimos que no será divisible por ningún otro monomio líder. Lo multiplicamos por $\frac{1}{3}$ y lo añadimos a la lista como $g_8$. Por \ref{Criterio de Buchberger}, sabemos que
|
||||
\begin{equation*}
|
||||
\hspace{-1cm}g_1 = \vectorvertical{2xz \\ 1 \\ 0 \\ 0 \\ 0}\!\!, \ g_2 = \vectorvertical{3y^2 \\ 0 \\ 1 \\ 0 \\ 0}\!\!, \ g_3 = \vectorvertical{x^2 \\ 0 \\ 0 \\ 1 \\ 0}\!\!, \ g_4 = \vectorvertical{0 \\ 3x \\ 2y \\ 0 \\ -6}\!\!, \ g_5 = \vectorvertical{0 \\ 3y^2 \\ -2xz \\ 0 \\ 0}\!\!, \ g_6 = \vectorvertical{0 \\ 0 \\ y \\ 3z \\ -3}\!\!, \ g_7 = \vectorvertical{0 \\ 0 \\ x^2 \\ -3y^2 \\ 0} \ \text{y} \ g_8 = \vectorvertical{0 \\ 0 \\ 0 \\ x^2z + y^3 \\ -x^2}
|
||||
\end{equation*}
|
||||
forma una base de Gr\"obner. Para dar un resultado más <<canónico>>, vamos a reducirla. En este caso hay poco que hacer ya que el único elemento que es reducible es $g_4$:
|
||||
\begin{center}
|
||||
\begin{blockarray}{rrrrcl}
|
||||
\begin{block}{rrrrc|l}
|
||||
$3x\edos$ & $2y\etres$ & & $-6\ecinco\phantom{)}$ & & \cocientecaja{y\etres + 3z\ecuatro - 3\ecinco} \\
|
||||
& $-(2y\etres$ & $6z\ecuatro$ & $-6\ecinco)$ & & $2$ \\
|
||||
\end{block}
|
||||
\begin{block}{rrrrcl}
|
||||
\cmidrule{1-4}
|
||||
$3x\edos$ & & $-6z\ecuatro$ & & & \\
|
||||
\end{block}
|
||||
\end{blockarray}
|
||||
\end{center}
|
||||
Cambiando $g_4$ a $3x\edos - 6z\ecuatro$ ya sí que obtenemos una base de Gr\"obner reducida. Terminada de calcular esta base de Gr\"obner, pasamos a restringirla a las últimas cuatro componentes, ya que recordemos que a nosotros lo que nos interesaba era el <<registro>> que iban llevando estas componentes de los coeficientes de $\spoly{g_i}{g_j}$ que nos daban las anulaciones. Debemos eliminar a $g_1$, $g_2$ y $g_3$ ya que estos tienen primera componente no nula y así llegamos a la solución de la sicigia:
|
||||
\begin{equation*}
|
||||
\syz{2xz, 3y^2, x^2, x^2z + y^3} = \engendrado{\vectorvertical{3x \\ 2y \\ 0 \\ -6}, \vectorvertical{3y^2 \\ -2xz \\ 0 \\ 0}, \vectorvertical{0 \\ y \\ 3z \\ -3}, \vectorvertical{0 \\ x^2 \\ -3y^2 \\ 0}, \vectorvertical{0 \\ 0 \\ x^2z + y^3 \\ -x^2}}.
|
||||
\end{equation*}
|
||||
Por último, recordemos que en \derivaciones{f} lo que buscamos son los coeficientes que acompañan a las derivadas, no buscamos saber cuales son los factores por los que queda multiplicado $f$. Esta información nos la da la última componente y, como por el orden monomial de módulos elegido esta última componente no juega ningún papel a la hora de garantizar que el conjunto sea base de Gr\"obner, podemos eliminarla sin más para obtener una base de Gr\"obner reducida de \derivaciones{f}:
|
||||
\begin{equation*}
|
||||
\derivaciones{x^2z + y^3} = \engendrado{\vectorvertical{3x \\ 2y \\ 0}, \vectorvertical{3y^2 \\ -2xz \\ 0 }, \vectorvertical{0 \\ y \\ 3z}, \vectorvertical{0 \\ x^2 \\ -3y^2}, \vectorvertical{0 \\ 0 \\ x^2z + y^3}}.
|
||||
\end{equation*}
|
||||
|
||||
\section{Con ordenador}
|
||||
Con el ejemplo anterior queda suficientemente ilustrado que realizar este procedimiento a mano puede ser tedioso y en casos con expresiones más enrevesadas y con más términos puede llegar a ser impracticable. Como ya decíamos antes, se suele utilizar software especializado para realizar estas operaciones. En nuestro caso, utilizamos el programa \cite{SINGULAR} el cual entre sus muchas funciones, tiene algunas dedicadas exclusivamente al cómputo de sicigias y bases de Gröbner. Mostramos aquí cómo realizar el mismo procedimiento que hemos visto antes a través de esta herramienta.
|
||||
|
||||
Lo primero de todo es definir el anillo sobre el que estamos trabajando:
|
||||
\begin{lstlisting}
|
||||
ring A = 0, (x,y,z), (c,Dp);\end{lstlisting}
|
||||
Esta instrucción define no solo \texttt{A} como un anillo sino que también lo activa de cara al resto de operaciones; es decir, de aquí en adelante el programa asume que los ideales, módulos, etcétera son en función a este anillo. También observamos que hay tres elementos diferenciados en el valor que asignamos al anillo: \texttt{0}, \texttt{(x,y,z)} y \texttt{(c,Dp)}. El primero da la característica del anillo en el que estemos trabajando, el segundo indica el número y nombre de variables que tiene ---como $[x, y, z]$ en $\anillodepolinomios{K}{x, y, z}$--- y el último especifica el orden monomial de módulos a utilizar, que en este caso será \mayorqueposdeglex.
|
||||
|
||||
Después de esto, ya podemos definir el polinomio $f$:
|
||||
\begin{lstlisting}
|
||||
poly f = x2z + y3;\end{lstlisting}
|
||||
Nótese que aunque podríamos utilizar la notación \texttt{x\textsuperscript{$\wedge$}2*z + y\textsuperscript{$\wedge$}3} la sintaxis de Singular nos permite escribir los exponentes simplemente a la derecha de las variables y omitir el símbolo de multiplicación.
|
||||
|
||||
Tras esto, construimos los vectores para poder hallar su base de Gr\"obner:
|
||||
\begin{lstlisting}
|
||||
module M = [diff(f,x), 1, 0, 0, 0], [diff(f,y), 0, 1, 0, 0],
|
||||
[diff(f,z), 0, 0, 1, 0], [f, 0, 0, 0, 1]; \end{lstlisting}
|
||||
Implícitamente estamos diciendo que \texttt{M} es el \nolbreaks{\texttt{A}-módulo} generado por esos elementos, no solo le estamos asignando la lista.
|
||||
|
||||
Ya por último le pedimos que nos calcule la base de Gr\"obner de dichos generadores:
|
||||
\begin{lstlisting}
|
||||
module G = std(M); // Guardamos la base como el modulo engendrado
|
||||
// por esta.
|
||||
print(G);\end{lstlisting}
|
||||
y el programa nos devuelve
|
||||
\begin{lstlisting}
|
||||
0, 0, 0, 0, 0, 3y2,2xz,x2,
|
||||
0, 0, 0, x, 3y2, 0, 1, 0,
|
||||
0, y, x2, 0, -2xz,1, 0, 0,
|
||||
x2z+y3,3z,-3y2,-2z,0, 0, 0, 1,
|
||||
-x2, -3,0, 0, 0, 0, 0, 0 \end{lstlisting}
|
||||
que son los mismos elementos que habíamos obtenido antes a mano pero ordenados en orden ascendente.
|
||||
|
||||
Alternativamente, puede usarse la instrucción dedicada al cómputo de sicigias, \texttt{syz}:
|
||||
\begin{lstlisting}
|
||||
ideal I = diff(f,x), diff(f,y), diff(f,z), f;
|
||||
S = syz(I);
|
||||
print(S);\end{lstlisting}
|
||||
Esto devuelve
|
||||
\begin{lstlisting}
|
||||
0, 0, x, 3y2,
|
||||
y, x2, 0, -2xz,
|
||||
3z,-3y2,-2z,0,
|
||||
-3,0, 0, 0\end{lstlisting}
|
||||
Démonos cuenta de que esto no es el mismo resultado que antes y eso se debe a que la función \texttt{syz} nos devuelve solo un conjunto generador, no una base de Gr\"obner. Pero eso tiene fácil solución:
|
||||
\begin{lstlisting}
|
||||
module GS = std(S);
|
||||
print(GS);\end{lstlisting}
|
||||
Y esto sí que ya nos devuelve la base de Gr\"obner que buscamos:
|
||||
\begin{lstlisting}
|
||||
0, 0, 0, x, 3y2,
|
||||
0, y, x2, 0, -2xz,
|
||||
x2z+y3,3z,-3y2,-2z,0,
|
||||
-x2, -3,0, 0, 0
|
||||
\end{lstlisting}
|
||||
\nocite{*}
|
||||
\printbibliography
|
||||
\end{document}
|
||||
@ -19,7 +19,8 @@
|
||||
\newcommand{\euno} {\vectorbasecanonica{1}}
|
||||
\newcommand{\edos} {\vectorbasecanonica{2}}
|
||||
\newcommand{\etres}{\vectorbasecanonica{3}}
|
||||
|
||||
\newcommand{\ecuatro}{\vectorbasecanonica{4}}
|
||||
\newcommand{\ecinco}{\vectorbasecanonica{5}}
|
||||
|
||||
\newcommand{\vectorverticalparentesis}[1]{\ensuremath{\begin{pmatrix} #1 \end{pmatrix}}}
|
||||
\newcommand{\vectorverticalcorchetes}[1]{\ensuremath{\begin{bmatrix} #1 \end{bmatrix}}}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user