In documentation for lreduce and rreduce, supply second argument as an explicit list
[maxima.git] / doc / info / pt_BR / Expressions.texi
blob690c1b02257422d883cc672ee58e29922925ec6b
1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /Expressions.texi/1.53/Sat Jun  2 00:12:43 2007/-ko/
3 @menu
4 * Introdução a Expressões::  
5 * Complexo::                     
6 * Substantivos e Verbos::
7 * Identificadores::
8 * Seq@"{u}ências de caracteres::
9 * Desigualdade::                  
10 * Sintaxe::                      
11 * Funções e Variáveis Definidas para Expressões::  
12 @end menu
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.
20 @example
21 integrate            next           from                 diff            
22 in                   at             limit                sum             
23 for                  and            elseif               then            
24 else                 do             or                   if              
25 unless               product        while                thru            
26 step                                                                     
27 @end example
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}.
34 @example
35 (%i1) x: 3$
36 (%i2) (x: x+1, x: x^2);
37 (%o2)                          16
38 (%i3) (if (x > 17) then 2 else 4);
39 (%o3)                           4
40 (%i4) (if (x > 17) then x: 2 else y: 4, y+x);
41 (%o4)                          20
42 @end example
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}).
47 @example
48 (%i1) y: (x: 1, for i from 1 thru 10 do (x: x*i))$
49 (%i2) y;
50 (%o2)                         done
51 @end example
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.
56 @example
57 (%i3) y: (x: 1, for i from 1 thru 10 do (x: x*i), x)$
58 (%i4) y;
59 (%o4)                        3628800
60 @end example
64 @c THIS REALLY NEEDS EXPANSION
65 @node Complexo, Substantivos e Verbos, Introdução a Expressões, Expressões
66 @section Complexo
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.
88 De forma oposta,
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}.
98 Exemplos:
100 @c ===beg===
101 @c foo (x) := x^2;
102 @c foo (42);
103 @c 'foo (42);
104 @c 'foo (42), nouns;
105 @c declare (bar, noun);
106 @c bar (x) := x/17;
107 @c bar (52);
108 @c bar (52), nouns;
109 @c integrate (1/x, x, 1, 42);
110 @c 'integrate (1/x, x, 1, 42);
111 @c ev (%, nouns);
112 @c ===end===
113 @example
114 (%i1) foo (x) := x^2;
115                                      2
116 (%o1)                     foo(x) := x
117 (%i2) foo (42);
118 (%o2)                         1764
119 (%i3) 'foo (42);
120 (%o3)                        foo(42)
121 (%i4) 'foo (42), nouns;
122 (%o4)                         1764
123 (%i5) declare (bar, noun);
124 (%o5)                         done
125 (%i6) bar (x) := x/17;
126                                      x
127 (%o6)                    ''bar(x) := --
128                                      17
129 (%i7) bar (52);
130 (%o7)                        bar(52)
131 (%i8) bar (52), nouns;
132                                52
133 (%o8)                          --
134                                17
135 (%i9) integrate (1/x, x, 1, 42);
136 (%o9)                        log(42)
137 (%i10) 'integrate (1/x, x, 1, 42);
138                              42
139                             /
140                             [   1
141 (%o10)                      I   - dx
142                             ]   x
143                             /
144                              1
145 (%i11) ev (%, nouns);
146 (%o11)                       log(42)
147 @end example
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.
171 Exemplos:
173 @c ===beg===
174 @c %an_ordinary_identifier42;
175 @c embedded\ spaces\ in\ an\ identifier;
176 @c symbolp (%);
177 @c [foo+bar, foo\+bar];
178 @c [1729, \1729];
179 @c [symbolp (foo\+bar), symbolp (\1729)];
180 @c [is (foo\+bar = foo+bar), is (\1729 = 1729)];
181 @c baz\~quux;
182 @c declare ("~", alphabetic);
183 @c baz~quux;
184 @c [is (foo = FOO), is (FOO = Foo), is (Foo = foo)];
185 @c :lisp (defvar *my-lisp-variable* '$foo)
186 @c ?\*my\-lisp\-variable\*;
187 @c ===end===
189 @example
190 (%i1) %an_ordinary_identifier42;
191 (%o1)               %an_ordinary_identifier42
192 (%i2) embedded\ spaces\ in\ an\ identifier;
193 (%o2)           embedded spaces in an identifier
194 (%i3) symbolp (%);
195 (%o3)                         true
196 (%i4) [foo+bar, foo\+bar];
197 (%o4)                 [foo + bar, foo+bar]
198 (%i5) [1729, \1729];
199 (%o5)                     [1729, 1729]
200 (%i6) [symbolp (foo\+bar), symbolp (\1729)];
201 (%o6)                     [true, true]
202 (%i7) [is (foo\+bar = foo+bar), is (\1729 = 1729)];
203 (%o7)                    [false, false]
204 (%i8) baz\~quux;
205 (%o8)                       baz~quux
206 (%i9) declare ("~", alphabetic);
207 (%o9)                         done
208 (%i10) baz~quux;
209 (%o10)                      baz~quux
210 (%i11) [is (foo = FOO), is (FOO = Foo), is (Foo = foo)];
211 (%o11)                [false, false, false]
212 (%i12) :lisp (defvar *my-lisp-variable* '$foo)
213 *MY-LISP-VARIABLE*
214 (%i12) ?\*my\-lisp\-variable\*;
215 (%o12)                         foo
216 @end example
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)
232 são ignorados,
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.
252 Exemplos:
254 @c ===beg===
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.";
259 @c s_4 : "Ignore o \
260 @c caractere de \
261 @c fim de linha nessa \
262 @c seq@"{u}ência de caracteres.";
263 @c stringdisp : false;
264 @c s_1;
265 @c stringdisp : true;
266 @c s_1;
267 @c ===end===
268 @example
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 \
278 caractere de \
279 fim de linha nessa \
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;
283 (%o5)                         false
284 (%i6) s_1;
285 (%o6)               Isso é uma seq@"{u}ência de caracteres  do Maxima.
286 (%i7) stringdisp : true;
287 (%o7)                         true
288 (%i8) s_1;
289 (%o8)              "Isso é uma seq@"{u}ência de caracteres  do Maxima."
290 @end example
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
298 @section Sintaxe
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.
307 @table @asis
308 @item unário prefixado
309 negação @code{- a}
310 @item unário posfixado
311 fatorial @code{a!}
312 @item binário infixado
313 exponenciação @code{a^b}
314 @item n-ário infixado
315 adição @code{a + b}
316 @item matchfix
317 construção de lista @code{[a, b]}
318 @end table
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.
332 @c ===beg===
333 @c prefix ("dd");
334 @c dd a;
335 @c "dd" (a);
336 @c infix ("<-");
337 @c a <- dd b;
338 @c "<-" (a, "dd" (b));
339 @c ===end===
340 @example
341 (%i1) prefix ("dd");
342 (%o1)                          dd
343 (%i2) dd a;
344 (%o2)                         dd a
345 (%i3) "dd" (a);
346 (%o3)                         dd a
347 (%i4) infix ("<-");
348 (%o4)                          <-
349 (%i5) a <- dd b;
350 (%o5)                      a <- dd b
351 (%i6) "<-" (a, "dd" (b));
352 (%o6)                      a <- dd b
353 @end example
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
364 @table @code
365 @item prefixado
366 ead=180
367 @item posfixado
368 eae=180
369 @item infixado
370 eae=180, ead=180
371 @item nário
372 eae=180, ead=180
373 @item matchfix
374 (associação de expoentes não é aplicável)
375 @item nofix
376 (associação de expoentes não é aplicável)
377 @end table
379 Para comparação,
380 aqui está alguns operadores internos e seus expoentes associados esquerdo e direito.
382 @example
383 Operador   eae     ead
385   :        180     20 
386   ::       180     20 
387   :=       180     20 
388   ::=      180     20 
389   !        160
390   !!       160
391   ^        140     139 
392   .        130     129 
393   *        120
394   /        120     120 
395   +        100     100 
396   -        100     134 
397   =        80      80 
398   #        80      80 
399   >        80      80 
400   >=       80      80 
401   <        80      80 
402   <=       80      80 
403   not              70 
404   and      65
405   or       60
406   ,        10
407   $        -1
408   ;        -1
409 @end example
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
417 @c ===beg===
418 @c infix ("##");
419 @c "##" (a, b) := a^b;
420 @c 5 ## 3;
421 @c remove ("##", op);
422 @c 5 ## 3;
423 @c "##" (5, 3);
424 @c infix ("##");
425 @c 5 ## 3;
426 @c kill ("##");
427 @c 5 ## 3;
428 @c "##" (5, 3);
429 @c ===end===
430 @example
431 (%i1) infix ("##");
432 (%o1)                          ##
433 (%i2) "##" (a, b) := a^b;
434                                      b
435 (%o2)                     a ## b := a
436 (%i3) 5 ## 3;
437 (%o3)                          125
438 (%i4) remove ("##", op);
439 (%o4)                         done
440 (%i5) 5 ## 3;
441 Incorrect syntax: # is not a prefix operator
442 5 ##
443   ^
444 (%i5) "##" (5, 3);
445 (%o5)                          125
446 (%i6) infix ("##");
447 (%o6)                          ##
448 (%i7) 5 ## 3;
449 (%o7)                          125
450 (%i8) kill ("##");
451 (%o8)                         done
452 (%i9) 5 ## 3;
453 Incorrect syntax: # is not a prefix operator
454 5 ##
455   ^
456 (%i9) "##" (5, 3);
457 (%o9)                       ##(5, 3)
458 @end example
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}.
479 Exemplos:
480 @c COPIED FROM example(at)
482 @c ===beg===
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]);
488 @c ===end===
489 @example
490 (%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
491                                 2
492 (%o1)                          a
493 (%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
494 (%o2)                        @@2 + 1
495 (%i3) printprops (all, atvalue);
496                                 !
497                   d             !
498                  --- (f(@@1, @@2))!       = @@2 + 1
499                  d@@1            !
500                                 !@@1 = 0
502                                      2
503                           f(0, 1) = a
505 (%o3)                         done
506 (%i4) diff (4*f(x, y)^2 - u(x, y)^2, x);
507                   d                          d
508 (%o4)  8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
509                   dx                         dx
510 (%i5) at (%, [x = 0, y = 1]);
511                                          !
512               2              d           !
513 (%o5)     16 a  - 2 u(0, 1) (-- (u(x, y))!            )
514                              dx          !
515                                          !x = 0, y = 1
516 @end example
518 @end deffn
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}.
537 Exemplos:
539 @c ===beg===
540 @c box (a^2 + b^2);
541 @c a : 1234;
542 @c b : c - d;
543 @c box (a^2 + b^2);
544 @c box (a^2 + b^2, term_1);
545 @c 1729 - box (1729);
546 @c boxchar: "-";
547 @c box (sin(x) + cos(y));
548 @c ===end===
549 @example
550 (%i1) box (a^2 + b^2);
551                             """""""""
552                             " 2    2"
553 (%o1)                       "b  + a "
554                             """""""""
555 (%i2) a : 1234;
556 (%o2)                         1234
557 (%i3) b : c - d;
558 (%o3)                         c - d
559 (%i4) box (a^2 + b^2);
560                       """"""""""""""""""""
561                       "       2          "
562 (%o4)                 "(c - d)  + 1522756"
563                       """"""""""""""""""""
564 (%i5) box (a^2 + b^2, term_1);
565                       term_1""""""""""""""
566                       "       2          "
567 (%o5)                 "(c - d)  + 1522756"
568                       """"""""""""""""""""
569 (%i6) 1729 - box (1729);
570                                  """"""
571 (%o6)                     1729 - "1729"
572                                  """"""
573 (%i7) boxchar: "-";
574 (%o7)                           -
575 (%i8) box (sin(x) + cos(y));
576                         -----------------
577 (%o8)                   -cos(y) + sin(x)-
578                         -----------------
579 @end example
581 @end deffn
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.
594 @end defvr
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}.
614 Exemplos:
616 @c ===beg===
617 @c carg (1);
618 @c carg (1 + %i);
619 @c carg (exp (%i));
620 @c carg (exp (%pi * %i));
621 @c carg (exp (3/2 * %pi * %i));
622 @c carg (17 * exp (2 * %i));
623 @c ===end===
625 @example
626 (%i1) carg (1);
627 (%o1)                           0
628 (%i2) carg (1 + %i);
629                                %pi
630 (%o2)                          ---
631                                 4
632 (%i3) carg (exp (%i));
633 (%o3)                           1
634 (%i4) carg (exp (%pi * %i));
635 (%o4)                          %pi
636 (%i5) carg (exp (3/2 * %pi * %i));
637                                 %pi
638 (%o5)                         - ---
639                                  2
640 (%i6) carg (17 * exp (2 * %i));
641 (%o6)                           2
642 @end example
644 @end deffn
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.
650 Veja @code{declare}.
651 @c WHAT EXACTLY ARE THE CONSEQUENCES OF DECLARING AN ATOM TO BE CONSTANT ??
653 @end deffn
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.
668 Exemplos:
670 @c ===beg===
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));
678 @c ===end===
680 @example
681 (%i1) constantp (7 * sin(2));
682 (%o1)                                true
683 (%i2) constantp (rat (17/29));
684 (%o2)                                true
685 (%i3) constantp (%pi * sin(%e));
686 (%o3)                                true
687 (%i4) constantp (exp (x));
688 (%o4)                                false
689 (%i5) declare (x, constant);
690 (%o5)                                done
691 (%i6) constantp (exp (x));
692 (%o6)                                true
693 (%i7) constantp (foo (x) + bar (%e) + baz (2));
694 (%o7)                                false
695 (%i8) 
696 @end example
698 @end deffn
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:
722 @table @asis
723 @item @code{evfun}
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}.
726 Veja @code{evfun}.
728 @item @code{evflag}
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}.
731 Veja @code{evflag}.
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.
740 @item @code{noun}
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)
751 @item @code{scalar}
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.
758 @item @code{mainvar}
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.
767 @item @code{feature}
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.
774 @item @code{nary}
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.
813 @item @code{linear}
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
838 @item @code{posfun}
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.
844 @end table
846 Exemplos:
848 Declarações @code{evfun} e @code{evflag}.
849 @c ===beg===
850 @c declare (expand, evfun);
851 @c (a + b)^3;
852 @c (a + b)^3, expand;
853 @c declare (demoivre, evflag);
854 @c exp (a + b*%i);
855 @c exp (a + b*%i), demoivre;
856 @c ===end===
857 @example
858 (%i1) declare (expand, evfun);
859 (%o1)                         done
860 (%i2) (a + b)^3;
861                                    3
862 (%o2)                       (b + a)
863 (%i3) (a + b)^3, expand;
864                      3        2      2      3
865 (%o3)               b  + 3 a b  + 3 a  b + a
866 (%i4) declare (demoivre, evflag);
867 (%o4)                         done
868 (%i5) exp (a + b*%i);
869                              %i b + a
870 (%o5)                      %e
871 (%i6) exp (a + b*%i), demoivre;
872                       a
873 (%o6)               %e  (%i sin(b) + cos(b))
874 @end example
876 Declaração @code{bindtest}.
877 @c ===beg===
878 @c aa + bb;
879 @c declare (aa, bindtest);
880 @c aa + bb;
881 @c aa : 1234;
882 @c aa + bb;
883 @c ===end===
884 @example
885 (%i1) aa + bb;
886 (%o1)                        bb + aa
887 (%i2) declare (aa, bindtest);
888 (%o2)                         done
889 (%i3) aa + bb;
890 aa unbound variable
891  -- an error.  Quitting.  To debug this try debugmode(true);
892 (%i4) aa : 1234;
893 (%o4)                         1234
894 (%i5) aa + bb;
895 (%o5)                       bb + 1234
896 @end example
898 Declaração @code{noun}.
899 @c ===beg===
900 @c factor (12345678);
901 @c declare (factor, noun);
902 @c factor (12345678);
903 @c ''%, nouns;
904 @c ===end===
905 @example
906 (%i1) factor (12345678);
907                              2
908 (%o1)                     2 3  47 14593
909 (%i2) declare (factor, noun);
910 (%o2)                         done
911 (%i3) factor (12345678);
912 (%o3)                   factor(12345678)
913 (%i4) ''%, nouns;
914                              2
915 (%o4)                     2 3  47 14593
916 @end example
918 Declarações @code{constant}, @code{scalar}, @code{nonscalar}, e @code{mainvar}.
919 @c ===beg===
920 @c declare (bb, constant);
921 @c declare (cc, scalar);
922 @c declare (dd, nonscalar);
923 @c declare (ee, mainvar);
924 @c ===end===
925 @example
926 @end example
928 Declaração @code{alphabetic}.
929 @c ===beg===
930 @c xx\~yy\`\@ : 1729;
931 @c declare ("~`@", alphabetic);
932 @c xx~yy`@ + @yy`xx + `xx@@yy~;
933 @c listofvars (%);
934 @c ===end===
935 @example
936 (%i1) xx\~yy\`\@@ : 1729;
937 (%o1)                         1729
938 (%i2) declare ("~`@@", alphabetic);
939 (%o2)                         done
940 (%i3) xx~yy`@@ + @@yy`xx + `xx@@@@yy~;
941 (%o3)               `xx@@@@yy~ + @@yy`xx + 1729
942 (%i4) listofvars (%);
943 (%o4)                  [@@yy`xx, `xx@@@@yy~]
944 @end example
946 Declaração @code{feature}.
947 @c ===beg===
948 @c declare (FOO, feature);
949 @c declare (x, FOO);
950 @c featurep (x, FOO);
951 @c ===end===
952 @example
953 (%i1) declare (FOO, feature);
954 (%o1)                         done
955 (%i2) declare (x, FOO);
956 (%o2)                         done
957 (%i3) featurep (x, FOO);
958 (%o3)                         true
959 @end example
961 Declarações @code{rassociative} e @code{lassociative}.
962 @c ===beg===
963 @c declare (F, rassociative);
964 @c declare (G, lassociative);
965 @c ===end===
966 @example
967 @end example
969 Declaração @code{nary}.
970 @c ===beg===
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)));
974 @c ===end===
975 @example
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);
979 (%o2)                         done
980 (%i3) H (H (a, b), H (c, H (d, e)));
981 (%o3)                   H(a, b, c, d, e)
982 @end example
984 Declarações @code{symmetric} e @code{antisymmetric}.
985 @c ===beg===
986 @c S (b, a);
987 @c declare (S, symmetric);
988 @c S (b, a);
989 @c S (a, c, e, d, b);
990 @c T (b, a);
991 @c declare (T, antisymmetric);
992 @c T (b, a);
993 @c T (a, c, e, d, b);
994 @c ===end===
995 @example
996 (%i1) S (b, a);
997 (%o1)                        S(b, a)
998 (%i2) declare (S, symmetric);
999 (%o2)                         done
1000 (%i3) S (b, a);
1001 (%o3)                        S(a, b)
1002 (%i4) S (a, c, e, d, b);
1003 (%o4)                   S(a, b, c, d, e)
1004 (%i5) T (b, a);
1005 (%o5)                        T(b, a)
1006 (%i6) declare (T, antisymmetric);
1007 (%o6)                         done
1008 (%i7) T (b, a);
1009 (%o7)                       - T(a, b)
1010 (%i8) T (a, c, e, d, b);
1011 (%o8)                   T(a, b, c, d, e)
1012 @end example
1014 Declarações @code{oddfun} e @code{evenfun}.
1015 @c ===beg===
1016 @c o (- u) + o (u);
1017 @c declare (o, oddfun);
1018 @c o (- u) + o (u);
1019 @c e (- u) - e (u);
1020 @c declare (e, evenfun);
1021 @c e (- u) - e (u);
1022 @c ===end===
1023 @example
1024 (%i1) o (- u) + o (u);
1025 (%o1)                     o(u) + o(- u)
1026 (%i2) declare (o, oddfun);
1027 (%o2)                         done
1028 (%i3) o (- u) + o (u);
1029 (%o3)                           0
1030 (%i4) e (- u) - e (u);
1031 (%o4)                     e(- u) - e(u)
1032 (%i5) declare (e, evenfun);
1033 (%o5)                         done
1034 (%i6) e (- u) - e (u);
1035 (%o6)                           0
1036 @end example
1038 Declaração @code{outative}.
1039 @c ===beg===
1040 @c F1 (100 * x);
1041 @c declare (F1, outative);
1042 @c F1 (100 * x);
1043 @c declare (zz, constant);
1044 @c F1 (zz * y);
1045 @c ===end===
1046 @example
1047 (%i1) F1 (100 * x);
1048 (%o1)                       F1(100 x)
1049 (%i2) declare (F1, outative);
1050 (%o2)                         done
1051 (%i3) F1 (100 * x);
1052 (%o3)                       100 F1(x)
1053 (%i4) declare (zz, constant);
1054 (%o4)                         done
1055 (%i5) F1 (zz * y);
1056 (%o5)                       zz F1(y)
1057 @end example
1059 Declaração @code{multiplicative}.
1060 @c ===beg===
1061 @c F2 (a * b * c);
1062 @c declare (F2, multiplicative);
1063 @c F2 (a * b * c);
1064 @c ===end===
1065 @example
1066 (%i1) F2 (a * b * c);
1067 (%o1)                       F2(a b c)
1068 (%i2) declare (F2, multiplicative);
1069 (%o2)                         done
1070 (%i3) F2 (a * b * c);
1071 (%o3)                   F2(a) F2(b) F2(c)
1072 @end example
1074 Declaração @code{additive}.
1075 @c ===beg===
1076 @c F3 (a + b + c);
1077 @c declare (F3, additive);
1078 @c F3 (a + b + c);
1079 @c ===end===
1080 @example
1081 (%i1) F3 (a + b + c);
1082 (%o1)                     F3(c + b + a)
1083 (%i2) declare (F3, additive);
1084 (%o2)                         done
1085 (%i3) F3 (a + b + c);
1086 (%o3)                 F3(c) + F3(b) + F3(a)
1087 @end example
1089 Declaração @code{linear}.
1090 @c ===beg===
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);
1094 @c ===end===
1095 @example
1096 (%i1) 'sum (F(k) + G(k), k, 1, inf);
1097                        inf
1098                        ====
1099                        \
1100 (%o1)                   >    (G(k) + F(k))
1101                        /
1102                        ====
1103                        k = 1
1104 (%i2) declare (nounify (sum), linear);
1105 (%o2)                         done
1106 (%i3) 'sum (F(k) + G(k), k, 1, inf);
1107                      inf          inf
1108                      ====         ====
1109                      \            \
1110 (%o3)                 >    G(k) +  >    F(k)
1111                      /            /
1112                      ====         ====
1113                      k = 1        k = 1
1114 @end example
1116 @end deffn
1118 @c NEEDS WORK
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")$}.
1129 @end deffn
1131 @c NEEDS WORK
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}.
1143 @end deffn
1145 @c NEEDS WORK
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.
1152 Exemplos:
1154 @example
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)));
1160                                 1
1161 (%o3)                    ---------------
1162                          (b + a) (d + c)
1163 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
1164                                 1
1165 (%o4)                 ---------------------
1166                       b d + a d + b c + a c
1167 @end example
1169 @end deffn
1171 @c NEEDS WORK
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.
1178 @example
1179 (%i1) dpart (x+y/z^2, 1, 2, 1);
1180                              y
1181 (%o1)                       ---- + x
1182                                2
1183                             """
1184                             "z"
1185                             """
1186 @end example
1188 @end deffn
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
1206 @end deffn
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
1213 segue.
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
1226 @end defvr
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
1241 @end defvr
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
1251 @end defvr
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
1260 @end defvr
1262 @deffn {Função} freeof (@var{x_1}, ..., @var{x_n}, @var{expr})
1263 @code{freeof (@var{x_1}, @var{expr})}
1264 Retorna @code{true}
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;
1290 isso é um bug.
1292 A forma indefinida de @code{integrate} @i{not} é livre de suas variáveis de integração.
1294 @itemize @bullet
1295 @item
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)}.
1300 @example
1301 (%i1) expr: z^3 * cos (a[1]) * b^(c+d);
1302                                  d + c  3
1303 (%o1)                   cos(a ) b      z
1304                              1
1305 (%i2) freeof (z, expr);
1306 (%o2)                         false
1307 (%i3) freeof (cos, expr);
1308 (%o3)                         false
1309 (%i4) freeof (a[1], expr);
1310 (%o4)                         false
1311 (%i5) freeof (cos (a[1]), expr);
1312 (%o5)                         false
1313 (%i6) freeof (b^(c+d), expr);
1314 (%o6)                         false
1315 (%i7) freeof ("^", expr);
1316 (%o7)                         false
1317 (%i8) freeof (w, sin, a[2], sin (a[2]), b*(c+d), expr);
1318 (%o8)                         true
1319 @end example
1321 @item
1322 @code{freeof} avalia seus argumentos.
1324 @example
1325 (%i1) expr: (a+b)^5$
1326 (%i2) c: a$
1327 (%i3) freeof (c, expr);
1328 (%o3)                         false
1329 @end example
1331 @item
1332 @code{freeof} não considera expressões equivalentes.
1333 Simplificação pode retornar uma expressão equivalente mas diferente.
1335 @example
1336 (%i1) expr: (a+b)^5$
1337 (%i2) expand (expr);
1338           5        4       2  3       3  2      4      5
1339 (%o2)    b  + 5 a b  + 10 a  b  + 10 a  b  + 5 a  b + a
1340 (%i3) freeof (a+b, %);
1341 (%o3)                         true
1342 (%i4) freeof (a+b, expr);
1343 (%o4)                         false
1344 (%i5) exp (x);
1345                                  x
1346 (%o5)                          %e
1347 (%i6) freeof (exp, exp (x));
1348 (%o6)                         true
1349 @end example
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.
1354 @example
1355 (%i1) freeof (i, 'sum (f(i), i, 0, n));
1356 (%o1)                         true
1357 (%i2) freeof (x, 'integrate (x^2, x, 0, 1));
1358 (%o2)                         true
1359 (%i3) freeof (x, 'integrate (x^2, x));
1360 (%o3)                         false
1361 @end example
1362 @end itemize
1364 @end deffn
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!!}.
1372 @end deffn
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},
1383 e @code{realpart}.
1385 @c NEED EXAMPLES HERE
1386 @end deffn
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}.
1431 Exemplos:
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.
1437 @c ===beg===
1438 @c :lisp (get '$+ 'lbp)
1439 @c :lisp (get '$+ 'rbp)
1440 @c infix ("##", 101, 101);
1441 @c "##"(a, b) := sconcat("(", a, ",", b, ")");
1442 @c 1 + a ## b + 2;
1443 @c infix ("##", 99, 99);
1444 @c 1 + a ## b + 2;
1445 @c ===end===
1446 @example
1447 (%i1) :lisp (get '$+ 'lbp)
1449 (%i1) :lisp (get '$+ 'rbp)
1451 (%i1) infix ("##", 101, 101);
1452 (%o1)                          ##
1453 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")");
1454 (%o2)       (a ## b) := sconcat("(", a, ",", b, ")")
1455 (%i3) 1 + a ## b + 2;
1456 (%o3)                       (a,b) + 3
1457 (%i4) infix ("##", 99, 99);
1458 (%o4)                          ##
1459 (%i5) 1 + a ## b + 2;
1460 (%o5)                       (a+1,b+2)
1461 @end example
1463 grande @var{eae} torna @var{op} associativa à direita,
1464 enquanto grande @var{ead} torna @var{op} associativa à esquerda.
1466 @c ===beg===
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;
1472 @c ===end===
1473 @example
1474 (%i1) infix ("##", 100, 99);
1475 (%o1)                          ##
1476 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")")$
1477 (%i3) foo ## bar ## baz;
1478 (%o3)                    (foo,(bar,baz))
1479 (%i4) infix ("##", 100, 101);
1480 (%o4)                          ##
1481 (%i5) foo ## bar ## baz;
1482 (%o5)                    ((foo,bar),baz)
1483 @end example
1485 @end deffn
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
1507 @end defvr
1509 @c NEEDS WORK
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 ...}.
1522 Exemplos:
1524 @example
1525 (%i1) x + y + w*z;
1526 (%o1)                      w z + y + x
1527 (%i2) inpart (%, 3, 2);
1528 (%o2)                           z
1529 (%i3) part (%th (2), 1, 2);
1530 (%o3)                           z
1531 (%i4) 'limit (f(x)^g(x+1), x, 0, minus);
1532                                   g(x + 1)
1533 (%o4)                 limit   f(x)
1534                       x -> 0-
1535 (%i5) inpart (%, 1, 2);
1536 (%o5)                       g(x + 1)
1537 @end example
1539 @end deffn
1541 @c NEEDS WORK
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.
1559 @end deffn
1561 @c NEEDS WORK
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
1567 comutador em
1569 @example
1570 (%i1) isolate_wrt_times: true$
1571 (%i2) isolate (expand ((a+b+c)^2), c);
1573 (%t2)                          2 a
1576 (%t3)                          2 b
1579                           2            2
1580 (%t4)                    b  + 2 a b + a
1582                      2
1583 (%o4)               c  + %t3 c + %t2 c + %t4
1584 (%i4) isolate_wrt_times: false$
1585 (%i5) isolate (expand ((a+b+c)^2), c);
1586                      2
1587 (%o5)               c  + 2 b c + 2 a c + %t4
1588 @end example
1590 @end defvr
1592 @c NEEDS EXAMPLES
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.
1601 @end defvr
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.)
1611 Exemplo:
1613 @example
1614 (%i1) listdummyvars: true$
1615 (%i2) listofvars ('sum(f(i), i, 0, n));
1616 (%o2)                        [i, n]
1617 (%i3) listdummyvars: false$
1618 (%i4) listofvars ('sum(f(i), i, 0, n));
1619 (%o4)                          [n]
1620 @end example
1622 @end defvr
1624 @c NEEDS WORK
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.
1632 @example
1633 (%i1) listofvars (f (x[1]+y) / g^(2+a));
1634 (%o1)                     [g, a, x , y]
1635                                   1
1636 @end example
1638 @end deffn
1640 @c NEEDS WORK
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.
1644 @end deffn
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
1650 @example
1651 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1652 (%o1)                       min(a, 2)
1653 @end example
1655 @end deffn
1657 @c NEEDS WORK
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.
1663 @end deffn
1665 @c NEEDS WORK
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}}
1670 onde ao menos
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})}.
1682 @example
1683 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
1684                       1        x         f(x)
1685 (%o1)             - ----- + -------- - --------
1686                     x - y          2          3
1687                             (x - y)    (x - y)
1688 (%i2) multthru ((x-y)^3, %);
1689                            2
1690 (%o2)             - (x - y)  + x (x - y) - f(x)
1691 (%i3) ratexpand (%);
1692                            2
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);
1695                         10  2              2  2
1696                  (b + a)   s  + 2 a b s + a  b
1697 (%o4)            ------------------------------
1698                                   2
1699                              a b s
1700 (%i5) multthru (%);  /* note que isso não expande (b+a)^10 */
1701                                         10
1702                        2   a b   (b + a)
1703 (%o5)                  - + --- + ---------
1704                        s    2       a b
1705                            s
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
1710 @end example
1712 @end deffn
1714 @c NEEDS WORK
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.
1722 @end deffn
1724 @c NEEDS WORK
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
1728 acontecer.
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
1731 adição).
1733 @end deffn
1735 @c NEEDS WORK
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}.
1755 Exemplos:
1757 @c ===beg===
1758 @c stringdisp: true$
1759 @c op (a * b * c);
1760 @c op (a * b + c);
1761 @c op ('sin (a + b));
1762 @c op (a!);
1763 @c op (-a);
1764 @c op ([a, b, c]);
1765 @c op ('(if a > b then c else d));
1766 @c op ('foo (a));
1767 @c prefix (foo);
1768 @c op (foo a);
1769 @c op (F [x, y] (a, b, c));
1770 @c op (G [u, v, w]);
1771 @c ===end===
1773 @example
1774 (%i1) stringdisp: true$
1775 (%i2) op (a * b * c);
1776 (%o2)                          "*"
1777 (%i3) op (a * b + c);
1778 (%o3)                          "+"
1779 (%i4) op ('sin (a + b));
1780 (%o4)                          sin
1781 (%i5) op (a!);
1782 (%o5)                          "!"
1783 (%i6) op (-a);
1784 (%o6)                          "-"
1785 (%i7) op ([a, b, c]);
1786 (%o7)                          "["
1787 (%i8) op ('(if a > b then c else d));
1788 (%o8)                         "if"
1789 (%i9) op ('foo (a));
1790 (%o9)                          foo
1791 (%i10) prefix (foo);
1792 (%o10)                        "foo"
1793 (%i11) op (foo a);
1794 (%o11)                        "foo"
1795 (%i12) op (F [x, y] (a, b, c));
1796 (%o12)                        F
1797                                x, y
1798 (%i13) op (G [u, v, w]);
1799 (%o13)                          G
1800 @end example
1802 @end deffn
1804 @c NEEDS WORK
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}.
1814 @end deffn
1816 @c NEEDS WORK
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
1822 são compartilhadas.
1823 Faça @code{example (optimize)} para exemplos.
1825 @end deffn
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}.
1833 @end defvr
1835 @c NEEDS WORK
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
1841 argumento.
1843 Veja também @code{orderless}.
1845 @end deffn
1847 @c NEEDS WORK
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}.
1853 @end deffn
1855 @c NEEDS WORK
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
1861 argumento.
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}.
1872 @end deffn
1874 @c NEEDS WORK
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}.
1880 @end deffn
1882 @c NEEDS WORK
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
1903 erro é forncecida.
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.
1912 @end deffn
1914 @c NEEDS WORK
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.
1921 @example
1922 (%i1) partition (2*a*x*f(x), x);
1923 (%o1)                     [2 a, x f(x)]
1924 (%i2) partition (a+b, x);
1925 (%o2)                      [b + a, 0]
1926 (%i3) partition ([a, b, f(a), c], a); 
1927 (%o3)                  [[b, c], [a, f(a)]]
1928 @end example
1930 @end deffn
1932 @c NEEDS EXAMPLE
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.
1940 @end defvr
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}.
1951 Exemplos:
1953 @example
1954 (%i1) expr: (a+b)/2 + sin (x^2)/3 - log (1 + sqrt(x+1));
1955                                           2
1956                                      sin(x )   b + a
1957 (%o1)       - log(sqrt(x + 1) + 1) + ------- + -----
1958                                         3        2
1959 (%i2) pickapart (expr, 0);
1961                                           2
1962                                      sin(x )   b + a
1963 (%t2)       - log(sqrt(x + 1) + 1) + ------- + -----
1964                                         3        2
1966 (%o2)                          %t2
1967 (%i3) pickapart (expr, 1);
1969 (%t3)                - log(sqrt(x + 1) + 1)
1972                                   2
1973                              sin(x )
1974 (%t4)                        -------
1975                                 3
1978                               b + a
1979 (%t5)                         -----
1980                                 2
1982 (%o5)                    %t5 + %t4 + %t3
1983 (%i5) pickapart (expr, 2);
1985 (%t6)                 log(sqrt(x + 1) + 1)
1988                                   2
1989 (%t7)                        sin(x )
1992 (%t8)                         b + a
1994                          %t8   %t7
1995 (%o8)                    --- + --- - %t6
1996                           2     3
1997 (%i8) pickapart (expr, 3);
1999 (%t9)                    sqrt(x + 1) + 1
2002                                 2
2003 (%t10)                         x
2005                   b + a              sin(%t10)
2006 (%o10)            ----- - log(%t9) + ---------
2007                     2                    3
2008 (%i10) pickapart (expr, 4);
2010 (%t11)                     sqrt(x + 1)
2012                       2
2013                  sin(x )   b + a
2014 (%o11)           ------- + ----- - log(%t11 + 1)
2015                     3        2
2016 (%i11) pickapart (expr, 5);
2018 (%t12)                        x + 1
2020                    2
2021               sin(x )   b + a
2022 (%o12)        ------- + ----- - log(sqrt(%t12) + 1)
2023                  3        2
2024 (%i12) pickapart (expr, 6);
2025                   2
2026              sin(x )   b + a
2027 (%o12)       ------- + ----- - log(sqrt(x + 1) + 1)
2028                 3        2
2029 @end example
2031 @end deffn
2033 @c NEEDS WORK
2034 @defvr {Variável de sistema} piece
2035 Mantém a ultima expressão selecionada quando usando funções
2036 @code{part}.
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
2043 @end defvr
2045 @c NEEDS EXAMPLES
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.
2050 @end deffn
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).
2066 @c 
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.
2072 @end deffn
2074 @c NEEDS WORK
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}.
2095 Exemplos:
2097 @c ===beg===
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);
2107 @c ===end===
2109 @example
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);
2113 (%o2)                       25401600
2114 (%i3) product (a[i], i, 1, 7);
2115 (%o3)                 a  a  a  a  a  a  a
2116                        1  2  3  4  5  6  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);
2120                              n
2121                            /===\
2122                             ! !
2123 (%o5)                       ! !  a(i)
2124                             ! !
2125                            i = 1
2126 (%i6) product (k, k, 1, n);
2127                                n
2128                              /===\
2129                               ! !
2130 (%o6)                         ! !  k
2131                               ! !
2132                              k = 1
2133 (%i7) product (k, k, 1, n), simpproduct;
2134 (%o7)                          n!
2135 (%i8) product (integrate (x^k, x, 0, 1), k, 1, n);
2136                              n
2137                            /===\
2138                             ! !    1
2139 (%o8)                       ! !  -----
2140                             ! !  k + 1
2141                            k = 1
2142 (%i9) product (if k <= 5 then a^k else b^k, k, 1, 10);
2143                               15  40
2144 (%o9)                        a   b
2145 @end example
2147 @end deffn
2149 @c NEEDS EXAMPLES
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.
2155 @end deffn
2157 @c NEEDS EXAMPLES
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.
2162 @end deffn
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}.
2177 Exemplos:
2179 @c ===beg===
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);
2186 @c rembox (expr2);
2187 @c ===end===
2188 @example
2189 (%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);
2190                                   a d - b c
2191 (%o1)                sin(%pi x) + ---------
2192                                       2
2193                                      h
2194 (%i2) dpart (dpart (expr, 1, 1), 2, 2);
2195                         """""""    a d - b c
2196 (%o2)               sin("%pi x") + ---------
2197                         """""""      """"
2198                                      " 2"
2199                                      "h "
2200                                      """"
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"   "
2207                                    "  "h "   "
2208                                    "  """"   "
2209                                    """""""""""
2210 (%i4) rembox (expr2, unlabelled);
2211                                   BAR""""""""
2212                    FOO"""""""""   "a d - b c"
2213 (%o4)              "sin(%pi x)" + "---------"
2214                    """"""""""""   "    2    "
2215                                   "   h     "
2216                                   """""""""""
2217 (%i5) rembox (expr2, FOO);
2218                                   BAR""""""""
2219                        """""""    "a d - b c"
2220 (%o5)              sin("%pi x") + "---------"
2221                        """""""    "  """"   "
2222                                   "  " 2"   "
2223                                   "  "h "   "
2224                                   "  """"   "
2225                                   """""""""""
2226 (%i6) rembox (expr2, BAR);
2227                    FOO"""""""""""
2228                    "    """"""" "   a d - b c
2229 (%o6)              "sin("%pi x")" + ---------
2230                    "    """"""" "     """"
2231                    """"""""""""""     " 2"
2232                                       "h "
2233                                       """"
2234 (%i7) rembox (expr2);
2235                                   a d - b c
2236 (%o7)                sin(%pi x) + ---------
2237                                       2
2238                                      h
2239 @end example
2241 @end deffn
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}.
2277 Exemplos:
2279 @c ===beg===
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);
2292 @c ===end===
2294 @example
2295 (%i1) sum (i^2, i, 1, 7);
2296 (%o1)                          140
2297 (%i2) sum (a[i], i, 1, 7);
2298 (%o2)           a  + a  + a  + a  + a  + a  + a
2299                  7    6    5    4    3    2    1
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);
2303                             n
2304                            ====
2305                            \
2306 (%o4)                       >    a(i)
2307                            /
2308                            ====
2309                            i = 1
2310 (%i5) sum (2^i + i^2, i, 0, n);
2311                           n
2312                          ====
2313                          \       i    2
2314 (%o5)                     >    (2  + i )
2315                          /
2316                          ====
2317                          i = 0
2318 (%i6) sum (2^i + i^2, i, 0, n), simpsum;
2319                               3      2
2320                    n + 1   2 n  + 3 n  + n
2321 (%o6)             2      + --------------- - 1
2322                                   6
2323 (%i7) sum (1/3^i, i, 1, inf);
2324                             inf
2325                             ====
2326                             \     1
2327 (%o7)                        >    --
2328                             /      i
2329                             ====  3
2330                             i = 1
2331 (%i8) sum (1/3^i, i, 1, inf), simpsum;
2332                                 1
2333 (%o8)                           -
2334                                 2
2335 (%i9) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2336                               inf
2337                               ====
2338                               \     1
2339 (%o9)                      30  >    --
2340                               /      2
2341                               ====  i
2342                               i = 1
2343 (%i10) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2344                                   2
2345 (%o10)                       5 %pi
2346 (%i11) sum (integrate (x^k, x, 0, 1), k, 1, n);
2347                             n
2348                            ====
2349                            \       1
2350 (%o11)                      >    -----
2351                            /     k + 1
2352                            ====
2353                            k = 1
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))
2357                   ^
2358 (%i12) linenum:11;
2359 (%o11)                         11
2360 (%i12) sum (integrate (x^k, x, 0, 1), k, 1, n);
2361                             n
2362                            ====
2363                            \       1
2364 (%o12)                      >    -----
2365                            /     k + 1
2366                            ====
2367                            k = 1
2368 (%i13) sum (if k <= 5 then a^k else b^k, k, 1, 10);
2369           10    9    8    7    6    5    4    3    2
2370 (%o13)   b   + b  + b  + b  + b  + a  + a  + a  + a  + a
2371 @end example
2373 @end deffn
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.
2381 Exemplos:
2383 @c ===beg===
2384 @c lsum (x^i, i, [1, 2, 7]);
2385 @c lsum (i^2, i, rootsof (x^3 - 1, x));
2386 @c ===end===
2387 @example
2388 (%i1) lsum (x^i, i, [1, 2, 7]);
2389                             7    2
2390 (%o1)                      x  + x  + x
2391 (%i2) lsum (i^2, i, rootsof (x^3 - 1, x));
2392                      ====
2393                      \      2
2394 (%o2)                 >    i
2395                      /
2396                      ====
2397                                    3
2398                      i in rootsof(x  - 1, x)
2399 @end example
2401 @end deffn
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}.
2408 Exemplos:
2410 @c ===beg===
2411 @c verbify ('foo);
2412 @c :lisp $%
2413 @c nounify (foo);
2414 @c :lisp $%
2415 @c ===end===
2416 @example
2417 (%i1) verbify ('foo);
2418 (%o1)                          foo
2419 (%i2) :lisp $%
2420 $FOO
2421 (%i2) nounify (foo);
2422 (%o2)                          foo
2423 (%i3) :lisp $%
2424 %FOO
2425 @end example
2427 @end deffn