@c /Affine.texi/1.12/Sat Nov 19 06:51:23 2005/-ko/
@c end concepts Affine
@menu
* Definições para Funções Afins::      
@end menu

@node Definições para Funções Afins,  , Funções Afins, Funções Afins
@section Definições para Funções Afins

@deffn {Função} fast_linsolve ([@var{expr_1}, ..., @var{expr_m}], [@var{x_1}, ..., @var{x_n}])
Resolve equações lineares simultâneas @var{expr_1},
..., @var{expr_m} para as variáveis @var{x_1}, ..., @var{x_n}.  Cada
@var{expr_i} pode ser uma equação ou uma expressão
geral; se for dada como uma expressão geral, será tratada como uma
equação na forma @code{@var{expr_i} = 0}.

O valor de retorno é uma lista de equações da forma
@code{[@var{x_1} = @var{a_1}, ..., @var{x_n} = @var{a_n}]} onde
@var{a_1}, ..., @var{a_n} são todas livres de @var{x_1}, ...,
@var{x_n}.

@code{fast_linsolve} é mais rápido que @code{linsolve} para sistemas
de equações que são esparsas.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} grobner_basis ([@var{expr_1}, ..., @var{expr_m}])
Retorna uma base de Groebner para as equações @var{expr_1}, ..., @var{expr_m}.
A funçã @code{polysimp} pode então
ser usada para simplificar outras funções relativas às equações.

@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)} produz 0 se e somente se @var{f} está no ideal gerado por
@var{expr_1}, ..., @var{expr_m}, isto é,
se e somente se @var{f} for uma combinação polinomial dos elementos de
@var{expr_1}, ..., @var{expr_m}.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@c NEEDS CLARIFICATION IN A SERIOUS WAY
@deffn {Função} set_up_dot_simplifications (@var{eqns}, @var{check_through_degree})
@deffnx {Função} set_up_dot_simplifications (@var{eqns})
As @var{eqns} são
equações polinomiais em variáveis não comutativas.
O valor de @code{current_variables}  é uma 
lista de variáveis usadas para calcular graus.  As equações podem ser
homogéneas, de forma a que o procedimento termine.  

Se tiver optado por sobreposição de simplificações
em @code{dot_simplifications} acima do grau de @var{f}, então o
seguinte é verdadeiro: @code{dotsimp (@var{f})} retorna 0 se, e
somente se, @var{f} está no ideal gerado pelas
equações, i.e., se e somente se @var{f} for uma
combinação polinomial dos elementos das
equações.

O grau é aquele retornado por @code{nc_degree}.  Isso por sua vez é
influenciado pelos pesos das variáveis individuais.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} declare_weights (@var{x_1}, @var{w_1}, ..., @var{x_n}, @var{w_n})
Atribui pesos @var{w_1}, ..., @var{w_n} to @var{x_1}, ..., @var{x_n}, respectivamente.
Esses são pesos usados em cálculos @code{nc_degree}.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} nc_degree (@var{p})
Retorna o grau de um polinómio não comutativo @var{p}.  Veja @code{declare_weights}.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@c NEEDS CLARIFICATION -- TO WHICH EQUATIONS DOES THIS DESCRIPTION REFER ??
@deffn {Função} dotsimp (@var{f})
Retorna 0 se e somente se @var{f} for um ideal gerado pelas equações, i.e.,
se e somente se @var{f} for uma combinação polinomial dos elementos das equações.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} fast_central_elements ([@var{x_1}, ..., @var{x_n}], @var{n})
Se @code{set_up_dot_simplifications} tiver sido feito previamente, ache o polinómio central
nas variáveis @var{x_1}, ..., @var{x_n} no grau dado, @var{n}.

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

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@c THIS IS NOT AT ALL CLEAR
@deffn {Função} check_overlaps (@var{n}, @var{add_to_simps})
Verifica as sobreposições através do grau @var{n}, garantindo
que tem regras de simplificaçõ suficientes em cada grau,
para @code{dotsimp} trabalhar correctamente.  Esse processo pode ser mais
rápido se souber de antemão a dimensão do espaço de
monómios.  Se for de dimensão global finita, então @code{hilbert}
pode ser usada.  Se não conhece as dimensões monomiais, não
especifique nenhum @code{rank_function}.  Um terceiro argumento
opcional, @code{reset}, @code{false} diz para não se incomodar em
perguntar sobre reiniciar coisas.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} mono ([@var{x_1}, ..., @var{x_n}], @var{n})
Retorna a lista de monómios independentes
relativamente à simplificação actual do grau @var{n}
nas variáveis @var{x_1}, ..., @var{x_n}.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} monomial_dimensions (@var{n})
Calcula a série de Hilbert através do grau @var{n} para a algebra corrente.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} extract_linear_equations ([@var{p_1}, ..., @var{p_n}], [@var{m_1}, ..., @var{m_n}])

Faz uma lista dos coeficientes dos polinómios não comutativos @var{p_1}, ..., @var{p_n}
dos monomios não comutatvos @var{m_1}, ..., @var{m_n}.
Os coeficientes podem ser escalares.   Use @code{list_nc_monomials} para construir a lista dos
monómios.

Para usar essa função escreva primeiramente @code{load(affine)}.
@end deffn

@deffn {Função} list_nc_monomials ([@var{p_1}, ..., @var{p_n}])
@deffnx {Função} list_nc_monomials (@var{p})

Retorna uma lista de monómios não comutativos que ocorrem em um polinómio @var{p}
ou em uma lista de polinómios @var{p_1}, ..., @var{p_n}.

Para usar essa função escreva primeiramente @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 {Variável de opção} all_dotsimp_denoms
Valor por omissão: @code{false}

Quando @code{all_dotsimp_denoms} é uma lista,
os denominadores encontrados por @code{dotsimp} são adicionados ao final da lista.
@code{all_dotsimp_denoms} pode ser iniciado como uma lista vazia @code{[]}
antes chamando @code{dotsimp}.

Por padrão, denominadores não são colectados por @code{dotsimp}.

@end defvr




