Add some comments on how psi[s](p/q) is computed.
[maxima.git] / doc / info / pt / Expressions.texi
blobb7654fe3a40abfa9f1ed6842096998cd0781d6d1
1 @c /Expressions.texi/1.52/Sun Mar 11 02:32:14 2007/-ko/
2 @menu
3 * Introdução a Expressões::  
4 * Complexo::                     
5 * Substantivos e Verbos::
6 * Identificadores::
7 * Sequências de caracteres::
8 * Desigualdade::                  
9 * Sintaxe::                      
10 * Definições para Expressões::  
11 @end menu
13 @node Introdução a Expressões, Complexo, Expressões, Expressões
14 @section Introdução a Expressões
16 Existe um conjunto de palavras reservadas que não pode ser usado como
17 nome de variável.   Seu uso pode causar um possível erro crítico de sintaxe.
19 @example
20 integrate            next           from                 diff            
21 in                   at             limit                sum             
22 for                  and            elseif               then            
23 else                 do             or                   if              
24 unless               product        while                thru            
25 step                                                                     
26 @end example
28 Muitas coisas em Maxima são expressões.   Uma sequência de expressões
29 pode ser feita dentro de uma expressão maior através da separação dessas através de vírgulas e
30 colocando parêntesis em torno dela.   Isso é similar ao @b{C}
31 @i{expressão com vírgula}.
33 @example
34 (%i1) x: 3$
35 (%i2) (x: x+1, x: x^2);
36 (%o2)                          16
37 (%i3) (if (x > 17) then 2 else 4);
38 (%o3)                           4
39 (%i4) (if (x > 17) then x: 2 else y: 4, y+x);
40 (%o4)                          20
41 @end example
43 Mesmo ciclos em Maxima são expressões, embora o valor de retorno desses
44 ciclos não seja muito útil (eles retornam sempre @code{done}).
46 @example
47 (%i1) y: (x: 1, for i from 1 thru 10 do (x: x*i))$
48 (%i2) y;
49 (%o2)                         done
50 @end example
52 enquanto que o que realmente queira seja provavelmente incluir um
53 terceiro termo na @i{expressão com vírgula} que fornece
54 de volta o valor actualizado.
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, Sequências de caracteres, Substantivos e Verbos, Expressões
150 @section Identificadores
151 Identificadores do Maxima podem compreender caracteres alfabéticos,
152 mais os numerais de 0 a 9,
153 mais qualquer caractere especial precedido por um caractere contra-barra @code{\}.
155 Um numeral pode ser o primeiro caractere de um identificador
156 se esse numeral for precedido por uma contra-barra.
157 Numerais que forem o segundo ou o último caractere não precisam ser precedidos por uma contra barra.
159 Caracteres podem ser declarados para serem alfabéticos por meio da função @code{declare}.
160 Se então declarados alfabéticos, eles não precisam serem precedidos de uma contrabarra em um identificador.
161 Os caracteres alfabéticos vão inicialmente 
162 de @code{A} a @code{Z}, de @code{a} a @code{z}, @code{%}, e @code{_}.
164 Maxima é sensível à caixa . Os identificadores @code{algumacoisa}, @code{ALGUMACOISA}, e @code{Algumacoisa} são distintos.
165 Veja @emph{Lisp e Maxima} para mais sobre esse ponto.
167 Um identificador Maxima é um símbolo Lisp que começa com um sinal de dólar @code{$}.
168 Qualquer outro símbolo Lisp é precedido por um ponto de interrogação @code{?} quando aparecer no Maxima.
169 Veja @emph{Lisp e Maxima} para maiores detalhes sobre esse ponto.
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 Sequências de caracteres, Desigualdade, Identificadores, Expressões
219 @section Sequências de caracteres
221 Strings (sequências de caracteres) são contidas entre aspas duplas @code{"} em entradas de dados usados pelo Maxima,
222 e mostradas com ou sem as aspas duplas, 
223 dependendo do valor escolhido para a variável global @code{stringdisp}.
225 Sequências de caracteres podem conter quaisquer caracteres,
226 incluindo tabulações (tab), nova linha (ou fim de linha), e caracteres de retorno da cabeça de impressão (carriage return).
227 A sequência @code{\"} é reconhecida com uma aspa dupla literal,
228 e @code{\\} como uma contrabarra literal.
229 Quando a contrabarra aparecer no final de uma linha,
230 a contrabarra e a terminação de linha
231 (ou nova linha ou retorno de carro e nova linha)
232 são ignorados,
233 de forma que a sequência de caracteres continue na próxima linha.
234 Nenhuma outra combinação especial de contrabarra com outro caractere é reconhecida;
235 quando a contrabarra aparecer antes de qualquer outro caractere que não seja @code{"}, @code{\},
236 ou um fim de linha, a contrabarra é ignorada.
237 Não exite caminho para representar um caractere especial
238 (tal como uma tabulação, nova linha, ou retorno da cabeça de impressão)
239 excepto através de encaixar o caractere literal na sequência de caracteres.
241 Não existe tipo de caractere no Maxima;
242 um caractere simples é representado como uma sequência de caracteres de um único caractere.
244 Sequências de caracteres no Maxima são implementadas como símbolos do Lisp, não como sequencias de caracteres do not Lisp;
245 o que pode mudar em futuras versões do Maxima.
246 Maxima pode mostrar sequências de caracteres do Lisp e caracteres do Lisp,
247 embora algumas outras operações (por exemplo, testes de igualdade) possam falhar.
248 @c DISCOMFORT WITH LISP STRINGS AND CHARACTERS IS A BUG.
250 O pacote adicional @code{stringproc} contém muitas funções que trabalham com sequências de caracteres.
252 Exemplos:
254 @c ===beg===
255 @c s_1 : "Isso é uma sequência de caracteres  do Maxima.";
256 @c s_2 : "Caracteres \"aspas duplas\" e contrabarras \\ encaixados em uma sequência de caracteres.";
257 @c s_3 : "Caractere de fim de linha encaixado
258 @c nessa sequência de caracteres.";
259 @c s_4 : "Ignore o \
260 @c caractere de \
261 @c fim de linha nessa \
262 @c sequê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 sequência de caracteres  do Maxima.";
270 (%o1)               Isso é uma sequência de caracteres  do Maxima.
271 (%i2) s_2 : "Caracteres \"aspas duplas\" e contrabarras \\ encaixados em uma sequência de caracteres.";
272 (%o2) Caracteres "aspas duplas" e contrabarra \ encaixados em uma sequência de caracteres.
273 (%i3) s_3 : "Caractere de fim de linha encaixado
274 nessa sequência de caracteres.";
275 (%o3) Caractere de fim de linha encaixado
276 nessa sequência de caracteres.
277 (%i4) s_4 : "Ignore o \
278 caractere de \
279 fim de linha nessa \
280 sequência de caracteres.";
281 (%o4) Ignore o caractere de fim de linha nessa sequência de caracteres.
282 (%i5) stringdisp : false;
283 (%o5)                         false
284 (%i6) s_1;
285 (%o6)               Isso é uma sequência de caracteres  do Maxima.
286 (%i7) stringdisp : true;
287 (%o7)                         true
288 (%i8) s_1;
289 (%o8)              "Isso é uma sequência de caracteres  do Maxima."
290 @end example
292 @node Desigualdade, Sintaxe, Sequências de caracteres, Expressões
293 @section Desigualdade
294 Maxima tem os operadores de desigualdade @code{<}, @code{<=}, @code{>=}, @code{>}, @code{#}, e @code{notequal}.
295 Veja @code{if} para uma descrição de expressões condicionais.
297 @node Sintaxe, Definições para Expressões, Desigualdade, Expressões
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 factorial @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 é directo.
324 Somente é necessário declarar uma função como um operador;
325 a função operador pode ou não estar definida previamente.
327 Um exemplo de operadores definidos pelo utilizador é o seguinte.
328 Note que a chamada explícita de função @code{"dd" (a)} é equivalente a @code{dd a},
329 da mesma forma @code{"<-" (a, b)} é equivalente a @code{a <- b}.
330 Note também que as funções @code{"dd"} e @code{"<-"} são indefinidas nesse exemplo.
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 @emph 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 Definições para Expressões,  , Sintaxe, Expressões
461 @section Definições para Expressões
463 @deffn {Função} at (@var{expr}, [@var{eqn_1}, ..., @var{eqn_n}])
464 @deffnx {Função} at (@var{expr}, @var{eqn})
465 Avalia a expressão @var{expr} com
466 as variáveis assumindo os valores como especificado para elas na lista de
467 equações @code{[@var{eqn_1}, ..., @var{eqn_n}]} ou a equação simples @var{eqn}.
469 Se uma subexpressão depender de qualquer das variáveis para a qual um valor foi especificado
470 mas não existe @code{atvalue} especificado e essa subexpressão não pode ser avaliada de outra forma,
471 então uma forma substantiva de @code{at} é retornada que mostra em uma forma bidimensional.
473 @code{at} realiza múltiplas substituições em série, não em paralelo.
475 Veja também @code{atvalue}.
476 Para outras funções que realizam substituições,
477 veja também @code{subst} e @code{ev}.
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 efectivamente excluídas de cálculos.
534 @code{boxchar} é o caractere usado para desenhar a caixa em @code{box}
535 e nas funções @code{dpart} e @code{lpart}.
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 por omissão: @code{"}
586 @code{boxchar} é o caractere usado para desenhar a caixa por @code{box}
587 e nas funções @code{dpart} e @code{lpart}.
589 Todas as caixas em uma expressão são desenhadas com o valor actual
590 de @code{boxchar}; o caractere de desenho não é armazenado com a
591 expressão de caixa. Isso quer dizer que se desenhar uma caixa e em
592 seguida mudar o caracter de desenho a caixa anteriormente desenhada
593 será redesenhada com o caracter mudado caso isso seja solicitado.
595 @end defvr
597 @deffn {Função} carg (@var{z})
598 Retorna o argumento complexo de @var{z}.
599 O argumento complexo é um ângulo @code{theta} no intervalo de @code{(-%pi, %pi]}
600 tal que @code{r exp (theta %i) = @var{z}} onde @code{r} é o módulo de @var{z}.
601 @c ACTUALLY carg DOESN'T ALWAYS RETURN A VALUE IN (-%pi, %pi]; SEE SF BUG REPORT # 816166
603 @code{carg} é uma função computacional,
604 não uma função de simplificação.
605 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
606 @c SEE ALSO SF BUG REPORT # 902290
608 @code{carg} ignora a declaração @code{declare (@var{x}, complex)},
609 e trata @var{x} como uma variável real.
610 Isso é um erro. @c SEE SF BUG REPORT # 620246
612 Veja também @code{abs} (módulo de número complexo), @code{polarform}, @code{rectform},
613 @code{realpart}, e @code{imagpart}.
615 Exemplos:
617 @c ===beg===
618 @c carg (1);
619 @c carg (1 + %i);
620 @c carg (exp (%i));
621 @c carg (exp (%pi * %i));
622 @c carg (exp (3/2 * %pi * %i));
623 @c carg (17 * exp (2 * %i));
624 @c ===end===
626 @example
627 (%i1) carg (1);
628 (%o1)                           0
629 (%i2) carg (1 + %i);
630                                %pi
631 (%o2)                          ---
632                                 4
633 (%i3) carg (exp (%i));
634 (%o3)                           1
635 (%i4) carg (exp (%pi * %i));
636 (%o4)                          %pi
637 (%i5) carg (exp (3/2 * %pi * %i));
638                                 %pi
639 (%o5)                         - ---
640                                  2
641 (%i6) carg (17 * exp (2 * %i));
642 (%o6)                           2
643 @end example
645 @end deffn
647 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
648 @c CROSS REF declare, properties, ETC
649 @deffn {Opereador especial} constant
650 @code{declare (@var{a}, constant)} declara @var{a} para ser uma constante.
651 Veja @code{declare}.
652 @c WHAT EXACTLY ARE THE CONSEQUENCES OF DECLARING AN ATOM TO BE CONSTANT ??
654 @end deffn
656 @deffn {Função} constantp (@var{expr})
657 Retorna @code{true} se @var{expr} for uma expressão constante,
658 de outra forma retorna @code{false}.
659 @c WHAT DOES MAXIMA KNOW ABOUT CONSTANT EXPRESSIONS ??
661 Uma expressão é considerada uma expressão constante se seus argumentos forem
662 números (incluindo números racionais, como mostrado com @code{/R/}),
663 constantes simbólicas como @code{%pi}, @code{%e}, e @code{%i},
664 variáveis associadas a uma constante ou constante declarada através de @code{declare},
665 ou funções cujos argumentos forem constantes.
667 @code{constantp} avalia seus argumentos.
669 Exemplos:
671 @c ===beg===
672 @c constantp (7 * sin(2));
673 @c constantp (rat (17/29));
674 @c constantp (%pi * sin(%e));
675 @c constantp (exp (x));
676 @c declare (x, constant);
677 @c constantp (exp (x));
678 @c constantp (foo (x) + bar (%e) + baz (2));
679 @c ===end===
681 @example
682 (%i1) constantp (7 * sin(2));
683 (%o1)                                true
684 (%i2) constantp (rat (17/29));
685 (%o2)                                true
686 (%i3) constantp (%pi * sin(%e));
687 (%o3)                                true
688 (%i4) constantp (exp (x));
689 (%o4)                                false
690 (%i5) declare (x, constant);
691 (%o5)                                done
692 (%i6) constantp (exp (x));
693 (%o6)                                true
694 (%i7) constantp (foo (x) + bar (%e) + baz (2));
695 (%o7)                                false
696 (%i8) 
697 @end example
699 @end deffn
701 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
702 @c THIS ITEM IS EXTREMELY IMPORTANT
703 @c ENSURE THAT ALL KEYWORDS RECOGNIZED BY declare HAVE THEIR OWN DOCUMENTATION ITEMS !!
704 @c ALSO: HOW TO FIND THE LIST OF ALL SYMBOLS WHICH HAVE A GIVEN PROPERTY ??
705 @deffn {Função} declare (@var{a_1}, @var{p_1}, @var{a_2}, @var{p_2}, ...)
706 Atribui aos átomos ou lista de átomos @var{a_i} a propriedade ou lista de propriedades @var{p_i}.
707 Quando @var{a_i} e/ou @var{p_i} forem listas,
708 cada um dos átomos recebe todas as propriedades.
710 @code{declare} não avalia seus argumentos.
711 @code{declare} sempre retorna @code{done}.
713 Como colocado na descrição para cada sinalizador de declaração,
714 para alguns sinalizadores
715 @code{featurep(@var{objecto}, @var{recurso})}
716 retorna @code{true} se @var{objecto} tiver sido declarado para ter @var{recurso}.
717 Todavia, @code{featurep} não reconhece alguns sinalizadores; isso é um erro.
719 Veja também @code{features}.
721 @code{declare} reconhece as seguintes propriedades:
723 @table @asis
724 @item @code{evfun}
725 Torna @var{a_i} conhecido para @code{ev} de forma que a função nomeada por @var{a_i}
726 é aplicada quando @var{a_i} aparece como um sinalizador argumento de @code{ev}.
727 Veja @code{evfun}.
729 @item @code{evflag}
730 Torna @var{a_i} conhecido para a função @code{ev} de forma que @var{a_i} é associado a @code{true}
731 durante a execução de @code{ev} quando @var{a_i} aparece como um sinalizador argumento de @code{ev}.
732 Veja @code{evflag}.
734 @c OBSOLETE @code{special} (RECONHECIDA POR DECLARE MAS NUNCA USADA EM LUGAR ALGUM)
736 @c OBSOLETE @code{nonarray} (RECONHECIDA POR DECLARE MAS NUNCA USADA EM LUGAR ALGUM)
738 @item @code{bindtest}
739 Diz ao Maxima para disparar um erro quando @var{a_i} for avaliado como sendo livre de associação.
741 @item @code{noun}
742 Diz ao Maxima para passar @var{a_i} como um substantivo. 
743 O efeito disso é substituir intâncias de @var{a_i} com @code{'@var{a_i}}
744 ou @code{nounify(@var{a_i})}, ependendo do contexto.
746 @item @code{constant}
747 Diz ao Maxima para considerar @var{a_i} uma constante simbólica.
748 @c WHAT MAXIMA KNOWS ABOUT SYMBOLIC CONSTANTS IS PRETTY LIMITED
749 @c DUNNO IF WE WANT TO GET INTO DETAILS HERE. 
750 @c MAYBE IN THE DOCUMENTATION FOR CONSTANT (IF THERE IS SUCH)
752 @item @code{scalar}
753 Diz ao Maxima para considerar @var{a_i} uma variável escalar.
755 @item @code{nonscalar}
756 Diz ao Maxima para considerar @var{a_i} uma variável não escalar.
757 The usual application is to declare a variable as a symbolic vector or matrix.
759 @item @code{mainvar}
760 Diz ao Maxima para considerar @var{a_i} uma "variável principal" (@code{mainvar}).
761 @code{ordergreatp} determina a ordenação de átomos como segue:
763 (variáveis principais) > (outras variáveis) > (variáveis escalares) > (constantes) > (números)
765 @item @code{alphabetic}
766 Diz ao Maxima para reconhecer todos os caracteres em @var{a_i} (que deve ser uma sequência de caracteres) como caractere alfabético.
768 @item @code{feature}
769 Diz ao Maxima para reconhecer @var{a_i} como nome de um recurso.
770 Other atoms may then be declared to have the @var{a_i} property.
772 @item @code{rassociative}, @code{lassociative}
773 Diz ao Maxima para reconhecer @var{a_i} como uma funcão associativa a direita ou associativa a esquerda.
775 @item @code{nary}
776 Diz ao Maxima para reconhecer @var{a_i} como uma função n-ária (com muitos argumentos).
778 A declaração @code{nary} não tem o mesmo objectivo que uma chamada à função @code{nary}.
779 O único efeito de @code{declare(foo, nary)} é para instruir o simplificador do Maxima
780 a melhorar as próximas expressões,
781 por exemplo, para simplificar @code{foo(x, foo(y, z))} para @code{foo(x, y, z)}.
783 @item @code{symmetric}, @code{antisymmetric}, @code{commutative}
784 Diz ao Maxima para reconhecer @var{a_i} como uma função simétrica ou antisimétrica.
785 @code{commutative} é o mesmo que @code{symmetric}.
787 @item @code{oddfun}, @code{evenfun}
788 Diz ao Maxima para reconhecer @var{a_i} como uma função par ou uma função ímpar.
790 @item @code{outative}
791 Diz ao Maxima para simplificar expressões @var{a_i}
792 colocando factores constantes em evidência no primeiro argumento.
794 Quando @var{a_i} tiver um argumento,
795 um factor é onsiderado constante se for um literal ou se for declarado como sendo constante.
797 Quando @var{a_i} tiver dois ou mais argumentos,
798 um factor é considerado constante
799 se o segundo argumento for um símbolo
800 e o factor estiver livre do segundo argumento.
802 @item @code{multiplicative}
803 Diz ao Maxima para simplificar expressões do tipo @var{a_i}
804 através da substituição @code{@var{a_i}(x * y * z * ...)} @code{-->}
805 @code{@var{a_i}(x) * @var{a_i}(y) * @var{a_i}(z) * ...}.
806 A substituição é realizada no primeiro argumento somente.
808 @item @code{additive}
809 Diz ao Maxima para simplificar expressões do tipo @var{a_i}
810 através da substituição @code{@var{a_i}(x + y + z + ...)} @code{-->}
811 @code{@var{a_i}(x) + @var{a_i}(y) + @var{a_i}(z) + ...}.
812 A substituição é realizada no primeiro argumento somente.
814 @item @code{linear}
815 Equivalente a declarar @var{a_i} ao mesmo tempo @code{outative} e @code{additive}.
817 @c OBSOLETE @code{analytic} (RECOGNIZED BY DECLARE BUT NEVER USED ANYWHERE)
819 @item @code{integer}, @code{noninteger}
820 Diz ao Maxima para reconhecer @var{a_i} como como uma variável inteira ou como uma variável não inteira.
822 Maxima reconhece os seguintes recursos de objectos:
824 @item @code{even}, @code{odd}
825 Diz ao Maxima para reconhecer @var{a_i} como uma variável inteira par ou como uma variável inteira ímpar.
827 @item @code{rational}, @code{irrational}
828 Diz ao Maxima para reconhecer @var{a_i} como uma variável real e racional ou como uma variável real e irracional.
830 @item @code{real}, @code{imaginary}, @code{complex}
831 Dia ao Maxima para reconhecer @var{a_i} como uma variável real, imaginária pura ou complexa.
833 @item @code{increasing}, @code{decreasing}
834 Dia ao Maxima para reconhecer @var{a_i} como uma função de incremento ou decremento.
835 @c MAXIMA FAILS TO DEDUCE F(2) > F(1) FOR INCREASING FUNCTION F
836 @c AND FAILS TO DEDUCE ANYTHING AT ALL ABOUT DECREASING FUNCTIONS
837 @c REPORTED AS SF BUG # 1483194
839 @item @code{posfun}
840 Diz ao Maxima para reconhecer @var{a_i} como uma função positiva.
842 @item @code{integervalued}
843 Diz ao Maxima para reconhecer @var{a_i} como uma função de valores inteiros.
845 @end table
847 Exemplos:
849 Declarações @code{evfun} e @code{evflag}.
850 @c ===beg===
851 @c declare (expand, evfun);
852 @c (a + b)^3;
853 @c (a + b)^3, expand;
854 @c declare (demoivre, evflag);
855 @c exp (a + b*%i);
856 @c exp (a + b*%i), demoivre;
857 @c ===end===
858 @example
859 (%i1) declare (expand, evfun);
860 (%o1)                         done
861 (%i2) (a + b)^3;
862                                    3
863 (%o2)                       (b + a)
864 (%i3) (a + b)^3, expand;
865                      3        2      2      3
866 (%o3)               b  + 3 a b  + 3 a  b + a
867 (%i4) declare (demoivre, evflag);
868 (%o4)                         done
869 (%i5) exp (a + b*%i);
870                              %i b + a
871 (%o5)                      %e
872 (%i6) exp (a + b*%i), demoivre;
873                       a
874 (%o6)               %e  (%i sin(b) + cos(b))
875 @end example
877 Declaração @code{bindtest}.
878 @c ===beg===
879 @c aa + bb;
880 @c declare (aa, bindtest);
881 @c aa + bb;
882 @c aa : 1234;
883 @c aa + bb;
884 @c ===end===
885 @example
886 (%i1) aa + bb;
887 (%o1)                        bb + aa
888 (%i2) declare (aa, bindtest);
889 (%o2)                         done
890 (%i3) aa + bb;
891 aa unbound variable
892  -- an error.  Quitting.  To debug this try debugmode(true);
893 (%i4) aa : 1234;
894 (%o4)                         1234
895 (%i5) aa + bb;
896 (%o5)                       bb + 1234
897 @end example
899 Declaração @code{noun}.
900 @c ===beg===
901 @c factor (12345678);
902 @c declare (factor, noun);
903 @c factor (12345678);
904 @c ''%, nouns;
905 @c ===end===
906 @example
907 (%i1) factor (12345678);
908                              2
909 (%o1)                     2 3  47 14593
910 (%i2) declare (factor, noun);
911 (%o2)                         done
912 (%i3) factor (12345678);
913 (%o3)                   factor(12345678)
914 (%i4) ''%, nouns;
915                              2
916 (%o4)                     2 3  47 14593
917 @end example
919 Declarações @code{constant}, @code{scalar}, @code{nonscalar}, e @code{mainvar}.
920 @c ===beg===
921 @c declare (bb, constant);
922 @c declare (cc, scalar);
923 @c declare (dd, nonscalar);
924 @c declare (ee, mainvar);
925 @c ===end===
926 @example
927 @end example
929 Declaração @code{alphabetic}.
930 @c ===beg===
931 @c xx\~yy\`\@ : 1729;
932 @c declare ("~`@", alphabetic);
933 @c xx~yy`@ + @yy`xx + `xx@@yy~;
934 @c listofvars (%);
935 @c ===end===
936 @example
937 (%i1) xx\~yy\`\@@ : 1729;
938 (%o1)                         1729
939 (%i2) declare ("~`@@", alphabetic);
940 (%o2)                         done
941 (%i3) xx~yy`@@ + @@yy`xx + `xx@@@@yy~;
942 (%o3)               `xx@@@@yy~ + @@yy`xx + 1729
943 (%i4) listofvars (%);
944 (%o4)                  [@@yy`xx, `xx@@@@yy~]
945 @end example
947 Declaração @code{feature}.
948 @c ===beg===
949 @c declare (FOO, feature);
950 @c declare (x, FOO);
951 @c featurep (x, FOO);
952 @c ===end===
953 @example
954 (%i1) declare (FOO, feature);
955 (%o1)                         done
956 (%i2) declare (x, FOO);
957 (%o2)                         done
958 (%i3) featurep (x, FOO);
959 (%o3)                         true
960 @end example
962 Declarações @code{rassociative} e @code{lassociative}.
963 @c ===beg===
964 @c declare (F, rassociative);
965 @c declare (G, lassociative);
966 @c ===end===
967 @example
968 @end example
970 Declaração @code{nary}.
971 @c ===beg===
972 @c H (H (a, b), H (c, H (d, e)));
973 @c declare (H, nary);
974 @c H (H (a, b), H (c, H (d, e)));
975 @c ===end===
976 @example
977 (%i1) H (H (a, b), H (c, H (d, e)));
978 (%o1)               H(H(a, b), H(c, H(d, e)))
979 (%i2) declare (H, nary);
980 (%o2)                         done
981 (%i3) H (H (a, b), H (c, H (d, e)));
982 (%o3)                   H(a, b, c, d, e)
983 @end example
985 Declarações @code{symmetric} e @code{antisymmetric}.
986 @c ===beg===
987 @c S (b, a);
988 @c declare (S, symmetric);
989 @c S (b, a);
990 @c S (a, c, e, d, b);
991 @c T (b, a);
992 @c declare (T, antisymmetric);
993 @c T (b, a);
994 @c T (a, c, e, d, b);
995 @c ===end===
996 @example
997 (%i1) S (b, a);
998 (%o1)                        S(b, a)
999 (%i2) declare (S, symmetric);
1000 (%o2)                         done
1001 (%i3) S (b, a);
1002 (%o3)                        S(a, b)
1003 (%i4) S (a, c, e, d, b);
1004 (%o4)                   S(a, b, c, d, e)
1005 (%i5) T (b, a);
1006 (%o5)                        T(b, a)
1007 (%i6) declare (T, antisymmetric);
1008 (%o6)                         done
1009 (%i7) T (b, a);
1010 (%o7)                       - T(a, b)
1011 (%i8) T (a, c, e, d, b);
1012 (%o8)                   T(a, b, c, d, e)
1013 @end example
1015 Declarações @code{oddfun} e @code{evenfun}.
1016 @c ===beg===
1017 @c o (- u) + o (u);
1018 @c declare (o, oddfun);
1019 @c o (- u) + o (u);
1020 @c e (- u) - e (u);
1021 @c declare (e, evenfun);
1022 @c e (- u) - e (u);
1023 @c ===end===
1024 @example
1025 (%i1) o (- u) + o (u);
1026 (%o1)                     o(u) + o(- u)
1027 (%i2) declare (o, oddfun);
1028 (%o2)                         done
1029 (%i3) o (- u) + o (u);
1030 (%o3)                           0
1031 (%i4) e (- u) - e (u);
1032 (%o4)                     e(- u) - e(u)
1033 (%i5) declare (e, evenfun);
1034 (%o5)                         done
1035 (%i6) e (- u) - e (u);
1036 (%o6)                           0
1037 @end example
1039 Declaração @code{outative}.
1040 @c ===beg===
1041 @c F1 (100 * x);
1042 @c declare (F1, outative);
1043 @c F1 (100 * x);
1044 @c declare (zz, constant);
1045 @c F1 (zz * y);
1046 @c ===end===
1047 @example
1048 (%i1) F1 (100 * x);
1049 (%o1)                       F1(100 x)
1050 (%i2) declare (F1, outative);
1051 (%o2)                         done
1052 (%i3) F1 (100 * x);
1053 (%o3)                       100 F1(x)
1054 (%i4) declare (zz, constant);
1055 (%o4)                         done
1056 (%i5) F1 (zz * y);
1057 (%o5)                       zz F1(y)
1058 @end example
1060 Declaração @code{multiplicative}.
1061 @c ===beg===
1062 @c F2 (a * b * c);
1063 @c declare (F2, multiplicative);
1064 @c F2 (a * b * c);
1065 @c ===end===
1066 @example
1067 (%i1) F2 (a * b * c);
1068 (%o1)                       F2(a b c)
1069 (%i2) declare (F2, multiplicative);
1070 (%o2)                         done
1071 (%i3) F2 (a * b * c);
1072 (%o3)                   F2(a) F2(b) F2(c)
1073 @end example
1075 Declaração @code{additive}.
1076 @c ===beg===
1077 @c F3 (a + b + c);
1078 @c declare (F3, additive);
1079 @c F3 (a + b + c);
1080 @c ===end===
1081 @example
1082 (%i1) F3 (a + b + c);
1083 (%o1)                     F3(c + b + a)
1084 (%i2) declare (F3, additive);
1085 (%o2)                         done
1086 (%i3) F3 (a + b + c);
1087 (%o3)                 F3(c) + F3(b) + F3(a)
1088 @end example
1090 Declaração @code{linear}.
1091 @c ===beg===
1092 @c 'sum (F(k) + G(k), k, 1, inf);
1093 @c declare (nounify (sum), linear);
1094 @c 'sum (F(k) + G(k), k, 1, inf);
1095 @c ===end===
1096 @example
1097 (%i1) 'sum (F(k) + G(k), k, 1, inf);
1098                        inf
1099                        ====
1100                        \
1101 (%o1)                   >    (G(k) + F(k))
1102                        /
1103                        ====
1104                        k = 1
1105 (%i2) declare (nounify (sum), linear);
1106 (%o2)                         done
1107 (%i3) 'sum (F(k) + G(k), k, 1, inf);
1108                      inf          inf
1109                      ====         ====
1110                      \            \
1111 (%o3)                 >    G(k) +  >    F(k)
1112                      /            /
1113                      ====         ====
1114                      k = 1        k = 1
1115 @end example
1117 @end deffn
1119 @c NEEDS WORK
1120 @deffn {Função} disolate (@var{expr}, @var{x_1}, ..., @var{x_n})
1121 é similar a @code{isolate (@var{expr}, @var{x})}
1122 excepto que essa função habilita ao utilizador isolar
1123 mais que uma variável simultâneamente.  Isso pode ser útil, por
1124 exemplo, se se tiver tentado mudar variáveis em uma integração
1125 múltipla, e em mudança de variável envolvendo duas ou mais das
1126 variáveis de integração.  Essa função é chamada automaticamente de
1127 @file{simplification/disol.mac}.  Uma demostração está disponível através de
1128 @code{demo("disol")$}.
1130 @end deffn
1132 @c NEEDS WORK
1133 @deffn {Função} dispform (@var{expr})
1134 Retorna a representação externa de @var{expr} com relação a seu
1135 principal operador.  Isso pode ser útil em conjunção com @code{part} que
1136 também lida com a representação externa.  Suponha que @var{expr} seja -A .
1137 Então a representação interna de @var{expr} é  "*"(-1,A), enquanto que
1138 a representação externa é "-"(A). @code{dispform (@var{expr}, all)} converte a
1139 expressão inteira (não apenas o nível mais alto) para o formato externo.  Por
1140 exemplo, se @code{expr: sin (sqrt (x))}, então @code{freeof (sqrt, expr)} e
1141 @code{freeof (sqrt, dispform (expr))} fornece @code{true}, enquanto
1142 @code{freeof (sqrt, dispform (expr, all))} fornece @code{false}.
1144 @end deffn
1146 @c NEEDS WORK
1147 @deffn {Função} distrib (@var{expr})
1148 Distribue adições sobre produtos.  @code{distrib} difere de @code{expand}
1149 no facto de que @code{distrib} trabalha em somente no nível mais alto de uma expressão, i.e., @code{distrib} não
1150 é recursiva e @code{distrib} é mais rápida que @code{expand}.  @code{distrib} difere de @code{multthru} no
1151 que @code{distrib} expande todas as adições naquele nível.
1153 Exemplos:
1155 @example
1156 (%i1) distrib ((a+b) * (c+d));
1157 (%o1)                 b d + a d + b c + a c
1158 (%i2) multthru ((a+b) * (c+d));
1159 (%o2)                 (b + a) d + (b + a) c
1160 (%i3) distrib (1/((a+b) * (c+d)));
1161                                 1
1162 (%o3)                    ---------------
1163                          (b + a) (d + c)
1164 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
1165                                 1
1166 (%o4)                 ---------------------
1167                       b d + a d + b c + a c
1168 @end example
1170 @end deffn
1172 @c NEEDS WORK
1173 @deffn {Função} dpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1174 Selecciona a mesma subexpressão que @code{part}, mas
1175 em lugar de apenas retornar aquela subexpressão como seu valor, isso retorna
1176 a expressão completa com a subexpressão seleccionada mostrada dentro
1177 de uma caixa.  A caixa é actualmente parte da expressão.
1179 @example
1180 (%i1) dpart (x+y/z^2, 1, 2, 1);
1181                              y
1182 (%o1)                       ---- + x
1183                                2
1184                             """
1185                             "z"
1186                             """
1187 @end example
1189 @end deffn
1191 @c PROBABLY MORE TO BE SAID HERE
1192 @deffn {Função} exp (@var{x})
1193 Representa função exponencial.  
1194 Instâncias de @code{exp (@var{x})} em uma entrada são simplificadas para @code{%e^@var{x}};
1195 @code{exp} não aparece em expressões simplificadas.
1197 @code{demoivre} se @code{true} faz com que @code{%e^(a + b %i)} simplificar para
1198 @code{%e^(a (cos(b) + %i sin(b)))} se @code{b} for livre de @code{%i}. veja @code{demoivre}.
1200 @code{%emode}, quando @code{true}, 
1201 faz com que @code{%e^(%pi %i x)} seja simplificado. Veja @code{%emode}.
1203 @code{%enumer}, quando @code{true} faz com que @code{%e} seja substituído por
1204 2.718...  quando @code{numer} for @code{true}. Veja @code{%enumer}.
1206 @c NEED EXAMPLES HERE
1207 @end deffn
1209 @defvr {Variável de opção} %emode
1210 Valor por omissão: @code{true}
1212 Quando @code{%emode} for @code{true},
1213 @code{%e^(%pi %i x)} é simplificado como
1214 segue.
1216 @code{%e^(%pi %i x)} simplifica para @code{cos (%pi x) + %i sin (%pi x)} se @code{x} for um inteiro ou
1217 um múltiplo de 1/2, 1/3, 1/4, ou 1/6, e então é adicionalmente simplificado.
1219 Para outro @code{x} numérico,
1220 @code{%e^(%pi %i x)} simplifica para @code{%e^(%pi %i y)} onde @code{y} é @code{x - 2 k}
1221 para algum inteiro @code{k} tal que @code{abs(y) < 1}.  
1223 Quando @code{%emode} for @code{false}, nenhuma
1224 simplificação adicional de @code{%e^(%pi %i x)} é realizada.
1226 @c NEED EXAMPLES HERE
1227 @end defvr
1229 @defvr {Variável de opção} %enumer
1230 Valor por omissão: @code{false}
1232 Quando @code{%enumer} for @code{true},
1233 @code{%e} é substituido por seu valor numérico
1234 2.718...  mesmo que @code{numer} seja @code{true}. 
1236 Quando @code{%enumer} for @code{false}, essa substituição é realizada
1237 somente se o expoente em @code{%e^x} avaliar para um número.
1239 Veja também @code{ev} e @code{numer}.
1241 @c NEED EXAMPLES HERE
1242 @end defvr
1244 @defvr {Variável de opção} exptisolate
1245 Valor por omissão: @code{false}
1247 @c WHAT DOES THIS MEAN EXACTLY ??
1248 @code{exptisolate}, quando @code{true}, faz com que @code{isolate (expr, var)}
1249 examine expoentes de átomos (tais como @code{%e}) que contenham @code{var}.
1251 @c NEED EXAMPLES HERE
1252 @end defvr
1254 @defvr {Variável de opção} exptsubst
1255 Valor por omissão: @code{false}
1257 @code{exptsubst}, quando @code{true}, permite substituições tais como @code{y}
1258 para @code{%e^x} em @code{%e^(a x)}.
1260 @c NEED EXAMPLES HERE
1261 @end defvr
1263 @deffn {Função} freeof (@var{x_1}, ..., @var{x_n}, @var{expr})
1264 @code{freeof (@var{x_1}, @var{expr})}
1265 Retorna @code{true}
1266 se nenhuma subexpressão de @var{expr} for igual a @var{x_1}
1267 ou se @var{x_1} ocorrer somente uma variável que não tenha associação fora da expressão @var{expr},
1268 e retorna @code{false} de outra forma.
1270 @code{freeof (@var{x_1}, ..., @var{x_n}, @var{expr})}
1271 é equivalente a @code{freeof (@var{x_1}, @var{expr}) and ... and freeof (@var{x_n}, @var{expr})}.
1273 Os argumentos @var{x_1}, ..., @var{x_n} 
1274 podem ser nomes de funções e variáveis, nomes subscritos,
1275 operadores (empacotados em aspas duplas), ou expressões gerais.
1276 @code{freeof} avalia seus argumentos.
1278 @code{freeof} opera somente sobre @var{expr} como isso representa (após simplificação e avaliação) e
1279 não tenta determinar se alguma expressão equivalente pode fornecer um resultado diferente.
1280 Em particular, simplificação pode retornar uma expressão equivalente mas diferente que compreende
1281 alguns diferentes elementos da forma original de @var{expr}.
1283 Uma variável é uma variável dummy em uma expressão se não tiver associação fora da expressão.
1284 Variáveis dummy recoreconhecidas através de @code{freeof} são
1285 o índice de um somatório ou produtório, o limite da variável em @code{limit},
1286 a variável de integração na forma de integral definida de @code{integrate},
1287 a variável original em @code{laplace},
1288 variáveis formais em expressoes @code{at},
1289 e argumentos em expressões @code{lambda}.
1290 Variáveis locais em @code{block} não são reconhecidas por @code{freeof} como variáveis dummy;
1291 isso é um bug.
1293 A forma indefinida de @code{integrate} @i{not} é livre de suas variáveis de integração.
1295 @itemize @bullet
1296 @item
1297 Argumentos são nomes de funções, variáveis, nomes subscritos, operadores, e expressões.
1298 @code{freeof (a, b, expr)} é equivalente a
1299 @code{freeof (a, expr) and freeof (b, expr)}.
1301 @example
1302 (%i1) expr: z^3 * cos (a[1]) * b^(c+d);
1303                                  d + c  3
1304 (%o1)                   cos(a ) b      z
1305                              1
1306 (%i2) freeof (z, expr);
1307 (%o2)                         false
1308 (%i3) freeof (cos, expr);
1309 (%o3)                         false
1310 (%i4) freeof (a[1], expr);
1311 (%o4)                         false
1312 (%i5) freeof (cos (a[1]), expr);
1313 (%o5)                         false
1314 (%i6) freeof (b^(c+d), expr);
1315 (%o6)                         false
1316 (%i7) freeof ("^", expr);
1317 (%o7)                         false
1318 (%i8) freeof (w, sin, a[2], sin (a[2]), b*(c+d), expr);
1319 (%o8)                         true
1320 @end example
1322 @item
1323 @code{freeof} avalia seus argumentos.
1325 @example
1326 (%i1) expr: (a+b)^5$
1327 (%i2) c: a$
1328 (%i3) freeof (c, expr);
1329 (%o3)                         false
1330 @end example
1332 @item
1333 @code{freeof} não considera expressões equivalentes.
1334 Simplificação pode retornar uma expressão equivalente mas diferente.
1336 @example
1337 (%i1) expr: (a+b)^5$
1338 (%i2) expand (expr);
1339           5        4       2  3       3  2      4      5
1340 (%o2)    b  + 5 a b  + 10 a  b  + 10 a  b  + 5 a  b + a
1341 (%i3) freeof (a+b, %);
1342 (%o3)                         true
1343 (%i4) freeof (a+b, expr);
1344 (%o4)                         false
1345 (%i5) exp (x);
1346                                  x
1347 (%o5)                          %e
1348 (%i6) freeof (exp, exp (x));
1349 (%o6)                         true
1350 @end example
1352 @item Um somatório ou uma integral definida está livre de uma variável dummy.
1353 Uma integral indefinida não é livre de suas variáveis de integração.
1355 @example
1356 (%i1) freeof (i, 'sum (f(i), i, 0, n));
1357 (%o1)                         true
1358 (%i2) freeof (x, 'integrate (x^2, x, 0, 1));
1359 (%o2)                         true
1360 (%i3) freeof (x, 'integrate (x^2, x));
1361 (%o3)                         false
1362 @end example
1363 @end itemize
1365 @end deffn
1367 @c IS THIS DEFINITION CORRECT ??
1368 @deffn {Função} genfact (@var{x}, @var{y}, @var{z})
1369 Retorna o factorial generalizado, definido como
1370 @code{x (x-z) (x - 2 z) ... (x - (y - 1) z)}.  Dessa forma, para integral @var{x},
1371 @code{genfact (x, x, 1) = x!} e @code{genfact (x, x/2, 2) = x!!}.
1373 @end deffn
1375 @deffn {Função} imagpart (@var{expr})
1376 Retorna a parte imaginária da expressão @var{expr}.
1378 @code{imagpart} é uma função computacional,
1379 não uma função de simplificação.
1380 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
1381 @c SEE ALSO SF BUG REPORT # 902290
1383 Veja também @code{abs}, @code{carg}, @code{polarform}, @code{rectform},
1384 e @code{realpart}.
1386 @c NEED EXAMPLES HERE
1387 @end deffn
1389 @deffn {Função} infix (@var{op})
1390 @deffnx {Função} infix (@var{op}, @var{lbp}, @var{rbp})
1391 @deffnx {Função} infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})
1392 Declara @var{op} para ser um operador infixo.
1393 Um operador infixo é uma função de dois argumentos,
1394 com o nome da função escrito entre os argumentos.
1395 Por exemplo, o operador de subtração @code{-} é um operador infixo.
1397 @code{infix (@var{op})} declara @var{op} para ser um operador infixo
1398 com expoentes associados padrão (esquerdo e direito ambos iguais a 180)
1399 e podendo ser qualquer entre prefixado, infixado, posfixado, nário, 
1400 matchfix e nofix (esquerdo e direito ambos iguais a @code{any}).
1401 @c HOW IS pos DIFFERENT FROM lpos AND rpos ??
1403 @code{infix (@var{op}, @var{lbp}, @var{rbp})} declara @var{op} para ser um operador infixo
1404 com expoentes associados esquerdo e directio equilibrados
1405 e podendo ser qualquer entre prefixado, infixado, posfixado, nário, 
1406 matchfix e nofix (esquerdo e direito ambos iguais a @code{any}).
1408 @code{infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})}
1409 declara @var{op} para ser um operdor infixo
1410 com expoentes associados padrão e podendo ser um entre 
1411 prefixado, infixado, posfixado, nário, matchfix e nofix.
1413 A precedência de @var{op} com relação a outros operadores
1414 derivam dos expoentes associados directiro e esquerdo dos operadores em questão.
1415 Se os expoentes associados esquerdo e direito de @var{op} forem ambos maiores
1416 que o expoente associado esquerdo e o direito de algum outro operador,
1417 então @var{op} tem prededência sobre o outro operador.
1418 Se os expoentes associados não forem ambos maior ou menor,
1419 alguma relação mais complicada ocorre.
1421 A associatividade de @var{op} depende de seus expoentes associados.
1422 Maior expoente associado esquerdo (@var{eae}) implica uma instância de
1423 @var{op} é avaliadas antes de outros operadores para sua esquerda em uma expressão,
1424 enquanto maior expoente associado direito (@var{ead}) implica uma instância de
1425 @var{op} é avaliada antes de outros operadores para sua direita em uma expressão.
1426 Dessa forma maior @var{eae} torna @var{op} associativo à direita,
1427 enquanto maior @var{ead} torna @var{op} associativa à esquerda.
1428 Se @var{eae} for igual a @var{ead}, @var{op} é associativa à esquerda.
1430 Veja também @code{Syntax}.
1432 Exemplos:
1434 Se os expoentes associados esquerdo e direito de @var{op} forem ambos maiores
1435 que os expoentes associados à direita e à esquerda de algum outro operador,
1436 então @var{op} tem precedência sobre o outro operador.
1438 @c ===beg===
1439 @c :lisp (get '$+ 'lbp)
1440 @c :lisp (get '$+ 'rbp)
1441 @c infix ("##", 101, 101);
1442 @c "##"(a, b) := sconcat("(", a, ",", b, ")");
1443 @c 1 + a ## b + 2;
1444 @c infix ("##", 99, 99);
1445 @c 1 + a ## b + 2;
1446 @c ===end===
1447 @example
1448 (%i1) :lisp (get '$+ 'lbp)
1450 (%i1) :lisp (get '$+ 'rbp)
1452 (%i1) infix ("##", 101, 101);
1453 (%o1)                          ##
1454 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")");
1455 (%o2)       (a ## b) := sconcat("(", a, ",", b, ")")
1456 (%i3) 1 + a ## b + 2;
1457 (%o3)                       (a,b) + 3
1458 (%i4) infix ("##", 99, 99);
1459 (%o4)                          ##
1460 (%i5) 1 + a ## b + 2;
1461 (%o5)                       (a+1,b+2)
1462 @end example
1464 grande @var{eae} torna @var{op} associativa à direita,
1465 enquanto grande @var{ead} torna @var{op} associativa à esquerda.
1467 @c ===beg===
1468 @c infix ("##", 100, 99);
1469 @c "##"(a, b) := sconcat("(", a, ",", b, ")")$
1470 @c foo ## bar ## baz;
1471 @c infix ("##", 100, 101);
1472 @c foo ## bar ## baz;
1473 @c ===end===
1474 @example
1475 (%i1) infix ("##", 100, 99);
1476 (%o1)                          ##
1477 (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")")$
1478 (%i3) foo ## bar ## baz;
1479 (%o3)                    (foo,(bar,baz))
1480 (%i4) infix ("##", 100, 101);
1481 (%o4)                          ##
1482 (%i5) foo ## bar ## baz;
1483 (%o5)                    ((foo,bar),baz)
1484 @end example
1486 @end deffn
1488 @defvr {Variável de opção} inflag
1489 Velor padrão: @code{false}
1491 Quando @code{inflag} for @code{true}, funções para extração de
1492 partes inspecionam a forma interna de @code{expr}.
1494 Note que o simplificador re-organiza expressões.
1495 Dessa forma @code{first (x + y)} retorna @code{x} se @code{inflag}
1496 for @code{true} e @code{y} se @code{inflag} for @code{false}.
1497 (@code{first (y + x)} fornece os mesmos resultados.)
1499 Também, escolhendo @code{inflag} para @code{true} e chamando @code{part} ou @code{substpart} é
1500 o mesmo que chamar @code{inpart} ou @code{substinpart}.
1502 As funções afectadas pela posição do sinalizador @code{inflag} são:
1503 @code{part}, @code{substpart}, @code{first}, @code{rest}, @code{last}, @code{length},
1504 a estrutura @code{for} ... @code{in},
1505 @code{map}, @code{fullmap}, @code{maplist}, @code{reveal} e @code{pickapart}.
1507 @c NEED EXAMPLES HERE
1508 @end defvr
1510 @c NEEDS WORK
1511 @deffn {Função} inpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1512 É similar a @code{part} mas trabalha sobre a representação
1513 interna da expressão em lugar da forma de exibição e
1514 dessa forma pode ser mais rápida uma vez que nenhuma formatação é realizada.  Cuidado deve ser tomado
1515 com relação à ordem de subexpressões em adições e produtos
1516 (uma vez que a ordem das variáveis na forma interna é muitas vezes diferente
1517 daquela na forma mostrada) e no manuseio com menos unário,
1518 subtração, e divisão (uma vez que esses operadores são removidos da
1519 expressão). @code{part (x+y, 0)} ou @code{inpart (x+y, 0)} retorna @code{+}, embora com o objectivo de
1520 referirse ao operador isso deva ser abraçado por aspas duplas.  Por exemplo
1521 @code{... if inpart (%o9,0) = "+" then ...}.
1523 Exemplos:
1525 @example
1526 (%i1) x + y + w*z;
1527 (%o1)                      w z + y + x
1528 (%i2) inpart (%, 3, 2);
1529 (%o2)                           z
1530 (%i3) part (%th (2), 1, 2);
1531 (%o3)                           z
1532 (%i4) 'limit (f(x)^g(x+1), x, 0, minus);
1533                                   g(x + 1)
1534 (%o4)                 limit   f(x)
1535                       x -> 0-
1536 (%i5) inpart (%, 1, 2);
1537 (%o5)                       g(x + 1)
1538 @end example
1540 @end deffn
1542 @c NEEDS WORK
1543 @deffn {Função} isolate (@var{expr}, @var{x})
1544 Retorna @var{expr} com subexpressões que são adições e
1545 que não possuem @var{x} substituido por rótulos de expressão intermédia
1546 (esses sendo símbolos at@^omicos como @code{%t1}, @code{%t2}, ...).  Isso é muitas vezes útil
1547 para evitar expansões desnecessárias de subexpressões que não possuam
1548 a variável de interesse.  Uma vez que os rótulos intermédios são associados às
1549 subexpressões eles podem todos ser substituídos de volta por avaliação da
1550 expressão em que ocorrerem.
1552 @code{exptisolate} (valor padrão: @code{false}) se @code{true} fará com que @code{isolate} examine expoentes de
1553 átomos (como @code{%e}) que contenham @var{x}.
1555 @code{isolate_wrt_times} se @code{true}, então @code{isolate} irá também isolar com relação a 
1556 produtos. Veja @code{isolate_wrt_times}.
1558 Faça @code{example (isolate)} para exemplos.
1560 @end deffn
1562 @c NEEDS WORK
1563 @defvr {Variável de opção} isolate_wrt_times
1564 Valor por omissão: @code{false}
1566 Quando @code{isolate_wrt_times} for @code{true}, @code{isolate}
1567 irá também isolar com relação a produtos.  E.g. compare ambas as escolhas do
1568 comutador em
1570 @example
1571 (%i1) isolate_wrt_times: true$
1572 (%i2) isolate (expand ((a+b+c)^2), c);
1574 (%t2)                          2 a
1577 (%t3)                          2 b
1580                           2            2
1581 (%t4)                    b  + 2 a b + a
1583                      2
1584 (%o4)               c  + %t3 c + %t2 c + %t4
1585 (%i4) isolate_wrt_times: false$
1586 (%i5) isolate (expand ((a+b+c)^2), c);
1587                      2
1588 (%o5)               c  + 2 b c + 2 a c + %t4
1589 @end example
1591 @end defvr
1593 @c NEEDS EXAMPLES
1594 @defvr {Variável de opção} listconstvars
1595 Valor por omissão: @code{false}
1597 Quando @code{listconstvars} for @code{true}, isso fará com que @code{listofvars}
1598 inclua @code{%e}, @code{%pi}, @code{%i}, e quaisquer variáveis declaradas contantes na lista
1599 seja retornado se aparecer na expressão que chamar @code{listofvars}.
1600 O comportamento padrão é omitir isso.
1602 @end defvr
1604 @defvr {Variável de opção} listdummyvars
1605 Valor por omissão: @code{true}
1607 Quando @code{listdummyvars} for @code{false}, "variáveis dummy" na
1608 expressão não serão incluídas na lista retornada por @code{listofvars}.
1609 (O significado de "variável dummy" é o mesmo que em @code{freeof}.
1610 "Variáveis dummy" são conceitos matemáticos como o índice de um somatório ou
1611 produtório, a variável limite, e a variável da integral definida.)
1612 Exemplo:
1614 @example
1615 (%i1) listdummyvars: true$
1616 (%i2) listofvars ('sum(f(i), i, 0, n));
1617 (%o2)                        [i, n]
1618 (%i3) listdummyvars: false$
1619 (%i4) listofvars ('sum(f(i), i, 0, n));
1620 (%o4)                          [n]
1621 @end example
1623 @end defvr
1625 @c NEEDS WORK
1626 @deffn {Função} listofvars (@var{expr})
1627 Retorna uma lista de variáveis em @var{expr}.
1629 @code{listconstvars} se @code{true} faz com que @code{listofvars} inclua @code{%e}, @code{%pi},
1630 @code{%i}, e quaisquer variáveis declaradas constantes na lista é retornada se
1631 aparecer em @var{expr}.  O comportamento padrão é omitir isso.
1633 @example
1634 (%i1) listofvars (f (x[1]+y) / g^(2+a));
1635 (%o1)                     [g, a, x , y]
1636                                   1
1637 @end example
1639 @end deffn
1641 @c NEEDS WORK
1642 @deffn {Função} lfreeof (@var{lista}, @var{expr})
1643 Para cada um dos membros @var{m} de lista, chama @code{freeof (@var{m}, @var{expr})}.
1644 Retorna @code{false} se qualquer chamada a @code{freeof} for feita e @code{true} de outra forma.
1645 @end deffn
1647 @deffn {Função} lopow (@var{expr}, @var{x})
1648 Retorna o menor expoente de @var{x} que explicitamente aparecer em
1649 @var{expr}.  Dessa forma
1651 @example
1652 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1653 (%o1)                       min(a, 2)
1654 @end example
1656 @end deffn
1658 @c NEEDS WORK
1659 @deffn {Função} lpart (@var{rótulo}, @var{expr}, @var{n_1}, ..., @var{n_k})
1660 é similar a @code{dpart} mas usa uma caixa rotulada. Uma caixa
1661 rotulada é similar à que é produzida por @code{dpart} mas a
1662 produzida por @code{lpart} tem o nome na linha do topo.
1664 @end deffn
1666 @c NEEDS WORK
1667 @deffn {Função} multthru (@var{expr})
1668 @deffnx {Função} multthru (@var{expr_1}, @var{expr_2})
1669 Multiplica um factor (que pode ser uma adição) de @var{expr} pelos
1670 outros factores de @var{expr}.  Isto é, @var{expr} é @code{@var{f_1} @var{f_2} ... @var{f_n}}
1671 onde ao menos
1672 um factor, digamos @var{f_i}, é uma soma de termos.  Cada termo naquela soma é
1673 multiplicado por outros factores no produto.  (A saber todos os
1674 factores excepto @var{f_i}).  @code{multthru} não expande somas exponenciais.
1675 Essa função é o caminho mais rápido para distribuir produtos (comutativos
1676 ou não) sobre adições.  Uma vez que quocientes são representados como
1677 produtos @code{multthru} podem ser usados para dividir adições por produtos também.
1679 @code{multthru (@var{expr_1}, @var{expr_2})} multiplica cada termo em @var{expr_2} (que pode ser uma
1680 adição ou uma equção) por @var{expr_1}.  Se @var{expr_1} não for por si mesmo uma adição então essa
1681 forma é equivalente a @code{multthru (@var{expr_1}*@var{expr_2})}.
1683 @example
1684 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
1685                       1        x         f(x)
1686 (%o1)             - ----- + -------- - --------
1687                     x - y          2          3
1688                             (x - y)    (x - y)
1689 (%i2) multthru ((x-y)^3, %);
1690                            2
1691 (%o2)             - (x - y)  + x (x - y) - f(x)
1692 (%i3) ratexpand (%);
1693                            2
1694 (%o3)                   - y  + x y - f(x)
1695 (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
1696                         10  2              2  2
1697                  (b + a)   s  + 2 a b s + a  b
1698 (%o4)            ------------------------------
1699                                   2
1700                              a b s
1701 (%i5) multthru (%);  /* note que isso não expande (b+a)^10 */
1702                                         10
1703                        2   a b   (b + a)
1704 (%o5)                  - + --- + ---------
1705                        s    2       a b
1706                            s
1707 (%i6) multthru (a.(b+c.(d+e)+f));
1708 (%o6)            a . f + a . c . (e + d) + a . b
1709 (%i7) expand (a.(b+c.(d+e)+f));
1710 (%o7)         a . f + a . c . e + a . c . d + a . b
1711 @end example
1713 @end deffn
1715 @c NEEDS WORK
1716 @deffn {Função} nounify (@var{f})
1717 Retorna a forma substantiva do nome da função @var{f}.  Isso é
1718 necessário se se quer referir ao nome de uma função verbo como se esse nome
1719 fosse um substantivo.  Note que algumas funções verbos irão retornar sua forma
1720 substantiva senão puderem ser avaliadas para certos argumentos.  A forma substantiva é também
1721 a forma retornada se uma chamada de função é precedida por um apóstrofo.
1723 @end deffn
1725 @c NEEDS WORK
1726 @deffn {Função} nterms (@var{expr})
1727 Retorna o número de termos que @var{expr} pode ter se for
1728 completamente expandida e nenhum cancelamento ou combinação de termos
1729 acontecer.
1730 Note expressões como @code{sin (@var{expr})}, @code{sqrt (@var{expr})}, @code{exp (@var{expr})}, etc.
1731 contam como apenas um termo independentemente de quantos termos @var{expr} tenha (se @var{expr} for uma
1732 adição).
1734 @end deffn
1736 @c NEEDS WORK
1737 @deffn {Função} op (@var{expr})
1738 Retorna o operador principal da expressão @var{expr}.
1739 @code{op (@var{expr})} é equivalente a @code{part (@var{expr}, 0)}. 
1741 @code{op} retorna uma sequência de caracteres se o operador principal for uma
1742 operador interno ou definido pelo utilizador como
1743 prefixado, binário ou n-ário infixo, posfixado, matchfix ou nofix.
1744 De outra forma, se @var{expr} for uma expressão de função subscrita,
1745 @code{op} retorna uma função subscrita;
1746 nesse caso o valor de retorno não é um átomo.
1747 De outro modo, @var{expr} é uma função de array ou uma expressão de função comum,
1748 e @code{op} retorna um símbolo.
1750 @code{op} observa o valor do sinalizador global @code{inflag}.
1752 @code{op} avalia seus argumentos.
1754 Veja também @code{args}.
1756 Exemplos:
1758 @c ===beg===
1759 @c stringdisp: true$
1760 @c op (a * b * c);
1761 @c op (a * b + c);
1762 @c op ('sin (a + b));
1763 @c op (a!);
1764 @c op (-a);
1765 @c op ([a, b, c]);
1766 @c op ('(if a > b then c else d));
1767 @c op ('foo (a));
1768 @c prefix (foo);
1769 @c op (foo a);
1770 @c op (F [x, y] (a, b, c));
1771 @c op (G [u, v, w]);
1772 @c ===end===
1774 @example
1775 (%i1) stringdisp: true$
1776 (%i2) op (a * b * c);
1777 (%o2)                          "*"
1778 (%i3) op (a * b + c);
1779 (%o3)                          "+"
1780 (%i4) op ('sin (a + b));
1781 (%o4)                          sin
1782 (%i5) op (a!);
1783 (%o5)                          "!"
1784 (%i6) op (-a);
1785 (%o6)                          "-"
1786 (%i7) op ([a, b, c]);
1787 (%o7)                          "["
1788 (%i8) op ('(if a > b then c else d));
1789 (%o8)                         "if"
1790 (%i9) op ('foo (a));
1791 (%o9)                          foo
1792 (%i10) prefix (foo);
1793 (%o10)                        "foo"
1794 (%i11) op (foo a);
1795 (%o11)                        "foo"
1796 (%i12) op (F [x, y] (a, b, c));
1797 (%o12)                        F
1798                                x, y
1799 (%i13) op (G [u, v, w]);
1800 (%o13)                          G
1801 @end example
1803 @end deffn
1805 @c NEEDS WORK
1806 @deffn {Função} operatorp (@var{expr}, @var{op})
1807 @deffnx {Função} operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])
1809 @code{operatorp (@var{expr}, @var{op})} retorna @code{true}
1810 se @var{op} for igual ao operador de @var{expr}.
1812 @code{operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])} retorna @code{true}
1813 se algum elementos de @var{op_1}, ..., @var{op_n} for igual ao operador de @var{expr}.
1815 @end deffn
1817 @c NEEDS WORK
1818 @deffn {Função} optimize (@var{expr})
1819 Retorna uma expressão que produz o mesmo valor e
1820 efeito que @var{expr} mas faz de forma mais eficientemente por evitar a
1821 recomputação de subexpressões comuns.  @code{optimize} também tem o mesmo
1822 efeito de "colapsar" seus argumentos de forma que todas as subexpressões comuns
1823 são compartilhadas.
1824 Faça @code{example (optimize)} para exemplos.
1826 @end deffn
1828 @defvr {Variável de opção} optimprefix
1829 Valor por omissão: @code{%}
1831 @code{optimprefix} é o prefixo usado para símbolos gerados pelo
1832 comando @code{optimize}.
1834 @end defvr
1836 @c NEEDS WORK
1837 @c WHAT DOES ">" MEAN IN THIS CONTEXT ??
1838 @deffn {Função} ordergreat (@var{v_1}, ..., @var{v_n})
1839 Escolhe aliases para as variáveis @var{v_1}, ..., @var{v_n}
1840 tais que @var{v_1} > @var{v_2} > ...  > @var{v_n},
1841 e @var{v_n} > qualquer outra variável não mencionada como um
1842 argumento.
1844 Veja também @code{orderless}.
1846 @end deffn
1848 @c NEEDS WORK
1849 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
1850 @deffn {Função} ordergreatp (@var{expr_1}, @var{expr_2})
1851 Retorna @code{true} se @var{expr_2} precede @var{expr_1} na
1852 ordenação escolhida com a função @code{ordergreat}.
1854 @end deffn
1856 @c NEEDS WORK
1857 @c WHAT DOES "<" MEAN IN THIS CONTEXT ??
1858 @deffn {Função} orderless (@var{v_1}, ..., @var{v_n})
1859 Escolhe aliases para as variáveis @var{v_1}, ..., @var{v_n}
1860 tais que @var{v_1} < @var{v_2} < ...  < @var{v_n},
1861 and @var{v_n} < qualquer outra variável não mencionada como um
1862 argumento.
1864 @c EXPRESS THIS ORDER IN A MORE COMPREHENSIBLE FASHION
1865 Dessa forma a escala de ordenação completa é: constantes numéricas <
1866 constantes declaradas < escalares declarados < primeiro argumento para @code{orderless} <
1867 ...  < último argumento para @code{orderless} < variáveis que começam com A < ...
1868 < variáveis que começam com Z < último argumento para @code{ordergreat} <
1869  ... < primeiro argumento para @code{ordergreat} < @code{mainvar}s - variáveis principais declaradas.
1871 Veja também @code{ordergreat} e @code{mainvar}.
1873 @end deffn
1875 @c NEEDS WORK
1876 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
1877 @deffn {Função} orderlessp (@var{expr_1}, @var{expr_2})
1878 Retorna @code{true} se @var{expr_1} precede @var{expr_2} na
1879 ordenação escolhida pelo comando @code{orderless}.
1881 @end deffn
1883 @c NEEDS WORK
1884 @deffn {Função} part (@var{expr}, @var{n_1}, ..., @var{n_k})
1885 Retorna partes da forma exibida de @code{expr}. Essa função
1886 obtém a parte de @code{expr} como especificado pelos índices @var{n_1}, ..., @var{n_k}.  A primeira
1887 parte @var{n_1} de @code{expr} é obtida, então a parte @var{n_2} daquela  é obtida, etc.  O resultado é
1888 parte @var{n_k} de ... parte @var{n_2} da parte @var{n_1} da @code{expr}.
1890 @code{part} pode ser usada para obter um elemento de uma lista, uma linha de uma matriz, etc.
1892 @c "If the last argument to a part function" => FOLLOWING APPLIES TO OTHER FUNCTIONS ??
1893 @c ATTEMPT TO VERIFY; IF SO, COPY THIS COMMENTARY TO DESCRIPTIONS OF OTHER FUNCTIONS
1894 Se o último argumento para uma função @code{part} for uma lista de índices então
1895 muitas subexpressões serão pinçadas, cada uma correspondendo a um
1896 índice da lista.  Dessa forma @code{part (x + y + z, [1, 3])} é @code{z+x}.
1898 @code{piece} mantém a última expressão seleccionada quando usando as funções
1899 @code{part}.  Isso é escolhido durante a execução da função e dessa forma
1900 pode referir-se à função em si mesma como mostrado abaixo.
1902 Se @code{partswitch} for escolhido para @code{true} então @code{end} é retornado quando uma
1903 parte seleccionada de uma expressão não existir, de outra forma uma mensagem de
1904 erro é forncecida.
1906 @c NEED "SEE ALSO" POINTING TO ALL OTHER PART FUNCTIONS
1908 Exemplo: @code{part (z+2*y, 2, 1)} retorna 2.
1910 @c MERGE IN example (part) OUTPUT HERE
1911 @code{example (part)} mostra exemplos adicionais.
1913 @end deffn
1915 @c NEEDS WORK
1916 @deffn {Função} partition (@var{expr}, @var{x})
1917 Retorna uma lista de duas expressões.  Elas são (1)
1918 os factores de @var{expr} (se essa expressão for um produto), os termos de @var{expr} (se isso for uma
1919 adição), ou a lista (se isso for uma lsita) que não contiver @code{var} e, (2)
1920 os factores, termos, ou lista que faz.
1922 @example
1923 (%i1) partition (2*a*x*f(x), x);
1924 (%o1)                     [2 a, x f(x)]
1925 (%i2) partition (a+b, x);
1926 (%o2)                      [b + a, 0]
1927 (%i3) partition ([a, b, f(a), c], a); 
1928 (%o3)                  [[b, c], [a, f(a)]]
1929 @end example
1931 @end deffn
1933 @c NEEDS EXAMPLE
1934 @defvr {Variável de opção} partswitch
1935 Valor por omissão: @code{false}
1937 Quando @code{partswitch} for @code{true}, @code{end} é retornado
1938 quando uma parte seleccionada de uma expressão não existir, de outra forma uma
1939 mensagem de erro é fornecida.
1941 @end defvr
1943 @deffn {Função} pickapart (@var{expr}, @var{n})
1944 Atribui rótulos de expressão intermédia a subexpressões de
1945 @var{expr} de comprimento @var{n}, um inteiro.
1946 A subexpressões maiores ou menores não são atribuidos rótulos.
1947 @code{pickapart} retorna uma expressão em termos de expressões intermédias
1948 equivalentes à expressão original @var{expr}.
1950 Veja também @code{part}, @code{dpart}, @code{lpart}, @code{inpart}, e @code{reveal}.
1952 Exemplos:
1954 @example
1955 (%i1) expr: (a+b)/2 + sin (x^2)/3 - log (1 + sqrt(x+1));
1956                                           2
1957                                      sin(x )   b + a
1958 (%o1)       - log(sqrt(x + 1) + 1) + ------- + -----
1959                                         3        2
1960 (%i2) pickapart (expr, 0);
1962                                           2
1963                                      sin(x )   b + a
1964 (%t2)       - log(sqrt(x + 1) + 1) + ------- + -----
1965                                         3        2
1967 (%o2)                          %t2
1968 (%i3) pickapart (expr, 1);
1970 (%t3)                - log(sqrt(x + 1) + 1)
1973                                   2
1974                              sin(x )
1975 (%t4)                        -------
1976                                 3
1979                               b + a
1980 (%t5)                         -----
1981                                 2
1983 (%o5)                    %t5 + %t4 + %t3
1984 (%i5) pickapart (expr, 2);
1986 (%t6)                 log(sqrt(x + 1) + 1)
1989                                   2
1990 (%t7)                        sin(x )
1993 (%t8)                         b + a
1995                          %t8   %t7
1996 (%o8)                    --- + --- - %t6
1997                           2     3
1998 (%i8) pickapart (expr, 3);
2000 (%t9)                    sqrt(x + 1) + 1
2003                                 2
2004 (%t10)                         x
2006                   b + a              sin(%t10)
2007 (%o10)            ----- - log(%t9) + ---------
2008                     2                    3
2009 (%i10) pickapart (expr, 4);
2011 (%t11)                     sqrt(x + 1)
2013                       2
2014                  sin(x )   b + a
2015 (%o11)           ------- + ----- - log(%t11 + 1)
2016                     3        2
2017 (%i11) pickapart (expr, 5);
2019 (%t12)                        x + 1
2021                    2
2022               sin(x )   b + a
2023 (%o12)        ------- + ----- - log(sqrt(%t12) + 1)
2024                  3        2
2025 (%i12) pickapart (expr, 6);
2026                   2
2027              sin(x )   b + a
2028 (%o12)       ------- + ----- - log(sqrt(x + 1) + 1)
2029                 3        2
2030 @end example
2032 @end deffn
2034 @c NEEDS WORK
2035 @defvr {Variável de sistema} piece
2036 Mantém a ultima expressão seleccionada quando usando funções
2037 @code{part}.
2038 @c WHAT DOES THIS MEAN EXACTLY ??
2039 Isso é escolhido durante a execução da função e dessa forma
2040 pode referir-se à função em si mesma.
2042 @c NEED "SEE ALSO" TO POINT TO LIST OF ALL RELEVANT FUNCTIONS
2044 @end defvr
2046 @c NEEDS EXAMPLES
2047 @deffn {Função} polarform (@var{expr})
2048 Retorna uma expressão @code{r %e^(%i theta)} equivalente a @var{expr},
2049 tal que @code{r} e @code{theta} sejam puramente reais.
2051 @end deffn
2053 @c ISN'T THERE AN EQUIVALENT FUNCTION SOMEWHERE ??
2054 @c NEEDS WORK (IF KEPT)
2055 @deffn {Função} powers (@var{expr}, @var{x})
2056 Fornece os expoentes de @var{x} que ocorrem em expressão @var{expr}.
2058 @code{load ("powers")} chama essa função.
2059 @c HMM, THERE'S A BUNCH OF MAXIMA FUNCTIONS IN src/powers.lisp ...
2060 @c FOR SOME REASON src/powers.lisp IS NOT PART OF THE USUAL BUILD -- STRANGE
2062 @c HERE IS THE TEXT FROM archive/share/unknown/powers.usg -- MERGE !!!
2063 @c THIS FUNCTION IS A GENERALISATION OF "HIPOW" AND "LOPOW"
2064 @c IN THAT IT RETURNS A LIST OF ALL THE POWERS OF VAR OCCURING
2065 @c IN EXPR. IT IS STILL NECESSARY TO EXPAND EXPR BEFORE APPLYING
2066 @c POWERS (ON PAIN OF GETTING THE WRONG ANSWER).
2067 @c 
2068 @c THIS FUNCTION HAS MANY USES, E.G. IF YOU WANT TO FIND ALL
2069 @c THE COEFFICIENTS OF X IN A POLYNOMIAL POLY YOU CAN USE
2070 @c MAP(LAMBDA([POW],COEFF(POLY,X,POW)),POWERS(POLY,X));
2071 @c AND MANY OTHER SIMILAR USEFUL HACKS.
2073 @end deffn
2075 @c NEEDS WORK
2076 @deffn {Função} product (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2077 Representa um produto dos velores de @code{expr} com
2078 o índice @var{i} variando de @var{i_0} a @var{i_1}.
2079 A forma substantiva @code{'product} é mostrada como um pi maiísculo.
2081 @code{product} avalia @var{expr} e os limites inferior e superior @var{i_0} e @var{i_1},
2082 @code{product} coloca um apóstrofo (não avalia) o índice @var{i}.
2084 Se os limites superiores e inferiores diferirem por um inteiro,
2085 @var{expr} é avaliada para cada valor do índice @var{i},
2086 e o resultado  um produto explícito.
2088 de outra forma, o intervalo do índice é indefinido.
2089 Algumas regras são aplicads para simplificar o produto.
2090 Quando a variável global @code{simpproduct} for @code{true}, regras adicionais são aplicadas.
2091 Em alguns casos, simplificação um resultado que não é um produto;
2092 de outra forma, o resultado é uma forma substantiva @code{'product}.
2094 Veja também @code{nouns} e @code{evflag}.
2096 Exemplos:
2098 @c ===beg===
2099 @c product (x + i*(i+1)/2, i, 1, 4);
2100 @c product (i^2, i, 1, 7);
2101 @c product (a[i], i, 1, 7);
2102 @c product (a(i), i, 1, 7);
2103 @c product (a(i), i, 1, n);
2104 @c product (k, k, 1, n);
2105 @c product (k, k, 1, n), simpproduct;
2106 @c product (integrate (x^k, x, 0, 1), k, 1, n);
2107 @c product (if k <= 5 then a^k else b^k, k, 1, 10);
2108 @c ===end===
2110 @example
2111 (%i1) product (x + i*(i+1)/2, i, 1, 4);
2112 (%o1)           (x + 1) (x + 3) (x + 6) (x + 10)
2113 (%i2) product (i^2, i, 1, 7);
2114 (%o2)                       25401600
2115 (%i3) product (a[i], i, 1, 7);
2116 (%o3)                 a  a  a  a  a  a  a
2117                        1  2  3  4  5  6  7
2118 (%i4) product (a(i), i, 1, 7);
2119 (%o4)          a(1) a(2) a(3) a(4) a(5) a(6) a(7)
2120 (%i5) product (a(i), i, 1, n);
2121                              n
2122                            /===\
2123                             ! !
2124 (%o5)                       ! !  a(i)
2125                             ! !
2126                            i = 1
2127 (%i6) product (k, k, 1, n);
2128                                n
2129                              /===\
2130                               ! !
2131 (%o6)                         ! !  k
2132                               ! !
2133                              k = 1
2134 (%i7) product (k, k, 1, n), simpproduct;
2135 (%o7)                          n!
2136 (%i8) product (integrate (x^k, x, 0, 1), k, 1, n);
2137                              n
2138                            /===\
2139                             ! !    1
2140 (%o8)                       ! !  -----
2141                             ! !  k + 1
2142                            k = 1
2143 (%i9) product (if k <= 5 then a^k else b^k, k, 1, 10);
2144                               15  40
2145 (%o9)                        a   b
2146 @end example
2148 @end deffn
2150 @c NEEDS EXAMPLES
2151 @deffn {Função} realpart (@var{expr})
2152 Retorna a parte real de @var{expr}. @code{realpart} e @code{imagpart} irão
2153 trabalhar sobre expressões envolvendo funções trigonométricas e hiperbólicas,
2154 bem como raízes quadradas, logaritmos, e exponenciação.
2156 @end deffn
2158 @c NEEDS EXAMPLES
2159 @deffn {Função} rectform (@var{expr})
2160 Retorna uma expressão @code{a + b %i} equivalente a @var{expr},
2161 tal que @var{a} e @var{b} sejam puramente reais.
2163 @end deffn
2165 @deffn {Função} rembox (@var{expr}, unlabelled)
2166 @deffnx {Função} rembox (@var{expr}, @var{rótulo})
2167 @deffnx {Função} rembox (@var{expr})
2168 Remove caixas de @var{expr}.
2170 @code{rembox (@var{expr}, unlabelled)} remove todas as caixas sem rótulos de @var{expr}.
2172 @code{rembox (@var{expr}, @var{rótulo})} remove somente caixas contendo @var{rótulo}.
2174 @code{rembox (@var{expr})} remove todas as caixas, rotuladas e nã rotuladas.
2176 Caixas são desenhadas pelas funções @code{box}, @code{dpart}, e @code{lpart}.
2178 Exemplos:
2180 @c ===beg===
2181 @c expr: (a*d - b*c)/h^2 + sin(%pi*x);
2182 @c dpart (dpart (expr, 1, 1), 2, 2);
2183 @c expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2184 @c rembox (expr2, unlabelled);
2185 @c rembox (expr2, FOO);
2186 @c rembox (expr2, BAR);
2187 @c rembox (expr2);
2188 @c ===end===
2189 @example
2190 (%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);
2191                                   a d - b c
2192 (%o1)                sin(%pi x) + ---------
2193                                       2
2194                                      h
2195 (%i2) dpart (dpart (expr, 1, 1), 2, 2);
2196                         """""""    a d - b c
2197 (%o2)               sin("%pi x") + ---------
2198                         """""""      """"
2199                                      " 2"
2200                                      "h "
2201                                      """"
2202 (%i3) expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2203                   FOO"""""""""""   BAR""""""""
2204                   "    """"""" "   "a d - b c"
2205 (%o3)             "sin("%pi x")" + "---------"
2206                   "    """"""" "   "  """"   "
2207                   """"""""""""""   "  " 2"   "
2208                                    "  "h "   "
2209                                    "  """"   "
2210                                    """""""""""
2211 (%i4) rembox (expr2, unlabelled);
2212                                   BAR""""""""
2213                    FOO"""""""""   "a d - b c"
2214 (%o4)              "sin(%pi x)" + "---------"
2215                    """"""""""""   "    2    "
2216                                   "   h     "
2217                                   """""""""""
2218 (%i5) rembox (expr2, FOO);
2219                                   BAR""""""""
2220                        """""""    "a d - b c"
2221 (%o5)              sin("%pi x") + "---------"
2222                        """""""    "  """"   "
2223                                   "  " 2"   "
2224                                   "  "h "   "
2225                                   "  """"   "
2226                                   """""""""""
2227 (%i6) rembox (expr2, BAR);
2228                    FOO"""""""""""
2229                    "    """"""" "   a d - b c
2230 (%o6)              "sin("%pi x")" + ---------
2231                    "    """"""" "     """"
2232                    """"""""""""""     " 2"
2233                                       "h "
2234                                       """"
2235 (%i7) rembox (expr2);
2236                                   a d - b c
2237 (%o7)                sin(%pi x) + ---------
2238                                       2
2239                                      h
2240 @end example
2242 @end deffn
2244 @deffn {Função} sum (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2245 Representa um somatório dos valores de @var{expr} com
2246 o índice @var{i} variando de @var{i_0} a @var{i_1}.
2247 A forma substantiva @code{'sum} é mostrada com uma letra sigma maiúscula.
2248 @code{sum} avalia seu somando @var{expr} e limites inferior e superior @var{i_0} e @var{i_1},
2249 @code{sum} coloca apóstrofo (não avalia) o índice @var{i}.
2251 Se os limites superiores e inferiores diferirem de um número inteiro,
2252 o somatoriando @var{expr} é avaliado para cada valor do índice do somatório @var{i},
2253 e o resultado é uma adição explícita.
2255 De outra forma, o intervalo dos índices é indefinido.
2256 Algumas regras são aplicadas para simplificar o somatório.
2257 Quando a variável global @code{simpsum} for @code{true}, regras adicionais são aplicadas.
2258 Em alguns casos, simplificações retornam um resultado que não é um somatório;
2259 de outra forma, o resultado é uma forma substantiva @code{'sum}.
2261 Quando o @code{evflag} (sinalizador de avaliação) @code{cauchysum} for @code{true},
2262 um produto de somatórios é mostrado como um produto de Cauchy,
2263 no qual o índice do somatório mais interno é uma função de
2264 índice de um nível acima, em lugar de variar independentemente.
2266 A variável global @code{genindex} é o prefixo alfabético usado para gerar o próximo índice do somatório,
2267 quando um índice automaticamente gerado for necessário.
2269 @code{gensumnum} é o sufixo numérico usando para gerar o próximo índice do somatório,
2270 quando um índice gerado automaticamente for necessário.
2271 Quando @code{gensumnum} for @code{false}, um índice gerado automaticamente é somente
2272 @code{genindex} sem sufixo numérico.
2274 Veja também @code{sumcontract}, @code{intosum},
2275 @code{bashindices}, @code{niceindices},
2276 @code{nouns}, @code{evflag}, e @code{zeilberger}.
2278 Exemplos:
2280 @c ===beg===
2281 @c sum (i^2, i, 1, 7);
2282 @c sum (a[i], i, 1, 7);
2283 @c sum (a(i), i, 1, 7);
2284 @c sum (a(i), i, 1, n);
2285 @c sum (2^i + i^2, i, 0, n);
2286 @c sum (2^i + i^2, i, 0, n), simpsum;
2287 @c sum (1/3^i, i, 1, inf);
2288 @c sum (1/3^i, i, 1, inf), simpsum;
2289 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2290 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2291 @c sum (integrate (x^k, x, 0, 1), k, 1, n);
2292 @c sum (if k <= 5 then a^k else b^k, k, 1, 10);
2293 @c ===end===
2295 @example
2296 (%i1) sum (i^2, i, 1, 7);
2297 (%o1)                          140
2298 (%i2) sum (a[i], i, 1, 7);
2299 (%o2)           a  + a  + a  + a  + a  + a  + a
2300                  7    6    5    4    3    2    1
2301 (%i3) sum (a(i), i, 1, 7);
2302 (%o3)    a(7) + a(6) + a(5) + a(4) + a(3) + a(2) + a(1)
2303 (%i4) sum (a(i), i, 1, n);
2304                             n
2305                            ====
2306                            \
2307 (%o4)                       >    a(i)
2308                            /
2309                            ====
2310                            i = 1
2311 (%i5) sum (2^i + i^2, i, 0, n);
2312                           n
2313                          ====
2314                          \       i    2
2315 (%o5)                     >    (2  + i )
2316                          /
2317                          ====
2318                          i = 0
2319 (%i6) sum (2^i + i^2, i, 0, n), simpsum;
2320                               3      2
2321                    n + 1   2 n  + 3 n  + n
2322 (%o6)             2      + --------------- - 1
2323                                   6
2324 (%i7) sum (1/3^i, i, 1, inf);
2325                             inf
2326                             ====
2327                             \     1
2328 (%o7)                        >    --
2329                             /      i
2330                             ====  3
2331                             i = 1
2332 (%i8) sum (1/3^i, i, 1, inf), simpsum;
2333                                 1
2334 (%o8)                           -
2335                                 2
2336 (%i9) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2337                               inf
2338                               ====
2339                               \     1
2340 (%o9)                      30  >    --
2341                               /      2
2342                               ====  i
2343                               i = 1
2344 (%i10) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2345                                   2
2346 (%o10)                       5 %pi
2347 (%i11) sum (integrate (x^k, x, 0, 1), k, 1, n);
2348                             n
2349                            ====
2350                            \       1
2351 (%o11)                      >    -----
2352                            /     k + 1
2353                            ====
2354                            k = 1
2355 (%i12) sum (if k <= 5 then a^k else b^k, k, 1, 10));
2356 Incorrect syntax: Too many )'s
2357 else b^k, k, 1, 10))
2358                   ^
2359 (%i12) linenum:11;
2360 (%o11)                         11
2361 (%i12) sum (integrate (x^k, x, 0, 1), k, 1, n);
2362                             n
2363                            ====
2364                            \       1
2365 (%o12)                      >    -----
2366                            /     k + 1
2367                            ====
2368                            k = 1
2369 (%i13) sum (if k <= 5 then a^k else b^k, k, 1, 10);
2370           10    9    8    7    6    5    4    3    2
2371 (%o13)   b   + b  + b  + b  + b  + a  + a  + a  + a  + a
2372 @end example
2374 @end deffn
2376 @deffn {Função} lsum (@var{expr}, @var{x}, @var{L})
2377 Representas a adição de @var{expr} a cada elemento @var{x} em @var{L}.
2379 Uma forma substantiva @code{'lsum} é retornada
2380 se o argumento @var{L} não avaliar para uma lista.
2382 Exemplos:
2384 @c ===beg===
2385 @c lsum (x^i, i, [1, 2, 7]);
2386 @c lsum (i^2, i, rootsof (x^3 - 1, x));
2387 @c ===end===
2388 @example
2389 (%i1) lsum (x^i, i, [1, 2, 7]);
2390                             7    2
2391 (%o1)                      x  + x  + x
2392 (%i2) lsum (i^2, i, rootsof (x^3 - 1, x));
2393                      ====
2394                      \      2
2395 (%o2)                 >    i
2396                      /
2397                      ====
2398                                    3
2399                      i in rootsof(x  - 1, x)
2400 @end example
2402 @end deffn
2404 @deffn {Função} verbify (@var{f})
2405 Retorna a forma verbal da função chamada @var{f}.
2407 Veja também @code{verb}, @code{noun}, e @code{nounify}.
2409 Exemplos:
2411 @c ===beg===
2412 @c verbify ('foo);
2413 @c :lisp $%
2414 @c nounify (foo);
2415 @c :lisp $%
2416 @c ===end===
2417 @example
2418 (%i1) verbify ('foo);
2419 (%o1)                          foo
2420 (%i2) :lisp $%
2421 $FOO
2422 (%i2) nounify (foo);
2423 (%o2)                          foo
2424 (%i3) :lisp $%
2425 %FOO
2426 @end example
2428 @end deffn