@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /Affine.texi/1.13/Sat Jun  2 00:12:30 2007/-ko/
@c end concepts Affine
@menu
* Funções e Variáveis Definidas para Funções Afins::      
@end menu

@node Funções e Variáveis Definidas para Funções Afins,  , Funções Afins, Funções Afins
@section Funções e Variáveis Definidas 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 dada como uma expressão geral, ela  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 devem ser
homogêneas, com o objetivo de que o procedimento termine.  

Se você checou simplificações de envoltório 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 é nfluenciado 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 sobreposies através do grau @var{n},
tendo certeza que você tem regras de simplificação suficiente em cada
grau, para @code{dotsimp} trabalhar corretamente.  Esse processo pode ter sua velocidade aumentada
se você souber antes de começar souber de qual dimensão do espaço de monômios é.
Se ele for de dimensão global finita, então @code{hilbert} pode ser usada.  Se você
não conhece as dimensões monomiais, não especifique um @code{rank_function}.
Um opcional terceiro argumento @code{reset}, @code{false} diz para não se incomodar em perguntar
sobre resetar 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 atual 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 padrã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 coletados por @code{dotsimp}.

@end defvr

