@c English version 2008-02-04
@menu
* Funciones y variables para Afines::      
@end menu

@node Funciones y variables para Afines,  , Afines, Afines

@section Funciones y variables para Afines

@deffn {Función} fast_linsolve ([@var{expr_1}, ..., @var{expr_m}], [@var{x_1}, ..., @var{x_n}])
Resuelve las ecuaciones lineales simultáneas @var{expr_1}, ..., @var{expr_m}
para las variables @var{x_1}, ..., @var{x_n}.
Cada @var{expr_i} puede ser una ecuación o una expresión general;
en caso de tratarse de una expresión general, será tratada como una ecuación de la forma @code{@var{expr_i} = 0}.

El valor que devuelve es una lista de ecuaciones de la forma
@code{[@var{x_1} = @var{a_1}, ..., @var{x_n} = @var{a_n}]}
donde todas las @var{a_1}, ..., @var{a_n} están exentas de @var{x_1}, ..., @var{x_n}.

La función @code{fast_linsolve} es más rápida que @code{linsolve} para sistemas de ecuaciones con coeficientes
dispersos.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@deffn {Función} grobner_basis ([@var{expr_1}, ..., @var{expr_m}])
Devuelve una base de Groebner para las ecuaciones @var{expr_1}, ..., @var{expr_m}.
La función @code{polysimp} puede ser entonces utilizada para simplificar
otras funciones relativas a las ecuaciones.

@example
grobner_basis ([3*x^2+1, y*x])$

polysimp (y^2*x + x^3*9 + 2) ==> -3*x + 2
@end example

@code{polysimp(f)} alcanza 0 si y sólo si @var{f} está en el ideal generado por
@var{expr_1}, ..., @var{expr_m}, es decir, si y sólo si @var{f} es una
combinación  polinómica de los elementos de 
@var{expr_1}, ..., @var{expr_m}.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@c NEEDS CLARIFICATION IN A SERIOUS WAY
@deffn {Función} set_up_dot_simplifications (@var{eqns}, @var{check_through_degree})
@deffnx {Función} set_up_dot_simplifications (@var{eqns})

Las @var{eqns} son ecuaciones polinómicas de variables no conmutativas.
El valor de @code{current_variables} es la lista de variables utilizadas para
el cálculo de los grados. Las ecuaciones deben ser homogéneas, al objeto de 
completar el procedimiento.

@c AQUI FALTA UN PARRAFO POR TRADUCIR (Mario)

El grado es el devuelto por @code{nc_degree}. Éste a su vez depende de los pesos 
de las variables individuales.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@deffn {Función} declare_weights (@var{x_1}, @var{w_1}, ..., @var{x_n}, @var{w_n})
Asigna los pesos @var{w_1}, ..., @var{w_n} a @var{x_1}, ..., @var{x_n}, respectivamente.
Estos pesos son los utilizados en el cálculo de @code{nc_degree}.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@deffn {Función} nc_degree (@var{p})
Devuelve el grado de un polinomio no conmutativo @var{p}. Véase @code{declare_weights}.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@c NEEDS CLARIFICATION -- TO WHICH EQUATIONS DOES THIS DESCRIPTION REFER ??
@deffn {Función} dotsimp (@var{f})
Devuelve 0 si y sólo si  @var{f} está en el ideal generado por las ecuaciones, esto es,
si y sólo si @var{f} es una combinación lineal de los elementos de las ecuaciones.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@deffn {Función} fast_central_elements ([@var{x_1}, ..., @var{x_n}], @var{n})
Si se ha ejecutado @code{set_up_dot_simplifications} con antelación, obtiene los 
polinomios centrales de grado @var{n} de variables @var{x_1}, ..., @var{x_n}.

