Use 1//2 instead of ((rat simp) 1 2)
[maxima.git] / doc / info / pt_BR / grobner.texi
blobbdffa25ae7f26c636984a414e7e4422856f07777
1 /grobner.texi/1.3/Sat Jun  2 00:13:21 2007//
2 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
3 @c /grobner.texi/1.3/Sat Jun  2 00:13:21 2007//
4 @menu
5 * Introdução a grobner::
6 * Funções e Variáveis Definidas para grobner::
7 @end menu
9 @node Introdução a grobner, Funções e Variáveis Definidas para grobner, Top, Top
10 @section Introdução a grobner
12 @code{grobner} é um pacote para trabalhos com bases de Groebner no Maxima.
14 @noindent
15 Um tutorial sobre @emph{Bases de Groebner} pode ser encontrado em 
17 @noindent
18 @url{http://www.geocities.com/CapeCanaveral/Hall/3131/}
20 @noindent
21 Para usar as seguintes funções você deve primeiramente tornar o pacote @file{grobner.lisp} disponível para uso:
23 @example
24 load("grobner");
25 @end example
27 @noindent
28 Uma demonstração de uso pode ser iniciada com
29 @example
30 demo("grobner.demo");
31 @end example
33 @noindent
34 ou com
35 @example
36 batch("grobner.demo")
37 @end example
39 @noindent
40 Alguns dos cálculos no arquivo de demonstração irão tomar um pouco de tempo 
41 portanto a saída @file{grobner-demo.output} do arquivo de demonstração pode
42 ser encontrada no mesmo diretório que o arquivo de demonstração.
44 @subsection Notas sobre o pacote grobner
45 O pacote foi escrito por 
47 @noindent
48 Marek Rychlik 
50 @noindent
51 @url{http://alamos.math.arizona.edu}
53 @noindent
54 e foi liberado em 24/05/2002 nos termos da Licença Pública Geral (GPL/GNU/FSF) (veja o arquivo @file{grobner.lisp}.
55 Essa documentação foi extraída dos arquivos
56 @flushleft
57 @file{README}, @file{grobner.lisp}, @file{grobner.demo}, @file{grobner-demo.output}
58 @end flushleft
60 @noindent
61 por G@"unter Nowak. Sugestões de melhorias da documentação podem 
62 ser discutidas em @emph{maxima}-mailing-list @email{maxima@@math.utexas.edu}.
63 O código está um pouco desatualizado atualmente. Implementações modernas utilizam o algorítmo rápido @emph{F4} descrito em
64 @smallformat
65 A new efficient algorithm for computing Gr@"obner bases (F4) 
66 Jean-Charles Faug@`ere
67 LIP6/CNRS Université Paris VI 
68 January 20, 1999
69 @end smallformat
71 @subsection Implementações de ordem monomial admissível em grobner
73 @itemize @bullet
74 @item @code{lex}
76 puramente lexicográfica,
77 ordenação padrão para comparações monomiais
78 @item @code{grlex}
80 ordenação total de grau, quando houver empate é quebrada pela ordem lexicográfica
82 @item @code{grevlex}
84 grau total, quando houver empate é quebrada pela ordem lexicográfica reversa
86 @item @code{invlex}
88 ordenação lexicográfica reversa
90 @end itemize
92 @node Funções e Variáveis Definidas para grobner, , Introdução a grobner, Top
93 @section Funções e Variáveis Definidas para grobner 
95 @subsection Comutadores globais para grobner
97 @defvr {Variável de opção} poly_monomial_order
98 Valor padrão: @code{lex}
100 Esse comutador globalcontrola qual a ordenação monomial é usada em polinomio e em cálculos com Bases de Groebner. Se não for escolhidat, @code{lex} será usada.
101 @end defvr
104 @defvr {Variável de opção} poly_coefficient_ring
105 Valor padrão: @code{expression_ring}
107 Esse comutador indica o anel de coeficiente dos polinômios que
108 irá ser usado em cálculos de grobner. Se não for escolhido, o anel de expressão
109 geral do @emph{maxima's} irá ser usado. Essa variável pode ser escolhida para
110 @code{ring_of_integers} se for desejado.
111 @end defvr
113 @defvr {Variável de opção} poly_primary_elimination_order
114 Valor padrão: @code{false}
116 Nome da ordem padrão de eliminação de variáveis em
117 funções de eliminação. Se não for escolhida, @code{lex} irá ser usada.
118 @end defvr
120 @defvr {Variável de opção} poly_secondary_elimination_order
121 Valor padrão: @code{false}
123 Nome da ordem padrão para manter variáveis em funções de eliminação. Se não for escolhida, @code{lex} irá ser usada.
124 @end defvr
126 @defvr {Variável de opção} poly_elimination_order
127 Valor padrão: @code{false}
129 Nome da ordem padrão de funções de 
130 eliminação. Se escolhida, irá sobrescrever as escolhas nas variáveis
131 @code{poly_primary_elimination_order} e @code{poly_secondary_elimination_order}.
132 O usuário deve garantir que essa é uma ordem de eliminação verdadeira válida
133 para o número de variáveis eliminadas. 
134 @end defvr
136 @defvr {Variável de opção} poly_return_term_list
137 Valor padrão: @code{false}
139 Se escolhida para @code{true}, todas as funções no pacote @code{grobner} irão retornar cada
140 polinômio como uma lista de termos na ordem monomial corrente em lugar de
141 retornar uma expressão geral do @emph{maxima}.
142 @end defvr
144 @defvr {Variável de opção} poly_grobner_debug
145 Valor padrão: @code{false}
147 Se escolhida para @code{true}, produz saída de depuração e rastros.
148 @end defvr
150 @defvr {Variável de opção} poly_grobner_algorithm
151 Valor padrão: @code{buchberger}
153 Valores possíveis: 
154 @itemize
155 @item @code{buchberger}
156 @item @code{parallel_buchberger}
157 @item @code{gebauer_moeller}
158 @end itemize
160 O nome do algorítmo usado para encontrar as bases de Groebner.
161 @end defvr
163 @defvr {Variável de opção} poly_top_reduction_only
164 Valor padrão: @code{false}
166 Se não for @code{false}, usa redução de topo somente se for possível. Redução de
167 topo significa que o algorítmo de divisão para após a primeira
168 redução.
169 @end defvr
171 @subsection Operadores simples em grobner
172 @code{poly_add}, @code{poly_subtract}, @code{poly_multiply} e @code{poly_expt}
173 são as operações aritméticas sobre polinômios.
174 Elas são executadas usando representação interna, mas os resultados são convertidos de volta à
175 forma geral do @emph{maxima}.
177 @deffn {Função} poly_add (@var{poli1}, @var{poli2}, @var{varlist})
178 Adiciona dois polinômios @var{poli1} e @var{poli2}.
179 @example
181 (%i1) poly_add(z+x^2*y,x-z,[x,y,z]);
182                                     2
183 (%o1)                              x  y + x
184 @end example
186 @end deffn
188 @deffn {Função} poly_subtract (@var{poli1}, @var{poli2}, @var{varlist})
189 Subtrai o polinômio @var{poli2} do polinômio @var{poli1}.
190 @example
192 (%i1) poly_subtract(z+x^2*y,x-z,[x,y,z]);
193                                       2
194 (%o1)                          2 z + x  y - x
195 @end example
196 @end deffn
198 @deffn {Função} poly_multiply (@var{poli1}, @var{poli2}, @var{varlist})
199 Retorna o produto dos polinômios @var{poli1} e @var{poli2}.
200 @example
202 (%i2) poly_multiply(z+x^2*y,x-z,[x,y,z])-(z+x^2*y)*(x-z),expand;
203 (%o1)                                  0
204 @end example
205 @end deffn
207 @deffn {Função} poly_s_polynomial (@var{poli1}, @var{poli2}, @var{varlist})
208 Retorna o @emph{polinômio syzygy} (@emph{S-polinomial}) de dois polinômios @var{poli1} e @var{poli2}.
209 @end deffn
211 @deffn {Função} poly_primitive_part (@var{poli1}, @var{varlist})
212 Retorna o polinômio @var{poli} dividido pelo MDC entre seus coeficientes. 
214 @example
215 (%i1) poly_primitive_part(35*y+21*x,[x,y]);
216 (%o1)                              5 y + 3 x
217 @end example
218 @end deffn
220 @deffn {Função} poly_normalize (@var{poli}, @var{varlist})
221 Retorna o polinômio @var{poli} dividido pelo coeficiente lider.
222 @code{poly_normalize} assume que a divisão é possível, o que nem sempre ocorre
223 em anéis que não são corpos (fields).
224 @end deffn
226 @subsection Outras funções em grobner
228 @deffn {Função} poly_expand (@var{poli}, @var{varlist})
229 Essa função transforma polinômios para a forma interna e da forma interna para a forma geral. @code{poly_expand}
230 é equivalente a @code{expand(poly)} se @var{poli} passa corretamente para
231 um polinômio. Se a representação não for compatível com um
232 polinômio nas variáveis @var{varlist}, o resultado é um erro.
233 Esse resultado em erro pode ser usado para testar se uma expressão transforma-se corretamente para a
234 representação interna. Os seguintes exemplos ilustra que
235 variáveis de funções indexadas e transcendentes são permitidas.
236 @example
238 (%i1) poly_expand((x-y)*(y+x),[x,y]);
239                                      2    2
240 (%o1)                               x  - y
241 (%i2) poly_expand((y+x)^2,[x,y]);
242                                 2            2
243 (%o2)                          y  + 2 x y + x
244 (%i3) poly_expand((y+x)^5,[x,y]);
245                   5      4         2  3       3  2      4      5
246 (%o3)            y  + 5 x y  + 10 x  y  + 10 x  y  + 5 x  y + x
247 (%i4) poly_expand(-1-x*exp(y)+x^2/sqrt(y),[x]);
248                                           2
249                                   y      x
250 (%o4)                       - x %e  + ------- - 1
251                                        sqrt(y)
253 (%i5) poly_expand(-1-sin(x)^2+sin(x),[sin(x)]);
254                                 2
255 (%o5)                      - sin (x) + sin(x) - 1
257 @end example
258 @end deffn
260 @deffn {Função} poly_expt (@var{poli}, @var{número}, @var{varlist})
261 eleva @var{poli} a um inteiro positivo @var{número}. If @var{número} não for um inteiro positivo um erro irá ser mostrado.
262 @example
264 (%i1) poly_expt(x-y,3,[x,y])-(x-y)^3,expand;
265 (%o1)                                  0
266 @end example
267 @end deffn
269 @deffn {Função} poly_content (@var{poli}. @var{varlist})
270 @code{poly_content} extrai o MDC entre seus coeficientes
271 @example
273 (%i1) poly_content(35*y+21*x,[x,y]);
274 (%o1)                                  7
275 @end example
276 @end deffn
278 @deffn {Função} poly_pseudo_divide (@var{poli}, @var{polilist}, @var{varlist})
279 Realiza a divisão falsa do polinômio @var{poli} pela lista de @math{n} polinômios @var{polilist}. Retorna
280 multiplos valores. O primeiro valor é uma lista de quocientes @math{a}. O
281 segundo valor é o resto @math{r}. O terceiro argumento é um coeficiente
282 escalar @math{c}, tal que @math{c*poli} pode ser dividido por@var{polilist} dentro do anel
283 dos coeficientes, que não é necessáriamente corpo. Finalmente, o
284 quarto valor é um contador inteiro do número de reduções
285 realizadas. O objetos resultantes satisfazem à equação:
287 @iftex
288 @tex
289 $$c*poly=\sum_{i=1}^{n}({a}_{i}*{polylist}_{i})+r$$
290 @end tex
291 @end iftex
292 @ifnottex
293 @math{c*poly=sum(a[i]*polylist[i],i=1...n)+r}.
294 @end ifnottex
295 @end deffn
297 @deffn {Função} poly_exact_divide (@var{poli1}, @var{poli2}, @var{varlist})
298 Divide um polinômio @var{poli1} por outro polinômio @var{poli2}. Assume que a divisão
299 exata (sem resto) é possível. Retorna o quociente.
300 @end deffn
302 @deffn {Função} poly_normal_form (@var{poli}, @var{polilist}, @var{varlist})
303 @code{poly_normal_form} encontra a forma normal de um polinômio @var{poli} com relação a
304 um conjunto de polinômios @var{polilist}.
305 @end deffn
307 @deffn {Função} poly_buchberger_criterion (@var{polilist}, @var{varlist})
308 Returns @code{true} if @var{polilist} is a Groebner basis with respect to the current term
309 order, by using the Buchberger
310 criterion: for every two polynomials @math{h1} and @math{h2} in @var{polilist} the
311 S-polynomial @math{S(h1,h2)} reduces to 0 @math{modulo} @var{polilist}.
313 @end deffn
315 @deffn {Função} poly_buchberger (@var{polilist_fl} @var{varlist})
316 @code{poly_buchberger} realiza o algorítmo de Buchberger sobre uma lista de
317 polinômios e retorna a base de Grobner resultante.
319 @end deffn
322 @subsection Pósprocessamento padão de bases de Groebner
324 @iftex
325 @tex
326 O \emph{k-ésimo ideal de eliminação} $I_k$ de um ideal $I$ sobre
327 $K [ x_1, ...,x_1 ]$ é $I \cap K [ x_{k + 1}, ..., x_n ]$.
329 \noindent
330 O \emph{ideal quociente} $I : J$ é o ideal $\{ h|\forall w in J : wh \in
331 I \}$.@*
333 \noindent
334 O ideal $I : p^{\infty}$ é o ideal $\{ h|\exists n \in N : p^n h \in I \}$.@*
336 \noindent
337 O ideal $I : J^{\infty}$ é o ideal $\{ h|\exists n \in N, \exists p \in J: p^n h \in I \}$.@*
339 \noindent
340 O \emph{ideal radical} $\sqrt{I}$ é o ideal $\{ h| \exists n \in N :
341 h^n \in I \}$.@*
343 @end tex
344 @end iftex
346 @ifnottex
347 O @emph{k-ésimo ideal de eliminação} @math{I_k} de uma Ideal @math{I} sobre @math{K[ x[1],...,x[n] ]} é o ideal @math{intersecção(I, K[ x[k+1],...,x[n] ])}.@*
348 @noindent
349 O @emph{ideal quociente} @math{I:J} é o ideal @math{@{h|for all w em J: w*h em I@}}.@*
350 @noindent
351 O ideal @math{I:p^inf} é o ideal @math{@{h| existe um n em N: p^n*h em I@}}.@*
352 @noindent
353 O ideal @math{I:J^inf} é o ideal @math{@{h| existe um n em N \and a p em J: p^n*h em I@}}.@*
354 @noindent
355 O @emph{ideal radical} @math{sqrt(I)} é o ideal 
356 @math{@{h| existe um n em N : h^n em I @}}.
357 @end ifnottex
359 @noindent
360 @deffn {Função} poly_reduction (@var{polilist}, @var{varlist})
361 @code{poly_reduction} reduz uma lista de polinômios @var{polilist}, de forma que
362 cada poinômio é completametne reduzido com relação a outros polinômios.
363 @end deffn
365 @deffn {Função} poly_minimization (@var{polilist}, @var{varlist})
366 Retorna uma sublista da lista de polinômios @var{polilist} gerando o mesmo
367 ideal de monômio que @var{polilist} mas minimo, i.e. nenhum monômio líder
368 de um polinômio na sublista divide o monômio líder
369 de outro polinômio.
371 @end deffn
374 @deffn {Função} poly_normalize_list (@var{polilist}, @var{varlist})
375 @code{poly_normalize_list} aplica @code{poly_normalize} a cada polinômio na lista.
376 Que significa que @code{poly_normalize_list} divide todo polinômio em uma lista @var{polilist} por seu coeficiente líder.
378 @end deffn
380 @deffn {Função} poly_grobner (@var{polilist}, @var{varlist})
381 Retorna uma base de Groebner do ideal gerado pelos polinômios @var{polilist}. Afetado pelos sinalizadores globais.
382 @end deffn
384 @deffn {Função} poly_reduced_grobner (@var{polilist}, @var{varlist})
385 Retorna uma base de Groebner reduzida do ideal gerado pelos polinômios @var{polilist}. Afetado pelos sinalizadores globais.
386 @end deffn
389 @deffn {Função} poly_depends_p (@var{poli}, @var{var}, @var{varlist})
390 @code{poly_depends} testa se um polinômio depende da variável @var{var}.
391 @end deffn
394 @deffn {Função} poly_elimination_ideal (@var{polilist}, @var{num}, @var{varlist})
397 @code{poly_elimination_ideal} retorna a base de grobner do @math{num}-ésimo ideal de eliminação de um
398 ideal especificado como uma lista de polinômios geradores (não necessáriamente base de Groebner)
399 @end deffn
401 @deffn {Função} poly_colon_ideal (@var{polilist1}, @var{polilist2}, @var{varlist})
403 Retorna a base reduzida de Groebner do ideal quociente 
405 @math{I(polilist1):I(polilist2)}
407 @noindent
408 onde @math{polilist1} e @math{polilist2} são duas listas de polinômios.
409 @end deffn
411 @deffn {Função} poly_ideal_intersection (@var{polilist1}, @var{polilist2}, @var{varlist})
413 @code{poly_ideal_intersection} retorna a intersecção entre dois ideais.
414 @end deffn
417 @deffn {Função} poly_lcm (@var{poli1}, @var{poli2}, @var{varlist})
418 Retorna o mínimo múltiplo comum entre @var{poli1} e @var{poli2}.
419 @end deffn
421 @deffn {Função} poly_gcd (@var{poli1}, @var{poli2}, @var{varlist})
422 Retorna máximo divisor comum de @var{poli1} e @var{poli2}.
423 @end deffn
425 @deffn {Função} poly_grobner_equal (@var{polilist1}, @var{polilist2}, @var{varlist})
426 @code{poly_grobner_equal} testa se duas bases de Groebner geram o mesmo ideal.
427 Retorna @code{true} se as duas listas de polinômios @var{polilist1} e @var{polilist2}, assumidas serem bases de Groebner,
428 geram o mesmo ideal, e @code{false} de outra forma.
429 Isso é equivalente a verificar que todo polinômio da primeira base é reduzido a 0
430 módulo a segunda base e vice-versa. Note que no exemplo abaixo a
431 primeira lista não é uma base de Groebner, e dessa forma o resultado é @code{false}.
433 @example
434 (%i1) poly_grobner_equal([y+x,x-y],[x,y],[x,y]);
435 (%o1)                         false
436 @end example
438 @end deffn
440 @deffn {Função} poly_grobner_subsetp (@var{polilist1}, @var{polilist2}, @var{varlist})
442 @code{poly_grobner_subsetp} testa se um ideal gerado pela @var{polilist1}
443 está contido em um ideal gerado pela @var{polilist2}. Para esse teste sempre tenha sucesso,
444 @var{polilist2} deve ser uma base de Groebner.
445 @end deffn
447 @deffn {Função} poly_grobner_member (@var{poli}, @var{polilist}, @var{varlist})
449 Retorna @code{true} se um polinômio @var{poli} pertence ao ideal gerado pela
450 lista polinomial @var{polilist}, que é assumida como sendouma base de Groebner. Retorna @code{false} de outra forma.
452 @code{poly_grobner_member} testa se um polinômio pertence a um ideal gerado por uma lista de polinômios,
453 que é assumida ser uma base de Groebner. Equivale a @code{normal_form} sendo 0. 
454 @end deffn
456 @deffn {Função} poly_ideal_saturation1 (@var{polilist}, @var{poli}, @var{varlist})
457 Retorna abase de Groebner reduzida da saturação do ideal
458 @iftex
459 @tex
460 $$I(polylist):poly^\infty$$
461 @end tex
462 @end iftex
464 @ifnottex
465 I(polylist):poly^inf
466 @end ifnottex
468 @noindent
469 Geometricamente, sobre um corpo algebricamente fechado, esse é um conjunto
470 de polinmios no ideal gerado por @var{polilist} que não tende identicamente a
471 zero sobre a variação de @var{poli}.
472 @end deffn
474 @deffn {Função} poly_ideal_saturation (@var{polilist1}, @var{polilist2}, @var{varlist})
475 Retorna a base de Groebner reduzida da saturação do ideal
476 @iftex
477 @tex
478 $$I(polylist1):I(polylist2)^\infty$$
479 @end tex
480 @end iftex
482 @ifnottex
483 I(polylist1):I(polylist2)^inf
484 @end ifnottex
486 @noindent
487 Geometricamente, sobre um corpo algebricamente fechado, esse é um conjunto
488 de polinmios no ideal gerado por @var{polilist1} que não tende identicamente a
489 zero sobre a variação de @var{polilist2}.
491 @end deffn
493 @deffn {Função} poly_ideal_polysaturation1 (@var{polilist1}, @var{polilist2}, @var{varlist})
494 @var{polilist2} ist a list of n polynomials @code{[poly1,...,polyn]}.
495 Retorna a base de Groebner reduzida do ideal
496 @iftex
497 @tex
498 $$I(polylist):poly1^\infty:...:polyn^\infty$$
499 @end tex
500 @end iftex
502 @ifnottex
503 I(polylist):poly1^inf:...:polyn^inf
504 @end ifnottex
506 @noindent
507 obtido por uma
508 seq@"{u}ência de sucessivas saturações nos polinômios
509 da lista  polinômial @var{polilist2} do ideal gerado pela
510 lista polinomial @var{polilist1}.
511 @end deffn
513 @deffn {Função} poly_ideal_polysaturation (@var{polilist}, @var{polilistlist}, @var{varlist})
514 @var{polilistlist} is a list of n list of polynomials @code{[polylist1,...,polylistn]}.
515 Retorna a base reduzida de Groebner da saturação do ideal
516 @iftex
517 @tex
518 $$I(polylist):I(polylist_1)^\infty:...:I(polylist_n)^\infty$$
519 @end tex
520 @end iftex
522 @ifnottex
523 I(polylist):I(polylist_1)^inf:...:I(polylist_n)^inf
524 @end ifnottex
525 @end deffn
527 @deffn {Função} poly_saturation_extension (@var{poli}, @var{polilist}, @var{varlist1}, @var{varlist2})
529 @code{poly_saturation_extension} implementa o famoso artifício de Rabinowitz.
530 @end deffn