1 @c /Simplification.texi/1.17/Tue Jan 9 09:30:23 2007/-ko/
2 @c end concepts Simplification
4 @hyphenation{di-fe-ren-te-men-te}
7 * Definições para Simplificação::
10 @node Definições para Simplificação, , Simplificação, Simplificação
11 @section Definições para Simplificação
13 @c After studying src/compar.lisp, it appears that askexp would
14 @c work as advertised, except that it doesn't appear to be possible
15 @c to open a break prompt with ^A or any other character.
16 @c What should we do about askexp ???
17 @defvr {Variável de sistema} askexp
18 Quando @code{asksign} é chamada, @code{askexp} é a expressão que
19 @code{asksign} está a testar.
21 Antigamente, era possível para um utilizador inspecionar
22 @code{askexp} parando o Maxima com control-A.
25 @c THERE IS PROBABLY MORE TO THE STORY THAN WHAT IS INDICATED HERE ...
26 @deffn {Função} askinteger (@var{expr}, integer)
27 @deffnx {Função} askinteger (@var{expr})
28 @deffnx {Função} askinteger (@var{expr}, even)
29 @deffnx {Função} askinteger (@var{expr}, odd)
31 @code{askinteger (@var{expr}, integer)} tenta determinar a partir da
32 base de dados do @code{assume} se @var{expr} é um inteiro. Se não conseguir,
33 @code{askinteger} perguntará ao utilizador, na linha de comandos,
34 @c UMM, askinteger AND asksign DO NOT APPEAR TO HAVE ANY EFFECT ON THE assume DATABASE !!!
35 e inserirá essa informação na base de dados do
36 @code{assume}, se for possível. @code{askinteger
37 (@var{expr})} é equivalente a @code{askinteger (@var{expr}, integer)}.
39 Da mesma forma, @code{askinteger (@var{expr}, even)} e @code{askinteger
40 (@var{expr}, odd)} tentam determinar se @var{expr} é um inteiro par ou
41 inteiro ímpar, respectivamente.
45 @c THERE IS PROBABLY MORE TO THE STORY THAN WHAT IS INDICATED HERE ...
46 @deffn {Função} asksign (@var{expr})
47 Primeiro tenta determinar se a expressão especificada é positiva,
48 negativa, ou zero. Se isso não for possível,
49 @code{asksign} perguntará ao utilizador as questões necessárias
50 para completar a sua dedução. As respostas do utilizador
51 serão guardadas na base de dados pelo tempo que durar a cálculo
52 actual. O valor de retorno de @code{asksign} será @code{pos},
53 @code{neg}, ou @code{zero}.
57 @c NEEDS CLARIFICATION, EXAMPLES
58 @deffn {Função} demoivre (@var{expr})
59 @deffnx {Variável de opção} demoivre
61 A função @code{demoivre (expr)} transforma uma
62 expressão sem modificar a variável global @code{demoivre}.
64 Quando a variável @code{demoivre} for @code{true}, as exponenciais
65 complexas serão convertidas em expressões equivalentes em termos das
66 funções circulares: @code{exp (a + b*%i)} simplifica
67 para @code{%e^a * (cos(b) + %i*sin(b))} se @code{b} não incluir
68 @code{%i}. @code{a} e @code{b} não serão expandidos.
70 O valor padrão de @code{demoivre} é @code{false}.
72 @code{exponentialize} converte funções circulares e
73 hiperbólicas para a forma exponencial. @code{demoivre} e
74 @code{exponentialize} não podem ambas serem @code{true} ao mesmo
79 @defvr {Variável de opção} domain
80 Valor por omissão: @code{real}
82 Quando a @code{domain} for dado o valor @code{complex}, @code{sqrt(x^2)}
83 permanecerá @code{sqrt (x^2)} em lugar de retornar @code{abs(x)}.
85 @c PRESERVE EDITORIAL COMMENT -- MAY HAVE SOME SIGNIFICANCE NOT YET UNDERSTOOD !!!
86 @c The notion of a "domain" of simplification is still in its infancy,
87 @c and controls little more than this at the moment.
92 @deffn {Função} expand (@var{expr})
93 @deffnx {Função} expand (@var{expr}, @var{p}, @var{n})
94 Expande a expressão @var{expr}. Nos rodutos de somas e exponenciais
95 de somas são expandidos os produtos, os numeradores de expressões
96 racionais que incluirem somas serão quebrados nas suas respectivas
97 parcelas, e os produtos (comutativos e não comutativos) são
98 distribuídos sobre as somas em todos os
101 Para polinómios se pode usar frequêntemente @code{ratexpand} que
102 possui um algoritmo mais eficiente.
104 @code{maxnegex} e @code{maxposex} controlam o máximo expoente negativo
105 e o máximo expoente positivo, respectivamente, que irão expandir.
107 @code{expand (@var{expr}, @var{p}, @var{n})} expande @var{expr}, usando
108 @var{p} para @code{maxposex} e @var{n} para @code{maxnegex}. Isso é
109 útil para expandir partes numa expressão mas não toda.
111 @code{expon} - o expoente da maior potência negativa que é
112 automaticamente expandida (independente de chamadas a @code{expand}).
113 Por Exemplo se @code{expon} for 4 então @code{(x+1)^(-5)} não será
114 automaticamente expandido.
116 @code{expop} - o maior expoente positivo que é automaticamente
117 expandido. Dessa forma @code{(x+1)^3}, quando digitado, será
118 automaticamente expandido somente se @code{expop} for maior que ou igual
119 a 3. Se quiser que @code{(x+1)^n} seja expandido onde @code{n} for
120 maior que @code{expop}, então @code{expand ((x+1)^n)} funcionará
121 unicamente se @code{maxposex} não for menor que @code{n}.
123 O sinalizador @code{expand} usado com @code{ev} causa expansão.
125 O ficheiro @file{simplification/facexp.mac}
126 @c I should really use a macro which expands to something like
127 @c @uref{file://...,,simplification/facexp.mac}. But texi2html
128 @c currently supports @uref only with one argument.
129 @c Worse, the `file:' scheme is OS and browser dependent.
130 contém muitas funções relacionadas (em particular
131 @code{facsum}, @code{factorfacsum} e @code{collectterms}, que são
132 carregadas automaticamente) e as variáveis (@code{nextlayerfactor} e
133 @code{facsum_combine}) que fornecem ao utilizador a possibilidade de
134 estruturar expressões por expansão controlada.
135 @c MERGE share/simplification/facexp.usg INTO THIS FILE OR CREATE NEW FILE facexp.texi
136 Uma descrição breve das função
137 encontra-se no ficheiro @file{simplification/facexp.usg}. Há também
138 uma demonstração disponível com o comando
139 @code{demo("facexp")}.
144 @deffn {Função} expandwrt (@var{expr}, @var{x_1}, ..., @var{x_n})
145 Expande a expressão @code{expr} com relação às
146 variáveis @var{x_1}, ..., @var{x_n}. Todos os produtos que encvolvam
147 as variáveis aparecerão explicitamente. O resultado estará livre
148 de produtos de somas de expressões que não estejam livres das
149 variáveis. @var{x_1}, ..., @var{x_n} podem ser variáveis,
150 operadores, ou expressões.
152 Por omissão, os denominadores não são expandidos, mas isso pode ser
153 controlado através da variável @code{expandwrt_denom}.
155 Esta função é carregada automaticamente a partir de
156 @file{simplification/stopex.mac}.
161 @defvr {Variável de opção} expandwrt_denom
162 Valor por omissão: @code{false}
164 @code{expandwrt_denom} controla a simplificação de expressões
165 racionais feita por @code{expandwrt}. Se tiver valor @code{true},
166 então tanto o numerador como o denominador da expressão serão
167 expandidos conforme os argumentos de @code{expandwrt}, mas se
168 @code{expandwrt_denom} for @code{false}, então somente o numerador
173 @c NEEDS A STAND-ALONE DESCRIPTION (NOT "IS SIMILAR TO")
175 @deffn {Função} expandwrt_factored (@var{expr}, @var{x_1}, ..., @var{x_n})
176 é similar a @code{expandwrt}, mas trata os produtos numa forma
177 diferente. @code{expandwrt_factored} expande somente sobre esses
178 factores de @code{expr} que contiverem as variáveis @var{x_1}, ...,
181 @c NOT SURE WHY WE SHOULD MENTION THIS HERE
182 Esta função é carregada automaticamente a partir de
183 @file{simplification/stopex.mac}.
187 @defvr {Variável de opção} expon
190 @code{expon} é o expoente da maior potência negativa que é
191 automaticamente expandido (independente de chamadas a @code{expand}).
192 Por exemplo, se @code{expon} for 4 então @code{(x+1)^(-5)} não
193 será automaticamente expandido.
197 @deffn {Função} exponentialize (@var{expr})
198 @deffnx {Variável de opção} exponentialize
200 A função @code{exponentialize (expr)} converte as
201 funções circulares e hiperbólicas em @var{expr} para
202 exponenciais, sem modificar a variável global @code{exponentialize}.
204 Quando a variável @code{exponentialize} for @code{true}, todas as
205 funções circulares e hiperbólicas são convertidas
206 para a forma exponencial. O valor por omissão é @code{false}.
208 @code{demoivre} converte exponenciais complexas em
209 funções circulares. @code{exponentialize} e
210 @code{demoivre} não podem ambas serem @code{true} ao mesmo tempo.
214 @c NEEDS CLARIFICATION
216 @defvr {Variável de opção} expop
219 @code{expop} - o maior expoente positivo que é automaticamente
220 expandido. Dessa forma @code{(x+1)^3}, será automaticamente expandido
221 somente se @code{expop} for maior que ou igual a 3. Se quiser que
222 @code{(x+1)^n} seja expandido onde @code{n} for maior que @code{expop},
223 então @code{expand ((x+1)^n)} funcionará somente se @code{maxposex}
224 não for menor que @code{n}.
229 @defvr {Variável de opção} factlim
230 Valor por omissão: -1
232 @code{factlim} especifica o maior factorial que é automaticamente
233 expandido. Se for -1 então todos os inteiros são expandidos.
237 @c NEEDS CLARIFICATION, EXAMPLES
238 @deffn {Função} intosum (@var{expr})
239 Move factores multiplicativos fora de um somatório para dentro. Se um
240 índice for usado na expressão de fora, então a
241 função tentará achar um índice
242 razoável, o mesmo que é feito para @code{sumcontract}. Isto é
243 essencialmente a ideia inversa da propriedade @code{outative} de
244 somatórios, mas repare que não elimina essa propriedade, apenas faz
245 com que seja ignorada.
247 @c WHAT ARE THESE CASES ??
248 Em alguns casos, poderá ser necessário um
249 @code{scanmap(multthru,@var{expr})} antes de @code{intosum}.
253 @c NEEDS CLARIFICATION, EXAMPLES
254 @defvr {Declaração} lassociative
255 @code{declare (g, lassociative)} diz ao simplificador do Maxima que
256 @code{g} é associativa à esquerda. E.g., @code{g (g (a, b), g (c,
257 d))} irá simplificar para @code{g (g (g (a, b), c), d)}.
261 @c NEEDS CLARIFICATION, EXAMPLES
262 @c WHAT'S UP WITH THE QUOTE MARKS ??
263 @defvr {Declaração} linear
264 Uma das propriedades operativas do Maxima. As funções de
265 uma única variável @code{f} assim declaradas fazem com que a
266 expressão @code{f(x + y)} seja expandida em @code{f(x) + f(y)}, a
267 expressão @code{f(a*x)} transforma-se em @code{a*f(x)} se @code{a} for
268 uma constante. Para funções de dois ou mais argumentos,
269 a linearidade define-se igual que no caso de @code{sum} ou
270 @code{integrate}, isto é, @code{f (a*x + b, x)} retorna @code{a*f(x,x)
271 + b*f(1,x)}, se @code{a} e @code{b} forem independentesx de @code{x}.
273 @code{linear} é equivalente a @code{additive} e @code{outative}.
274 Veja também @code{opproperties}.
278 @c NEEDS CLARIFICATION, EXAMPLES
279 @defvr {Declaração} mainvar
280 Permite declarar variáveis do tipo @code{mainvar} (variável
281 principal). A escala de ordenação para átomos é
282 essencialmente: números < constantes (e.g., @code{%e}, @code{%pi}) <
283 escalares < outras variáveis < mainvars. Por exemplo, compare
284 @code{expand ((X+Y)^4)} com @code{(declare (x, mainvar), expand
285 ((x+y)^4))}. (Nota: este recurso deverá ser usado com cautela. Por
286 exemplo, se subtrair uma expressão, na qual @code{x} for uma
287 @code{mainvar}, da mesma expressão, mas onde @code{x} não for
288 @code{mainvar}, poderá precisar de resimplificação,
289 por exemplo, com @code{ev (expr, simp)}, para que sejam canceladas.
290 Também, se grava uma expressão na qual @code{x} for uma
291 @code{mainvar}, provavelmente deverá também gravar @code{x}.)
296 @defvr {Variável de opção} maxapplydepth
297 Valor por omissão: 10000
299 @code{maxapplydepth} é a profundidade máxima ate a qual @code{apply1}
300 e @code{apply2} deverão descer.
305 @defvr {Variável de opção} maxapplyheight
306 Valor por omissão: 10000
308 @code{maxapplyheight} é nível máximo a ser atingido
309 por @code{applyb1} antes de abandonar.
314 @defvr {Variável de opção} maxnegex
315 Valor por omissão: 1000
317 @code{maxnegex} é o maior expoente negativo que será expandido pelo
318 comando @code{expand} (veja também @code{maxposex}).
323 @defvr {Variável de opção} maxposex
324 Valor por omissão: 1000
326 @code{maxposex} é o maior expoente que será expandido com o comando
327 @code{expand} (veja também @code{maxnegex}).
332 @defvr {Declaração} multiplicative
333 @code{declare (f, multiplicative)} diz ao simplificador do Maxima que
334 @code{f} é multiplicativa.
338 Se @code{f} for uma função de uma única variável,
339 sempre que o simplificador encontrar @code{f} aplicada a um produto,
340 @code{f} será distribuida nesse produto. Por exemplo, @code{f(x*y)}
341 simplifica para @code{f(x)*f(y)}.
343 Se @code{f} for uma função de 2 ou mais argumentos, a
344 multiplicatividade entende-se como multiplicatividade no primeiro
345 argumento de @code{f}. Por exemplo, @code{f (g(x) * h(x), x)} simplifica
346 para @code{f (g(x) ,x) * f (h(x), x)}.
349 Esta simplificação não é feita quando @code{f} for
350 aplicada a expressões da forma @code{product (x[i], i, m, n)}.
354 @c NEEDS CLARIFICATION, EXAMPLES
355 @defvr {Variável de opção} negdistrib
356 Valor por omissão: @code{true}
358 Quando @code{negdistrib} for @code{true}, -1 distribue sobre uma
359 expressão. Por exemplo, @code{-(x + y)} transforma-se em @code{- y -
360 x}. Mudando o valor de @code{negdistrib} para @code{false} permitirá
361 que @code{- (x + y)} seja mostrado como foi escrito. Embora isso possa
362 ser útil, tenha muito cuidado: esta variável e a variável
363 @code{simp} não deveriam ser escolhidas sempre como @code{false},
364 excepto em forma local no seu Maxima.
368 @c NEEDS CLARIFICATION, EXAMPLES
369 @defvr {Variável de opção} negsumdispflag
370 Valor por omissão: @code{true}
372 Quando @code{negsumdispflag} for @code{true}, @code{x - y} é mostrado
373 como @code{x - y} em lugar de como @code{- y + x}. Mudando para
374 @code{false} faz com que não seja feita a verificação
375 especial para a apresentação da diferença entre duas
376 expressões. Uma aplicação é para que @code{a +
377 %i*b} e @code{a - %i*b} sejam mostrados na mesma forma.
381 @c NEEDS CLARIFICATION, EXAMPLES
382 @c NEED TO MENTION THIS IS AN evflag
383 @defvr {Símbolo especial} noeval
384 @code{noeval} suprime a fase de avaliação de @code{ev}.
385 Isso é útil conjuntamente com outras condições e para fazer com
386 que expressões sejam simplificadas sem serem reavaliadas.
390 @c NEEDS CLARIFICATION, EXAMPLES
391 @defvr {Declaração} noun
392 @code{noun} é uma das opções do comando
393 @code{declare}. Faz com que as funções assim declaradas sejam
394 substantivos (noun), implicando que não sejam avaliadas
399 @c NEEDS CLARIFICATION, EXAMPLES
400 @defvr {Variável de opção} noundisp
401 Valor por omissão: @code{false}
403 Quando @code{noundisp} for @code{true}, os substantivos (nouns) são
404 mostrados com um apóstrofo. Sempre que se mostra a
405 definição de uma função, essa variável
406 é igual a @code{true}.
410 @c NEEDS CLARIFICATION, EXAMPLES
411 @defvr {Símbolo especial} nouns
412 @code{nouns} é um @code{evflag} (sinalizador de
413 avaliação). Quando usado como uma opção
414 para o comando @code{ev}, @code{nouns} converte todas as formas
415 substantivas (noun), na expressão a ser avaliada, para verbos
416 ("verbs"), isto é, avalia essas expressões. Veja também
417 @code{noun}, @code{nounify}, @code{verb}, e @code{verbify}.
421 @c NEEDS CLARIFICATION, EXAMPLES
422 @c WHAT ARE THE FUNCTIONS WHICH ARE EVALUATED IN FLOATING POINT ??
423 @c WHAT IS A "NUMERVAL" ?? (SOMETHING DIFFERENT FROM A NUMERIC VALUE ??)
424 @c NEED TO MENTION THIS IS AN evflag
425 @defvr {Símbolo especial} numer
426 @code{numer} faz com que algumas funções matemáticas
427 (incluindo exponenciação) com argumentos numéricos
428 sejam avaliadas em ponto flutuante. Isto faz com que variáveis em
429 @code{expr} que tiverem valores numéricos sejam
430 substituídas pelos seus valores correspondentes.
431 @code{numer} também activa a opção @code{float}.
436 @c NEEDS CLARIFICATION, EXAMPLES
437 @c HOW TO FIND ALL VARIABLES WHICH HAVE NUMERVALS ??
438 @deffn {Função} numerval (@var{x_1}, @var{expr_1}, ..., @var{var_n}, @var{expr_n})
439 Declara as variáveis @code{x_1}, ..., @var{x_n} com valores
440 numéricos iguais a @code{expr_1}, ..., @code{expr_n}. O valor
441 numérico é avaliado e substituido para a variável em quaisquer
442 expressões em que a variável aparecer, se o sinalizador @code{numer}
443 for igual a @code{true}. Veja também @code{ev}.
445 As expressões @code{expr_1}, ..., @code{expr_n} podem ser quaisquer,
446 não necessariamente numéricas.
450 @defvr {Variável de sistema} opproperties
452 @code{opproperties} é a lista de propriedades de operadores especiais
453 reconhecidas pelo simplificador do Maxima: @code{linear},
454 @code{additive}, @code{multiplicative}, @code{outative}, @code{evenfun},
455 @code{oddfun}, @code{commutative}, @code{symmetric},
456 @code{antisymmetric}, @code{nary}, @code{lassociative},
462 @c NEEDS CLARIFICATION, EXAMPLES
463 @defvr {Variável de opção} opsubst
464 Valor por omissão: @code{true}
466 Quando @code{opsubst} for @code{false}, @code{subst} não tenta
467 substituir dentro de um operador de uma expressão. Por exemplo,
468 @code{(opsubst: false, subst (x^2, r, r+r[0]))}.
473 @defvr {Declaração} outative
474 @code{declare (f, outative)} diz ao simplificador do Maxima que factores
475 constantes no argumento de @code{f} podem ser puxados para fora.
479 Se @code{f} for uma função de uma única variável,
480 sempre que o simplificador encontrar @code{f} aplicada a um produto, os
481 factores que forem constantes nesse produto serão puxados para
482 fora. Por exemplo, @code{f(a*x)} simplificará para @code{a*f(x)} se
483 @code{a} for uma constante. Factores de constantes não at@^omicas
484 não serão puxados para fora.
486 Se @code{f} for uma função de 2 ou mais argumentos, a
487 colocação para fora é definida como no caso de
488 @code{sum} ou @code{integrate}, isto é, @code{f (a*g(x), x)} irá
489 simplificar para @code{a * f(g(x), x)} se @code{a} não depender de
493 @code{sum}, @code{integrate}, e @code{limit} são todas do tipo
499 @defvr {Declaração} posfun
500 @code{declare (f, posfun)} declara @code{f} como função
501 positiva. @code{is (f(x) > 0)} retorna @code{true}.
505 @deffn {Função} radcan (@var{expr})
506 Simplifica @var{expr}, que pode conter logaritmos,
507 exponenciais, e radicais, convertendo essa expressão numa forma
508 canónica sobre uma ampla classe de expressões e com uma dada
509 ordenação de variáveis; isto é, todas as formas
510 funcionalmente equivalentes são mapeadas numa única forma. Para uma
511 classe ampla de expressões, @code{radcan} produz uma forma regular.
512 Duas expressões equivalentes nessa classe não possuem
513 necessáriamente a mesma aparência, mas as suas diferenças podem
514 ser simplificadas por @code{radcan} para zero.
516 Para algumas expressões @code{radcan} demora muito tempo. Esse é o
517 custo de explorar as realções entre as componentes da expressão
518 para simplificar expoentes usando factorização e expansão em
521 @c %e_to_numlog NEEDS ITS OWN @defvar !!!
522 @c DOESN'T APPEAR TO AFFECT radcan !!!
523 Quando @code{%e_to_numlog} for @code{true}, @code{%e^(r*log(expr))}
524 simplifica para @code{expr^r} se @code{r} for um número racional.
526 Quando @code{radexpand} for @code{false}, certas
527 transformações são inibidas. @code{radcan (sqrt
528 (1-x))} permanece @code{sqrt (1-x)} e não é simplificada para
529 @code{%i sqrt (x-1)}. @code{radcan (sqrt (x^2 - 2*x + 11))} permanece
530 @code{sqrt (x^2 - 2*x + 1)} e não é simplificada para @code{x - 1}.
532 @c MERGE EXAMPLES INTO THIS FILE
533 @code{example (radcan)} mostra alguns exemplos.
537 @c NEEDS CLARIFICATION, EXAMPLES
538 @defvr {Variável de opção} radexpand
539 Valor por omissão: @code{true}
541 @code{radexpand} controla algumas simplificações de
544 Quando @code{radexpand} for @code{all}, todos os factores que forem
545 potências de ordem n, dentro de uma raiz de ordem n, serão puxados
546 para fora do radical. Por exemplo, se @code{radexpand} for @code{all},
547 @code{sqrt (16*x^2)} simplifica para @code{4*x}.
549 @c EXPRESS SIMPLIFICATON RULES IN GENERAL CASE, NOT SPECIAL CASE
550 Mais particularmente, considere @code{sqrt (x^2)}.
553 Se @code{radexpand} for @code{all} ou @code{assume (x > 0)} tiver sido
554 executado, @code{sqrt(x^2)} simplifica para @code{x}.
556 Se @code{radexpand} for @code{true} e @code{domain} for @code{real}
557 (valores usados por omissão), @code{sqrt(x^2)} simplifica para
560 Se @code{radexpand} for @code{false}, ou @code{radexpand} for
561 @code{true} e @code{domain} for @code{complex}, @code{sqrt(x^2)} não
565 @c CORRECT STATEMENT HERE ???
566 Note que, neste exemplo, @code{domain} somente interessa quando
567 @code{radexpand} for @code{true}.
571 @defvr {Variável de opção} radsubstflag
572 Valor por omissão: @code{false}
574 Se @code{radsubstflag} for @code{true}, permite a @code{ratsubst} fazer
575 substituições tais como @code{u} por @code{sqrt (x)} em
580 @c NEEDS CLARIFICATION, EXAMPLES
581 @defvr {Declaração} rassociative
582 @code{declare (g, rassociative)} diz ao simplificador do Maxima que
583 @code{g} é associativa à direita, isto é, @code{g(g(a, b), g(c, d))}
584 simplifica para @code{g(a, g(b, g(c, d)))}.
588 @c NEEDS CLARIFICATION, EXAMPLES
589 @deffn {Função} scsimp (@var{expr}, @var{rule_1}, ..., @var{rule_n})
590 Simplificação Sequêncial Comparativa (método devido
591 a Stoute). @code{scsimp} tenta simplificar @var{expr} conforme as
592 regras @var{rule_1}, ..., @var{rule_n}. Se uma expressão pequena for
593 obtida, o processo repete-se. De outra forma após todas as
594 simplificações serem tentadas, @code{scsimp} retorna a
597 @c MERGE EXAMPLES INTO THIS FILE
598 @code{example (scsimp)} mostra alguns exemplos.
602 @c NEEDS CLARIFICATION, EXAMPLES
603 @defvr {Variável de opção} simpsum
604 Valor por omissão: @code{false}
606 Quando @code{simpsum} for @code{true}, o resultado de um comando
607 @code{sum} é simplificado. Essa simplificação pode
608 algumas vezes produzir uma forma fechada. Se @code{simpsum} for
609 @code{false}, ou se a forma com apóstrofo @code{'sum} for usada, o
610 valor é uma forma substantiva aditiva que é uma
611 representação da notação sigma usada em
616 @c NEEDS CLARIFICATION, EXAMPLES
617 @deffn {Função} sumcontract (@var{expr})
618 Combina vários somatórios que possuem limites superiores e inferiores
619 que diferem por constantes. O resultado é uma expressão que contém
620 apenas um somatório mais todos os termos adicionais que tiveram de ser
621 extraídos para obter essa forma. @code{sumcontract}
622 combina todas as somas compatíveis e usa os indices de uma
623 das somas, se puder, ou tenta formar um índice razoável
624 se não poder usar nenhum dos que foram fornecidos.
626 @c WHEN IS intosum NECESSARY BEFORE sumcontract ??
627 Poderá ser necessário usar @code{intosum (@var{expr})} antes de
632 @defvr {Variável de opção} sumexpand
633 Valor por omissão: @code{false}
635 Quando @code{sumexpand} for @code{true}, produtos de somas e somas
636 exponeciadas simplificam para somas aninhadas.
638 Veja também @code{cauchysum}.
643 (%i1) sumexpand: true$
644 (%i2) sum (f (i), i, 0, m) * sum (g (j), j, 0, n);
648 (%o2) > > f(i1) g(i2)
652 (%i3) sum (f (i), i, 0, m)^2;
656 (%o3) > > f(i3) f(i4)
664 @defvr {Variável de opção} sumsplitfact
665 Valor por omissão: @code{true}
667 Quando @code{sumsplitfact} for @code{false},
668 @c "IS APPLIED" -- UNDER WHAT CIRCUMSTANCES EXACTLY ??
669 @code{minfactorial} é aplicado após @code{factcomb}.
673 @c NEEDS CLARIFICATION, EXAMPLES
674 @defvr {Declaração} symmetric
675 @code{declare (h, symmetric)} diz ao simplificador do Maxima que
676 @code{h} é uma função simétrica. Nomeadamente,
677 @code{h (x, z, y)} simplifica para @code{h (x, y, z)}.
679 @code{commutative} é sin@^onimo de @code{symmetric}.
684 @deffn {Função} unknown (@var{expr})
685 Retorna @code{true} se e somente se @var{expr} contém um operador ou
686 função não reconhecida pelo simplificador do Maxima.