1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /Expressions.texi/1.53/Sat Jun 2 00:12:43 2007/-ko/
4 * Introdução a Expressões::
6 * Substantivos e Verbos::
8 * Seq@"{u}ências de caracteres::
11 * Funções e Variáveis Definidas para Expressões::
14 @node Introdução a Expressões, Complexo, Expressões, Expressões
15 @section Introdução a Expressões
17 Existe um conjunto de palavras reservadas que não pode ser usado como
18 nome de variável. Seu uso pode causar um possível erro crítico de sintaxe.
21 integrate next from diff
25 unless product while thru
29 Muitas coisas em Maxima são expressões. Uma seq@"{u}ência de expressões
30 pode ser feita dentro de uma expressão maior através da separação dessas através de vírgulas e
31 colocando parêntesis em torno dela. Isso é similar ao @b{C}
32 @i{expressão com vírgula}.
36 (%i2) (x: x+1, x: x^2);
38 (%i3) (if (x > 17) then 2 else 4);
40 (%i4) (if (x > 17) then x: 2 else y: 4, y+x);
44 Mesmo ciclos em Maxima são expressões, embora o valor de retorno desses
45 ciclos não seja muito útil (eles retornam sempre @code{done}).
48 (%i1) y: (x: 1, for i from 1 thru 10 do (x: x*i))$
53 contanto que o que você realmente queira seja provavelmente incluir um terceiro
54 termo na @i{expressão com vírgula} que fornece de volta o valor atualizado.
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, Seq@"{u}ê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 @ref{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 @ref{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 Seq@"{u}ências de caracteres, Desigualdade, Identificadores, Expressões
219 @section Seq@"{u}ências de caracteres
221 Strings (seq@"{u}ê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 Seq@"{u}ê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 seq@"{u}ê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 seq@"{u}ê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 exceto através de encaixar o caractere literal na seq@"{u}ência de caracteres.
241 Não existe tipo de caractere no Maxima;
242 um caractere simples é representado como uma seq@"{u}ência de caracteres de um único caractere.
244 Seq@"{u}ências de caracteres no Maxima são implementadas como símbolos do Lisp, não como seq@"{u}encias de caracteres do not Lisp;
245 o que pode mudar em futuras versões do Maxima.
246 Maxima pode mostrar seq@"{u}ê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 seq@"{u}ências de caracteres.
255 @c s_1 : "Isso é uma seq@"{u}ência de caracteres do Maxima.";
256 @c s_2 : "Caracteres \"aspas duplas\" e contrabarras \\ encaixados em uma seq@"{u}ência de caracteres.";
257 @c s_3 : "Caractere de fim de linha encaixado
258 @c nessa seq@"{u}ência de caracteres.";
261 @c fim de linha nessa \
262 @c seq@"{u}ência de caracteres.";
263 @c stringdisp : false;
265 @c stringdisp : true;
269 (%i1) s_1 : "Isso é uma seq@"{u}ência de caracteres do Maxima.";
270 (%o1) Isso é uma seq@"{u}ência de caracteres do Maxima.
271 (%i2) s_2 : "Caracteres \"aspas duplas\" e contrabarras \\ encaixados em uma seq@"{u}ência de caracteres.";
272 (%o2) Caracteres "aspas duplas" e contrabarra \ encaixados em uma seq@"{u}ência de caracteres.
273 (%i3) s_3 : "Caractere de fim de linha encaixado
274 nessa seq@"{u}ência de caracteres.";
275 (%o3) Caractere de fim de linha encaixado
276 nessa seq@"{u}ência de caracteres.
277 (%i4) s_4 : "Ignore o \
280 seq@"{u}ência de caracteres.";
281 (%o4) Ignore o caractere de fim de linha nessa seq@"{u}ência de caracteres.
282 (%i5) stringdisp : false;
285 (%o6) Isso é uma seq@"{u}ência de caracteres do Maxima.
286 (%i7) stringdisp : true;
289 (%o8) "Isso é uma seq@"{u}ência de caracteres do Maxima."
292 @node Desigualdade, Sintaxe, Seq@"{u}ê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, Funções e Variáveis Definidas 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 é direto.
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 usuário é 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 @ref 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 Funções e Variáveis Definidas para Expressões, , Sintaxe, Expressões
461 @section Funções e Variáveis Definidas 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 efetivamente 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 padrã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 atual de @code{boxchar};
590 o caractere de desenho não é armazenado com a expressão de caixa. Isso quer dizer que se você
591 desenhar uma caixa e em seguida mudar o caractere de desenho a caixa anteriormente
592 desenhada será redesenhada com o caractere mudado caso isso seja solicitado.
596 @deffn {Função} carg (@var{z})
597 Retorna o argumento complexo de @var{z}.
598 O argumento complexo é um ângulo @code{theta} no intervalo de @code{(-%pi, %pi]}
599 tal que @code{r exp (theta %i) = @var{z}} onde @code{r} é o módulo de @var{z}.
600 @c ACTUALLY carg DOESN'T ALWAYS RETURN A VALUE IN (-%pi, %pi]; SEE SF BUG REPORT # 816166
602 @code{carg} é uma função computacional,
603 não uma função de simplificação.
604 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
605 @c SEE ALSO SF BUG REPORT # 902290
607 @code{carg} ignora a declaração @code{declare (@var{x}, complex)},
608 e trata @var{x} como uma variável real.
609 Isso é um erro. @c SEE SF BUG REPORT # 620246
611 Veja também @code{abs} (módulo de número complexo), @code{polarform}, @code{rectform},
612 @code{realpart}, e @code{imagpart}.
620 @c carg (exp (%pi * %i));
621 @c carg (exp (3/2 * %pi * %i));
622 @c carg (17 * exp (2 * %i));
632 (%i3) carg (exp (%i));
634 (%i4) carg (exp (%pi * %i));
636 (%i5) carg (exp (3/2 * %pi * %i));
640 (%i6) carg (17 * exp (2 * %i));
646 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
647 @c CROSS REF declare, properties, ETC
648 @deffn {Opereador especial} constant
649 @code{declare (@var{a}, constant)} declara @var{a} para ser uma constante.
651 @c WHAT EXACTLY ARE THE CONSEQUENCES OF DECLARING AN ATOM TO BE CONSTANT ??
655 @deffn {Função} constantp (@var{expr})
656 Retorna @code{true} se @var{expr} for uma expressão constante,
657 de outra forma retorna @code{false}.
658 @c WHAT DOES MAXIMA KNOW ABOUT CONSTANT EXPRESSIONS ??
660 Uma expressão é considerada uma expressão constante se seus argumentos forem
661 números (incluindo números racionais, como mostrado com @code{/R/}),
662 constantes simbólicas como @code{%pi}, @code{%e}, e @code{%i},
663 variáveis associadas a uma constante ou constante declarada através de @code{declare},
664 ou funções cujos argumentos forem constantes.
666 @code{constantp} avalia seus argumentos.
671 @c constantp (7 * sin(2));
672 @c constantp (rat (17/29));
673 @c constantp (%pi * sin(%e));
674 @c constantp (exp (x));
675 @c declare (x, constant);
676 @c constantp (exp (x));
677 @c constantp (foo (x) + bar (%e) + baz (2));
681 (%i1) constantp (7 * sin(2));
683 (%i2) constantp (rat (17/29));
685 (%i3) constantp (%pi * sin(%e));
687 (%i4) constantp (exp (x));
689 (%i5) declare (x, constant);
691 (%i6) constantp (exp (x));
693 (%i7) constantp (foo (x) + bar (%e) + baz (2));
700 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
701 @c THIS ITEM IS EXTREMELY IMPORTANT
702 @c ENSURE THAT ALL KEYWORDS RECOGNIZED BY declare HAVE THEIR OWN DOCUMENTATION ITEMS !!
703 @c ALSO: HOW TO FIND THE LIST OF ALL SYMBOLS WHICH HAVE A GIVEN PROPERTY ??
704 @deffn {Função} declare (@var{a_1}, @var{p_1}, @var{a_2}, @var{p_2}, ...)
705 Atribui aos átomos ou lista de átomos @var{a_i} a propriedade ou lista de propriedades @var{p_i}.
706 Quando @var{a_i} e/ou @var{p_i} forem listas,
707 cada um dos átomos recebe todas as propriedades.
709 @code{declare} não avalia seus argumentos.
710 @code{declare} sempre retorna @code{done}.
712 Como colocado na descrição para cada sinalizador de declaração,
713 para alguns sinalizadores
714 @code{featurep(@var{objeto}, @var{recurso})}
715 retorna @code{true} se @var{objeto} tiver sido declarado para ter @var{recurso}.
716 Todavia, @code{featurep} não reconhece alguns sinalizadores; isso é um erro.
718 Veja também @code{features}.
720 @code{declare} reconhece as seguintes propriedades:
724 Torna @var{a_i} conhecido para @code{ev} de forma que a função nomeada por @var{a_i}
725 é aplicada quando @var{a_i} aparece como um sinalizador argumento de @code{ev}.
729 Torna @var{a_i} conhecido para a função @code{ev} de forma que @var{a_i} é associado a @code{true}
730 durante a execução de @code{ev} quando @var{a_i} aparece como um sinalizador argumento de @code{ev}.
733 @c OBSOLETE @code{special} (RECONHECIDA POR DECLARE MAS NUNCA USADA EM LUGAR ALGUM)
735 @c OBSOLETE @code{nonarray} (RECONHECIDA POR DECLARE MAS NUNCA USADA EM LUGAR ALGUM)
737 @item @code{bindtest}
738 Diz ao Maxima para disparar um erro quando @var{a_i} for avaliado como sendo livre de associação.
741 Diz ao Maxima para passar @var{a_i} como um substantivo.
742 O efeito disso é substituir intâncias de @var{a_i} com @code{'@var{a_i}}
743 ou @code{nounify(@var{a_i})}, ependendo do contexto.
745 @item @code{constant}
746 Diz ao Maxima para considerar @var{a_i} uma constante simbólica.
747 @c WHAT MAXIMA KNOWS ABOUT SYMBOLIC CONSTANTS IS PRETTY LIMITED
748 @c DUNNO IF WE WANT TO GET INTO DETAILS HERE.
749 @c MAYBE IN THE DOCUMENTATION FOR CONSTANT (IF THERE IS SUCH)
752 Diz ao Maxima para considerar @var{a_i} uma variável escalar.
754 @item @code{nonscalar}
755 Diz ao Maxima para considerar @var{a_i} uma variável não escalar.
756 The usual application is to declare a variable as a symbolic vector or matrix.
759 Diz ao Maxima para considerar @var{a_i} uma "variável principal" (@code{mainvar}).
760 @code{ordergreatp} determina a ordenação de átomos como segue:
762 (variáveis principais) > (outras variáveis) > (variáveis escalares) > (constantes) > (números)
764 @item @code{alphabetic}
765 Diz ao Maxima para reconhecer todos os caracteres em @var{a_i} (que deve ser uma seq@"{u}ência de caracteres) como caractere alfabético.
768 Diz ao Maxima para reconhecer @var{a_i} como nome de um recurso.
769 Other atoms may then be declared to have the @var{a_i} property.
771 @item @code{rassociative}, @code{lassociative}
772 Diz ao Maxima para reconhecer @var{a_i} como uma funcão associativa a direita ou associativa a esquerda.
775 Diz ao Maxima para reconhecer @var{a_i} como uma função n-ária (com muitos argumentos).
777 A declaração @code{nary} não tem o mesmo objetivo que uma chamada à função @code{nary}.
778 O único efeito de @code{declare(foo, nary)} é para instruir o simplificador do Maxima
779 a melhorar as próximas expressões,
780 por exemplo, para simplificar @code{foo(x, foo(y, z))} para @code{foo(x, y, z)}.
782 @item @code{symmetric}, @code{antisymmetric}, @code{commutative}
783 Diz ao Maxima para reconhecer @var{a_i} como uma função simétrica ou antisimétrica.
784 @code{commutative} é o mesmo que @code{symmetric}.
786 @item @code{oddfun}, @code{evenfun}
787 Diz ao Maxima para reconhecer @var{a_i} como uma função par ou uma função ímpar.
789 @item @code{outative}
790 Diz ao Maxima para simplificar expressões @var{a_i}
791 colocando fatores constantes em evidência no primeiro argumento.
793 Quando @var{a_i} tiver um argumento,
794 um fator é onsiderado constante se for um literal ou se for declarado como sendo constante.
796 Quando @var{a_i} tiver dois ou mais argumentos,
797 um fator é considerado constante
798 se o segundo argumento for um símbolo
799 e o fator estiver livre do segundo argumento.
801 @item @code{multiplicative}
802 Diz ao Maxima para simplificar expressões do tipo @var{a_i}
803 através da substituição @code{@var{a_i}(x * y * z * ...)} @code{-->}
804 @code{@var{a_i}(x) * @var{a_i}(y) * @var{a_i}(z) * ...}.
805 A substituição é realizada no primeiro argumento somente.
807 @item @code{additive}
808 Diz ao Maxima para simplificar expressões do tipo @var{a_i}
809 através da substituição @code{@var{a_i}(x + y + z + ...)} @code{-->}
810 @code{@var{a_i}(x) + @var{a_i}(y) + @var{a_i}(z) + ...}.
811 A substituição é realizada no primeiro argumento somente.
814 Equivalente a declarar @var{a_i} ao mesmo tempo @code{outative} e @code{additive}.
816 @c OBSOLETE @code{analytic} (RECOGNIZED BY DECLARE BUT NEVER USED ANYWHERE)
818 @item @code{integer}, @code{noninteger}
819 Diz ao Maxima para reconhecer @var{a_i} como como uma variável inteira ou como uma variável não inteira.
821 Maxima reconhece os seguintes recursos de objetos:
823 @item @code{even}, @code{odd}
824 Diz ao Maxima para reconhecer @var{a_i} como uma variável inteira par ou como uma variável inteira ímpar.
826 @item @code{rational}, @code{irrational}
827 Diz ao Maxima para reconhecer @var{a_i} como uma variável real e racional ou como uma variável real e irracional.
829 @item @code{real}, @code{imaginary}, @code{complex}
830 Dia ao Maxima para reconhecer @var{a_i} como uma variável real, imaginária pura ou complexa.
832 @item @code{increasing}, @code{decreasing}
833 Dia ao Maxima para reconhecer @var{a_i} como uma função de incremento ou decremento.
834 @c MAXIMA FAILS TO DEDUCE F(2) > F(1) FOR INCREASING FUNCTION F
835 @c AND FAILS TO DEDUCE ANYTHING AT ALL ABOUT DECREASING FUNCTIONS
836 @c REPORTED AS SF BUG # 1483194
839 Diz ao Maxima para reconhecer @var{a_i} como uma função positiva.
841 @item @code{integervalued}
842 Diz ao Maxima para reconhecer @var{a_i} como uma função de valores inteiros.
848 Declarações @code{evfun} e @code{evflag}.
850 @c declare (expand, evfun);
852 @c (a + b)^3, expand;
853 @c declare (demoivre, evflag);
855 @c exp (a + b*%i), demoivre;
858 (%i1) declare (expand, evfun);
863 (%i3) (a + b)^3, expand;
865 (%o3) b + 3 a b + 3 a b + a
866 (%i4) declare (demoivre, evflag);
868 (%i5) exp (a + b*%i);
871 (%i6) exp (a + b*%i), demoivre;
873 (%o6) %e (%i sin(b) + cos(b))
876 Declaração @code{bindtest}.
879 @c declare (aa, bindtest);
887 (%i2) declare (aa, bindtest);
891 -- an error. Quitting. To debug this try debugmode(true);
898 Declaração @code{noun}.
900 @c factor (12345678);
901 @c declare (factor, noun);
902 @c factor (12345678);
906 (%i1) factor (12345678);
909 (%i2) declare (factor, noun);
911 (%i3) factor (12345678);
912 (%o3) factor(12345678)
918 Declarações @code{constant}, @code{scalar}, @code{nonscalar}, e @code{mainvar}.
920 @c declare (bb, constant);
921 @c declare (cc, scalar);
922 @c declare (dd, nonscalar);
923 @c declare (ee, mainvar);
928 Declaração @code{alphabetic}.
930 @c xx\~yy\`\@ : 1729;
931 @c declare ("~`@", alphabetic);
932 @c xx~yy`@ + @yy`xx + `xx@@yy~;
936 (%i1) xx\~yy\`\@@ : 1729;
938 (%i2) declare ("~`@@", alphabetic);
940 (%i3) xx~yy`@@ + @@yy`xx + `xx@@@@yy~;
941 (%o3) `xx@@@@yy~ + @@yy`xx + 1729
942 (%i4) listofvars (%);
943 (%o4) [@@yy`xx, `xx@@@@yy~]
946 Declaração @code{feature}.
948 @c declare (FOO, feature);
950 @c featurep (x, FOO);
953 (%i1) declare (FOO, feature);
955 (%i2) declare (x, FOO);
957 (%i3) featurep (x, FOO);
961 Declarações @code{rassociative} e @code{lassociative}.
963 @c declare (F, rassociative);
964 @c declare (G, lassociative);
969 Declaração @code{nary}.
971 @c H (H (a, b), H (c, H (d, e)));
972 @c declare (H, nary);
973 @c H (H (a, b), H (c, H (d, e)));
976 (%i1) H (H (a, b), H (c, H (d, e)));
977 (%o1) H(H(a, b), H(c, H(d, e)))
978 (%i2) declare (H, nary);
980 (%i3) H (H (a, b), H (c, H (d, e)));
981 (%o3) H(a, b, c, d, e)
984 Declarações @code{symmetric} e @code{antisymmetric}.
987 @c declare (S, symmetric);
989 @c S (a, c, e, d, b);
991 @c declare (T, antisymmetric);
993 @c T (a, c, e, d, b);
998 (%i2) declare (S, symmetric);
1002 (%i4) S (a, c, e, d, b);
1003 (%o4) S(a, b, c, d, e)
1006 (%i6) declare (T, antisymmetric);
1010 (%i8) T (a, c, e, d, b);
1011 (%o8) T(a, b, c, d, e)
1014 Declarações @code{oddfun} e @code{evenfun}.
1017 @c declare (o, oddfun);
1020 @c declare (e, evenfun);
1024 (%i1) o (- u) + o (u);
1026 (%i2) declare (o, oddfun);
1028 (%i3) o (- u) + o (u);
1030 (%i4) e (- u) - e (u);
1032 (%i5) declare (e, evenfun);
1034 (%i6) e (- u) - e (u);
1038 Declaração @code{outative}.
1041 @c declare (F1, outative);
1043 @c declare (zz, constant);
1049 (%i2) declare (F1, outative);
1053 (%i4) declare (zz, constant);
1059 Declaração @code{multiplicative}.
1062 @c declare (F2, multiplicative);
1066 (%i1) F2 (a * b * c);
1068 (%i2) declare (F2, multiplicative);
1070 (%i3) F2 (a * b * c);
1071 (%o3) F2(a) F2(b) F2(c)
1074 Declaração @code{additive}.
1077 @c declare (F3, additive);
1081 (%i1) F3 (a + b + c);
1083 (%i2) declare (F3, additive);
1085 (%i3) F3 (a + b + c);
1086 (%o3) F3(c) + F3(b) + F3(a)
1089 Declaração @code{linear}.
1091 @c 'sum (F(k) + G(k), k, 1, inf);
1092 @c declare (nounify (sum), linear);
1093 @c 'sum (F(k) + G(k), k, 1, inf);
1096 (%i1) 'sum (F(k) + G(k), k, 1, inf);
1100 (%o1) > (G(k) + F(k))
1104 (%i2) declare (nounify (sum), linear);
1106 (%i3) 'sum (F(k) + G(k), k, 1, inf);
1110 (%o3) > G(k) + > F(k)
1119 @deffn {Função} disolate (@var{expr}, @var{x_1}, ..., @var{x_n})
1120 é similar a @code{isolate (@var{expr}, @var{x})}
1121 exceto que essa função habilita ao usuário isolar
1122 mais que uma variável simultâneamente. Isso pode ser útil, por
1123 exemplo, se se tiver tentado mudar variáveis em uma integração
1124 múltipla, e em mudança de variável envolvendo duas ou mais das
1125 variáveis de integração. Essa função é chamada automaticamente de
1126 @file{simplification/disol.mac}. Uma demostração está disponível através de
1127 @code{demo("disol")$}.
1132 @deffn {Função} dispform (@var{expr})
1133 Retorna a representação externa de @var{expr} com relação a seu
1134 principal operador. Isso pode ser útil em conjunção com @code{part} que
1135 também lida com a representação externa. Suponha que @var{expr} seja -A .
1136 Então a representação interna de @var{expr} é "*"(-1,A), enquanto que
1137 a representação externa é "-"(A). @code{dispform (@var{expr}, all)} converte a
1138 expressão inteira (não apenas o nível mais alto) para o formato externo. Por
1139 exemplo, se @code{expr: sin (sqrt (x))}, então @code{freeof (sqrt, expr)} e
1140 @code{freeof (sqrt, dispform (expr))} fornece @code{true}, enquanto
1141 @code{freeof (sqrt, dispform (expr, all))} fornece @code{false}.
1146 @deffn {Função} distrib (@var{expr})
1147 Distribue adições sobre produtos. @code{distrib} difere de @code{expand}
1148 no fato de que @code{distrib} trabalha em somente no nível mais alto de uma expressão, i.e., @code{distrib} não
1149 é recursiva e @code{distrib} é mais rápida que @code{expand}. @code{distrib} difere de @code{multthru} no
1150 que @code{distrib} expande todas as adições naquele nível.
1155 (%i1) distrib ((a+b) * (c+d));
1156 (%o1) b d + a d + b c + a c
1157 (%i2) multthru ((a+b) * (c+d));
1158 (%o2) (b + a) d + (b + a) c
1159 (%i3) distrib (1/((a+b) * (c+d)));
1161 (%o3) ---------------
1163 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
1165 (%o4) ---------------------
1166 b d + a d + b c + a c
1172 @deffn {Função} dpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1173 Seleciona a mesma subexpressão que @code{part}, mas
1174 em lugar de apenas retornar aquela subexpressão como seu valor, isso retorna
1175 a expressão completa com a subexpressão selecionada mostrada dentro
1176 de uma caixa. A caixa é atualmente parte da expressão.
1179 (%i1) dpart (x+y/z^2, 1, 2, 1);
1190 @c PROBABLY MORE TO BE SAID HERE
1191 @deffn {Função} exp (@var{x})
1192 Representa função exponencial.
1193 Instâncias de @code{exp (@var{x})} em uma entrada são simplificadas para @code{%e^@var{x}};
1194 @code{exp} não aparece em expressões simplificadas.
1196 @code{demoivre} se @code{true} faz com que @code{%e^(a + b %i)} simplificar para
1197 @code{%e^(a (cos(b) + %i sin(b)))} se @code{b} for livre de @code{%i}. veja @code{demoivre}.
1199 @code{%emode}, quando @code{true},
1200 faz com que @code{%e^(%pi %i x)} seja simplificado. Veja @code{%emode}.
1202 @code{%enumer}, quando @code{true} faz com que @code{%e} seja substituído por
1203 2.718... quando @code{numer} for @code{true}. Veja @code{%enumer}.
1205 @c NEED EXAMPLES HERE
1208 @defvr {Variável de opção} %emode
1209 Valor padrão: @code{true}
1211 Quando @code{%emode} for @code{true},
1212 @code{%e^(%pi %i x)} é simplificado como
1215 @code{%e^(%pi %i x)} simplifica para @code{cos (%pi x) + %i sin (%pi x)} se @code{x} for um inteiro ou
1216 um multiplo de 1/2, 1/3, 1/4, ou 1/6, e então é adicionalmente simplificado.
1218 Para outro @code{x} numérico,
1219 @code{%e^(%pi %i x)} simplifica para @code{%e^(%pi %i y)} onde @code{y} é @code{x - 2 k}
1220 para algum inteiro @code{k} tal que @code{abs(y) < 1}.
1222 Quando @code{%emode} for @code{false}, nenhuma
1223 simplificação adicional de @code{%e^(%pi %i x)} é realizada.
1225 @c NEED EXAMPLES HERE
1228 @defvr {Variável de opção} %enumer
1229 Valor padrão: @code{false}
1231 Quando @code{%enumer} for @code{true},
1232 @code{%e} é substituido por seu valor numérico
1233 2.718... mesmo que @code{numer} seja @code{true}.
1235 Quando @code{%enumer} for @code{false}, essa substituição é realizada
1236 somente se o expoente em @code{%e^x} avaliar para um número.
1238 Veja também @code{ev} e @code{numer}.
1240 @c NEED EXAMPLES HERE
1243 @defvr {Variável de opção} exptisolate
1244 Valor padrão: @code{false}
1246 @c WHAT DOES THIS MEAN EXACTLY ??
1247 @code{exptisolate}, quando @code{true}, faz com que @code{isolate (expr, var)}
1248 examine expoentes de átomos (tais como @code{%e}) que contenham @code{var}.
1250 @c NEED EXAMPLES HERE
1253 @defvr {Variável de opção} exptsubst
1254 Valor padrão: @code{false}
1256 @code{exptsubst}, quando @code{true}, permite substituições tais como @code{y}
1257 para @code{%e^x} em @code{%e^(a x)}.
1259 @c NEED EXAMPLES HERE
1262 @deffn {Função} freeof (@var{x_1}, ..., @var{x_n}, @var{expr})
1263 @code{freeof (@var{x_1}, @var{expr})}
1265 se nenhuma subexpressão de @var{expr} for igual a @var{x_1}
1266 ou se @var{x_1} ocorrer somente uma variável que não tenha associação fora da expressão @var{expr},
1267 e retorna @code{false} de outra forma.
1269 @code{freeof (@var{x_1}, ..., @var{x_n}, @var{expr})}
1270 é equivalente a @code{freeof (@var{x_1}, @var{expr}) and ... and freeof (@var{x_n}, @var{expr})}.
1272 Os argumentos @var{x_1}, ..., @var{x_n}
1273 podem ser nomes de funções e variáveis, nomes subscritos,
1274 operadores (empacotados em aspas duplas), ou expressões gerais.
1275 @code{freeof} avalia seus argumentos.
1277 @code{freeof} opera somente sobre @var{expr} como isso representa (após simplificação e avaliação) e
1278 não tenta determinar se alguma expressão equivalente pode fornecer um resultado diferente.
1279 Em particular, simplificação pode retornar uma expressão equivalente mas diferente que compreende
1280 alguns diferentes elementos da forma original de @var{expr}.
1282 Uma variável é uma variável dummy em uma expressão se não tiver associação fora da expressão.
1283 Variáveis dummy recoreconhecidas através de @code{freeof} são
1284 o índice de um somatório ou produtório, o limite da variável em @code{limit},
1285 a variável de integração na forma de integral definida de @code{integrate},
1286 a variável original em @code{laplace},
1287 variáveis formais em expressoes @code{at},
1288 e argumentos em expressões @code{lambda}.
1289 Variáveis locais em @code{block} não são reconhecidas por @code{freeof} como variáveis dummy;
1292 A forma indefinida de @code{integrate} @i{not} é livre de suas variáveis de integração.
1296 Argumentos são nomes de funções, variáveis, nomes subscritos, operadores, e expressões.
1297 @code{freeof (a, b, expr)} é equivalente a
1298 @code{freeof (a, expr) and freeof (b, expr)}.
1301 (%i1) expr: z^3 * cos (a[1]) * b^(c+d);
1305 (%i2) freeof (z, expr);
1307 (%i3) freeof (cos, expr);
1309 (%i4) freeof (a[1], expr);
1311 (%i5) freeof (cos (a[1]), expr);
1313 (%i6) freeof (b^(c+d), expr);
1315 (%i7) freeof ("^", expr);
1317 (%i8) freeof (w, sin, a[2], sin (a[2]), b*(c+d), expr);
1322 @code{freeof} avalia seus argumentos.
1325 (%i1) expr: (a+b)^5$
1327 (%i3) freeof (c, expr);
1332 @code{freeof} não considera expressões equivalentes.
1333 Simplificação pode retornar uma expressão equivalente mas diferente.
1336 (%i1) expr: (a+b)^5$
1337 (%i2) expand (expr);
1339 (%o2) b + 5 a b + 10 a b + 10 a b + 5 a b + a
1340 (%i3) freeof (a+b, %);
1342 (%i4) freeof (a+b, expr);
1347 (%i6) freeof (exp, exp (x));
1351 @item Um somatório ou uma integral definida está livre de uma variável dummy.
1352 Uma integral indefinida não é livre de suas variáveis de integração.
1355 (%i1) freeof (i, 'sum (f(i), i, 0, n));
1357 (%i2) freeof (x, 'integrate (x^2, x, 0, 1));
1359 (%i3) freeof (x, 'integrate (x^2, x));
1366 @c IS THIS DEFINITION CORRECT ??
1367 @deffn {Função} genfact (@var{x}, @var{y}, @var{z})
1368 Retorna o fatorial generalizado, definido como
1369 @code{x (x-z) (x - 2 z) ... (x - (y - 1) z)}. Dessa forma, para integral @var{x},
1370 @code{genfact (x, x, 1) = x!} e @code{genfact (x, x/2, 2) = x!!}.
1374 @deffn {Função} imagpart (@var{expr})
1375 Retorna a parte imaginária da expressão @var{expr}.
1377 @code{imagpart} é uma função computacional,
1378 não uma função de simplificação.
1379 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
1380 @c SEE ALSO SF BUG REPORT # 902290
1382 Veja também @code{abs}, @code{carg}, @code{polarform}, @code{rectform},
1385 @c NEED EXAMPLES HERE
1388 @deffn {Função} infix (@var{op})
1389 @deffnx {Função} infix (@var{op}, @var{lbp}, @var{rbp})
1390 @deffnx {Função} infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})
1391 Declara @var{op} para ser um operador infixo.
1392 Um operador infixo é uma função de dois argumentos,
1393 com o nome da função escrito entre os argumentos.
1394 Por exemplo, o operador de subtração @code{-} é um operador infixo.
1396 @code{infix (@var{op})} declara @var{op} para ser um operador infixo
1397 com expoentes associados padrão (esquerdo e direito ambos iguais a 180)
1398 e podendo ser qualquer entre prefixado, infixado, posfixado, nário,
1399 matchfix e nofix (esquerdo e direito ambos iguais a @code{any}).
1400 @c HOW IS pos DIFFERENT FROM lpos AND rpos ??
1402 @code{infix (@var{op}, @var{lbp}, @var{rbp})} declara @var{op} para ser um operador infixo
1403 com expoentes associados esquerdo e diretio equilibrados
1404 e podendo ser qualquer entre prefixado, infixado, posfixado, nário,
1405 matchfix e nofix (esquerdo e direito ambos iguais a @code{any}).
1407 @code{infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})}
1408 declara @var{op} para ser um operdor infixo
1409 com expoentes associados padrão e podendo ser um entre
1410 prefixado, infixado, posfixado, nário, matchfix e nofix.
1412 A precedência de @var{op} com relação a outros operadores
1413 derivam dos expoentes associados diretiro e esquerdo dos operadores em questão.
1414 Se os expoentes associados esquerdo e direito de @var{op} forem ambos maiores
1415 que o expoente associado esquerdo e o direito de algum outro operador,
1416 então @var{op} tem prededência sobre o outro operador.
1417 Se os expoentes associados não forem ambos maior ou menor,
1418 alguma relação mais complicada ocorre.
1420 A associatividade de @var{op} depende de seus expoentes associados.
1421 Maior expoente associado esquerdo (@var{eae}) implica uma instância de
1422 @var{op} é avaliadas antes de outros operadores para sua esquerda em uma expressão,
1423 enquanto maior expoente associado direito (@var{ead}) implica uma instância de
1424 @var{op} é avaliada antes de outros operadores para sua direita em uma expressão.
1425 Dessa forma maior @var{eae} torna @var{op} associativo à direita,
1426 enquanto maior @var{ead} torna @var{op} associativa à esquerda.
1427 Se @var{eae} for igual a @var{ead}, @var{op} é associativa à esquerda.
1429 Veja também @code{Syntax}.
1433 Se os expoentes associados esquerdo e direito de @var{op} forem ambos maiores
1434 que os expoentes associados à direita e à esquerda de algum outro operador,
1435 então @var{op} tem precedência sobre o outro operador.
1438 @c :lisp (get '$+ 'lbp)
1439 @c :lisp (get '$+ 'rbp)
1440 @c infix ("##", 101, 101);
1441 @c "##"(a, b) := sconcat("(", a, ",", b, ")");
1443 @c infix ("##", 99, 99);
1447 (%i1) :lisp (get '$+ 'lbp)
1449 (%i1) :lisp (get '$+ 'rbp)
1451 (%i1) infix ("##", 101, 101);
1453 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")");
1454 (%o2) (a ## b) := sconcat("(", a, ",", b, ")")
1455 (%i3) 1 + a ## b + 2;
1457 (%i4) infix ("##", 99, 99);
1459 (%i5) 1 + a ## b + 2;
1463 grande @var{eae} torna @var{op} associativa à direita,
1464 enquanto grande @var{ead} torna @var{op} associativa à esquerda.
1467 @c infix ("##", 100, 99);
1468 @c "##"(a, b) := sconcat("(", a, ",", b, ")")$
1469 @c foo ## bar ## baz;
1470 @c infix ("##", 100, 101);
1471 @c foo ## bar ## baz;
1474 (%i1) infix ("##", 100, 99);
1476 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")")$
1477 (%i3) foo ## bar ## baz;
1478 (%o3) (foo,(bar,baz))
1479 (%i4) infix ("##", 100, 101);
1481 (%i5) foo ## bar ## baz;
1482 (%o5) ((foo,bar),baz)
1487 @defvr {Variável de opção} inflag
1488 Velor padrão: @code{false}
1490 Quando @code{inflag} for @code{true}, funções para extração de
1491 partes inspecionam a forma interna de @code{expr}.
1493 Note que o simplificador re-organiza expressões.
1494 Dessa forma @code{first (x + y)} retorna @code{x} se @code{inflag}
1495 for @code{true} e @code{y} se @code{inflag} for @code{false}.
1496 (@code{first (y + x)} fornece os mesmos resultados.)
1498 Também, escolhendo @code{inflag} para @code{true} e chamando @code{part} ou @code{substpart} é
1499 o mesmo que chamar @code{inpart} ou @code{substinpart}.
1501 As funções afetadas pela posição do sinalizador @code{inflag} são:
1502 @code{part}, @code{substpart}, @code{first}, @code{rest}, @code{last}, @code{length},
1503 a estrutura @code{for} ... @code{in},
1504 @code{map}, @code{fullmap}, @code{maplist}, @code{reveal} e @code{pickapart}.
1506 @c NEED EXAMPLES HERE
1510 @deffn {Função} inpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1511 É similar a @code{part} mas trabalha sobre a representação
1512 interna da expressão em lugar da forma de exibição e
1513 dessa forma pode ser mais rápida uma vez que nenhuma formatação é realizada. Cuidado deve ser tomado
1514 com relação à ordem de subexpressões em adições e produtos
1515 (uma vez que a ordem das variáveis na forma interna é muitas vezes diferente
1516 daquela na forma mostrada) e no manuseio com menos unário,
1517 subtração, e divisão (uma vez que esses operadores são removidos da
1518 expressão). @code{part (x+y, 0)} ou @code{inpart (x+y, 0)} retorna @code{+}, embora com o objetivo de
1519 referirse ao operador isso deva ser abraçado por aspas duplas. Por exemplo
1520 @code{... if inpart (%o9,0) = "+" then ...}.
1527 (%i2) inpart (%, 3, 2);
1529 (%i3) part (%th (2), 1, 2);
1531 (%i4) 'limit (f(x)^g(x+1), x, 0, minus);
1535 (%i5) inpart (%, 1, 2);
1542 @deffn {Função} isolate (@var{expr}, @var{x})
1543 Retorna @var{expr} com subexpressões que são adições e
1544 que não possuem @var{x} substituido por rótulos de expressão intermediária
1545 (esses sendo símbolos atômicos como @code{%t1}, @code{%t2}, ...). Isso é muitas vezes útil
1546 para evitar expansões desnecessárias de subexpressões que não possuam
1547 a variável de interesse. Uma vez que os rótulos intermediários são associados às
1548 subexpressões eles podem todos ser substituídos de volta por avaliação da
1549 expressão em que ocorrerem.
1551 @code{exptisolate} (valor padrão: @code{false}) se @code{true} fará com que @code{isolate} examine expoentes de
1552 átomos (como @code{%e}) que contenham @var{x}.
1554 @code{isolate_wrt_times} se @code{true}, então @code{isolate} irá também isolar com relação a
1555 produtos. Veja @code{isolate_wrt_times}.
1557 Faça @code{example (isolate)} para exemplos.
1562 @defvr {Variável de opção} isolate_wrt_times
1563 Valor padrão: @code{false}
1565 Quando @code{isolate_wrt_times} for @code{true}, @code{isolate}
1566 irá também isolar com relação a produtos. E.g. compare ambas as escolhas do
1570 (%i1) isolate_wrt_times: true$
1571 (%i2) isolate (expand ((a+b+c)^2), c);
1583 (%o4) c + %t3 c + %t2 c + %t4
1584 (%i4) isolate_wrt_times: false$
1585 (%i5) isolate (expand ((a+b+c)^2), c);
1587 (%o5) c + 2 b c + 2 a c + %t4
1593 @defvr {Variável de opção} listconstvars
1594 Valor padrão: @code{false}
1596 Quando @code{listconstvars} for @code{true}, isso fará com que @code{listofvars}
1597 inclua @code{%e}, @code{%pi}, @code{%i}, e quaisquer variáveis declaradas contantes na lista
1598 seja retornado se aparecer na expressão que chamar @code{listofvars}.
1599 O comportamento padrão é omitir isso.
1603 @defvr {Variável de opção} listdummyvars
1604 Valor padrão: @code{true}
1606 Quando @code{listdummyvars} for @code{false}, "variáveis dummy" na
1607 expressão não serão incluídas na lista retornada por @code{listofvars}.
1608 (O significado de "variável dummy" é o mesmo que em @code{freeof}.
1609 "Variáveis dummy" são conceitos matemáticos como o índice de um somatório ou
1610 produtório, a variável limite, e a variável da integral definida.)
1614 (%i1) listdummyvars: true$
1615 (%i2) listofvars ('sum(f(i), i, 0, n));
1617 (%i3) listdummyvars: false$
1618 (%i4) listofvars ('sum(f(i), i, 0, n));
1625 @deffn {Função} listofvars (@var{expr})
1626 Retorna uma lista de variáveis em @var{expr}.
1628 @code{listconstvars} se @code{true} faz com que @code{listofvars} inclua @code{%e}, @code{%pi},
1629 @code{%i}, e quaisquer variáveis declaradas constantes na lista é retornada se
1630 aparecer em @var{expr}. O comportamento padrão é omitir isso.
1633 (%i1) listofvars (f (x[1]+y) / g^(2+a));
1641 @deffn {Função} lfreeof (@var{lista}, @var{expr})
1642 Para cada um dos membros @var{m} de lista, chama @code{freeof (@var{m}, @var{expr})}.
1643 Retorna @code{false} se qualquer chamada a @code{freeof} for feita e @code{true} de outra forma.
1646 @deffn {Função} lopow (@var{expr}, @var{x})
1647 Retorna o menor expoente de @var{x} que explicitamente aparecer em
1648 @var{expr}. Dessa forma
1651 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1658 @deffn {Função} lpart (@var{rótulo}, @var{expr}, @var{n_1}, ..., @var{n_k})
1659 é similar a @code{dpart} mas usa uma
1660 caixa rotulada. Uma moldura rotulada é similar à que é produzida por @code{dpart}
1661 mas a produzida por @code{lpart} tem o nome na linha do topo.
1666 @deffn {Função} multthru (@var{expr})
1667 @deffnx {Função} multthru (@var{expr_1}, @var{expr_2})
1668 Multiplica um fator (que pode ser uma adição) de @var{expr} pelos
1669 outros fatores de @var{expr}. Isto é, @var{expr} é @code{@var{f_1} @var{f_2} ... @var{f_n}}
1671 um fator, digamos @var{f_i}, é uma soma de termos. Cada termo naquela soma é
1672 multiplicado por outros fatores no produto. (A saber todos os
1673 fatores exceto @var{f_i}). @code{multthru} não expande somas exponenciais.
1674 Essa função é o caminho mais rápido para distribuir produtos (comutativos
1675 ou não) sobre adições. Uma vez que quocientes são representados como
1676 produtos @code{multthru} podem ser usados para dividir adições por produtos também.
1678 @code{multthru (@var{expr_1}, @var{expr_2})} multiplica cada termo em @var{expr_2} (que pode ser uma
1679 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
1680 forma é equivalente a @code{multthru (@var{expr_1}*@var{expr_2})}.
1683 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
1685 (%o1) - ----- + -------- - --------
1688 (%i2) multthru ((x-y)^3, %);
1690 (%o2) - (x - y) + x (x - y) - f(x)
1691 (%i3) ratexpand (%);
1693 (%o3) - y + x y - f(x)
1694 (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
1696 (b + a) s + 2 a b s + a b
1697 (%o4) ------------------------------
1700 (%i5) multthru (%); /* note que isso não expande (b+a)^10 */
1703 (%o5) - + --- + ---------
1706 (%i6) multthru (a.(b+c.(d+e)+f));
1707 (%o6) a . f + a . c . (e + d) + a . b
1708 (%i7) expand (a.(b+c.(d+e)+f));
1709 (%o7) a . f + a . c . e + a . c . d + a . b
1715 @deffn {Função} nounify (@var{f})
1716 Retorna a forma substantiva do nome da função @var{f}. Isso é
1717 necessário se se quer referir ao nome de uma função verbo como se esse nome
1718 fosse um substantivo. Note que algumas funções verbos irão retornar sua forma
1719 substantiva senão puderem ser avaliadas para certos argumentos. A forma substantiva é também
1720 a forma retornada se uma chamada de função é precedida por um apóstrofo.
1725 @deffn {Função} nterms (@var{expr})
1726 Retorna o número de termos que @var{expr} pode ter se for
1727 completamente expandida e nenhum cancelamento ou combinação de termos
1729 Note expressões como @code{sin (@var{expr})}, @code{sqrt (@var{expr})}, @code{exp (@var{expr})}, etc.
1730 contam como apenas um termo independentemente de quantos termos @var{expr} tenha (se @var{expr} for uma
1736 @deffn {Função} op (@var{expr})
1737 Retorna o operador principal da expressão @var{expr}.
1738 @code{op (@var{expr})} é equivalente a @code{part (@var{expr}, 0)}.
1740 @code{op} retorna uma seq@"{u}ência de caracteres se o operador principal for uma
1741 operador interno ou definido pelo usuário como
1742 prefixado, binário ou n-ário infixo, posfixado, matchfix ou nofix.
1743 De outra forma, se @var{expr} for uma expressão de função subscrita,
1744 @code{op} retorna uma função subscrita;
1745 nesse caso o valor de retorno não é um átomo.
1746 De outro modo, @var{expr} é uma função de array ou uma expressão de função comum,
1747 e @code{op} retorna um símbolo.
1749 @code{op} observa o valor do sinalizador global @code{inflag}.
1751 @code{op} avalia seus argumentos.
1753 Veja também @code{args}.
1758 @c stringdisp: true$
1761 @c op ('sin (a + b));
1765 @c op ('(if a > b then c else d));
1769 @c op (F [x, y] (a, b, c));
1770 @c op (G [u, v, w]);
1774 (%i1) stringdisp: true$
1775 (%i2) op (a * b * c);
1777 (%i3) op (a * b + c);
1779 (%i4) op ('sin (a + b));
1785 (%i7) op ([a, b, c]);
1787 (%i8) op ('(if a > b then c else d));
1789 (%i9) op ('foo (a));
1791 (%i10) prefix (foo);
1795 (%i12) op (F [x, y] (a, b, c));
1798 (%i13) op (G [u, v, w]);
1805 @deffn {Função} operatorp (@var{expr}, @var{op})
1806 @deffnx {Função} operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])
1808 @code{operatorp (@var{expr}, @var{op})} retorna @code{true}
1809 se @var{op} for igual ao operador de @var{expr}.
1811 @code{operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])} retorna @code{true}
1812 se algum elementos de @var{op_1}, ..., @var{op_n} for igual ao operador de @var{expr}.
1817 @deffn {Função} optimize (@var{expr})
1818 Retorna uma expressão que produz o mesmo valor e
1819 efeito que @var{expr} mas faz de forma mais eficientemente por evitar a
1820 recomputação de subexpressões comuns. @code{optimize} também tem o mesmo
1821 efeito de "colapsar" seus argumentos de forma que todas as subexpressões comuns
1823 Faça @code{example (optimize)} para exemplos.
1827 @defvr {Variável de opção} optimprefix
1828 Valor padrão: @code{%}
1830 @code{optimprefix} é o prefixo usado para símbolos gerados pelo
1831 comando @code{optimize}.
1836 @c WHAT DOES ">" MEAN IN THIS CONTEXT ??
1837 @deffn {Função} ordergreat (@var{v_1}, ..., @var{v_n})
1838 Escolhe aliases para as variáveis @var{v_1}, ..., @var{v_n}
1839 tais que @var{v_1} > @var{v_2} > ... > @var{v_n},
1840 e @var{v_n} > qualquer outra variável não mencionada como um
1843 Veja também @code{orderless}.
1848 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
1849 @deffn {Função} ordergreatp (@var{expr_1}, @var{expr_2})
1850 Retorna @code{true} se @var{expr_2} precede @var{expr_1} na
1851 ordenação escolhida com a função @code{ordergreat}.
1856 @c WHAT DOES "<" MEAN IN THIS CONTEXT ??
1857 @deffn {Função} orderless (@var{v_1}, ..., @var{v_n})
1858 Escolhe aliases para as variáveis @var{v_1}, ..., @var{v_n}
1859 tais que @var{v_1} < @var{v_2} < ... < @var{v_n},
1860 and @var{v_n} < qualquer outra variável não mencionada como um
1863 @c EXPRESS THIS ORDER IN A MORE COMPREHENSIBLE FASHION
1864 Dessa forma a escala de ordenação completa é: constantes numéricas <
1865 constantes declaradas < escalares declarados < primeiro argumento para @code{orderless} <
1866 ... < último argumento para @code{orderless} < variáveis que começam com A < ...
1867 < variáveis que começam com Z < último argumento para @code{ordergreat} <
1868 ... < primeiro argumento para @code{ordergreat} < @code{mainvar}s - variáveis principais declaradas.
1870 Veja também @code{ordergreat} e @code{mainvar}.
1875 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
1876 @deffn {Função} orderlessp (@var{expr_1}, @var{expr_2})
1877 Retorna @code{true} se @var{expr_1} precede @var{expr_2} na
1878 ordenação escolhida pelo comando @code{orderless}.
1883 @deffn {Função} part (@var{expr}, @var{n_1}, ..., @var{n_k})
1884 Retorna partes da forma exibida de @code{expr}. Essa função
1885 obtém a parte de @code{expr} como especificado pelos índices @var{n_1}, ..., @var{n_k}. A primeira
1886 parte @var{n_1} de @code{expr} é obtida, então a parte @var{n_2} daquela é obtida, etc. O resultado é
1887 parte @var{n_k} de ... parte @var{n_2} da parte @var{n_1} da @code{expr}.
1889 @code{part} pode ser usada para obter um elemento de uma lista, uma linha de uma matriz, etc.
1891 @c "If the last argument to a part function" => FOLLOWING APPLIES TO OTHER FUNCTIONS ??
1892 @c ATTEMPT TO VERIFY; IF SO, COPY THIS COMMENTARY TO DESCRIPTIONS OF OTHER FUNCTIONS
1893 Se o último argumento para uma função @code{part} for uma lista de índices então
1894 muitas subexpressões serão pinçadas, cada uma correspondendo a um
1895 índice da lista. Dessa forma @code{part (x + y + z, [1, 3])} é @code{z+x}.
1897 @code{piece} mantém a última expressão selecionada quando usando as funções
1898 @code{part}. Isso é escolhido durante a execução da função e dessa forma
1899 pode referir-se à função em si mesma como mostrado abaixo.
1901 Se @code{partswitch} for escolhido para @code{true} então @code{end} é retornado quando uma
1902 parte selecionada de uma expressão não existir, de outra forma uma mensagem de
1905 @c NEED "SEE ALSO" POINTING TO ALL OTHER PART FUNCTIONS
1907 Exemplo: @code{part (z+2*y, 2, 1)} retorna 2.
1909 @c MERGE IN example (part) OUTPUT HERE
1910 @code{example (part)} mostra exemplos adicionais.
1915 @deffn {Função} partition (@var{expr}, @var{x})
1916 Retorna uma lista de duas expressões. Elas são (1)
1917 os fatores de @var{expr} (se essa expressão for um produto), os termos de @var{expr} (se isso for uma
1918 adição), ou a lista (se isso for uma lsita) que não contiver @code{var} e, (2)
1919 os fatores, termos, ou lista que faz.
1922 (%i1) partition (2*a*x*f(x), x);
1924 (%i2) partition (a+b, x);
1926 (%i3) partition ([a, b, f(a), c], a);
1927 (%o3) [[b, c], [a, f(a)]]
1933 @defvr {Variável de opção} partswitch
1934 Valor padrão: @code{false}
1936 Quando @code{partswitch} for @code{true}, @code{end} é retornado
1937 quando uma parte selecionada de uma expressão não existir, de outra forma uma
1938 mensagem de erro é fornecida.
1942 @deffn {Função} pickapart (@var{expr}, @var{n})
1943 Atribui rótulos de expressão intermediária a subexpressões de
1944 @var{expr} de comprimento @var{n}, um inteiro.
1945 A subexpressões maiores ou menores não são atribuidos rótulos.
1946 @code{pickapart} retorna uma expressão em termos de expressões intermediárias
1947 equivalentes à expressão original @var{expr}.
1949 Veja também @code{part}, @code{dpart}, @code{lpart}, @code{inpart}, e @code{reveal}.
1954 (%i1) expr: (a+b)/2 + sin (x^2)/3 - log (1 + sqrt(x+1));
1957 (%o1) - log(sqrt(x + 1) + 1) + ------- + -----
1959 (%i2) pickapart (expr, 0);
1963 (%t2) - log(sqrt(x + 1) + 1) + ------- + -----
1967 (%i3) pickapart (expr, 1);
1969 (%t3) - log(sqrt(x + 1) + 1)
1982 (%o5) %t5 + %t4 + %t3
1983 (%i5) pickapart (expr, 2);
1985 (%t6) log(sqrt(x + 1) + 1)
1995 (%o8) --- + --- - %t6
1997 (%i8) pickapart (expr, 3);
1999 (%t9) sqrt(x + 1) + 1
2006 (%o10) ----- - log(%t9) + ---------
2008 (%i10) pickapart (expr, 4);
2014 (%o11) ------- + ----- - log(%t11 + 1)
2016 (%i11) pickapart (expr, 5);
2022 (%o12) ------- + ----- - log(sqrt(%t12) + 1)
2024 (%i12) pickapart (expr, 6);
2027 (%o12) ------- + ----- - log(sqrt(x + 1) + 1)
2034 @defvr {Variável de sistema} piece
2035 Mantém a ultima expressão selecionada quando usando funções
2037 @c WHAT DOES THIS MEAN EXACTLY ??
2038 Isso é escolhido durante a execução da função e dessa forma
2039 pode referir-se à função em si mesma.
2041 @c NEED "SEE ALSO" TO POINT TO LIST OF ALL RELEVANT FUNCTIONS
2046 @deffn {Função} polarform (@var{expr})
2047 Retorna uma expressão @code{r %e^(%i theta)} equivalente a @var{expr},
2048 tal que @code{r} e @code{theta} sejam puramente reais.
2052 @c ISN'T THERE AN EQUIVALENT FUNCTION SOMEWHERE ??
2053 @c NEEDS WORK (IF KEPT)
2054 @deffn {Função} powers (@var{expr}, @var{x})
2055 Fornece os expoentes de @var{x} que ocorrem em expressão @var{expr}.
2057 @code{load ("powers")} chama essa função.
2058 @c HMM, THERE'S A BUNCH OF MAXIMA FUNCTIONS IN src/powers.lisp ...
2059 @c FOR SOME REASON src/powers.lisp IS NOT PART OF THE USUAL BUILD -- STRANGE
2061 @c HERE IS THE TEXT FROM archive/share/unknown/powers.usg -- MERGE !!!
2062 @c THIS FUNCTION IS A GENERALISATION OF "HIPOW" AND "LOPOW"
2063 @c IN THAT IT RETURNS A LIST OF ALL THE POWERS OF VAR OCCURING
2064 @c IN EXPR. IT IS STILL NECESSARY TO EXPAND EXPR BEFORE APPLYING
2065 @c POWERS (ON PAIN OF GETTING THE WRONG ANSWER).
2067 @c THIS FUNCTION HAS MANY USES, E.G. IF YOU WANT TO FIND ALL
2068 @c THE COEFFICIENTS OF X IN A POLYNOMIAL POLY YOU CAN USE
2069 @c MAP(LAMBDA([POW],COEFF(POLY,X,POW)),POWERS(POLY,X));
2070 @c AND MANY OTHER SIMILAR USEFUL HACKS.
2075 @deffn {Função} product (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2076 Representa um produto dos velores de @code{expr} com
2077 o índice @var{i} variando de @var{i_0} a @var{i_1}.
2078 A forma substantiva @code{'product} é mostrada como um pi maiísculo.
2080 @code{product} avalia @var{expr} e os limites inferior e superior @var{i_0} e @var{i_1},
2081 @code{product} coloca um apóstrofo (não avalia) o índice @var{i}.
2083 Se os limites superiores e inferiores diferirem por um inteiro,
2084 @var{expr} é avaliada para cada valor do índice @var{i},
2085 e o resultado um produto explícito.
2087 de outra forma, o intervalo do índice é indefinido.
2088 Algumas regras são aplicads para simplificar o produto.
2089 Quando a variável global @code{simpproduct} for @code{true}, regras adicionais são aplicadas.
2090 Em alguns casos, simplificação um resultado que não é um produto;
2091 de outra forma, o resultado é uma forma substantiva @code{'product}.
2093 Veja também @code{nouns} e @code{evflag}.
2098 @c product (x + i*(i+1)/2, i, 1, 4);
2099 @c product (i^2, i, 1, 7);
2100 @c product (a[i], i, 1, 7);
2101 @c product (a(i), i, 1, 7);
2102 @c product (a(i), i, 1, n);
2103 @c product (k, k, 1, n);
2104 @c product (k, k, 1, n), simpproduct;
2105 @c product (integrate (x^k, x, 0, 1), k, 1, n);
2106 @c product (if k <= 5 then a^k else b^k, k, 1, 10);
2110 (%i1) product (x + i*(i+1)/2, i, 1, 4);
2111 (%o1) (x + 1) (x + 3) (x + 6) (x + 10)
2112 (%i2) product (i^2, i, 1, 7);
2114 (%i3) product (a[i], i, 1, 7);
2117 (%i4) product (a(i), i, 1, 7);
2118 (%o4) a(1) a(2) a(3) a(4) a(5) a(6) a(7)
2119 (%i5) product (a(i), i, 1, n);
2126 (%i6) product (k, k, 1, n);
2133 (%i7) product (k, k, 1, n), simpproduct;
2135 (%i8) product (integrate (x^k, x, 0, 1), k, 1, n);
2142 (%i9) product (if k <= 5 then a^k else b^k, k, 1, 10);
2150 @deffn {Função} realpart (@var{expr})
2151 Retorna a parte real de @var{expr}. @code{realpart} e @code{imagpart} irão
2152 trabalhar sobre expressões envolvendo funções trigonométricas e hiperbólicas,
2153 bem como raízes quadradas, logarítmos, e exponenciação.
2158 @deffn {Função} rectform (@var{expr})
2159 Retorna uma expressão @code{a + b %i} equivalente a @var{expr},
2160 tal que @var{a} e @var{b} sejam puramente reais.
2164 @deffn {Função} rembox (@var{expr}, unlabelled)
2165 @deffnx {Função} rembox (@var{expr}, @var{rótulo})
2166 @deffnx {Função} rembox (@var{expr})
2167 Remove caixas de @var{expr}.
2169 @code{rembox (@var{expr}, unlabelled)} remove todas as caixas sem rótulos de @var{expr}.
2171 @code{rembox (@var{expr}, @var{rótulo})} remove somente caixas contendo @var{rótulo}.
2173 @code{rembox (@var{expr})} remove todas as caixas, rotuladas e nã rotuladas.
2175 Caixas são desenhadas pelas funções @code{box}, @code{dpart}, e @code{lpart}.
2180 @c expr: (a*d - b*c)/h^2 + sin(%pi*x);
2181 @c dpart (dpart (expr, 1, 1), 2, 2);
2182 @c expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2183 @c rembox (expr2, unlabelled);
2184 @c rembox (expr2, FOO);
2185 @c rembox (expr2, BAR);
2189 (%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);
2191 (%o1) sin(%pi x) + ---------
2194 (%i2) dpart (dpart (expr, 1, 1), 2, 2);
2196 (%o2) sin("%pi x") + ---------
2201 (%i3) expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2202 FOO""""""""""" BAR""""""""
2203 " """"""" " "a d - b c"
2204 (%o3) "sin("%pi x")" + "---------"
2205 " """"""" " " """" "
2206 """""""""""""" " " 2" "
2210 (%i4) rembox (expr2, unlabelled);
2212 FOO""""""""" "a d - b c"
2213 (%o4) "sin(%pi x)" + "---------"
2217 (%i5) rembox (expr2, FOO);
2220 (%o5) sin("%pi x") + "---------"
2226 (%i6) rembox (expr2, BAR);
2228 " """"""" " a d - b c
2229 (%o6) "sin("%pi x")" + ---------
2234 (%i7) rembox (expr2);
2236 (%o7) sin(%pi x) + ---------
2243 @deffn {Função} sum (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2244 Representa um somatório dos valores de @var{expr} com
2245 o índice @var{i} variando de @var{i_0} a @var{i_1}.
2246 A forma substantiva @code{'sum} é mostrada com uma letra sigma maiúscula.
2247 @code{sum} avalia seu somando @var{expr} e limites inferior e superior @var{i_0} e @var{i_1},
2248 @code{sum} coloca apóstrofo (não avalia) o índice @var{i}.
2250 Se os limites superiores e inferiores diferirem de um número inteiro,
2251 o somatoriando @var{expr} é avaliado para cada valor do índice do somatório @var{i},
2252 e o resultado é uma adição explícita.
2254 De outra forma, o intervalo dos índices é indefinido.
2255 Algumas regras são aplicadas para simplificar o somatório.
2256 Quando a variável global @code{simpsum} for @code{true}, regras adicionais são aplicadas.
2257 Em alguns casos, simplificações retornam um resultado que não é um somatório;
2258 de outra forma, o resultado é uma forma substantiva @code{'sum}.
2260 Quando o @code{evflag} (sinalizador de avaliação) @code{cauchysum} for @code{true},
2261 um produto de somatórios é mostrado como um produto de Cauchy,
2262 no qual o índice do somatório mais interno é uma função de
2263 índice de um nível acima, em lugar de variar independentemente.
2265 A variável global @code{genindex} é o prefixo alfabético usado para gerar o próximo índice do somatório,
2266 quando um índice automaticamente gerado for necessário.
2268 @code{gensumnum} é o sufixo numérico usando para gerar o próximo índice do somatório,
2269 quando um índice gerado automaticamente for necessário.
2270 Quando @code{gensumnum} for @code{false}, um índice gerado automaticamente é somente
2271 @code{genindex} sem sufixo numérico.
2273 Veja também @code{sumcontract}, @code{intosum},
2274 @code{bashindices}, @code{niceindices},
2275 @code{nouns}, @code{evflag}, e @code{zeilberger}.
2280 @c sum (i^2, i, 1, 7);
2281 @c sum (a[i], i, 1, 7);
2282 @c sum (a(i), i, 1, 7);
2283 @c sum (a(i), i, 1, n);
2284 @c sum (2^i + i^2, i, 0, n);
2285 @c sum (2^i + i^2, i, 0, n), simpsum;
2286 @c sum (1/3^i, i, 1, inf);
2287 @c sum (1/3^i, i, 1, inf), simpsum;
2288 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2289 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2290 @c sum (integrate (x^k, x, 0, 1), k, 1, n);
2291 @c sum (if k <= 5 then a^k else b^k, k, 1, 10);
2295 (%i1) sum (i^2, i, 1, 7);
2297 (%i2) sum (a[i], i, 1, 7);
2298 (%o2) a + a + a + a + a + a + a
2300 (%i3) sum (a(i), i, 1, 7);
2301 (%o3) a(7) + a(6) + a(5) + a(4) + a(3) + a(2) + a(1)
2302 (%i4) sum (a(i), i, 1, n);
2310 (%i5) sum (2^i + i^2, i, 0, n);
2318 (%i6) sum (2^i + i^2, i, 0, n), simpsum;
2321 (%o6) 2 + --------------- - 1
2323 (%i7) sum (1/3^i, i, 1, inf);
2331 (%i8) sum (1/3^i, i, 1, inf), simpsum;
2335 (%i9) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2343 (%i10) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2346 (%i11) sum (integrate (x^k, x, 0, 1), k, 1, n);
2354 (%i12) sum (if k <= 5 then a^k else b^k, k, 1, 10));
2355 Incorrect syntax: Too many )'s
2356 else b^k, k, 1, 10))
2360 (%i12) sum (integrate (x^k, x, 0, 1), k, 1, n);
2368 (%i13) sum (if k <= 5 then a^k else b^k, k, 1, 10);
2370 (%o13) b + b + b + b + b + a + a + a + a + a
2375 @deffn {Função} lsum (@var{expr}, @var{x}, @var{L})
2376 Representas a adição de @var{expr} a cada elemento @var{x} em @var{L}.
2378 Uma forma substantiva @code{'lsum} é retornada
2379 se o argumento @var{L} não avaliar para uma lista.
2384 @c lsum (x^i, i, [1, 2, 7]);
2385 @c lsum (i^2, i, rootsof (x^3 - 1, x));
2388 (%i1) lsum (x^i, i, [1, 2, 7]);
2391 (%i2) lsum (i^2, i, rootsof (x^3 - 1, x));
2398 i in rootsof(x - 1, x)
2403 @deffn {Função} verbify (@var{f})
2404 Retorna a forma verbal da função chamada @var{f}.
2406 Veja também @code{verb}, @code{noun}, e @code{nounify}.
2417 (%i1) verbify ('foo);
2421 (%i2) nounify (foo);