2 @c versao pt_BR baseada no md5sum abaixo:
3 @c a5691c7e174af39fa0fc1f72e6697045 Simplification.texi
6 * Functions and Variables for Simplification::
9 @c -----------------------------------------------------------------------------
10 @node Functions and Variables for Simplification, , Simplification, Simplification
11 @section Functions and Variables for Simplification
12 @c -----------------------------------------------------------------------------
14 @c -----------------------------------------------------------------------------
16 @defvr {Propriedade} additive
18 Se @code{declare(f,additive)} tiver sido executado, ent@~{a}o:
20 (1) Se @code{f} tiver uma @'{u}nica vari@'{a}vel independente, sempre que o simplificador encontrar @code{f}
21 aplicada a uma soma, @code{f} ir@'{a} ser distribu@'{i}da sobre aquela soma. I.e.
22 @code{f(y+x)} ir@'{a} simplificar para @code{f(y)+f(x)}.
24 (2) Se @code{f} for uma fun@,{c}@~{a}o de 2 ou mais argumentos, aditividade @'{e} definida como
25 aditividade no primeiro argumento a @code{f}, como no caso de @code{sum} ou
26 @code{integrate}, i.e. @code{f(h(x)+g(x),x)} ir@'{a} simplificar para
27 @code{f(h(x),x)+f(g(x),x)}. Essa simplifica@,{c}@~{a}o n@~{a}o ocorre quando @code{f} for
28 aplicada a express@~{o}es da forma @code{sum(x[i],i,lower-limit,upper-limit)}.
34 @c declare (F3, additive);
40 (%i2) declare (F3, additive);
43 (%o3) F3(c) + F3(b) + F3(a)
47 @category{Operadores} @category{Declara@,{c}@~{o}es e infer@^{e}ncias}
51 @c -----------------------------------------------------------------------------
52 @anchor{antisymmetric}
53 @defvr {Propriedade} antisymmetric
55 Se @code{declare(h,antisymmetric)} for executado, isso diz ao simplificador que
56 @code{h} @'{e} antisim@'{e}trica. E.g. @code{h(x,z,y)} ir@'{a} simplificar para
57 @code{- h(x, y, z)}. Isto @'{e}, ir@'{a} fornecer (-1)^n vezes o resultado fornecido por
58 @code{symmetric} ou por @code{commutative}, onde @var{n} @'{e} o n@'{u}mero de trocas
59 de dois argumentos necess@'{a}rias para converter @code{h(x,z,y)} em @code{- h(x, y, z)}.
65 @c declare (S, symmetric);
69 @c declare (T, antisymmetric);
76 (%i2) declare (S, symmetric);
80 (%i4) S (a, c, e, d, b);
81 (%o4) S(a, b, c, d, e)
84 (%i6) declare (T, antisymmetric);
88 (%i8) T (a, c, e, d, b);
89 (%o8) T(a, b, c, d, e)
93 @category{Operadores} @category{Declara@,{c}@~{o}es e infer@^{e}ncias}
97 @c -----------------------------------------------------------------------------
98 @deffn {Fun@,{c}@~{a}o} combine (@var{expr})
100 Simplifica a soma @var{expr} combinando termos com o mesmo
101 denominador em um termo simples.
106 @c 1*f/2*b + 2*c/3*a + 3*f/4*b +c/5*b*a;
110 (%i1) 1*f/2*b + 2*c/3*a + 3*f/4*b +c/5*b*a;
112 (%o1) ----- + ----- + -----
115 75 b f + 4 (3 a b c + 10 a c)
116 (%o2) -----------------------------
121 @category{Express@~{o}es}
125 @c -----------------------------------------------------------------------------
127 @defvr {Propriedade} commutative
129 Se @code{declare(h, commutative)} for realizado, diz ao simplificador que
130 @code{h} @'{e} uma fun@,{c}@~{a}o comutativa. E.g. @code{h(x, z, y)} ir@'{a} simplificar para
131 @code{h(x, y, z)}. @'{E} o mesmo que @code{symmetric}.
137 @c S (a, b) + S (b, a);
138 @c declare (S, commutative);
140 @c S (a, b) + S (b, a);
141 @c S (a, c, e, d, b);
146 (%i2) S (a, b) + S (b, a);
147 (%o2) S(b, a) + S(a, b)
148 (%i3) declare (S, commutative);
152 (%i5) S (a, b) + S (b, a);
154 (%i6) S (a, c, e, d, b);
155 (%o6) S(a, b, c, d, e)
159 @category{Operadores} @category{Declara@,{c}@~{o}es e infer@^{e}ncias}
163 @c NEEDS CLARIFICATION, EXAMPLES
165 @c -----------------------------------------------------------------------------
167 @deffn {Fun@,{c}@~{a}o} demoivre (@var{expr})
168 @deffnx {Vari@'{a}vel de op@,{c}@~{a}o} demoivre
170 O comando @code{demoivre (expr)} converte uma express@~{a}o
171 sem ajustar a vari@'{a}vel global @code{demoivre}.
173 Quando a vari@'{a}vel @code{demoivre} for @code{true}, exponenciais complexar s@~{a}o
174 convertidas em express@~{o}es equivalentes em termos das fun@,{c}@~{o}es circulares:
175 @code{exp (a + b*%i)} simplifica para @code{%e^a * (cos(b) + %i*sin(b))}
176 se @code{b} for livre de @code{%i}. @code{a} e @code{b} n@~{a}o s@~{a}o expandidos.
178 O valor padr@~{a}o de @code{demoivre} @'{e} @code{false}.
180 A fun@,{c}@~{a}o @code{exponentialize} converte fun@,{c}@~{o}es hiperb@'{o}licas e circulares na forma
181 exponencial. As vari@'{a}veis de op@,{c}@~{a}o @code{demoivre} e @code{exponentialize} n@~{a}o podem ambas serem verdadeiras ao
185 @category{Vari@'{a}veis complexas} @category{Trigonometric functions} @category{Hyperbolic functions}
191 @c -----------------------------------------------------------------------------
192 @anchor{function_distrib}
193 @deffn {Fun@,{c}@~{a}o} distrib (@var{expr})
195 Distribui sobre momas e produtos. Difere de @code{expand} na medida em que somente
196 trabalha no n@'{i}vel mais alto da express@~{a}o, i.e., n@~{a}o @'{e} recursiva e @'{e} mais
197 r@'{a}pida que a @code{expand}. Difere da @code{multthru} na medida que expande
198 todas as somas no n@'{i}vel mais alto.
203 (%i1) distrib ((a+b) * (c+d));
204 (%o1) b d + a d + b c + a c
205 (%i2) multthru ((a+b) * (c+d));
206 (%o2) (b + a) d + (b + a) c
207 (%i3) distrib (1/((a+b) * (c+d)));
209 (%o3) ---------------
211 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
213 (%o4) ---------------------
214 b d + a d + b c + a c
218 @category{Express@~{o}es}
222 @c -----------------------------------------------------------------------------
223 @anchor{distribute_over}
224 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} distribute_over
225 Valor padr@~{a}o: @code{true}
227 A vari@'{a}vel de op@,{c}@~{a}o @code{distribute_over} controla a distributividade de fun@,{c}@~{o}es sobre cole@,{c}@~{o}es como listas,
228 matrizes, e equa@,{c}@~{o}es. No momento somente algumas fun@,{c}@~{o}es do m@'{a}xima possuem essa
229 propriedade. @'{E} poss@'{i}vel buscar por essa propriedade com o comando
232 A distributividade de fun@,{c}@~{o}es @'{e} desligada, ao se ajustar @code{distribute_over}
233 para o valor @code{false}.
237 A fun@,{c}@~{a}o @code{sin} @'{e} distributiva sobre uma lista:
243 (%i1) sin([x,1,1.0]);
244 (%o1) [sin(x), sin(1), .8414709848078965]
247 A @code{mod} @'{e} uma fun@,{c}@~{a}o com dois argumentos que @'{e} distributiva sobre listas. Distributividade sobre
248 lista sobre lista @'{e} tamb@'{e}m poss@'{i}vel:
251 @c mod([x,11,2*a],10);
252 @c mod([[x,y,z],11,2*a],10);
255 (%i2) mod([x,11,2*a],10);
256 (%o2) [mod(x, 10), 1, 2 mod(a, 5)]
257 (%i3) mod([[x,y,z],11,2*a],10);
258 (%o3) [[mod(x, 10), mod(y, 10), mod(z, 10)], 1, 2 mod(a, 5)]
261 A distributividade da fun@,{c}@~{a}o @code{floor} sobre uma matriz e uma equa@,{c}@~{a}o:
264 @c floor(matrix([a,b],[c,d]));
268 (%i4) floor(matrix([a,b],[c,d]));
269 [ floor(a) floor(b) ]
271 [ floor(c) floor(d) ]
273 (%o5) floor(a) = floor(b)
276 Fun@,{c}@~{o}es com mais que um argumento distribuem sobre quaisquer dos argumentos ou sobre todos os
280 @c expintegral_e([1,2],[x,y]);
283 (%i6) expintegral_e([1,2],[x,y]);
284 (%o6) [[expintegral_e(1, x), expintegral_e(1, y)],
285 [expintegral_e(2, x), expintegral_e(2, y)]]
288 Verificar se uma fun@,{c}@~{a}o tem a propriedade @code{distribute_over}:
294 (%i7) properties(abs);
295 (%o7) [integral, distributes over bags, noun, rule, gradef]
298 O mapeamento de fun@,{c}@~{o}es @'{e} desligado, ao se ajustar @code{distribute_over}
299 para o valor @code{false}.
304 @c distribute_over : not distribute_over;
307 (%i1) distribute_over;
309 (%i2) sin([x,1,1.0]);
310 (%o2) [sin(x), sin(1), 0.8414709848078965]
311 (%i3) distribute_over : not distribute_over;
313 (%i4) sin([x,1,1.0]);
314 (%o4) sin([x, 1, 1.0])
319 @category{Simplification flags and variables}
323 @c -----------------------------------------------------------------------------
325 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} domain
326 Valor padr@~{a}o: @code{real}
328 Quando @code{domain} for ajustado para @code{complex}, @code{sqrt (x^2)} ir@'{a} retornar
329 @code{sqrt (x^2)} ao inv@'{e}s de @code{abs(x)}.
331 @c PRESERVE EDITORIAL COMMENT -- MAY HAVE SOME SIGNIFICANCE NOT YET UNDERSTOOD !!!
332 @c The notion of a "domain" of simplification is still in its infancy,
333 @c and controls little more than this at the moment.
336 @category{Simplification flags and variables}
340 @c -----------------------------------------------------------------------------
343 @defvr {Propriedade} evenfun
344 @defvrx {Propriedade} oddfun
346 O comando @code{declare(f, evenfun)} ou o comando @code{declare(f, oddfun)} diz ao Maxima para reconhecer
347 a fun@,{c}@~{a}o @code{f} como uma fun@,{c}@~{a}o par ou uma fun@,{c}@~{a}o @'{i}mpar.
352 (%i1) o (- x) + o (x);
354 (%i2) declare (o, oddfun);
356 (%i3) o (- x) + o (x);
358 (%i4) e (- x) - e (x);
360 (%i5) declare (e, evenfun);
362 (%i6) e (- x) - e (x);
367 @c -----------------------------------------------------------------------------
369 @deffn {Fun@,{c}@~{a}o} expand (@var{expr})
370 @deffnx {Fun@,{c}@~{a}o} expand (@var{expr}, @var{p}, @var{n})
372 Expande a express@~{a}o @var{expr}.
373 Produto de somas @footnote{Nota do tradutor: @math{(a+b)(c+d)}.} e somas exponeciadas @footnote{Nota do tradutor: @math{(a+b)^x}.} s@~{a}o
374 expandidas, numeradores de express@~{o}es racionais que forem somas s@~{a}o
375 quebrados em seus termos respectivos, e multiplica@,{c}@~{a}o (comutativa
376 e n@~{a}o comutativa) s@~{a}o distribu@'{i}das sobre a adi@,{c}@~{a}o em todos os n@'{i}veis de
379 Para polin@^{o}mios se deve usar normalmente @code{ratexpand} que usa um
380 algoritmo mais eficiente.
382 As vari@'{a}veis de op@,{c}@~{a}o @code{maxnegex} e @code{maxposex} controlam o expoente m@'{a}ximo negativo o
383 expoente m@'{a}ximo positivo, respectivamente, que ir@'{a} expandir.
385 O comando @code{expand (@var{expr}, @var{p}, @var{n})} expande @var{expr},
386 usando @var{p} para @code{maxposex} e @var{n} para @code{maxnegex}.
387 @'{E} @'{u}til com o objetivo de expandir partes mas n@~{a}o toda express@~{a}o.
389 A vari@'{a}vel de op@,{c}@~{a}o @code{expon} - o expoente da maior pot@^{e}ncia com expoente negativo que @'{e}
390 automaticamente expandida (independente de chamadas a @code{expand}) @footnote{Nota do tradutor: essa expans@~{a}o @'{e} a que ocorre imediatamente quando voc@^{e} encerra com um enter a entrada de dados nos %i1, %i2, ..., %in.}. Por exemplo
391 se @code{expon} for 4 ent@~{a}o @code{(x+1)^(-5)} n@~{a}o ser@'{a} automaticamente expandido.
393 A vari@'{a}vel de op@,{c}@~{a}o @code{expop} - o maior expoente positivo que @'{e} automaticamente expandido @footnote{Nota do tradutor: @'{e} o mesmo caso da @code{expon}.}.
394 A express@~{a}o @code{(x+1)^3}, ao ser digitada, ir@'{a} ser automaticamente expandida somente se
395 @code{expop} for maior que ou igual a 3. Se for desejado ter
396 @code{(x+1)^n} expandido onde @code{n} @'{e} maior que @code{expop} ent@~{a}o
397 a execu@,{c}@~{a}o de @code{expand ((x+1)^n)} funcionar@'{a} somente se @code{maxposex} n@~{a}o for
400 O comando @code{expand(expr, 0, 0)} faz com que ocorra uma resimplifica@,{c}@~{a}o de @code{expr}. A @code{expr}
401 n@~{a}o @'{e} reavaliada. Diferentemente de @code{ev(expr, noeval)} uma representa@,{c}@~{a}o
402 especial (e. g. uma CRE @footnote{Nota do tradutor: em Introdu@,{c}@~{a}o a Polin@^{o}mios existe uma boa explana@,{c}@~{a}o sobre o que @'{e} uma CRE.}) @'{e} removida. Veja tamb@'{e}m @code{ev}.
404 O sinalizador @code{expand} usado com @code{ev} faz com que ocorra expans@~{a}o.
406 O arquivo @file{share/simplification/facexp.mac}
407 @c I should really use a macro which expands to something like
408 @c @uref{file://...,,simplification/facexp.mac}. But texi2html
409 @c currently supports @uref only with one argument.
410 @c Worse, the `file:' scheme is OS and browser dependent.
411 cont@'{e}m muitas fun@,{c}@~{o}es relacionadas (particularmente @code{facsum},
412 @code{factorfacsum} e @code{collectterms}, que s@~{a}o chamadas automaticamente) e vari@'{a}veis
413 (@code{nextlayerfactor} e @code{facsum_combine}) que fornecem ao usu@'{a}rio com
414 a habilidade para estruturar express@~{o}es por expans@~{a}o controlada.
415 @c MERGE share/simplification/facexp.usg INTO THIS FILE OR CREATE NEW FILE facexp.texi
416 Descri@,{c}@~{o}es breves de fun@,{c}@~{o}es est@~{a}o dispon@'{i}veis em @file{simplification/facexp.usg}.
417 Uma demonsta@,{c}@~{a}o de como usar est@'{a} dispon@'{i}vel fazendo @code{demo("facexp")}.
422 @c expr:(x+1)^2*(y+1)^3;
425 @c expr:(x+1)^-2*(y+1)^3;
430 (%i1) expr:(x+1)^2*(y+1)^3;
432 (%o1) (x + 1) (y + 1)
435 (%o2) x y + 2 x y + y + 3 x y + 6 x y + 3 y + 3 x y
437 + 6 x y + 3 y + x + 2 x + 1
438 (%i3) expand(expr,2);
440 (%o3) x (y + 1) + 2 x (y + 1) + (y + 1)
441 (%i4) expr:(x+1)^-2*(y+1)^3;
450 (%o5) ------------ + ------------ + ------------ + ------------
452 x + 2 x + 1 x + 2 x + 1 x + 2 x + 1 x + 2 x + 1
453 (%i6) expand(expr,2,2);
463 Resimplificar uma express@~{a}o sem expans@~{a}o:
466 @c expr:(1+x)^2*sin(x);
467 @c exponentialize:true;
471 (%i7) expr:(1+x)^2*sin(x);
474 (%i8) exponentialize:true;
476 (%i9) expand(expr,0,0);
478 %i (x + 1) (%e - %e )
479 (%o9) - -------------------------------
484 @category{Express@~{o}es}
490 @c -----------------------------------------------------------------------------
492 @deffn {Fun@,{c}@~{a}o} expandwrt (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
494 Expande express@~{o}es @code{expr} com rela@,{c}@~{a}o @`{a}s
495 vari@'{a}veis @var{x_1}, @dots{}, @var{x_n}.
496 Todos os produtos envolvendo as vari@'{a}veis aparecem explicitamente. A forma retornada
497 ir@'{a} ser livre de produtos de somas que n@~{a}o forem livreas das
498 vari@'{a}veis. As @var{x_1}, @dots{}, @var{x_n}
499 podem ser vari@'{a}veis, operadores, ou express@~{o}es.
501 Por padr@~{a}o, denominadores n@~{a}o s@~{a}o expandidos, mas isso pode ser controlado por
502 meio do comutador @code{expandwrt_denom}.
504 Essa fun@,{c}@~{a}o @'{e} chamada automaticamente a partir de
505 @file{simplification/stopex.mac}.
508 @category{Express@~{o}es}
512 @c -----------------------------------------------------------------------------
513 @anchor{expandwert_denom}
514 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} expandwrt_denom
515 Valor padr@~{a}o: @code{false}
517 A vari@'{a}vel de op@,{c}@~{a}o @code{expandwrt_denom} controla o tratamento de express@~{o}es
518 racionais por @code{expandwrt}. Se @code{true}, ambos o numerador e o
519 denominador da express@~{a}o ir@~{a}o ser expandidos conforme os
520 argumentos de @code{expandwrt}, mas se @code{expandwrt_denom} for @code{false},
521 ent@~{a}o somente o numerador ir@'{a} ser expandido usando @code{expandwrt}.
524 @category{Express@~{o}es}
528 @c NEEDS A STAND-ALONE DESCRIPTION (NOT "IS SIMILAR TO")
531 @c -----------------------------------------------------------------------------
532 @anchor{expandwrt_factored}
533 @deffn {Fun@,{c}@~{a}o} expandwrt_factored (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
535 @'{E} similar a @code{expandwrt}, mas trata express@~{o}es que s@~{a}o produtos
536 um pouco diferentemente. A fun@,{c}@~{a}o @code{expandwrt_factored} expande somente os fatores de
537 @code{expr} que possuem as vari@'{a}veis @var{x_1}, @dots{}, @var{x_n}.
539 @c NOT SURE WHY WE SHOULD MENTION THIS HERE
540 Essa fun@,{c}@~{a}o @'{e} chamada automaticamente a partir de @file{simplification/stopex.mac}.
543 @category{Express@~{o}es}
547 @c -----------------------------------------------------------------------------
549 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} expon
552 A vari@'{a}vel de op@,{c}@~{a}o @code{expon} @'{e} o expoente da maior pot@^{e}ncia de expoente negativo que
553 @'{e} automaticamente expandida (independente de chamadas a @code{expand}). Por
554 exemplo, se @code{expon} for 4 ent@~{a}o @code{(x+1)^(-5)} n@~{a}o ir@'{a} ser automaticamente
558 @category{Express@~{o}es}
562 @c -----------------------------------------------------------------------------
563 @anchor{exponentialize}
564 @deffn {Fun@,{c}@~{a}o} exponentialize (@var{expr})
565 @deffnx {Vari@'{a}vel de op@,{c}@~{a}o} exponentialize
567 A fun@,{c}@~{a}o @code{exponentialize (expr)} converte
568 fun@,{c}@~{o}es circulares e hiperb@'{o}licas em @var{expr} para exponenciais,
569 sem ajustar a vari@'{a}vel global @code{exponentialize}.
571 Quando a vari@'{a}vel de op@,{c}@~{a}o @code{exponentialize} for @code{true},
572 todas as fun@,{c}@~{o}es circulares e hiperb@'{o}licas s@~{a}o convertidas para a forma exponencial.
573 O valor padr@~{a}o de @code{exponentialize} @'{e} @code{false}.
575 A fun@,{c}@~{a}o @code{demoivre} converts complex exponentials into circular functions.
576 As vari@'{a}veis de op@,{c}@~{a}o @code{exponentialize} e @code{demoivre} n@~{a}o podem
577 ambas serem @code{true} ao mesmo tempo.
580 @category{Vari@'{a}veis complexas} @category{Trigonometric functions} @category{Hyperbolic functions}
584 @c NEEDS CLARIFICATION
587 @c -----------------------------------------------------------------------------
589 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} expop
592 A vari@'{a}vel de op@,{c}@~{a}o @code{expop} @'{e} o maior expoente positivo que @'{e} automaticamente expandido.
593 Dessa forma @code{(x + 1)^3}, quando digitado, ir@'{a} ser automaticamente expandido somente se
594 @code{expop} for maior que ou igual a 3. Se for desejado ter
595 @code{(x + 1)^n} expandido onde @code{n} @'{e} maior que @code{expop} ent@~{a}o
596 executando @code{expand ((x + 1)^n)} ir@'{a} funcionar somente se @code{maxposex} n@~{a}o for
600 @category{Express@~{o}es}
604 @c NEEDS CLARIFICATION, EXAMPLES
606 @c -----------------------------------------------------------------------------
607 @anchor{lassociative}
608 @defvr {Propriedade} lassociative
610 O comando @code{declare (g, lassociative)} diz ao simplificador do Maxima que @code{g} @'{e}
611 associativa @`{a} esquerda. E.g., @code{g (g (a, b), g (c, d))} ir@'{a} simplificar para
612 @code{g (g (g (a, b), c), d)}.
615 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Operadores} @category{Simplification}
619 @c NEEDS CLARIFICATION, EXAMPLES
620 @c WHAT'S UP WITH THE QUOTE MARKS ??
622 @c -----------------------------------------------------------------------------
624 @defvr {Propriedade} linear
626 Uma das propriedades de operador do Maxima. Para uma fun@,{c}@~{a}o @code{f} de uma @'{u}nica vari@'{a}vel
627 declarada linear, "expans@~{a}o" de @code{f(x + y)} retorna @code{f(x) + f(y)} e
628 @code{f(a*x)} retorna @code{a*f(x)} acontecendo
629 onde @code{a} tenha sido declarado "constant". Para fun@,{c}@~{o}es de dois ou mais argumentos,
630 "linearidade" @'{e} definida para se comportar como em @code{sum} ou @code{integrate},
631 i.e., @code{f (a*x + b, x)} retorna @code{a*f(x,x) + b*f(1,x)}
632 para @code{a} e @code{b} independente de @code{x}.
637 @c declare (f, linear);
639 @c declare (a, constant);
643 (%i1) declare (f, linear);
647 (%i3) declare (a, constant);
653 A propriedade @code{linear} @'{e} equivalente a @code{additive} e @code{outative}.
654 Veja tamb@'{e}m @code{opproperties}.
659 @c 'sum (F(k) + G(k), k, 1, inf);
660 @c declare (nounify (sum), linear);
661 @c 'sum (F(k) + G(k), k, 1, inf);
664 (%i1) 'sum (F(k) + G(k), k, 1, inf);
668 (%o1) > (G(k) + F(k))
672 (%i2) declare (nounify (sum), linear);
674 (%i3) 'sum (F(k) + G(k), k, 1, inf);
679 (%o3) > G(k) + > F(k)
687 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Operadores} @category{Simplification}
693 @c -----------------------------------------------------------------------------
695 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} maxnegex
696 Valor padr@~{a}o: 1000
698 A vari@'{a}vel de op@,{c}@~{a}o @code{maxnegex} @'{e} o maior expoente negativo que ser@'{a}
699 expandido pelo comando @code{expand} (veja tamb@'{e}m @code{maxposex}).
702 @category{Express@~{o}es}
708 @c -----------------------------------------------------------------------------
710 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} maxposex
711 Valor padr@~{a}o: 1000
713 A vari@'{a}vel de op@,{c}@~{a}o @code{maxposex} @'{e} o maior expoente que ser@'{a}
714 expandido com o comando @code{expand} (veja tamb@'{e}m @code{maxnegex}).
717 @category{Express@~{o}es}
723 @c -----------------------------------------------------------------------------
724 @anchor{multiplicative}
725 @defvr {Propriedade} multiplicative
727 O comando @code{declare(f, multiplicative)} diz ao simplificador do Maxima que @code{f}
728 @'{e} multiplicativa.
732 Se @code{f} for uma fun@,{c}@~{a}o de uma @'{u}nica vari@'{a}vel, sempre que o simplificador encontra @code{f} aplicada
733 a um produto, @code{f} distribui-se sobre aquele produto. E.g., @code{f(x*y)}
734 simplifica para @code{f(x)*f(y)}.
736 Se @code{f} for uma fun@,{c}@~{a}o de dois ou mais argumentos, a multiplicatividade @'{e}
737 definida como multiplicatividade no primeiro argumento para @code{f}, e.g.,
738 @code{f (g(x) * h(x), x)} simplifies to @code{f (g(x) ,x) * f (h(x), x)}.
741 Essa simplifica@,{c}@~{a}o n@~{a}o ocorre quando @code{f} for aplicada a express@~{o}es da
742 forma @code{product (x[i], i, m, n)}.
748 @c declare (F2, multiplicative);
752 (%i1) F2 (a * b * c);
754 (%i2) declare (F2, multiplicative);
756 (%i3) F2 (a * b * c);
757 (%o3) F2(a) F2(b) F2(c)
761 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Express@~{o}es} @category{Simplification}
767 @c -----------------------------------------------------------------------------
769 @deffn {Fun@,{c}@~{a}o} multthru (@var{expr})
770 @deffnx {Fun@,{c}@~{a}o} multthru (@var{expr_1}, @var{expr_2})
772 Multiplica um fator (que pode ser uma soma) de @var{expr} pelos outros fatores
773 de @var{expr}. Isto @'{e}, @var{expr} @'{e} @code{@var{f_1} @var{f_2} ... @var{f_n}}
774 onde ao menos um fator, digamos @var{f_i}, @'{e} uma soma de termos. Cada termo daquela
775 soma @'{e} multiplicado pelos outros fatores no produto. (Explicitamente todos os
776 fatores exceto @var{f_i}). A fun@,{c}@~{a}o @code{multthru} n@~{a}o expande somas exponenciadas.
777 Essa fun@,{c}@~{a}o @'{e} o caminho mais r@'{a}pido para distribuir produtos (comutativos ou
778 n@~{a}o) sobre somas. Uma vez que quocientes s@~{a}o representados como produtos
779 @code{multthru} pode ser usada para dividir somas por produtos tamb@'{e}m.
781 O comando @code{multthru (@var{expr_1}, @var{expr_2})} multiplica cada termo em
782 @var{expr_2} (que deve ser uma soma ou uma equa@,{c}@~{a}o) por @var{expr_1}. Se
783 @var{expr_1} n@~{a}o for uma soma ent@~{a}o essa forma @'{e} equivalente a
784 @code{multthru (@var{expr_1}*@var{expr_2})}.
787 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
789 (%o1) - ----- + -------- - --------
792 (%i2) multthru ((x-y)^3, %);
794 (%o2) - (x - y) + x (x - y) - f(x)
797 (%o3) - y + x y - f(x)
798 (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
800 (b + a) s + 2 a b s + a b
801 (%o4) ------------------------------
804 (%i5) multthru (%); /* note that this does not expand (b+a)^10 */
807 (%o5) - + --- + ---------
810 (%i6) multthru (a.(b+c.(d+e)+f));
811 (%o6) a . f + a . c . (e + d) + a . b
812 (%i7) expand (a.(b+c.(d+e)+f));
813 (%o7) a . f + a . c . e + a . c . d + a . b
817 @category{Express@~{o}es}
821 @c -----------------------------------------------------------------------------
822 @anchor{property_nary}
823 @defvr {Propriedade} nary
825 O comando @code{declare(f, nary)} diz ao Maxima para reconhecer a fun@,{c}@~{a}o @code{f} como uma
826 fun@,{c}@~{a}o en@'{a}ria @footnote{Nota do tradutor: uma fun@,{c}@~{a}o en@'{a}ria @'{e} uma fun@,{c}@~{a}o que tem qualquer n@'{u}mero ``n'' de argumentos.}.
828 A declara@,{c}@~{a}o @code{nary} n@~{a}o @'{e} o mesmo que chamar a
829 fun@,{c}@~{a}o @mxref{function_nary, nary}. O @'{u}nico efeito de
830 @code{declare(f, nary)} @'{e} instruir o simplificador do Maxima a melhorar express@~{o}es
831 aninhadas, por exemplo, para simplificar @code{foo(x, foo(y, z))} em
832 @code{foo(x, y, z)}. Veja tamb@'{e}m @mrefdot{declare}
837 (%i1) H (H (a, b), H (c, H (d, e)));
838 (%o1) H(H(a, b), H(c, H(d, e)))
839 (%i2) declare (H, nary);
841 (%i3) H (H (a, b), H (c, H (d, e)));
842 (%o3) H(a, b, c, d, e)
846 @c NEEDS CLARIFICATION, EXAMPLES
848 @c -----------------------------------------------------------------------------
850 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} negdistrib
851 Valor padr@~{a}o: @code{true}
853 Quando @code{negdistrib} for @code{true}, -1 distribui sobre uma express@~{a}o.
854 E.g., @code{-(x + y)} torna-se @code{- y - x}. Ajustando a @code{negdistrib} para @code{false}
855 permitir@'{a} @code{- (x + y)} to be displayed like that. This is sometimes useful
856 but be very careful: like the @code{simp} flag, this is one flag you do not
857 want to set to @code{false} as a matter of course or necessarily for other
858 than local use in your Maxima.
865 @c negdistrib : not negdistrib ;
873 (%i3) negdistrib : not negdistrib ;
880 @category{Simplification flags and variables}
884 @c -----------------------------------------------------------------------------
885 @anchor{opproperties}
886 @defvr {Vari@'{a}vel de sistema} opproperties
888 A vari@'{a}vel de sistema @code{opproperties} cont@'{e}m a lista das propriedades de operador especial recognized
889 by the Maxima simplifier:
898 (%o1) [linear, additive, multiplicative, outative, evenfun, oddfun,
899 commutative, symmetric, antisymmetric, nary, lassociative, rassociative]
903 @category{Vari@'{a}veis globais} @category{Operadores}
909 @c -----------------------------------------------------------------------------
911 @defvr {Propriedade} outative
913 O comando @code{declare(f, outative)} diz ao simplificador do Maxima que fatores constantes
914 no argumento de @code{f} podem ser retirado pra fora.
918 Se @code{f} for de uma @'{u}nica vari@'{a}vel, sempre que o simplificador encontrar @code{f} aplicada
919 a um produto, aquele produto ser@'{a} particionado em fatores que s@~{a}o constantes
920 e fatore que n@~{a}o s@~{a}o constantes e al@'{e}m disso os fatores que s@~{a}o constantes ser@~{a}o puxados para fora da @code{f}. E.g.,
921 @code{f(a*x)} simplificar@'{a} para @code{a*f(x)} onde @code{a} @'{e} uma constante.
922 Fatores constantes n@~{a}o at@^{o}micos permanecer@~{a}o intocados em seus locais de or@'{i}gem.
924 Se @code{f} for uma fun@,{c}@~{a}o de dois ou mais argumentos, outativity @footnote{Nota do tradutor: linearidade ou homogeneidade de grau 1.} @'{e} definida como no
925 caso de @code{sum} ou @code{integrate}, i.e., @code{f (a*g(x), x)} simplificar@'{a}
926 para @code{a * f(g(x), x)} para @code{a} independente de @code{x}.
929 As fun@,{c}@~{o}es @code{sum}, @code{integrate}, e @code{limit} s@~{a}o todas @code{outative}.
935 @c declare (F1, outative);
937 @c declare (zz, constant);
943 (%i2) declare (F1, outative);
947 (%i4) declare (zz, constant);
954 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Operadores}
958 @c -----------------------------------------------------------------------------
960 @deffn {Fun@,{c}@~{a}o} radcan (@var{expr})
962 Simplifica @var{expr}, que pode conter logar@'{i}tmos, exponenciais, e radicais,
963 convertendo @var{expr} em uma forma que @'{e} can@^{o}nica sobre uma larga classe de express@~{o}es
964 e @'{e} tamb@'{e}m can@^{o}nica em uma dada ordena@,{c}@~{a}o de vari@'{a}veis; isto @'{e}, todas as formas funcionalmente equivalentes a @var{expr}
965 s@~{a}o mapeadas em uma forma @'{u}nica. Para uma, at@'{e} certo ponto, larga classe de express@~{o}es,
966 @code{radcan} produz uma forma regular. Duas express@~{o}es equivalentes nessa classe
967 n@~{a}o necess@'{a}riamente possuem a mesma apar@^{e}ncia, mas sua diferen@,{c}a pode ser
968 simplificada para zero por @code{radcan}.
970 Para algumas express@~{o}es @code{radcan} consome bastante tempo. @'{E} o custo de
971 explorar certas rela@,{c}@~{o}es em torno dos componentes da express@~{a}o para
972 simplifica@,{c}@~{o}es baseadas em fatora@,{c}@~{a}o e expans@~{a}o de expoentes de fra@,{c}@~{o}es parciais.
974 @c %e_to_numlog NEEDS ITS OWN @defvar !!!
976 @c %e_to_numlog HAS NO EFFECT ON RADCAN. RADCAN ALWAYS SIMPLIFIES
977 @c exp(a*log(x)) --> x^a. Commenting the following out. 11/2009
978 @c When @code{%e_to_numlog} is @code{true}, @code{%e^(r*log(expr))} simplifies
979 @c to @code{expr^r} if @code{r} is a rational number.
981 @c RADEXPAND CONTROLS THE SIMPLIFICATION OF THE POWER FUNCTION, E.G.
982 @c (x*y)^a --> x^a*y^a AND (x^a)^b --> x^(a*b), IF RADEXPAND HAS THE VALUE 'ALL.
983 @c THE VALUE OF RADEXPAND HAS NO EFFECT ON RADCAN. RADCAN ALWAYS SIMPLIFIES
984 @c THE ABOVE EXPRESSIONS. COMMENTING THE FOLLOWING OUT. 11/2009
985 @c When @code{radexpand} is @code{false}, certain transformations are inhibited.
986 @c @code{radcan (sqrt (1-x))} remains @code{sqrt (1-x)} and is not simplified
987 @c to @code{%i sqrt (x-1)}. @code{radcan (sqrt (x^2 - 2*x + 1))} remains
988 @c @code{sqrt (x^2 - 2*x + 1)} and is not simplified to @code{x - 1}.
993 @c radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
994 @c radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
995 @c radcan((%e^x-1)/(1+%e^(x/2)));
998 (%i1) radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
1002 (%i2) radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
1005 (%i3) radcan((%e^x-1)/(1+%e^(x/2)));
1011 @category{Simplification functions}
1015 @c NEEDS CLARIFICATION, EXAMPLES
1017 @c -----------------------------------------------------------------------------
1019 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} radexpand
1020 Valor padr@~{a}o: @code{true}
1022 A vari@'{a}vel de op@,{c}@~{a}o @code{radexpand} controla algumas simplifica@,{c}@~{o}es de radicais.
1024 Qnado @code{radexpand} for @code{all}, faz com que ra@'{i}zes en@'{e}simas de fatores de um produto
1025 que s@~{a}o expoentes de n sejam colocados fora do radical. E.g. se
1026 @code{radexpand} for @code{all}, @code{sqrt (16*x^2)} simplifica para @code{4*x}.
1028 @c EXPRESS SIMPLIFICATON RULES IN GENERAL CASE, NOT SPECIAL CASE
1029 Mais particularmente, considere @code{sqrt (x^2)}.
1032 Se @code{radexpand} for @code{all} ou @code{assume (x > 0)} tiver sido executado,
1033 @code{sqrt(x^2)} simplifica para @code{x}.
1035 Se @code{radexpand} for @code{true} e @code{domain} for @code{real}
1036 (o padr@~{a}o), @code{sqrt(x^2)} simplifica para @code{abs(x)}.
1038 Se @code{radexpand} for @code{false}, ou @code{radexpand} for @code{true} 4
1039 @code{domain} for @code{complex}, @code{sqrt(x^2)} n@~{a}o @'{e} simplificado.
1042 @c CORRECT STATEMENT HERE ???
1043 Note que @code{domain} somente importa quando @code{radexpand} for @code{true}.
1046 @category{Simplification flags and variables}
1050 @c NEEDS CLARIFICATION, EXAMPLES
1052 @c -----------------------------------------------------------------------------
1053 @anchor{rassociative}
1054 @defvr {Propriedade} rassociative
1056 O comando @code{declare (g, rassociative)} dis ao simplificador
1057 do Maxima que @code{g} @'{e} associativa @`{a} direita. E.g.,
1058 @code{g(g(a, b), g(c, d))} simplifica para @code{g(a, g(b, g(c, d)))}.
1061 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Operadores}
1065 @c NEEDS CLARIFICATION, EXAMPLES
1067 @c -----------------------------------------------------------------------------
1069 @deffn {Fun@,{c}@~{a}o} scsimp (@var{expr}, @var{rule_1}, @dots{}, @var{rule_n})
1071 Simplifica@,{c}@~{a}o Comparativa Sequencial (m@'{e}todo devido a Stoute).
1072 A fun@,{c}@~{a}o @code{scsimp} tenta simplificar @var{expr}
1073 conforme as regras @var{rule_1}, @dots{}, @var{rule_n}.
1074 Se uma pequena express@~{a}o for obtida, o processo se repete. De outra forma, ap@'{o}s todas
1075 as simplifica@,{c}@~{o}es serem tentadas, a fun@,{c}@~{a}o @code{scsimp} retorna a express@~{a}o original.
1077 @c MERGE EXAMPLES INTO THIS FILE
1078 O comando @code{example (scsimp)} mostra alguns exemplos.
1081 @category{Simplification functions}
1085 @c -----------------------------------------------------------------------------
1087 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} simp
1088 Valor padr@~{a}o: @code{true}
1090 A vari@'{a}vel de op@,{c}@~{a}o @code{simp} habilita simplifica@,{c}@~{a}o. @'{E} o padr@~{a}o. A vari@'{a}vel de op@,{c}@~{a}o @code{simp} @'{e} tamb@'{e}m
1091 uma @code{evflag}, que @'{e} reconhecida pela fun@,{c}@~{a}o @code{ev}. Veja @code{ev}.
1093 Quando @code{simp} for usada como uma @code{evflag} com um valor @code{false}, a
1094 simplifica@,{c}@~{a}o @'{e} suprimida somente durante a fase de avalia@,{c}@~{a}o de uma express@~{a}o.
1095 O sinalizador n@~{a}o pode suprimir a simplifica@,{c}@~{a}o que segue a fase de
1100 A simplifica@,{c}@~{a}o @'{e} desabilitada globalmente. A express@~{a}o @code{sin(1.0)} n@~{a}o
1101 @'{e} simplificada para seu valor num@'{e}rico. O sinalizador @code{simp} habilita a
1102 simplifica@,{c}@~{a}o.
1114 (%i3) sin(1.0),simp;
1115 (%o3) .8414709848078965
1118 A simplifica@,{c}@~{a}o @'{e} ligada novamente. O sinalizador @code{simp} n@~{a}o pode suprimir
1119 a simplifica@,{c}@~{a}o completamente. A sa@'{i}da mostra uma express@~{a}o simplificada, mas
1120 a vari@'{a}vel @code{x} tem uma express@~{a}o n@~{a}o simplificada como um valor, devido a
1121 atribui@,{c}@~{a}o ter ocorrido durante a fase de avalia@,{c}@~{a}o da express@~{a}o.
1125 @c x:sin(1.0),simp:false;
1131 (%i5) x:sin(1.0),simp:false;
1132 (%o5) .8414709848078965
1138 @category{Sinalizadores de avalia@,{c}@~{a}o}
1142 @c NEEDS CLARIFICATION, EXAMPLES
1144 @c -----------------------------------------------------------------------------
1146 @defvr {Propriedade} symmetric
1148 O comando @code{declare (h, symmetric)} diz ao simplificador do
1149 Maxima que @code{h} @'{e} uma fun@,{c}@~{a}o sim@'{e}trica. E.g., @code{h (x, z, y)}
1150 simplifies to @code{h (x, y, z)}.
1152 A propriedade @code{commutative} @'{e} sin@^{o}nimo de @code{symmetric}.
1155 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Operadores}
1159 @c -----------------------------------------------------------------------------
1161 @deffn {Fun@,{c}@~{a}o} xthru (@var{expr})
1163 Combina todos os termos de @var{expr} (que deve ser uma soma) sobre um denominador
1164 comum sem expandir produtos e e somas exponenciadas como @code{ratsimp}
1165 faz. A fun@,{c}@~{a}o @code{xthru} cancela fatores comuns no numerador e no denominador de
1166 express@~{o}es racionais mas somente se os fatores forem expl@'{i}citos.
1168 @c REPHRASE IN NEUTRAL TONE (GET RID OF "IT IS BETTER")
1169 Algumas vezes @'{e} melhor usar @code{xthru} antes de @code{ratsimp} em uma
1170 express@~{a}o com o objetivo de fazer com que fatores expl@'{i}citos de mdc do numerador e do
1171 denominador sejam cancelados simplificando dessa forma a express@~{a}o na qual ser@'{a} usada a
1177 @c ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
1181 (%i1) ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
1185 (%o1) --------- + --------------- - ---------
1187 (y + x) (y + x) (y + x)
1198 @category{Express@~{o}es}