Por ejemplo:
@example
set_up_dot_simplifications ([y.x + x.y], 3);
fast_central_elements ([x, y], 2);
[y.y, x.x];
@end example

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@c THIS IS NOT AT ALL CLEAR
@deffn {Función} check_overlaps (@var{n}, @var{add_to_simps})
Revisa la superposición hasta el grado @var{n},
asegurándose de que el usuario tiene suficientes reglas de simplificación en cada
grado para que @code{dotsimp} trabaje correctamente. Este proceso puede acelerarse
si se conoce de antemano cuál es la dimensión del espacio de monomios.
Si éste es de dimensión global finita, entonces debería usarse @code{hilbert}. Si
no se conoce la dimensiones de los monomios, no se debería especificar una @code{rank_function}.
Un tercer argumento opcional es @code{reset}.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@deffn {Función} mono ([@var{x_1}, ..., @var{x_n}], @var{n})
Devuelve la lista de monomios independientes. @c FALTA COMPLETAR ESTE PARRAFO (Mario)

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn


@deffn {Función} monomial_dimensions (@var{n})
Calcula el desarrollo de Hilbert de grado @var{n} para el algebra actual.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@deffn {Función} extract_linear_equations ([@var{p_1}, ..., @var{p_n}], [@var{m_1}, ..., @var{m_n}])
Hace una lista de los coeficientes de los polinomios no conmutativos @var{p_1}, ..., @var{p_n}  
de los monomios no conmutativos @var{m_1}, ..., @var{m_n}. Los coeficientes deben escalares. Hágase uso 
de @code{list_nc_monomials} para construir la lista de monomios.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@deffn {Función} list_nc_monomials ([@var{p_1}, ..., @var{p_n}])
@deffnx {Función} list_nc_monomials (@var{p})
Devuelve  una lista de los monomios no conmutativos que aparecen en el polinomio  @var{p}
o una lista de polinomios en @var{p_1}, ..., @var{p_n}.

Antes de utilizar esta función ejecútese @code{load("affine")}.
@end deffn

@c THIS FUNCTION DOESN'T SEEM TO BE APPROPRIATE IN USER-LEVEL DOCUMENTATION
@c PRESERVE THIS DESCRIPTION PENDING FURTHER DECISION
@c @defun pcoeff (poly monom [variables-to-exclude-from-cof (list-variables monom)])
@c 
@c This function is called from Lisp level, and uses internal poly format.
@c @example
@c 
@c CL-MAXIMA>>(setq me (st-rat #$x^2*u+y+1$))
@c (#:Y 1 1 0 (#:X 2 (#:U 1 1) 0 1))
@c 
@c CL-MAXIMA>>(pcoeff me (st-rat #$x^2$))
@c (#:U 1 1)
@c @end example
@c @noindent
@c 
@c Rule: if a variable appears in monom it must be to the exact power,
@c and if it is in variables to exclude it may not appear unless it was
@c in monom to the exact power.  (pcoeff pol 1 ..) will exclude variables
@c like substituting them to be zero.
@c 
@c @end defun

@c THIS FUNCTION DOESN'T SEEM TO BE APPROPRIATE IN USER-LEVEL DOCUMENTATION
@c PRESERVE THIS DESCRIPTION PENDING FURTHER DECISION
@c @defun new-disrep (poly)
@c 
@c From Lisp this returns the general Maxima format for an arg which is
@c in st-rat form:
@c 
@c @example
@c (displa(new-disrep (setq me (st-rat #$x^2*u+y+1$))))
@c 
@c        2
@c y + u x  + 1
@c @end example
@c 
@c @end defun


@defvr {Variable} all_dotsimp_denoms
Valor por defecto: @code{false}

Cuando @code{all_dotsimp_denoms} es una lista, los denominadores encontrados
por @code{dotsimp} son añadidos a la lista. La variable @code{all_dotsimp_denoms}
puede inicializarse como una lista vacía @code{[]} antes de llamar a @code{dotsimp}.

Por defecto, @code{dotsimp} no recolecta los denominadores.

@end defvr




