1 @c /Expressions.texi/1.52/Sun Mar 11 02:32:14 2007/-ko/
3 * Introdução a Expressões::
5 * Substantivos e Verbos::
7 * Sequências de caracteres::
10 * Definições para Expressões::
13 @node Introdução a Expressões, Complexo, Expressões, Expressões
14 @section Introdução a Expressões
16 Existe um conjunto de palavras reservadas que não pode ser usado como
17 nome de variável. Seu uso pode causar um possível erro crítico de sintaxe.
20 integrate next from diff
24 unless product while thru
28 Muitas coisas em Maxima são expressões. Uma sequência de expressões
29 pode ser feita dentro de uma expressão maior através da separação dessas através de vírgulas e
30 colocando parêntesis em torno dela. Isso é similar ao @b{C}
31 @i{expressão com vírgula}.
35 (%i2) (x: x+1, x: x^2);
37 (%i3) (if (x > 17) then 2 else 4);
39 (%i4) (if (x > 17) then x: 2 else y: 4, y+x);
43 Mesmo ciclos em Maxima são expressões, embora o valor de retorno desses
44 ciclos não seja muito útil (eles retornam sempre @code{done}).
47 (%i1) y: (x: 1, for i from 1 thru 10 do (x: x*i))$
52 enquanto que o que realmente queira seja provavelmente incluir um
53 terceiro termo na @i{expressão com vírgula} que fornece
54 de volta o valor actualizado.
57 (%i3) y: (x: 1, for i from 1 thru 10 do (x: x*i), x)$
64 @c THIS REALLY NEEDS EXPANSION
65 @node Complexo, Substantivos e Verbos, Introdução a Expressões, Expressões
67 Uma expressão complexa é especificada no Maxima através da adição da
68 parte real da expressão a @code{%i} vezes a parte imaginária. Dessa forma as
69 raízes da equação @code{x^2 - 4*x + 13 = 0} são @code{2 + 3*%i} e @code{2 - 3*%i}. Note que
70 produtos de simplificação de expressões complexas podem ser efetuadas através da
71 expansão do produto. Simplificação de quocientes, raízes, e outras
72 funções de expressões complexas podem usualmente serem realizadas através do uso
73 das funções @code{realpart}, @code{imagpart}, @code{rectform}, @code{polarform}, @code{abs}, @code{carg}.
75 @node Substantivos e Verbos, Identificadores, Complexo, Expressões
76 @section Substantivos e Verbos
77 Maxima distingue entre operadores que são "substantivos" e operadores que são "verbos".
78 Um verbo é um operador que pode ser executado.
79 Um substantivo é um operador que aparece como um símbolo em uma expressão, sem ser executado.
80 Por padrão, nomes de função são verbos.
81 Um verbo pode ser mudado em um substantivo através da adição de um apóstrofo no início do nome da função
82 ou aplicando a função @code{nounify}.
83 Um substantivo pode ser mudado em um verbo através da aplicação da função @code{verbify}.
84 O sinalizador de avaliação @code{nouns} faz com que @code{ev} avalie substantivos em uma expressão.
86 A forma verbal é distinguida através de
87 um sinal de dólar @code{$} no início do símbolo Lisp correspondente.
89 a forma substantiva é distinguida através de
90 um sinal de @code{%} no início do símbolo Lisp correspondente.
91 Alguns substantivos possuem propriedades especiais de exibição, tais como @code{'integrate} e @code{'derivative}
92 (retornado por @code{diff}), mas muitos não.
93 Por padrão, as formas substantiva e verbal de uma função são idênticas quando mostradas.
94 O sinalizador global @code{noundisp} faz com que Maxima mostre substantivos com um apóstrofo no início @code{'}.
96 Veja também @code{noun}, @code{nouns}, @code{nounify}, e @code{verbify}.
105 @c declare (bar, noun);
109 @c integrate (1/x, x, 1, 42);
110 @c 'integrate (1/x, x, 1, 42);
114 (%i1) foo (x) := x^2;
121 (%i4) 'foo (42), nouns;
123 (%i5) declare (bar, noun);
125 (%i6) bar (x) := x/17;
131 (%i8) bar (52), nouns;
135 (%i9) integrate (1/x, x, 1, 42);
137 (%i10) 'integrate (1/x, x, 1, 42);
145 (%i11) ev (%, nouns);
149 @node Identificadores, Sequências de caracteres, Substantivos e Verbos, Expressões
150 @section Identificadores
151 Identificadores do Maxima podem compreender caracteres alfabéticos,
152 mais os numerais de 0 a 9,
153 mais qualquer caractere especial precedido por um caractere contra-barra @code{\}.
155 Um numeral pode ser o primeiro caractere de um identificador
156 se esse numeral for precedido por uma contra-barra.
157 Numerais que forem o segundo ou o último caractere não precisam ser precedidos por uma contra barra.
159 Caracteres podem ser declarados para serem alfabéticos por meio da função @code{declare}.
160 Se então declarados alfabéticos, eles não precisam serem precedidos de uma contrabarra em um identificador.
161 Os caracteres alfabéticos vão inicialmente
162 de @code{A} a @code{Z}, de @code{a} a @code{z}, @code{%}, e @code{_}.
164 Maxima é sensível à caixa . Os identificadores @code{algumacoisa}, @code{ALGUMACOISA}, e @code{Algumacoisa} são distintos.
165 Veja @emph{Lisp e Maxima} para mais sobre esse ponto.
167 Um identificador Maxima é um símbolo Lisp que começa com um sinal de dólar @code{$}.
168 Qualquer outro símbolo Lisp é precedido por um ponto de interrogação @code{?} quando aparecer no Maxima.
169 Veja @emph{Lisp e Maxima} para maiores detalhes sobre esse ponto.
174 @c %an_ordinary_identifier42;
175 @c embedded\ spaces\ in\ an\ identifier;
177 @c [foo+bar, foo\+bar];
179 @c [symbolp (foo\+bar), symbolp (\1729)];
180 @c [is (foo\+bar = foo+bar), is (\1729 = 1729)];
182 @c declare ("~", alphabetic);
184 @c [is (foo = FOO), is (FOO = Foo), is (Foo = foo)];
185 @c :lisp (defvar *my-lisp-variable* '$foo)
186 @c ?\*my\-lisp\-variable\*;
190 (%i1) %an_ordinary_identifier42;
191 (%o1) %an_ordinary_identifier42
192 (%i2) embedded\ spaces\ in\ an\ identifier;
193 (%o2) embedded spaces in an identifier
196 (%i4) [foo+bar, foo\+bar];
197 (%o4) [foo + bar, foo+bar]
200 (%i6) [symbolp (foo\+bar), symbolp (\1729)];
202 (%i7) [is (foo\+bar = foo+bar), is (\1729 = 1729)];
206 (%i9) declare ("~", alphabetic);
210 (%i11) [is (foo = FOO), is (FOO = Foo), is (Foo = foo)];
211 (%o11) [false, false, false]
212 (%i12) :lisp (defvar *my-lisp-variable* '$foo)
214 (%i12) ?\*my\-lisp\-variable\*;
218 @node Sequências de caracteres, Desigualdade, Identificadores, Expressões
219 @section Sequências de caracteres
221 Strings (sequências de caracteres) são contidas entre aspas duplas @code{"} em entradas de dados usados pelo Maxima,
222 e mostradas com ou sem as aspas duplas,
223 dependendo do valor escolhido para a variável global @code{stringdisp}.
225 Sequências de caracteres podem conter quaisquer caracteres,
226 incluindo tabulações (tab), nova linha (ou fim de linha), e caracteres de retorno da cabeça de impressão (carriage return).
227 A sequência @code{\"} é reconhecida com uma aspa dupla literal,
228 e @code{\\} como uma contrabarra literal.
229 Quando a contrabarra aparecer no final de uma linha,
230 a contrabarra e a terminação de linha
231 (ou nova linha ou retorno de carro e nova linha)
233 de forma que a sequência de caracteres continue na próxima linha.
234 Nenhuma outra combinação especial de contrabarra com outro caractere é reconhecida;
235 quando a contrabarra aparecer antes de qualquer outro caractere que não seja @code{"}, @code{\},
236 ou um fim de linha, a contrabarra é ignorada.
237 Não exite caminho para representar um caractere especial
238 (tal como uma tabulação, nova linha, ou retorno da cabeça de impressão)
239 excepto através de encaixar o caractere literal na sequência de caracteres.
241 Não existe tipo de caractere no Maxima;
242 um caractere simples é representado como uma sequência de caracteres de um único caractere.
244 Sequências de caracteres no Maxima são implementadas como símbolos do Lisp, não como sequencias de caracteres do not Lisp;
245 o que pode mudar em futuras versões do Maxima.
246 Maxima pode mostrar sequências de caracteres do Lisp e caracteres do Lisp,
247 embora algumas outras operações (por exemplo, testes de igualdade) possam falhar.
248 @c DISCOMFORT WITH LISP STRINGS AND CHARACTERS IS A BUG.
250 O pacote adicional @code{stringproc} contém muitas funções que trabalham com sequências de caracteres.
255 @c s_1 : "Isso é uma sequência de caracteres do Maxima.";
256 @c s_2 : "Caracteres \"aspas duplas\" e contrabarras \\ encaixados em uma sequência de caracteres.";
257 @c s_3 : "Caractere de fim de linha encaixado
258 @c nessa sequência de caracteres.";
261 @c fim de linha nessa \
262 @c sequência de caracteres.";
263 @c stringdisp : false;
265 @c stringdisp : true;
269 (%i1) s_1 : "Isso é uma sequência de caracteres do Maxima.";
270 (%o1) Isso é uma sequência de caracteres do Maxima.
271 (%i2) s_2 : "Caracteres \"aspas duplas\" e contrabarras \\ encaixados em uma sequência de caracteres.";
272 (%o2) Caracteres "aspas duplas" e contrabarra \ encaixados em uma sequência de caracteres.
273 (%i3) s_3 : "Caractere de fim de linha encaixado
274 nessa sequência de caracteres.";
275 (%o3) Caractere de fim de linha encaixado
276 nessa sequência de caracteres.
277 (%i4) s_4 : "Ignore o \
280 sequência de caracteres.";
281 (%o4) Ignore o caractere de fim de linha nessa sequência de caracteres.
282 (%i5) stringdisp : false;
285 (%o6) Isso é uma sequência de caracteres do Maxima.
286 (%i7) stringdisp : true;
289 (%o8) "Isso é uma sequência de caracteres do Maxima."
292 @node Desigualdade, Sintaxe, Sequências de caracteres, Expressões
293 @section Desigualdade
294 Maxima tem os operadores de desigualdade @code{<}, @code{<=}, @code{>=}, @code{>}, @code{#}, e @code{notequal}.
295 Veja @code{if} para uma descrição de expressões condicionais.
297 @node Sintaxe, Definições para Expressões, Desigualdade, Expressões
299 É possível definir novos operadores com precedência especificada,
300 remover a definição de operadores existentes,
301 ou redefinir a precedência de operadores existentes.
302 Um operador pode ser unário prefixado ou unário pósfixado, binario infixado, n-ário infixado, matchfix, ou nofix.
303 "Matchfix" significa um par de símbolos que abraçam seu argumento ou seus argumentos,
304 e "nofix" significa um operador que não precisa de argumentos.
305 Como exemplos dos diferentes tipos de operadores, existe o seguinte.
308 @item unário prefixado
310 @item unário posfixado
312 @item binário infixado
313 exponenciação @code{a^b}
314 @item n-ário infixado
317 construção de lista @code{[a, b]}
320 (Não existe operadores internos nofix;
321 para um exemplo de tal operador, veja @code{nofix}.)
323 O mecanismo para definir um novo operador é directo.
324 Somente é necessário declarar uma função como um operador;
325 a função operador pode ou não estar definida previamente.
327 Um exemplo de operadores definidos pelo utilizador é o seguinte.
328 Note que a chamada explícita de função @code{"dd" (a)} é equivalente a @code{dd a},
329 da mesma forma @code{"<-" (a, b)} é equivalente a @code{a <- b}.
330 Note também que as funções @code{"dd"} e @code{"<-"} são indefinidas nesse exemplo.
338 @c "<-" (a, "dd" (b));
351 (%i6) "<-" (a, "dd" (b));
355 As funções máxima que definem novos operadores estão sumarizadas nessa tabela,
356 equilibrando expoente associado esquerdo (padrão) e o expoente associado direito ("eae" e "ead", respectivamente).
357 @c REWORK FOLLOWING COMMENT. IT'S NOT CLEAR ENOUGH, GIVEN THAT IT'S FAIRLY IMPORTANT
358 (Associação de expoentes determina a precedência do operador. todavia, uma vez que os expoentes
359 esquerdo e direito podem ser diferentes, associação de expoentes é até certo ponto mais complicado que precedência.)
360 Alguma das funções de definição de operações tomam argumentos adicionais;
361 veja as descrições de função para maiores detalhes.
363 @c MAKE ANCHORS FOR ALL 6 FUNCTIONS AND CHANGE @code TO @emph ACCORDINGLY
374 (associação de expoentes não é aplicável)
376 (associação de expoentes não é aplicável)
380 aqui está alguns operadores internos e seus expoentes associados esquerdo e direito.
411 @code{remove} e @code{kill} removem propriedades de operador de um átomo.
412 @code{remove ("@var{a}", op)} remove somente as propriedades de operador de @var{a}.
413 @code{kill ("@var{a}")} remove todas as propriedades de @var{a}, incluindo as propriedades de operador.
414 Note que o nome do operador dever estar abraçado por aspas duplas.
416 @c MAYBE COPY THIS EXAMPLE TO remove AND/OR kill
419 @c "##" (a, b) := a^b;
421 @c remove ("##", op);
433 (%i2) "##" (a, b) := a^b;
438 (%i4) remove ("##", op);
441 Incorrect syntax: # is not a prefix operator
453 Incorrect syntax: # is not a prefix operator
460 @node Definições para Expressões, , Sintaxe, Expressões
461 @section Definições para Expressões
463 @deffn {Função} at (@var{expr}, [@var{eqn_1}, ..., @var{eqn_n}])
464 @deffnx {Função} at (@var{expr}, @var{eqn})
465 Avalia a expressão @var{expr} com
466 as variáveis assumindo os valores como especificado para elas na lista de
467 equações @code{[@var{eqn_1}, ..., @var{eqn_n}]} ou a equação simples @var{eqn}.
469 Se uma subexpressão depender de qualquer das variáveis para a qual um valor foi especificado
470 mas não existe @code{atvalue} especificado e essa subexpressão não pode ser avaliada de outra forma,
471 então uma forma substantiva de @code{at} é retornada que mostra em uma forma bidimensional.
473 @code{at} realiza múltiplas substituições em série, não em paralelo.
475 Veja também @code{atvalue}.
476 Para outras funções que realizam substituições,
477 veja também @code{subst} e @code{ev}.
480 @c COPIED FROM example(at)
483 @c atvalue (f(x,y), [x = 0, y = 1], a^2);
484 @c atvalue ('diff (f(x,y), x), x = 0, 1 + y);
485 @c printprops (all, atvalue);
486 @c diff (4*f(x, y)^2 - u(x, y)^2, x);
487 @c at (%, [x = 0, y = 1]);
490 (%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
493 (%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
495 (%i3) printprops (all, atvalue);
498 --- (f(@@1, @@2))! = @@2 + 1
506 (%i4) diff (4*f(x, y)^2 - u(x, y)^2, x);
508 (%o4) 8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
510 (%i5) at (%, [x = 0, y = 1]);
513 (%o5) 16 a - 2 u(0, 1) (-- (u(x, y))! )
520 @deffn {Função} box (@var{expr})
521 @deffnx {Função} box (@var{expr}, @var{a})
522 Retorna @var{expr} dentro de uma caixa.
523 O valor de retorno é uma expressão com @code{box} como o operador e @var{expr} como o argumento.
524 Uma caixa é desenhada sobre a tela quando @code{display2d} for @code{true}.
526 @code{box (@var{expr}, @var{a})}
527 Empacota @var{expr} em uma caixa rotulada pelo símbolo @var{a}.
528 O rótulo é truncado se for maior que a largura da caixa.
530 @code{box} avalia seu argumento.
531 Todavia, uma expressão dentro de uma caixa não avalia para seu conteúdo,
532 então expressões dentro de caixas são efectivamente excluídas de cálculos.
534 @code{boxchar} é o caractere usado para desenhar a caixa em @code{box}
535 e nas funções @code{dpart} e @code{lpart}.
544 @c box (a^2 + b^2, term_1);
545 @c 1729 - box (1729);
547 @c box (sin(x) + cos(y));
550 (%i1) box (a^2 + b^2);
559 (%i4) box (a^2 + b^2);
562 (%o4) "(c - d) + 1522756"
564 (%i5) box (a^2 + b^2, term_1);
567 (%o5) "(c - d) + 1522756"
569 (%i6) 1729 - box (1729);
575 (%i8) box (sin(x) + cos(y));
577 (%o8) -cos(y) + sin(x)-
583 @defvr {Variável de opção} boxchar
584 Valor por omissão: @code{"}
586 @code{boxchar} é o caractere usado para desenhar a caixa por @code{box}
587 e nas funções @code{dpart} e @code{lpart}.
589 Todas as caixas em uma expressão são desenhadas com o valor actual
590 de @code{boxchar}; o caractere de desenho não é armazenado com a
591 expressão de caixa. Isso quer dizer que se desenhar uma caixa e em
592 seguida mudar o caracter de desenho a caixa anteriormente desenhada
593 será redesenhada com o caracter mudado caso isso seja solicitado.
597 @deffn {Função} carg (@var{z})
598 Retorna o argumento complexo de @var{z}.
599 O argumento complexo é um ângulo @code{theta} no intervalo de @code{(-%pi, %pi]}
600 tal que @code{r exp (theta %i) = @var{z}} onde @code{r} é o módulo de @var{z}.
601 @c ACTUALLY carg DOESN'T ALWAYS RETURN A VALUE IN (-%pi, %pi]; SEE SF BUG REPORT # 816166
603 @code{carg} é uma função computacional,
604 não uma função de simplificação.
605 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
606 @c SEE ALSO SF BUG REPORT # 902290
608 @code{carg} ignora a declaração @code{declare (@var{x}, complex)},
609 e trata @var{x} como uma variável real.
610 Isso é um erro. @c SEE SF BUG REPORT # 620246
612 Veja também @code{abs} (módulo de número complexo), @code{polarform}, @code{rectform},
613 @code{realpart}, e @code{imagpart}.
621 @c carg (exp (%pi * %i));
622 @c carg (exp (3/2 * %pi * %i));
623 @c carg (17 * exp (2 * %i));
633 (%i3) carg (exp (%i));
635 (%i4) carg (exp (%pi * %i));
637 (%i5) carg (exp (3/2 * %pi * %i));
641 (%i6) carg (17 * exp (2 * %i));
647 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
648 @c CROSS REF declare, properties, ETC
649 @deffn {Opereador especial} constant
650 @code{declare (@var{a}, constant)} declara @var{a} para ser uma constante.
652 @c WHAT EXACTLY ARE THE CONSEQUENCES OF DECLARING AN ATOM TO BE CONSTANT ??
656 @deffn {Função} constantp (@var{expr})
657 Retorna @code{true} se @var{expr} for uma expressão constante,
658 de outra forma retorna @code{false}.
659 @c WHAT DOES MAXIMA KNOW ABOUT CONSTANT EXPRESSIONS ??
661 Uma expressão é considerada uma expressão constante se seus argumentos forem
662 números (incluindo números racionais, como mostrado com @code{/R/}),
663 constantes simbólicas como @code{%pi}, @code{%e}, e @code{%i},
664 variáveis associadas a uma constante ou constante declarada através de @code{declare},
665 ou funções cujos argumentos forem constantes.
667 @code{constantp} avalia seus argumentos.
672 @c constantp (7 * sin(2));
673 @c constantp (rat (17/29));
674 @c constantp (%pi * sin(%e));
675 @c constantp (exp (x));
676 @c declare (x, constant);
677 @c constantp (exp (x));
678 @c constantp (foo (x) + bar (%e) + baz (2));
682 (%i1) constantp (7 * sin(2));
684 (%i2) constantp (rat (17/29));
686 (%i3) constantp (%pi * sin(%e));
688 (%i4) constantp (exp (x));
690 (%i5) declare (x, constant);
692 (%i6) constantp (exp (x));
694 (%i7) constantp (foo (x) + bar (%e) + baz (2));
701 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
702 @c THIS ITEM IS EXTREMELY IMPORTANT
703 @c ENSURE THAT ALL KEYWORDS RECOGNIZED BY declare HAVE THEIR OWN DOCUMENTATION ITEMS !!
704 @c ALSO: HOW TO FIND THE LIST OF ALL SYMBOLS WHICH HAVE A GIVEN PROPERTY ??
705 @deffn {Função} declare (@var{a_1}, @var{p_1}, @var{a_2}, @var{p_2}, ...)
706 Atribui aos átomos ou lista de átomos @var{a_i} a propriedade ou lista de propriedades @var{p_i}.
707 Quando @var{a_i} e/ou @var{p_i} forem listas,
708 cada um dos átomos recebe todas as propriedades.
710 @code{declare} não avalia seus argumentos.
711 @code{declare} sempre retorna @code{done}.
713 Como colocado na descrição para cada sinalizador de declaração,
714 para alguns sinalizadores
715 @code{featurep(@var{objecto}, @var{recurso})}
716 retorna @code{true} se @var{objecto} tiver sido declarado para ter @var{recurso}.
717 Todavia, @code{featurep} não reconhece alguns sinalizadores; isso é um erro.
719 Veja também @code{features}.
721 @code{declare} reconhece as seguintes propriedades:
725 Torna @var{a_i} conhecido para @code{ev} de forma que a função nomeada por @var{a_i}
726 é aplicada quando @var{a_i} aparece como um sinalizador argumento de @code{ev}.
730 Torna @var{a_i} conhecido para a função @code{ev} de forma que @var{a_i} é associado a @code{true}
731 durante a execução de @code{ev} quando @var{a_i} aparece como um sinalizador argumento de @code{ev}.
734 @c OBSOLETE @code{special} (RECONHECIDA POR DECLARE MAS NUNCA USADA EM LUGAR ALGUM)
736 @c OBSOLETE @code{nonarray} (RECONHECIDA POR DECLARE MAS NUNCA USADA EM LUGAR ALGUM)
738 @item @code{bindtest}
739 Diz ao Maxima para disparar um erro quando @var{a_i} for avaliado como sendo livre de associação.
742 Diz ao Maxima para passar @var{a_i} como um substantivo.
743 O efeito disso é substituir intâncias de @var{a_i} com @code{'@var{a_i}}
744 ou @code{nounify(@var{a_i})}, ependendo do contexto.
746 @item @code{constant}
747 Diz ao Maxima para considerar @var{a_i} uma constante simbólica.
748 @c WHAT MAXIMA KNOWS ABOUT SYMBOLIC CONSTANTS IS PRETTY LIMITED
749 @c DUNNO IF WE WANT TO GET INTO DETAILS HERE.
750 @c MAYBE IN THE DOCUMENTATION FOR CONSTANT (IF THERE IS SUCH)
753 Diz ao Maxima para considerar @var{a_i} uma variável escalar.
755 @item @code{nonscalar}
756 Diz ao Maxima para considerar @var{a_i} uma variável não escalar.
757 The usual application is to declare a variable as a symbolic vector or matrix.
760 Diz ao Maxima para considerar @var{a_i} uma "variável principal" (@code{mainvar}).
761 @code{ordergreatp} determina a ordenação de átomos como segue:
763 (variáveis principais) > (outras variáveis) > (variáveis escalares) > (constantes) > (números)
765 @item @code{alphabetic}
766 Diz ao Maxima para reconhecer todos os caracteres em @var{a_i} (que deve ser uma sequência de caracteres) como caractere alfabético.
769 Diz ao Maxima para reconhecer @var{a_i} como nome de um recurso.
770 Other atoms may then be declared to have the @var{a_i} property.
772 @item @code{rassociative}, @code{lassociative}
773 Diz ao Maxima para reconhecer @var{a_i} como uma funcão associativa a direita ou associativa a esquerda.
776 Diz ao Maxima para reconhecer @var{a_i} como uma função n-ária (com muitos argumentos).
778 A declaração @code{nary} não tem o mesmo objectivo que uma chamada à função @code{nary}.
779 O único efeito de @code{declare(foo, nary)} é para instruir o simplificador do Maxima
780 a melhorar as próximas expressões,
781 por exemplo, para simplificar @code{foo(x, foo(y, z))} para @code{foo(x, y, z)}.
783 @item @code{symmetric}, @code{antisymmetric}, @code{commutative}
784 Diz ao Maxima para reconhecer @var{a_i} como uma função simétrica ou antisimétrica.
785 @code{commutative} é o mesmo que @code{symmetric}.
787 @item @code{oddfun}, @code{evenfun}
788 Diz ao Maxima para reconhecer @var{a_i} como uma função par ou uma função ímpar.
790 @item @code{outative}
791 Diz ao Maxima para simplificar expressões @var{a_i}
792 colocando factores constantes em evidência no primeiro argumento.
794 Quando @var{a_i} tiver um argumento,
795 um factor é onsiderado constante se for um literal ou se for declarado como sendo constante.
797 Quando @var{a_i} tiver dois ou mais argumentos,
798 um factor é considerado constante
799 se o segundo argumento for um símbolo
800 e o factor estiver livre do segundo argumento.
802 @item @code{multiplicative}
803 Diz ao Maxima para simplificar expressões do tipo @var{a_i}
804 através da substituição @code{@var{a_i}(x * y * z * ...)} @code{-->}
805 @code{@var{a_i}(x) * @var{a_i}(y) * @var{a_i}(z) * ...}.
806 A substituição é realizada no primeiro argumento somente.
808 @item @code{additive}
809 Diz ao Maxima para simplificar expressões do tipo @var{a_i}
810 através da substituição @code{@var{a_i}(x + y + z + ...)} @code{-->}
811 @code{@var{a_i}(x) + @var{a_i}(y) + @var{a_i}(z) + ...}.
812 A substituição é realizada no primeiro argumento somente.
815 Equivalente a declarar @var{a_i} ao mesmo tempo @code{outative} e @code{additive}.
817 @c OBSOLETE @code{analytic} (RECOGNIZED BY DECLARE BUT NEVER USED ANYWHERE)
819 @item @code{integer}, @code{noninteger}
820 Diz ao Maxima para reconhecer @var{a_i} como como uma variável inteira ou como uma variável não inteira.
822 Maxima reconhece os seguintes recursos de objectos:
824 @item @code{even}, @code{odd}
825 Diz ao Maxima para reconhecer @var{a_i} como uma variável inteira par ou como uma variável inteira ímpar.
827 @item @code{rational}, @code{irrational}
828 Diz ao Maxima para reconhecer @var{a_i} como uma variável real e racional ou como uma variável real e irracional.
830 @item @code{real}, @code{imaginary}, @code{complex}
831 Dia ao Maxima para reconhecer @var{a_i} como uma variável real, imaginária pura ou complexa.
833 @item @code{increasing}, @code{decreasing}
834 Dia ao Maxima para reconhecer @var{a_i} como uma função de incremento ou decremento.
835 @c MAXIMA FAILS TO DEDUCE F(2) > F(1) FOR INCREASING FUNCTION F
836 @c AND FAILS TO DEDUCE ANYTHING AT ALL ABOUT DECREASING FUNCTIONS
837 @c REPORTED AS SF BUG # 1483194
840 Diz ao Maxima para reconhecer @var{a_i} como uma função positiva.
842 @item @code{integervalued}
843 Diz ao Maxima para reconhecer @var{a_i} como uma função de valores inteiros.
849 Declarações @code{evfun} e @code{evflag}.
851 @c declare (expand, evfun);
853 @c (a + b)^3, expand;
854 @c declare (demoivre, evflag);
856 @c exp (a + b*%i), demoivre;
859 (%i1) declare (expand, evfun);
864 (%i3) (a + b)^3, expand;
866 (%o3) b + 3 a b + 3 a b + a
867 (%i4) declare (demoivre, evflag);
869 (%i5) exp (a + b*%i);
872 (%i6) exp (a + b*%i), demoivre;
874 (%o6) %e (%i sin(b) + cos(b))
877 Declaração @code{bindtest}.
880 @c declare (aa, bindtest);
888 (%i2) declare (aa, bindtest);
892 -- an error. Quitting. To debug this try debugmode(true);
899 Declaração @code{noun}.
901 @c factor (12345678);
902 @c declare (factor, noun);
903 @c factor (12345678);
907 (%i1) factor (12345678);
910 (%i2) declare (factor, noun);
912 (%i3) factor (12345678);
913 (%o3) factor(12345678)
919 Declarações @code{constant}, @code{scalar}, @code{nonscalar}, e @code{mainvar}.
921 @c declare (bb, constant);
922 @c declare (cc, scalar);
923 @c declare (dd, nonscalar);
924 @c declare (ee, mainvar);
929 Declaração @code{alphabetic}.
931 @c xx\~yy\`\@ : 1729;
932 @c declare ("~`@", alphabetic);
933 @c xx~yy`@ + @yy`xx + `xx@@yy~;
937 (%i1) xx\~yy\`\@@ : 1729;
939 (%i2) declare ("~`@@", alphabetic);
941 (%i3) xx~yy`@@ + @@yy`xx + `xx@@@@yy~;
942 (%o3) `xx@@@@yy~ + @@yy`xx + 1729
943 (%i4) listofvars (%);
944 (%o4) [@@yy`xx, `xx@@@@yy~]
947 Declaração @code{feature}.
949 @c declare (FOO, feature);
951 @c featurep (x, FOO);
954 (%i1) declare (FOO, feature);
956 (%i2) declare (x, FOO);
958 (%i3) featurep (x, FOO);
962 Declarações @code{rassociative} e @code{lassociative}.
964 @c declare (F, rassociative);
965 @c declare (G, lassociative);
970 Declaração @code{nary}.
972 @c H (H (a, b), H (c, H (d, e)));
973 @c declare (H, nary);
974 @c H (H (a, b), H (c, H (d, e)));
977 (%i1) H (H (a, b), H (c, H (d, e)));
978 (%o1) H(H(a, b), H(c, H(d, e)))
979 (%i2) declare (H, nary);
981 (%i3) H (H (a, b), H (c, H (d, e)));
982 (%o3) H(a, b, c, d, e)
985 Declarações @code{symmetric} e @code{antisymmetric}.
988 @c declare (S, symmetric);
990 @c S (a, c, e, d, b);
992 @c declare (T, antisymmetric);
994 @c T (a, c, e, d, b);
999 (%i2) declare (S, symmetric);
1003 (%i4) S (a, c, e, d, b);
1004 (%o4) S(a, b, c, d, e)
1007 (%i6) declare (T, antisymmetric);
1011 (%i8) T (a, c, e, d, b);
1012 (%o8) T(a, b, c, d, e)
1015 Declarações @code{oddfun} e @code{evenfun}.
1018 @c declare (o, oddfun);
1021 @c declare (e, evenfun);
1025 (%i1) o (- u) + o (u);
1027 (%i2) declare (o, oddfun);
1029 (%i3) o (- u) + o (u);
1031 (%i4) e (- u) - e (u);
1033 (%i5) declare (e, evenfun);
1035 (%i6) e (- u) - e (u);
1039 Declaração @code{outative}.
1042 @c declare (F1, outative);
1044 @c declare (zz, constant);
1050 (%i2) declare (F1, outative);
1054 (%i4) declare (zz, constant);
1060 Declaração @code{multiplicative}.
1063 @c declare (F2, multiplicative);
1067 (%i1) F2 (a * b * c);
1069 (%i2) declare (F2, multiplicative);
1071 (%i3) F2 (a * b * c);
1072 (%o3) F2(a) F2(b) F2(c)
1075 Declaração @code{additive}.
1078 @c declare (F3, additive);
1082 (%i1) F3 (a + b + c);
1084 (%i2) declare (F3, additive);
1086 (%i3) F3 (a + b + c);
1087 (%o3) F3(c) + F3(b) + F3(a)
1090 Declaração @code{linear}.
1092 @c 'sum (F(k) + G(k), k, 1, inf);
1093 @c declare (nounify (sum), linear);
1094 @c 'sum (F(k) + G(k), k, 1, inf);
1097 (%i1) 'sum (F(k) + G(k), k, 1, inf);
1101 (%o1) > (G(k) + F(k))
1105 (%i2) declare (nounify (sum), linear);
1107 (%i3) 'sum (F(k) + G(k), k, 1, inf);
1111 (%o3) > G(k) + > F(k)
1120 @deffn {Função} disolate (@var{expr}, @var{x_1}, ..., @var{x_n})
1121 é similar a @code{isolate (@var{expr}, @var{x})}
1122 excepto que essa função habilita ao utilizador isolar
1123 mais que uma variável simultâneamente. Isso pode ser útil, por
1124 exemplo, se se tiver tentado mudar variáveis em uma integração
1125 múltipla, e em mudança de variável envolvendo duas ou mais das
1126 variáveis de integração. Essa função é chamada automaticamente de
1127 @file{simplification/disol.mac}. Uma demostração está disponível através de
1128 @code{demo("disol")$}.
1133 @deffn {Função} dispform (@var{expr})
1134 Retorna a representação externa de @var{expr} com relação a seu
1135 principal operador. Isso pode ser útil em conjunção com @code{part} que
1136 também lida com a representação externa. Suponha que @var{expr} seja -A .
1137 Então a representação interna de @var{expr} é "*"(-1,A), enquanto que
1138 a representação externa é "-"(A). @code{dispform (@var{expr}, all)} converte a
1139 expressão inteira (não apenas o nível mais alto) para o formato externo. Por
1140 exemplo, se @code{expr: sin (sqrt (x))}, então @code{freeof (sqrt, expr)} e
1141 @code{freeof (sqrt, dispform (expr))} fornece @code{true}, enquanto
1142 @code{freeof (sqrt, dispform (expr, all))} fornece @code{false}.
1147 @deffn {Função} distrib (@var{expr})
1148 Distribue adições sobre produtos. @code{distrib} difere de @code{expand}
1149 no facto de que @code{distrib} trabalha em somente no nível mais alto de uma expressão, i.e., @code{distrib} não
1150 é recursiva e @code{distrib} é mais rápida que @code{expand}. @code{distrib} difere de @code{multthru} no
1151 que @code{distrib} expande todas as adições naquele nível.
1156 (%i1) distrib ((a+b) * (c+d));
1157 (%o1) b d + a d + b c + a c
1158 (%i2) multthru ((a+b) * (c+d));
1159 (%o2) (b + a) d + (b + a) c
1160 (%i3) distrib (1/((a+b) * (c+d)));
1162 (%o3) ---------------
1164 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
1166 (%o4) ---------------------
1167 b d + a d + b c + a c
1173 @deffn {Função} dpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1174 Selecciona a mesma subexpressão que @code{part}, mas
1175 em lugar de apenas retornar aquela subexpressão como seu valor, isso retorna
1176 a expressão completa com a subexpressão seleccionada mostrada dentro
1177 de uma caixa. A caixa é actualmente parte da expressão.
1180 (%i1) dpart (x+y/z^2, 1, 2, 1);
1191 @c PROBABLY MORE TO BE SAID HERE
1192 @deffn {Função} exp (@var{x})
1193 Representa função exponencial.
1194 Instâncias de @code{exp (@var{x})} em uma entrada são simplificadas para @code{%e^@var{x}};
1195 @code{exp} não aparece em expressões simplificadas.
1197 @code{demoivre} se @code{true} faz com que @code{%e^(a + b %i)} simplificar para
1198 @code{%e^(a (cos(b) + %i sin(b)))} se @code{b} for livre de @code{%i}. veja @code{demoivre}.
1200 @code{%emode}, quando @code{true},
1201 faz com que @code{%e^(%pi %i x)} seja simplificado. Veja @code{%emode}.
1203 @code{%enumer}, quando @code{true} faz com que @code{%e} seja substituído por
1204 2.718... quando @code{numer} for @code{true}. Veja @code{%enumer}.
1206 @c NEED EXAMPLES HERE
1209 @defvr {Variável de opção} %emode
1210 Valor por omissão: @code{true}
1212 Quando @code{%emode} for @code{true},
1213 @code{%e^(%pi %i x)} é simplificado como
1216 @code{%e^(%pi %i x)} simplifica para @code{cos (%pi x) + %i sin (%pi x)} se @code{x} for um inteiro ou
1217 um múltiplo de 1/2, 1/3, 1/4, ou 1/6, e então é adicionalmente simplificado.
1219 Para outro @code{x} numérico,
1220 @code{%e^(%pi %i x)} simplifica para @code{%e^(%pi %i y)} onde @code{y} é @code{x - 2 k}
1221 para algum inteiro @code{k} tal que @code{abs(y) < 1}.
1223 Quando @code{%emode} for @code{false}, nenhuma
1224 simplificação adicional de @code{%e^(%pi %i x)} é realizada.
1226 @c NEED EXAMPLES HERE
1229 @defvr {Variável de opção} %enumer
1230 Valor por omissão: @code{false}
1232 Quando @code{%enumer} for @code{true},
1233 @code{%e} é substituido por seu valor numérico
1234 2.718... mesmo que @code{numer} seja @code{true}.
1236 Quando @code{%enumer} for @code{false}, essa substituição é realizada
1237 somente se o expoente em @code{%e^x} avaliar para um número.
1239 Veja também @code{ev} e @code{numer}.
1241 @c NEED EXAMPLES HERE
1244 @defvr {Variável de opção} exptisolate
1245 Valor por omissão: @code{false}
1247 @c WHAT DOES THIS MEAN EXACTLY ??
1248 @code{exptisolate}, quando @code{true}, faz com que @code{isolate (expr, var)}
1249 examine expoentes de átomos (tais como @code{%e}) que contenham @code{var}.
1251 @c NEED EXAMPLES HERE
1254 @defvr {Variável de opção} exptsubst
1255 Valor por omissão: @code{false}
1257 @code{exptsubst}, quando @code{true}, permite substituições tais como @code{y}
1258 para @code{%e^x} em @code{%e^(a x)}.
1260 @c NEED EXAMPLES HERE
1263 @deffn {Função} freeof (@var{x_1}, ..., @var{x_n}, @var{expr})
1264 @code{freeof (@var{x_1}, @var{expr})}
1266 se nenhuma subexpressão de @var{expr} for igual a @var{x_1}
1267 ou se @var{x_1} ocorrer somente uma variável que não tenha associação fora da expressão @var{expr},
1268 e retorna @code{false} de outra forma.
1270 @code{freeof (@var{x_1}, ..., @var{x_n}, @var{expr})}
1271 é equivalente a @code{freeof (@var{x_1}, @var{expr}) and ... and freeof (@var{x_n}, @var{expr})}.
1273 Os argumentos @var{x_1}, ..., @var{x_n}
1274 podem ser nomes de funções e variáveis, nomes subscritos,
1275 operadores (empacotados em aspas duplas), ou expressões gerais.
1276 @code{freeof} avalia seus argumentos.
1278 @code{freeof} opera somente sobre @var{expr} como isso representa (após simplificação e avaliação) e
1279 não tenta determinar se alguma expressão equivalente pode fornecer um resultado diferente.
1280 Em particular, simplificação pode retornar uma expressão equivalente mas diferente que compreende
1281 alguns diferentes elementos da forma original de @var{expr}.
1283 Uma variável é uma variável dummy em uma expressão se não tiver associação fora da expressão.
1284 Variáveis dummy recoreconhecidas através de @code{freeof} são
1285 o índice de um somatório ou produtório, o limite da variável em @code{limit},
1286 a variável de integração na forma de integral definida de @code{integrate},
1287 a variável original em @code{laplace},
1288 variáveis formais em expressoes @code{at},
1289 e argumentos em expressões @code{lambda}.
1290 Variáveis locais em @code{block} não são reconhecidas por @code{freeof} como variáveis dummy;
1293 A forma indefinida de @code{integrate} @i{not} é livre de suas variáveis de integração.
1297 Argumentos são nomes de funções, variáveis, nomes subscritos, operadores, e expressões.
1298 @code{freeof (a, b, expr)} é equivalente a
1299 @code{freeof (a, expr) and freeof (b, expr)}.
1302 (%i1) expr: z^3 * cos (a[1]) * b^(c+d);
1306 (%i2) freeof (z, expr);
1308 (%i3) freeof (cos, expr);
1310 (%i4) freeof (a[1], expr);
1312 (%i5) freeof (cos (a[1]), expr);
1314 (%i6) freeof (b^(c+d), expr);
1316 (%i7) freeof ("^", expr);
1318 (%i8) freeof (w, sin, a[2], sin (a[2]), b*(c+d), expr);
1323 @code{freeof} avalia seus argumentos.
1326 (%i1) expr: (a+b)^5$
1328 (%i3) freeof (c, expr);
1333 @code{freeof} não considera expressões equivalentes.
1334 Simplificação pode retornar uma expressão equivalente mas diferente.
1337 (%i1) expr: (a+b)^5$
1338 (%i2) expand (expr);
1340 (%o2) b + 5 a b + 10 a b + 10 a b + 5 a b + a
1341 (%i3) freeof (a+b, %);
1343 (%i4) freeof (a+b, expr);
1348 (%i6) freeof (exp, exp (x));
1352 @item Um somatório ou uma integral definida está livre de uma variável dummy.
1353 Uma integral indefinida não é livre de suas variáveis de integração.
1356 (%i1) freeof (i, 'sum (f(i), i, 0, n));
1358 (%i2) freeof (x, 'integrate (x^2, x, 0, 1));
1360 (%i3) freeof (x, 'integrate (x^2, x));
1367 @c IS THIS DEFINITION CORRECT ??
1368 @deffn {Função} genfact (@var{x}, @var{y}, @var{z})
1369 Retorna o factorial generalizado, definido como
1370 @code{x (x-z) (x - 2 z) ... (x - (y - 1) z)}. Dessa forma, para integral @var{x},
1371 @code{genfact (x, x, 1) = x!} e @code{genfact (x, x/2, 2) = x!!}.
1375 @deffn {Função} imagpart (@var{expr})
1376 Retorna a parte imaginária da expressão @var{expr}.
1378 @code{imagpart} é uma função computacional,
1379 não uma função de simplificação.
1380 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
1381 @c SEE ALSO SF BUG REPORT # 902290
1383 Veja também @code{abs}, @code{carg}, @code{polarform}, @code{rectform},
1386 @c NEED EXAMPLES HERE
1389 @deffn {Função} infix (@var{op})
1390 @deffnx {Função} infix (@var{op}, @var{lbp}, @var{rbp})
1391 @deffnx {Função} infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})
1392 Declara @var{op} para ser um operador infixo.
1393 Um operador infixo é uma função de dois argumentos,
1394 com o nome da função escrito entre os argumentos.
1395 Por exemplo, o operador de subtração @code{-} é um operador infixo.
1397 @code{infix (@var{op})} declara @var{op} para ser um operador infixo
1398 com expoentes associados padrão (esquerdo e direito ambos iguais a 180)
1399 e podendo ser qualquer entre prefixado, infixado, posfixado, nário,
1400 matchfix e nofix (esquerdo e direito ambos iguais a @code{any}).
1401 @c HOW IS pos DIFFERENT FROM lpos AND rpos ??
1403 @code{infix (@var{op}, @var{lbp}, @var{rbp})} declara @var{op} para ser um operador infixo
1404 com expoentes associados esquerdo e directio equilibrados
1405 e podendo ser qualquer entre prefixado, infixado, posfixado, nário,
1406 matchfix e nofix (esquerdo e direito ambos iguais a @code{any}).
1408 @code{infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})}
1409 declara @var{op} para ser um operdor infixo
1410 com expoentes associados padrão e podendo ser um entre
1411 prefixado, infixado, posfixado, nário, matchfix e nofix.
1413 A precedência de @var{op} com relação a outros operadores
1414 derivam dos expoentes associados directiro e esquerdo dos operadores em questão.
1415 Se os expoentes associados esquerdo e direito de @var{op} forem ambos maiores
1416 que o expoente associado esquerdo e o direito de algum outro operador,
1417 então @var{op} tem prededência sobre o outro operador.
1418 Se os expoentes associados não forem ambos maior ou menor,
1419 alguma relação mais complicada ocorre.
1421 A associatividade de @var{op} depende de seus expoentes associados.
1422 Maior expoente associado esquerdo (@var{eae}) implica uma instância de
1423 @var{op} é avaliadas antes de outros operadores para sua esquerda em uma expressão,
1424 enquanto maior expoente associado direito (@var{ead}) implica uma instância de
1425 @var{op} é avaliada antes de outros operadores para sua direita em uma expressão.
1426 Dessa forma maior @var{eae} torna @var{op} associativo à direita,
1427 enquanto maior @var{ead} torna @var{op} associativa à esquerda.
1428 Se @var{eae} for igual a @var{ead}, @var{op} é associativa à esquerda.
1430 Veja também @code{Syntax}.
1434 Se os expoentes associados esquerdo e direito de @var{op} forem ambos maiores
1435 que os expoentes associados à direita e à esquerda de algum outro operador,
1436 então @var{op} tem precedência sobre o outro operador.
1439 @c :lisp (get '$+ 'lbp)
1440 @c :lisp (get '$+ 'rbp)
1441 @c infix ("##", 101, 101);
1442 @c "##"(a, b) := sconcat("(", a, ",", b, ")");
1444 @c infix ("##", 99, 99);
1448 (%i1) :lisp (get '$+ 'lbp)
1450 (%i1) :lisp (get '$+ 'rbp)
1452 (%i1) infix ("##", 101, 101);
1454 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")");
1455 (%o2) (a ## b) := sconcat("(", a, ",", b, ")")
1456 (%i3) 1 + a ## b + 2;
1458 (%i4) infix ("##", 99, 99);
1460 (%i5) 1 + a ## b + 2;
1464 grande @var{eae} torna @var{op} associativa à direita,
1465 enquanto grande @var{ead} torna @var{op} associativa à esquerda.
1468 @c infix ("##", 100, 99);
1469 @c "##"(a, b) := sconcat("(", a, ",", b, ")")$
1470 @c foo ## bar ## baz;
1471 @c infix ("##", 100, 101);
1472 @c foo ## bar ## baz;
1475 (%i1) infix ("##", 100, 99);
1477 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")")$
1478 (%i3) foo ## bar ## baz;
1479 (%o3) (foo,(bar,baz))
1480 (%i4) infix ("##", 100, 101);
1482 (%i5) foo ## bar ## baz;
1483 (%o5) ((foo,bar),baz)
1488 @defvr {Variável de opção} inflag
1489 Velor padrão: @code{false}
1491 Quando @code{inflag} for @code{true}, funções para extração de
1492 partes inspecionam a forma interna de @code{expr}.
1494 Note que o simplificador re-organiza expressões.
1495 Dessa forma @code{first (x + y)} retorna @code{x} se @code{inflag}
1496 for @code{true} e @code{y} se @code{inflag} for @code{false}.
1497 (@code{first (y + x)} fornece os mesmos resultados.)
1499 Também, escolhendo @code{inflag} para @code{true} e chamando @code{part} ou @code{substpart} é
1500 o mesmo que chamar @code{inpart} ou @code{substinpart}.
1502 As funções afectadas pela posição do sinalizador @code{inflag} são:
1503 @code{part}, @code{substpart}, @code{first}, @code{rest}, @code{last}, @code{length},
1504 a estrutura @code{for} ... @code{in},
1505 @code{map}, @code{fullmap}, @code{maplist}, @code{reveal} e @code{pickapart}.
1507 @c NEED EXAMPLES HERE
1511 @deffn {Função} inpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1512 É similar a @code{part} mas trabalha sobre a representação
1513 interna da expressão em lugar da forma de exibição e
1514 dessa forma pode ser mais rápida uma vez que nenhuma formatação é realizada. Cuidado deve ser tomado
1515 com relação à ordem de subexpressões em adições e produtos
1516 (uma vez que a ordem das variáveis na forma interna é muitas vezes diferente
1517 daquela na forma mostrada) e no manuseio com menos unário,
1518 subtração, e divisão (uma vez que esses operadores são removidos da
1519 expressão). @code{part (x+y, 0)} ou @code{inpart (x+y, 0)} retorna @code{+}, embora com o objectivo de
1520 referirse ao operador isso deva ser abraçado por aspas duplas. Por exemplo
1521 @code{... if inpart (%o9,0) = "+" then ...}.
1528 (%i2) inpart (%, 3, 2);
1530 (%i3) part (%th (2), 1, 2);
1532 (%i4) 'limit (f(x)^g(x+1), x, 0, minus);
1536 (%i5) inpart (%, 1, 2);
1543 @deffn {Função} isolate (@var{expr}, @var{x})
1544 Retorna @var{expr} com subexpressões que são adições e
1545 que não possuem @var{x} substituido por rótulos de expressão intermédia
1546 (esses sendo símbolos at@^omicos como @code{%t1}, @code{%t2}, ...). Isso é muitas vezes útil
1547 para evitar expansões desnecessárias de subexpressões que não possuam
1548 a variável de interesse. Uma vez que os rótulos intermédios são associados às
1549 subexpressões eles podem todos ser substituídos de volta por avaliação da
1550 expressão em que ocorrerem.
1552 @code{exptisolate} (valor padrão: @code{false}) se @code{true} fará com que @code{isolate} examine expoentes de
1553 átomos (como @code{%e}) que contenham @var{x}.
1555 @code{isolate_wrt_times} se @code{true}, então @code{isolate} irá também isolar com relação a
1556 produtos. Veja @code{isolate_wrt_times}.
1558 Faça @code{example (isolate)} para exemplos.
1563 @defvr {Variável de opção} isolate_wrt_times
1564 Valor por omissão: @code{false}
1566 Quando @code{isolate_wrt_times} for @code{true}, @code{isolate}
1567 irá também isolar com relação a produtos. E.g. compare ambas as escolhas do
1571 (%i1) isolate_wrt_times: true$
1572 (%i2) isolate (expand ((a+b+c)^2), c);
1584 (%o4) c + %t3 c + %t2 c + %t4
1585 (%i4) isolate_wrt_times: false$
1586 (%i5) isolate (expand ((a+b+c)^2), c);
1588 (%o5) c + 2 b c + 2 a c + %t4
1594 @defvr {Variável de opção} listconstvars
1595 Valor por omissão: @code{false}
1597 Quando @code{listconstvars} for @code{true}, isso fará com que @code{listofvars}
1598 inclua @code{%e}, @code{%pi}, @code{%i}, e quaisquer variáveis declaradas contantes na lista
1599 seja retornado se aparecer na expressão que chamar @code{listofvars}.
1600 O comportamento padrão é omitir isso.
1604 @defvr {Variável de opção} listdummyvars
1605 Valor por omissão: @code{true}
1607 Quando @code{listdummyvars} for @code{false}, "variáveis dummy" na
1608 expressão não serão incluídas na lista retornada por @code{listofvars}.
1609 (O significado de "variável dummy" é o mesmo que em @code{freeof}.
1610 "Variáveis dummy" são conceitos matemáticos como o índice de um somatório ou
1611 produtório, a variável limite, e a variável da integral definida.)
1615 (%i1) listdummyvars: true$
1616 (%i2) listofvars ('sum(f(i), i, 0, n));
1618 (%i3) listdummyvars: false$
1619 (%i4) listofvars ('sum(f(i), i, 0, n));
1626 @deffn {Função} listofvars (@var{expr})
1627 Retorna uma lista de variáveis em @var{expr}.
1629 @code{listconstvars} se @code{true} faz com que @code{listofvars} inclua @code{%e}, @code{%pi},
1630 @code{%i}, e quaisquer variáveis declaradas constantes na lista é retornada se
1631 aparecer em @var{expr}. O comportamento padrão é omitir isso.
1634 (%i1) listofvars (f (x[1]+y) / g^(2+a));
1642 @deffn {Função} lfreeof (@var{lista}, @var{expr})
1643 Para cada um dos membros @var{m} de lista, chama @code{freeof (@var{m}, @var{expr})}.
1644 Retorna @code{false} se qualquer chamada a @code{freeof} for feita e @code{true} de outra forma.
1647 @deffn {Função} lopow (@var{expr}, @var{x})
1648 Retorna o menor expoente de @var{x} que explicitamente aparecer em
1649 @var{expr}. Dessa forma
1652 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1659 @deffn {Função} lpart (@var{rótulo}, @var{expr}, @var{n_1}, ..., @var{n_k})
1660 é similar a @code{dpart} mas usa uma caixa rotulada. Uma caixa
1661 rotulada é similar à que é produzida por @code{dpart} mas a
1662 produzida por @code{lpart} tem o nome na linha do topo.
1667 @deffn {Função} multthru (@var{expr})
1668 @deffnx {Função} multthru (@var{expr_1}, @var{expr_2})
1669 Multiplica um factor (que pode ser uma adição) de @var{expr} pelos
1670 outros factores de @var{expr}. Isto é, @var{expr} é @code{@var{f_1} @var{f_2} ... @var{f_n}}
1672 um factor, digamos @var{f_i}, é uma soma de termos. Cada termo naquela soma é
1673 multiplicado por outros factores no produto. (A saber todos os
1674 factores excepto @var{f_i}). @code{multthru} não expande somas exponenciais.
1675 Essa função é o caminho mais rápido para distribuir produtos (comutativos
1676 ou não) sobre adições. Uma vez que quocientes são representados como
1677 produtos @code{multthru} podem ser usados para dividir adições por produtos também.
1679 @code{multthru (@var{expr_1}, @var{expr_2})} multiplica cada termo em @var{expr_2} (que pode ser uma
1680 adição ou uma equção) por @var{expr_1}. Se @var{expr_1} não for por si mesmo uma adição então essa
1681 forma é equivalente a @code{multthru (@var{expr_1}*@var{expr_2})}.
1684 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
1686 (%o1) - ----- + -------- - --------
1689 (%i2) multthru ((x-y)^3, %);
1691 (%o2) - (x - y) + x (x - y) - f(x)
1692 (%i3) ratexpand (%);
1694 (%o3) - y + x y - f(x)
1695 (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
1697 (b + a) s + 2 a b s + a b
1698 (%o4) ------------------------------
1701 (%i5) multthru (%); /* note que isso não expande (b+a)^10 */
1704 (%o5) - + --- + ---------
1707 (%i6) multthru (a.(b+c.(d+e)+f));
1708 (%o6) a . f + a . c . (e + d) + a . b
1709 (%i7) expand (a.(b+c.(d+e)+f));
1710 (%o7) a . f + a . c . e + a . c . d + a . b
1716 @deffn {Função} nounify (@var{f})
1717 Retorna a forma substantiva do nome da função @var{f}. Isso é
1718 necessário se se quer referir ao nome de uma função verbo como se esse nome
1719 fosse um substantivo. Note que algumas funções verbos irão retornar sua forma
1720 substantiva senão puderem ser avaliadas para certos argumentos. A forma substantiva é também
1721 a forma retornada se uma chamada de função é precedida por um apóstrofo.
1726 @deffn {Função} nterms (@var{expr})
1727 Retorna o número de termos que @var{expr} pode ter se for
1728 completamente expandida e nenhum cancelamento ou combinação de termos
1730 Note expressões como @code{sin (@var{expr})}, @code{sqrt (@var{expr})}, @code{exp (@var{expr})}, etc.
1731 contam como apenas um termo independentemente de quantos termos @var{expr} tenha (se @var{expr} for uma
1737 @deffn {Função} op (@var{expr})
1738 Retorna o operador principal da expressão @var{expr}.
1739 @code{op (@var{expr})} é equivalente a @code{part (@var{expr}, 0)}.
1741 @code{op} retorna uma sequência de caracteres se o operador principal for uma
1742 operador interno ou definido pelo utilizador como
1743 prefixado, binário ou n-ário infixo, posfixado, matchfix ou nofix.
1744 De outra forma, se @var{expr} for uma expressão de função subscrita,
1745 @code{op} retorna uma função subscrita;
1746 nesse caso o valor de retorno não é um átomo.
1747 De outro modo, @var{expr} é uma função de array ou uma expressão de função comum,
1748 e @code{op} retorna um símbolo.
1750 @code{op} observa o valor do sinalizador global @code{inflag}.
1752 @code{op} avalia seus argumentos.
1754 Veja também @code{args}.
1759 @c stringdisp: true$
1762 @c op ('sin (a + b));
1766 @c op ('(if a > b then c else d));
1770 @c op (F [x, y] (a, b, c));
1771 @c op (G [u, v, w]);
1775 (%i1) stringdisp: true$
1776 (%i2) op (a * b * c);
1778 (%i3) op (a * b + c);
1780 (%i4) op ('sin (a + b));
1786 (%i7) op ([a, b, c]);
1788 (%i8) op ('(if a > b then c else d));
1790 (%i9) op ('foo (a));
1792 (%i10) prefix (foo);
1796 (%i12) op (F [x, y] (a, b, c));
1799 (%i13) op (G [u, v, w]);
1806 @deffn {Função} operatorp (@var{expr}, @var{op})
1807 @deffnx {Função} operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])
1809 @code{operatorp (@var{expr}, @var{op})} retorna @code{true}
1810 se @var{op} for igual ao operador de @var{expr}.
1812 @code{operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])} retorna @code{true}
1813 se algum elementos de @var{op_1}, ..., @var{op_n} for igual ao operador de @var{expr}.
1818 @deffn {Função} optimize (@var{expr})
1819 Retorna uma expressão que produz o mesmo valor e
1820 efeito que @var{expr} mas faz de forma mais eficientemente por evitar a
1821 recomputação de subexpressões comuns. @code{optimize} também tem o mesmo
1822 efeito de "colapsar" seus argumentos de forma que todas as subexpressões comuns
1824 Faça @code{example (optimize)} para exemplos.
1828 @defvr {Variável de opção} optimprefix
1829 Valor por omissão: @code{%}
1831 @code{optimprefix} é o prefixo usado para símbolos gerados pelo
1832 comando @code{optimize}.
1837 @c WHAT DOES ">" MEAN IN THIS CONTEXT ??
1838 @deffn {Função} ordergreat (@var{v_1}, ..., @var{v_n})
1839 Escolhe aliases para as variáveis @var{v_1}, ..., @var{v_n}
1840 tais que @var{v_1} > @var{v_2} > ... > @var{v_n},
1841 e @var{v_n} > qualquer outra variável não mencionada como um
1844 Veja também @code{orderless}.
1849 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
1850 @deffn {Função} ordergreatp (@var{expr_1}, @var{expr_2})
1851 Retorna @code{true} se @var{expr_2} precede @var{expr_1} na
1852 ordenação escolhida com a função @code{ordergreat}.
1857 @c WHAT DOES "<" MEAN IN THIS CONTEXT ??
1858 @deffn {Função} orderless (@var{v_1}, ..., @var{v_n})
1859 Escolhe aliases para as variáveis @var{v_1}, ..., @var{v_n}
1860 tais que @var{v_1} < @var{v_2} < ... < @var{v_n},
1861 and @var{v_n} < qualquer outra variável não mencionada como um
1864 @c EXPRESS THIS ORDER IN A MORE COMPREHENSIBLE FASHION
1865 Dessa forma a escala de ordenação completa é: constantes numéricas <
1866 constantes declaradas < escalares declarados < primeiro argumento para @code{orderless} <
1867 ... < último argumento para @code{orderless} < variáveis que começam com A < ...
1868 < variáveis que começam com Z < último argumento para @code{ordergreat} <
1869 ... < primeiro argumento para @code{ordergreat} < @code{mainvar}s - variáveis principais declaradas.
1871 Veja também @code{ordergreat} e @code{mainvar}.
1876 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
1877 @deffn {Função} orderlessp (@var{expr_1}, @var{expr_2})
1878 Retorna @code{true} se @var{expr_1} precede @var{expr_2} na
1879 ordenação escolhida pelo comando @code{orderless}.
1884 @deffn {Função} part (@var{expr}, @var{n_1}, ..., @var{n_k})
1885 Retorna partes da forma exibida de @code{expr}. Essa função
1886 obtém a parte de @code{expr} como especificado pelos índices @var{n_1}, ..., @var{n_k}. A primeira
1887 parte @var{n_1} de @code{expr} é obtida, então a parte @var{n_2} daquela é obtida, etc. O resultado é
1888 parte @var{n_k} de ... parte @var{n_2} da parte @var{n_1} da @code{expr}.
1890 @code{part} pode ser usada para obter um elemento de uma lista, uma linha de uma matriz, etc.
1892 @c "If the last argument to a part function" => FOLLOWING APPLIES TO OTHER FUNCTIONS ??
1893 @c ATTEMPT TO VERIFY; IF SO, COPY THIS COMMENTARY TO DESCRIPTIONS OF OTHER FUNCTIONS
1894 Se o último argumento para uma função @code{part} for uma lista de índices então
1895 muitas subexpressões serão pinçadas, cada uma correspondendo a um
1896 índice da lista. Dessa forma @code{part (x + y + z, [1, 3])} é @code{z+x}.
1898 @code{piece} mantém a última expressão seleccionada quando usando as funções
1899 @code{part}. Isso é escolhido durante a execução da função e dessa forma
1900 pode referir-se à função em si mesma como mostrado abaixo.
1902 Se @code{partswitch} for escolhido para @code{true} então @code{end} é retornado quando uma
1903 parte seleccionada de uma expressão não existir, de outra forma uma mensagem de
1906 @c NEED "SEE ALSO" POINTING TO ALL OTHER PART FUNCTIONS
1908 Exemplo: @code{part (z+2*y, 2, 1)} retorna 2.
1910 @c MERGE IN example (part) OUTPUT HERE
1911 @code{example (part)} mostra exemplos adicionais.
1916 @deffn {Função} partition (@var{expr}, @var{x})
1917 Retorna uma lista de duas expressões. Elas são (1)
1918 os factores de @var{expr} (se essa expressão for um produto), os termos de @var{expr} (se isso for uma
1919 adição), ou a lista (se isso for uma lsita) que não contiver @code{var} e, (2)
1920 os factores, termos, ou lista que faz.
1923 (%i1) partition (2*a*x*f(x), x);
1925 (%i2) partition (a+b, x);
1927 (%i3) partition ([a, b, f(a), c], a);
1928 (%o3) [[b, c], [a, f(a)]]
1934 @defvr {Variável de opção} partswitch
1935 Valor por omissão: @code{false}
1937 Quando @code{partswitch} for @code{true}, @code{end} é retornado
1938 quando uma parte seleccionada de uma expressão não existir, de outra forma uma
1939 mensagem de erro é fornecida.
1943 @deffn {Função} pickapart (@var{expr}, @var{n})
1944 Atribui rótulos de expressão intermédia a subexpressões de
1945 @var{expr} de comprimento @var{n}, um inteiro.
1946 A subexpressões maiores ou menores não são atribuidos rótulos.
1947 @code{pickapart} retorna uma expressão em termos de expressões intermédias
1948 equivalentes à expressão original @var{expr}.
1950 Veja também @code{part}, @code{dpart}, @code{lpart}, @code{inpart}, e @code{reveal}.
1955 (%i1) expr: (a+b)/2 + sin (x^2)/3 - log (1 + sqrt(x+1));
1958 (%o1) - log(sqrt(x + 1) + 1) + ------- + -----
1960 (%i2) pickapart (expr, 0);
1964 (%t2) - log(sqrt(x + 1) + 1) + ------- + -----
1968 (%i3) pickapart (expr, 1);
1970 (%t3) - log(sqrt(x + 1) + 1)
1983 (%o5) %t5 + %t4 + %t3
1984 (%i5) pickapart (expr, 2);
1986 (%t6) log(sqrt(x + 1) + 1)
1996 (%o8) --- + --- - %t6
1998 (%i8) pickapart (expr, 3);
2000 (%t9) sqrt(x + 1) + 1
2007 (%o10) ----- - log(%t9) + ---------
2009 (%i10) pickapart (expr, 4);
2015 (%o11) ------- + ----- - log(%t11 + 1)
2017 (%i11) pickapart (expr, 5);
2023 (%o12) ------- + ----- - log(sqrt(%t12) + 1)
2025 (%i12) pickapart (expr, 6);
2028 (%o12) ------- + ----- - log(sqrt(x + 1) + 1)
2035 @defvr {Variável de sistema} piece
2036 Mantém a ultima expressão seleccionada quando usando funções
2038 @c WHAT DOES THIS MEAN EXACTLY ??
2039 Isso é escolhido durante a execução da função e dessa forma
2040 pode referir-se à função em si mesma.
2042 @c NEED "SEE ALSO" TO POINT TO LIST OF ALL RELEVANT FUNCTIONS
2047 @deffn {Função} polarform (@var{expr})
2048 Retorna uma expressão @code{r %e^(%i theta)} equivalente a @var{expr},
2049 tal que @code{r} e @code{theta} sejam puramente reais.
2053 @c ISN'T THERE AN EQUIVALENT FUNCTION SOMEWHERE ??
2054 @c NEEDS WORK (IF KEPT)
2055 @deffn {Função} powers (@var{expr}, @var{x})
2056 Fornece os expoentes de @var{x} que ocorrem em expressão @var{expr}.
2058 @code{load ("powers")} chama essa função.
2059 @c HMM, THERE'S A BUNCH OF MAXIMA FUNCTIONS IN src/powers.lisp ...
2060 @c FOR SOME REASON src/powers.lisp IS NOT PART OF THE USUAL BUILD -- STRANGE
2062 @c HERE IS THE TEXT FROM archive/share/unknown/powers.usg -- MERGE !!!
2063 @c THIS FUNCTION IS A GENERALISATION OF "HIPOW" AND "LOPOW"
2064 @c IN THAT IT RETURNS A LIST OF ALL THE POWERS OF VAR OCCURING
2065 @c IN EXPR. IT IS STILL NECESSARY TO EXPAND EXPR BEFORE APPLYING
2066 @c POWERS (ON PAIN OF GETTING THE WRONG ANSWER).
2068 @c THIS FUNCTION HAS MANY USES, E.G. IF YOU WANT TO FIND ALL
2069 @c THE COEFFICIENTS OF X IN A POLYNOMIAL POLY YOU CAN USE
2070 @c MAP(LAMBDA([POW],COEFF(POLY,X,POW)),POWERS(POLY,X));
2071 @c AND MANY OTHER SIMILAR USEFUL HACKS.
2076 @deffn {Função} product (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2077 Representa um produto dos velores de @code{expr} com
2078 o índice @var{i} variando de @var{i_0} a @var{i_1}.
2079 A forma substantiva @code{'product} é mostrada como um pi maiísculo.
2081 @code{product} avalia @var{expr} e os limites inferior e superior @var{i_0} e @var{i_1},
2082 @code{product} coloca um apóstrofo (não avalia) o índice @var{i}.
2084 Se os limites superiores e inferiores diferirem por um inteiro,
2085 @var{expr} é avaliada para cada valor do índice @var{i},
2086 e o resultado um produto explícito.
2088 de outra forma, o intervalo do índice é indefinido.
2089 Algumas regras são aplicads para simplificar o produto.
2090 Quando a variável global @code{simpproduct} for @code{true}, regras adicionais são aplicadas.
2091 Em alguns casos, simplificação um resultado que não é um produto;
2092 de outra forma, o resultado é uma forma substantiva @code{'product}.
2094 Veja também @code{nouns} e @code{evflag}.
2099 @c product (x + i*(i+1)/2, i, 1, 4);
2100 @c product (i^2, i, 1, 7);
2101 @c product (a[i], i, 1, 7);
2102 @c product (a(i), i, 1, 7);
2103 @c product (a(i), i, 1, n);
2104 @c product (k, k, 1, n);
2105 @c product (k, k, 1, n), simpproduct;
2106 @c product (integrate (x^k, x, 0, 1), k, 1, n);
2107 @c product (if k <= 5 then a^k else b^k, k, 1, 10);
2111 (%i1) product (x + i*(i+1)/2, i, 1, 4);
2112 (%o1) (x + 1) (x + 3) (x + 6) (x + 10)
2113 (%i2) product (i^2, i, 1, 7);
2115 (%i3) product (a[i], i, 1, 7);
2118 (%i4) product (a(i), i, 1, 7);
2119 (%o4) a(1) a(2) a(3) a(4) a(5) a(6) a(7)
2120 (%i5) product (a(i), i, 1, n);
2127 (%i6) product (k, k, 1, n);
2134 (%i7) product (k, k, 1, n), simpproduct;
2136 (%i8) product (integrate (x^k, x, 0, 1), k, 1, n);
2143 (%i9) product (if k <= 5 then a^k else b^k, k, 1, 10);
2151 @deffn {Função} realpart (@var{expr})
2152 Retorna a parte real de @var{expr}. @code{realpart} e @code{imagpart} irão
2153 trabalhar sobre expressões envolvendo funções trigonométricas e hiperbólicas,
2154 bem como raízes quadradas, logaritmos, e exponenciação.
2159 @deffn {Função} rectform (@var{expr})
2160 Retorna uma expressão @code{a + b %i} equivalente a @var{expr},
2161 tal que @var{a} e @var{b} sejam puramente reais.
2165 @deffn {Função} rembox (@var{expr}, unlabelled)
2166 @deffnx {Função} rembox (@var{expr}, @var{rótulo})
2167 @deffnx {Função} rembox (@var{expr})
2168 Remove caixas de @var{expr}.
2170 @code{rembox (@var{expr}, unlabelled)} remove todas as caixas sem rótulos de @var{expr}.
2172 @code{rembox (@var{expr}, @var{rótulo})} remove somente caixas contendo @var{rótulo}.
2174 @code{rembox (@var{expr})} remove todas as caixas, rotuladas e nã rotuladas.
2176 Caixas são desenhadas pelas funções @code{box}, @code{dpart}, e @code{lpart}.
2181 @c expr: (a*d - b*c)/h^2 + sin(%pi*x);
2182 @c dpart (dpart (expr, 1, 1), 2, 2);
2183 @c expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2184 @c rembox (expr2, unlabelled);
2185 @c rembox (expr2, FOO);
2186 @c rembox (expr2, BAR);
2190 (%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);
2192 (%o1) sin(%pi x) + ---------
2195 (%i2) dpart (dpart (expr, 1, 1), 2, 2);
2197 (%o2) sin("%pi x") + ---------
2202 (%i3) expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2203 FOO""""""""""" BAR""""""""
2204 " """"""" " "a d - b c"
2205 (%o3) "sin("%pi x")" + "---------"
2206 " """"""" " " """" "
2207 """""""""""""" " " 2" "
2211 (%i4) rembox (expr2, unlabelled);
2213 FOO""""""""" "a d - b c"
2214 (%o4) "sin(%pi x)" + "---------"
2218 (%i5) rembox (expr2, FOO);
2221 (%o5) sin("%pi x") + "---------"
2227 (%i6) rembox (expr2, BAR);
2229 " """"""" " a d - b c
2230 (%o6) "sin("%pi x")" + ---------
2235 (%i7) rembox (expr2);
2237 (%o7) sin(%pi x) + ---------
2244 @deffn {Função} sum (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2245 Representa um somatório dos valores de @var{expr} com
2246 o índice @var{i} variando de @var{i_0} a @var{i_1}.
2247 A forma substantiva @code{'sum} é mostrada com uma letra sigma maiúscula.
2248 @code{sum} avalia seu somando @var{expr} e limites inferior e superior @var{i_0} e @var{i_1},
2249 @code{sum} coloca apóstrofo (não avalia) o índice @var{i}.
2251 Se os limites superiores e inferiores diferirem de um número inteiro,
2252 o somatoriando @var{expr} é avaliado para cada valor do índice do somatório @var{i},
2253 e o resultado é uma adição explícita.
2255 De outra forma, o intervalo dos índices é indefinido.
2256 Algumas regras são aplicadas para simplificar o somatório.
2257 Quando a variável global @code{simpsum} for @code{true}, regras adicionais são aplicadas.
2258 Em alguns casos, simplificações retornam um resultado que não é um somatório;
2259 de outra forma, o resultado é uma forma substantiva @code{'sum}.
2261 Quando o @code{evflag} (sinalizador de avaliação) @code{cauchysum} for @code{true},
2262 um produto de somatórios é mostrado como um produto de Cauchy,
2263 no qual o índice do somatório mais interno é uma função de
2264 índice de um nível acima, em lugar de variar independentemente.
2266 A variável global @code{genindex} é o prefixo alfabético usado para gerar o próximo índice do somatório,
2267 quando um índice automaticamente gerado for necessário.
2269 @code{gensumnum} é o sufixo numérico usando para gerar o próximo índice do somatório,
2270 quando um índice gerado automaticamente for necessário.
2271 Quando @code{gensumnum} for @code{false}, um índice gerado automaticamente é somente
2272 @code{genindex} sem sufixo numérico.
2274 Veja também @code{sumcontract}, @code{intosum},
2275 @code{bashindices}, @code{niceindices},
2276 @code{nouns}, @code{evflag}, e @code{zeilberger}.
2281 @c sum (i^2, i, 1, 7);
2282 @c sum (a[i], i, 1, 7);
2283 @c sum (a(i), i, 1, 7);
2284 @c sum (a(i), i, 1, n);
2285 @c sum (2^i + i^2, i, 0, n);
2286 @c sum (2^i + i^2, i, 0, n), simpsum;
2287 @c sum (1/3^i, i, 1, inf);
2288 @c sum (1/3^i, i, 1, inf), simpsum;
2289 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2290 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2291 @c sum (integrate (x^k, x, 0, 1), k, 1, n);
2292 @c sum (if k <= 5 then a^k else b^k, k, 1, 10);
2296 (%i1) sum (i^2, i, 1, 7);
2298 (%i2) sum (a[i], i, 1, 7);
2299 (%o2) a + a + a + a + a + a + a
2301 (%i3) sum (a(i), i, 1, 7);
2302 (%o3) a(7) + a(6) + a(5) + a(4) + a(3) + a(2) + a(1)
2303 (%i4) sum (a(i), i, 1, n);
2311 (%i5) sum (2^i + i^2, i, 0, n);
2319 (%i6) sum (2^i + i^2, i, 0, n), simpsum;
2322 (%o6) 2 + --------------- - 1
2324 (%i7) sum (1/3^i, i, 1, inf);
2332 (%i8) sum (1/3^i, i, 1, inf), simpsum;
2336 (%i9) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2344 (%i10) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2347 (%i11) sum (integrate (x^k, x, 0, 1), k, 1, n);
2355 (%i12) sum (if k <= 5 then a^k else b^k, k, 1, 10));
2356 Incorrect syntax: Too many )'s
2357 else b^k, k, 1, 10))
2361 (%i12) sum (integrate (x^k, x, 0, 1), k, 1, n);
2369 (%i13) sum (if k <= 5 then a^k else b^k, k, 1, 10);
2371 (%o13) b + b + b + b + b + a + a + a + a + a
2376 @deffn {Função} lsum (@var{expr}, @var{x}, @var{L})
2377 Representas a adição de @var{expr} a cada elemento @var{x} em @var{L}.
2379 Uma forma substantiva @code{'lsum} é retornada
2380 se o argumento @var{L} não avaliar para uma lista.
2385 @c lsum (x^i, i, [1, 2, 7]);
2386 @c lsum (i^2, i, rootsof (x^3 - 1, x));
2389 (%i1) lsum (x^i, i, [1, 2, 7]);
2392 (%i2) lsum (i^2, i, rootsof (x^3 - 1, x));
2399 i in rootsof(x - 1, x)
2404 @deffn {Função} verbify (@var{f})
2405 Retorna a forma verbal da função chamada @var{f}.
2407 Veja também @code{verb}, @code{noun}, e @code{nounify}.
2418 (%i1) verbify ('foo);
2422 (%i2) nounify (foo);