Previous: Sintaxe, Up: Expressões [Contents][Index]

### 6.8 Funções e Variáveis Definidas para Expressões

Função: at (expr, [eqn_1, ..., eqn_n])
Função: at (expr, eqn)

  Avalia a expressão expr com as variáveis assumindo os valores como especificado para elas na lista de equações `[eqn_1, ..., eqn_n]` ou a equação simples eqn.

  Se uma subexpressão depender de qualquer das variáveis para a qual um valor foi especificado mas não existe `atvalue` especificado e essa subexpressão não pode ser avaliada de outra forma, então uma forma substantiva de `at` é retornada que mostra em uma forma bidimensional.

  `at` realiza múltiplas substituições em série, não em paralelo.

  Veja também `atvalue`. Para outras funções que realizam substituições, veja também `subst` e `ev`.

  Exemplos:

      (%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
                                      2
      (%o1)                          a
      (%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
      (%o2)                        @2 + 1
      (%i3) printprops (all, atvalue);
                                      !
                        d             !
                       --- (f(@1, @2))!       = @2 + 1
                       d@1            !
                                      !@1 = 0

                                           2
                                f(0, 1) = a

      (%o3)                         done
      (%i4) diff (4*f(x, y)^2 - u(x, y)^2, x);
                        d                          d
      (%o4)  8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
                        dx                         dx
      (%i5) at (%, [x = 0, y = 1]);
                                               !
                    2              d           !
      (%o5)     16 a  - 2 u(0, 1) (-- (u(x, y))!            )
                                   dx          !
                                               !x = 0, y = 1

Função: box (expr)
Função: box (expr, a)

  Retorna expr dentro de uma caixa. O valor de retorno é uma expressão com `box` como o operador e expr como o argumento. Uma caixa é desenhada sobre a tela quando `display2d` for `true`.

  `box (expr, a)` Empacota expr em uma caixa rotulada pelo símbolo a. O rótulo é truncado se for maior que a largura da caixa.

  `box` avalia seu argumento. Todavia, uma expressão dentro de uma caixa não avalia para seu conteúdo, então expressões dentro de caixas são efetivamente excluídas de cálculos.

  `boxchar` é o caractere usado para desenhar a caixa em `box` e nas funções `dpart` e `lpart`.

  Exemplos:

      (%i1) box (a^2 + b^2);
                                  """""""""
                                  " 2    2"
      (%o1)                       "b  + a "
                                  """""""""
      (%i2) a : 1234;
      (%o2)                         1234
      (%i3) b : c - d;
      (%o3)                         c - d
      (%i4) box (a^2 + b^2);
                            """"""""""""""""""""
                            "       2          "
      (%o4)                 "(c - d)  + 1522756"
                            """"""""""""""""""""
      (%i5) box (a^2 + b^2, term_1);
                            term_1""""""""""""""
                            "       2          "
      (%o5)                 "(c - d)  + 1522756"
                            """"""""""""""""""""
      (%i6) 1729 - box (1729);
                                       """"""
      (%o6)                     1729 - "1729"
                                       """"""
      (%i7) boxchar: "-";
      (%o7)                           -
      (%i8) box (sin(x) + cos(y));
                              -----------------
      (%o8)                   -cos(y) + sin(x)-
                              -----------------

Variável de opção: boxchar

  Valor padrão: `"`

  `boxchar` é o caractere usado para desenhar a caixa por `box` e nas funções `dpart` e `lpart`.

  Todas as caixas em uma expressão são desenhadas com o valor atual de `boxchar`; o caractere de desenho não é armazenado com a expressão de caixa. Isso quer dizer que se você desenhar uma caixa e em seguida mudar o caractere de desenho a caixa anteriormente desenhada será redesenhada com o caractere mudado caso isso seja solicitado.

Função: carg (z)

  Retorna o argumento complexo de z. O argumento complexo é um ângulo `theta` no intervalo de `(-%pi, %pi]` tal que `r exp (theta %i) = z` onde `r` é o módulo de z.

  `carg` é uma função computacional, não uma função de simplificação.

  `carg` ignora a declaração `declare (x, complex)`, e trata x como uma variável real. Isso é um erro.

  Veja também `abs` (módulo de número complexo), `polarform`, `rectform`, `realpart`, e `imagpart`.

  Exemplos:

      (%i1) carg (1);
      (%o1)                           0
      (%i2) carg (1 + %i);
                                     %pi
      (%o2)                          ---
                                      4
      (%i3) carg (exp (%i));
      (%o3)                           1
      (%i4) carg (exp (%pi * %i));
      (%o4)                          %pi
      (%i5) carg (exp (3/2 * %pi * %i));
                                      %pi
      (%o5)                         - ---
                                       2
      (%i6) carg (17 * exp (2 * %i));
      (%o6)                           2

Opereador especial: constant

  `declare (a, constant)` declara a para ser uma constante. Veja `declare`.

Função: constantp (expr)

  Retorna `true` se expr for uma expressão constante, de outra forma retorna `false`.

  Uma expressão é considerada uma expressão constante se seus argumentos forem números (incluindo números racionais, como mostrado com `/R/`), constantes simbólicas como `%pi`, `%e`, e `%i`, variáveis associadas a uma constante ou constante declarada através de `declare`, ou funções cujos argumentos forem constantes.

  `constantp` avalia seus argumentos.

  Exemplos:

      (%i1) constantp (7 * sin(2));
      (%o1)                                true
      (%i2) constantp (rat (17/29));
      (%o2)                                true
      (%i3) constantp (%pi * sin(%e));
      (%o3)                                true
      (%i4) constantp (exp (x));
      (%o4)                                false
      (%i5) declare (x, constant);
      (%o5)                                done
      (%i6) constantp (exp (x));
      (%o6)                                true
      (%i7) constantp (foo (x) + bar (%e) + baz (2));
      (%o7)                                false
      (%i8)

Função: declare (a_1, p_1, a_2, p_2, ...)

  Atribui aos átomos ou lista de átomos a_i a propriedade ou lista de propriedades p_i. Quando a_i e/ou p_i forem listas, cada um dos átomos recebe todas as propriedades.

  `declare` não avalia seus argumentos. `declare` sempre retorna `done`.

  Como colocado na descrição para cada sinalizador de declaração, para alguns sinalizadores `featurep(objeto, recurso)` retorna `true` se objeto tiver sido declarado para ter recurso. Todavia, `featurep` não reconhece alguns sinalizadores; isso é um erro.

  Veja também `features`.

  `declare` reconhece as seguintes propriedades:

  `evfun`

    Torna a_i conhecido para `ev` de forma que a função nomeada por a_i é aplicada quando a_i aparece como um sinalizador argumento de `ev`. Veja `evfun`.

  `evflag`

    Torna a_i conhecido para a função `ev` de forma que a_i é associado a `true` durante a execução de `ev` quando a_i aparece como um sinalizador argumento de `ev`. Veja `evflag`.

  `bindtest`

    Diz ao Maxima para disparar um erro quando a_i for avaliado como sendo livre de associação.

  `noun`

    Diz ao Maxima para passar a_i como um substantivo. O efeito disso é substituir intâncias de a_i com `'a_i` ou `nounify(a_i)`, ependendo do contexto.

  `constant`

    Diz ao Maxima para considerar a_i uma constante simbólica.

  `scalar`

    Diz ao Maxima para considerar a_i uma variável escalar.

  `nonscalar`

    Diz ao Maxima para considerar a_i uma variável não escalar. The usual application is to declare a variable as a symbolic vector or matrix.

  `mainvar`

    Diz ao Maxima para considerar a_i uma "variável principal" (`mainvar`). `ordergreatp` determina a ordenação de átomos como segue:

    (variáveis principais) > (outras variáveis) > (variáveis escalares) > (constantes) > (números)

  `alphabetic`

    Diz ao Maxima para reconhecer todos os caracteres em a_i (que deve ser uma seqüência de caracteres) como caractere alfabético.

  `feature`

    Diz ao Maxima para reconhecer a_i como nome de um recurso. Other atoms may then be declared to have the a_i property.

  `rassociative`, `lassociative`

    Diz ao Maxima para reconhecer a_i como uma funcão associativa a direita ou associativa a esquerda.

  `nary`

    Diz ao Maxima para reconhecer a_i como uma função n-ária (com muitos argumentos).

    A declaração `nary` não tem o mesmo objetivo que uma chamada à função `nary`. O único efeito de `declare(foo, nary)` é para instruir o simplificador do Maxima a melhorar as próximas expressões, por exemplo, para simplificar `foo(x, foo(y, z))` para `foo(x, y, z)`.

  `symmetric`, `antisymmetric`, `commutative`

    Diz ao Maxima para reconhecer a_i como uma função simétrica ou antisimétrica. `commutative` é o mesmo que `symmetric`.

  `oddfun`, `evenfun`

    Diz ao Maxima para reconhecer a_i como uma função par ou uma função ímpar.

  `outative`

    Diz ao Maxima para simplificar expressões a_i colocando fatores constantes em evidência no primeiro argumento.

    Quando a_i tiver um argumento, um fator é onsiderado constante se for um literal ou se for declarado como sendo constante.

    Quando a_i tiver dois ou mais argumentos, um fator é considerado constante se o segundo argumento for um símbolo e o fator estiver livre do segundo argumento.

  `multiplicative`

    Diz ao Maxima para simplificar expressões do tipo a_i através da substituição `a_i(x * y * z * ...)` `-->` `a_i(x) * a_i(y) * a_i(z) * ...`. A substituição é realizada no primeiro argumento somente.

  `additive`

    Diz ao Maxima para simplificar expressões do tipo a_i através da substituição `a_i(x + y + z + ...)` `-->` `a_i(x) + a_i(y) + a_i(z) + ...`. A substituição é realizada no primeiro argumento somente.

  `linear`

    Equivalente a declarar a_i ao mesmo tempo `outative` e `additive`.

  `integer`, `noninteger`

    Diz ao Maxima para reconhecer a_i como como uma variável inteira ou como uma variável não inteira.

    Maxima reconhece os seguintes recursos de objetos:

  `even`, `odd`

    Diz ao Maxima para reconhecer a_i como uma variável inteira par ou como uma variável inteira ímpar.

  `rational`, `irrational`

    Diz ao Maxima para reconhecer a_i como uma variável real e racional ou como uma variável real e irracional.

  `real`, `imaginary`, `complex`

    Dia ao Maxima para reconhecer a_i como uma variável real, imaginária pura ou complexa.

  `increasing`, `decreasing`

    Dia ao Maxima para reconhecer a_i como uma função de incremento ou decremento.

  `posfun`

    Diz ao Maxima para reconhecer a_i como uma função positiva.

  `integervalued`

    Diz ao Maxima para reconhecer a_i como uma função de valores inteiros.

  Exemplos:

  Declarações `evfun` e `evflag`.

      (%i1) declare (expand, evfun);
      (%o1)                         done
      (%i2) (a + b)^3;
                                         3
      (%o2)                       (b + a)
      (%i3) (a + b)^3, expand;
                           3        2      2      3
      (%o3)               b  + 3 a b  + 3 a  b + a
      (%i4) declare (demoivre, evflag);
      (%o4)                         done
      (%i5) exp (a + b*%i);
                                   %i b + a
      (%o5)                      %e
      (%i6) exp (a + b*%i), demoivre;
                            a
      (%o6)               %e  (%i sin(b) + cos(b))

  Declaração `bindtest`.

      (%i1) aa + bb;
      (%o1)                        bb + aa
      (%i2) declare (aa, bindtest);
      (%o2)                         done
      (%i3) aa + bb;
      aa unbound variable
       -- an error.  Quitting.  To debug this try debugmode(true);
      (%i4) aa : 1234;
      (%o4)                         1234
      (%i5) aa + bb;
      (%o5)                       bb + 1234

  Declaração `noun`.

      (%i1) factor (12345678);
                                   2
      (%o1)                     2 3  47 14593
      (%i2) declare (factor, noun);
      (%o2)                         done
      (%i3) factor (12345678);
      (%o3)                   factor(12345678)
      (%i4) ''%, nouns;
                                   2
      (%o4)                     2 3  47 14593

  Declarações `constant`, `scalar`, `nonscalar`, e `mainvar`.

  Declaração `alphabetic`.

      (%i1) xx\~yy\`\@ : 1729;
      (%o1)                         1729
      (%i2) declare ("~`@", alphabetic);
      (%o2)                         done
      (%i3) xx~yy`@ + @yy`xx + `xx@@yy~;
      (%o3)               `xx@@yy~ + @yy`xx + 1729
      (%i4) listofvars (%);
      (%o4)                  [@yy`xx, `xx@@yy~]

  Declaração `feature`.

      (%i1) declare (FOO, feature);
      (%o1)                         done
      (%i2) declare (x, FOO);
      (%o2)                         done
      (%i3) featurep (x, FOO);
      (%o3)                         true

  Declarações `rassociative` e `lassociative`.

  Declaração `nary`.

      (%i1) H (H (a, b), H (c, H (d, e)));
      (%o1)               H(H(a, b), H(c, H(d, e)))
      (%i2) declare (H, nary);
      (%o2)                         done
      (%i3) H (H (a, b), H (c, H (d, e)));
      (%o3)                   H(a, b, c, d, e)

  Declarações `symmetric` e `antisymmetric`.

      (%i1) S (b, a);
      (%o1)                        S(b, a)
      (%i2) declare (S, symmetric);
      (%o2)                         done
      (%i3) S (b, a);
      (%o3)                        S(a, b)
      (%i4) S (a, c, e, d, b);
      (%o4)                   S(a, b, c, d, e)
      (%i5) T (b, a);
      (%o5)                        T(b, a)
      (%i6) declare (T, antisymmetric);
      (%o6)                         done
      (%i7) T (b, a);
      (%o7)                       - T(a, b)
      (%i8) T (a, c, e, d, b);
      (%o8)                   T(a, b, c, d, e)

  Declarações `oddfun` e `evenfun`.

      (%i1) o (- u) + o (u);
      (%o1)                     o(u) + o(- u)
      (%i2) declare (o, oddfun);
      (%o2)                         done
      (%i3) o (- u) + o (u);
      (%o3)                           0
      (%i4) e (- u) - e (u);
      (%o4)                     e(- u) - e(u)
      (%i5) declare (e, evenfun);
      (%o5)                         done
      (%i6) e (- u) - e (u);
      (%o6)                           0

  Declaração `outative`.

      (%i1) F1 (100 * x);
      (%o1)                       F1(100 x)
      (%i2) declare (F1, outative);
      (%o2)                         done
      (%i3) F1 (100 * x);
      (%o3)                       100 F1(x)
      (%i4) declare (zz, constant);
      (%o4)                         done
      (%i5) F1 (zz * y);
      (%o5)                       zz F1(y)

  Declaração `multiplicative`.

      (%i1) F2 (a * b * c);
      (%o1)                       F2(a b c)
      (%i2) declare (F2, multiplicative);
      (%o2)                         done
      (%i3) F2 (a * b * c);
      (%o3)                   F2(a) F2(b) F2(c)

  Declaração `additive`.

      (%i1) F3 (a + b + c);
      (%o1)                     F3(c + b + a)
      (%i2) declare (F3, additive);
      (%o2)                         done
      (%i3) F3 (a + b + c);
      (%o3)                 F3(c) + F3(b) + F3(a)

  Declaração `linear`.

      (%i1) 'sum (F(k) + G(k), k, 1, inf);
                             inf
                             ====
                             \
      (%o1)                   >    (G(k) + F(k))
                             /
                             ====
                             k = 1
      (%i2) declare (nounify (sum), linear);
      (%o2)                         done
      (%i3) 'sum (F(k) + G(k), k, 1, inf);
                           inf          inf
                           ====         ====
                           \            \
      (%o3)                 >    G(k) +  >    F(k)
                           /            /
                           ====         ====
                           k = 1        k = 1

Função: disolate (expr, x_1, ..., x_n)

  é similar a `isolate (expr, x)` exceto que essa função habilita ao usuário isolar mais que uma variável simultâneamente. Isso pode ser útil, por exemplo, se se tiver tentado mudar variáveis em uma integração múltipla, e em mudança de variável envolvendo duas ou mais das variáveis de integração. Essa função é chamada automaticamente de `simplification/disol.mac`. Uma demostração está disponível através de `demo("disol")$`.

Função: dispform (expr)

  Retorna a representação externa de expr com relação a seu principal operador. Isso pode ser útil em conjunção com `part` que também lida com a representação externa. Suponha que expr seja -A . Então a representação interna de expr é "*"(-1,A), enquanto que a representação externa é "-"(A). `dispform (expr, all)` converte a expressão inteira (não apenas o nível mais alto) para o formato externo. Por exemplo, se `expr: sin (sqrt (x))`, então `freeof (sqrt, expr)` e `freeof (sqrt, dispform (expr))` fornece `true`, enquanto `freeof (sqrt, dispform (expr, all))` fornece `false`.

Função: distrib (expr)

  Distribue adições sobre produtos. `distrib` difere de `expand` no fato de que `distrib` trabalha em somente no nível mais alto de uma expressão, i.e., `distrib` não é recursiva e `distrib` é mais rápida que `expand`. `distrib` difere de `multthru` no que `distrib` expande todas as adições naquele nível.

  Exemplos:

      (%i1) distrib ((a+b) * (c+d));
      (%o1)                 b d + a d + b c + a c
      (%i2) multthru ((a+b) * (c+d));
      (%o2)                 (b + a) d + (b + a) c
      (%i3) distrib (1/((a+b) * (c+d)));
                                      1
      (%o3)                    ---------------
                               (b + a) (d + c)
      (%i4) expand (1/((a+b) * (c+d)), 1, 0);
                                      1
      (%o4)                 ---------------------
                            b d + a d + b c + a c

Função: dpart (expr, n_1, ..., n_k)

  Seleciona a mesma subexpressão que `part`, mas em lugar de apenas retornar aquela subexpressão como seu valor, isso retorna a expressão completa com a subexpressão selecionada mostrada dentro de uma caixa. A caixa é atualmente parte da expressão.

      (%i1) dpart (x+y/z^2, 1, 2, 1);
                                   y
      (%o1)                       ---- + x
                                     2
                                  """
                                  "z"
                                  """

Função: exp (x)

  Representa função exponencial. Instâncias de `exp (x)` em uma entrada são simplificadas para `%e^x`; `exp` não aparece em expressões simplificadas.

  `demoivre` se `true` faz com que `%e^(a + b %i)` simplificar para `%e^(a (cos(b) + %i sin(b)))` se `b` for livre de `%i`. veja `demoivre`.

  `%emode`, quando `true`, faz com que `%e^(%pi %i x)` seja simplificado. Veja `%emode`.

  `%enumer`, quando `true` faz com que `%e` seja substituído por 2.718... quando `numer` for `true`. Veja `%enumer`.

Variável de opção: %emode

  Valor padrão: `true`

  Quando `%emode` for `true`, `%e^(%pi %i x)` é simplificado como segue.

  `%e^(%pi %i x)` simplifica para `cos (%pi x) + %i sin (%pi x)` se `x` for um inteiro ou um multiplo de 1/2, 1/3, 1/4, ou 1/6, e então é adicionalmente simplificado.

  Para outro `x` numérico, `%e^(%pi %i x)` simplifica para `%e^(%pi %i y)` onde `y` é `x - 2 k` para algum inteiro `k` tal que `abs(y) < 1`.

  Quando `%emode` for `false`, nenhuma simplificação adicional de `%e^(%pi %i x)` é realizada.

Variável de opção: %enumer

  Valor padrão: `false`

  Quando `%enumer` for `true`, `%e` é substituido por seu valor numérico 2.718... mesmo que `numer` seja `true`.

  Quando `%enumer` for `false`, essa substituição é realizada somente se o expoente em `%e^x` avaliar para um número.

  Veja também `ev` e `numer`.

Variável de opção: exptisolate

  Valor padrão: `false`

  `exptisolate`, quando `true`, faz com que `isolate (expr, var)` examine expoentes de átomos (tais como `%e`) que contenham `var`.

Variável de opção: exptsubst

  Valor padrão: `false`

  `exptsubst`, quando `true`, permite substituições tais como `y` para `%e^x` em `%e^(a x)`.

Função: freeof (x_1, ..., x_n, expr)

  `freeof (x_1, expr)` Retorna `true` se nenhuma subexpressão de expr for igual a x_1 ou se x_1 ocorrer somente uma variável que não tenha associação fora da expressão expr, e retorna `false` de outra forma.

  `freeof (x_1, ..., x_n, expr)` é equivalente a `freeof (x_1, expr) and ... and freeof (x_n, expr)`.

  Os argumentos x_1, ..., x_n podem ser nomes de funções e variáveis, nomes subscritos, operadores (empacotados em aspas duplas), ou expressões gerais. `freeof` avalia seus argumentos.

  `freeof` opera somente sobre expr como isso representa (após simplificação e avaliação) e não tenta determinar se alguma expressão equivalente pode fornecer um resultado diferente. Em particular, simplificação pode retornar uma expressão equivalente mas diferente que compreende alguns diferentes elementos da forma original de expr.

  Uma variável é uma variável dummy em uma expressão se não tiver associação fora da expressão. Variáveis dummy recoreconhecidas através de `freeof` são o índice de um somatório ou produtório, o limite da variável em `limit`, a variável de integração na forma de integral definida de `integrate`, a variável original em `laplace`, variáveis formais em expressoes `at`, e argumentos em expressões `lambda`. Variáveis locais em `block` não são reconhecidas por `freeof` como variáveis dummy; isso é um bug.

  A forma indefinida de `integrate` not é livre de suas variáveis de integração.

  - Argumentos são nomes de funções, variáveis, nomes subscritos, operadores, e expressões. `freeof (a, b, expr)` é equivalente a `freeof (a, expr) and freeof (b, expr)`.

        (%i1) expr: z^3 * cos (a[1]) * b^(c+d);
                                         d + c  3
        (%o1)                   cos(a ) b      z
                                     1
        (%i2) freeof (z, expr);
        (%o2)                         false
        (%i3) freeof (cos, expr);
        (%o3)                         false
        (%i4) freeof (a[1], expr);
        (%o4)                         false
        (%i5) freeof (cos (a[1]), expr);
        (%o5)                         false
        (%i6) freeof (b^(c+d), expr);
        (%o6)                         false
        (%i7) freeof ("^", expr);
        (%o7)                         false
        (%i8) freeof (w, sin, a[2], sin (a[2]), b*(c+d), expr);
        (%o8)                         true

  - `freeof` avalia seus argumentos.

        (%i1) expr: (a+b)^5$
        (%i2) c: a$
        (%i3) freeof (c, expr);
        (%o3)                         false

  - `freeof` não considera expressões equivalentes. Simplificação pode retornar uma expressão equivalente mas diferente.

        (%i1) expr: (a+b)^5$
        (%i2) expand (expr);
                  5        4       2  3       3  2      4      5
        (%o2)    b  + 5 a b  + 10 a  b  + 10 a  b  + 5 a  b + a
        (%i3) freeof (a+b, %);
        (%o3)                         true
        (%i4) freeof (a+b, expr);
        (%o4)                         false
        (%i5) exp (x);
                                         x
        (%o5)                          %e
        (%i6) freeof (exp, exp (x));
        (%o6)                         true

  - Um somatório ou uma integral definida está livre de uma variável dummy. Uma integral indefinida não é livre de suas variáveis de integração.

        (%i1) freeof (i, 'sum (f(i), i, 0, n));
        (%o1)                         true
        (%i2) freeof (x, 'integrate (x^2, x, 0, 1));
        (%o2)                         true
        (%i3) freeof (x, 'integrate (x^2, x));
        (%o3)                         false

Função: genfact (x, y, z)

  Retorna o fatorial generalizado, definido como `x (x-z) (x - 2 z) ... (x - (y - 1) z)`. Dessa forma, para integral x, `genfact (x, x, 1) = x!` e `genfact (x, x/2, 2) = x!!`.

Função: imagpart (expr)

  Retorna a parte imaginária da expressão expr.

  `imagpart` é uma função computacional, não uma função de simplificação.

  Veja também `abs`, `carg`, `polarform`, `rectform`, e `realpart`.

Função: infix (op)
Função: infix (op, lbp, rbp)
Função: infix (op, lbp, rbp, lpos, rpos, pos)

  Declara op para ser um operador infixo. Um operador infixo é uma função de dois argumentos, com o nome da função escrito entre os argumentos. Por exemplo, o operador de subtração `-` é um operador infixo.

  `infix (op)` declara op para ser um operador infixo com expoentes associados padrão (esquerdo e direito ambos iguais a 180) e podendo ser qualquer entre prefixado, infixado, posfixado, nário, matchfix e nofix (esquerdo e direito ambos iguais a `any`).

  `infix (op, lbp, rbp)` declara op para ser um operador infixo com expoentes associados esquerdo e diretio equilibrados e podendo ser qualquer entre prefixado, infixado, posfixado, nário, matchfix e nofix (esquerdo e direito ambos iguais a `any`).

  `infix (op, lbp, rbp, lpos, rpos, pos)` declara op para ser um operdor infixo com expoentes associados padrão e podendo ser um entre prefixado, infixado, posfixado, nário, matchfix e nofix.

  A precedência de op com relação a outros operadores derivam dos expoentes associados diretiro e esquerdo dos operadores em questão. Se os expoentes associados esquerdo e direito de op forem ambos maiores que o expoente associado esquerdo e o direito de algum outro operador, então op tem prededência sobre o outro operador. Se os expoentes associados não forem ambos maior ou menor, alguma relação mais complicada ocorre.

  A associatividade de op depende de seus expoentes associados. Maior expoente associado esquerdo (eae) implica uma instância de op é avaliadas antes de outros operadores para sua esquerda em uma expressão, enquanto maior expoente associado direito (ead) implica uma instância de op é avaliada antes de outros operadores para sua direita em uma expressão. Dessa forma maior eae torna op associativo à direita, enquanto maior ead torna op associativa à esquerda. Se eae for igual a ead, op é associativa à esquerda.

  Veja também `Syntax`.

  Exemplos:

  Se os expoentes associados esquerdo e direito de op forem ambos maiores que os expoentes associados à direita e à esquerda de algum outro operador, então op tem precedência sobre o outro operador.

      (%i1) :lisp (get '$+ 'lbp)
      100
      (%i1) :lisp (get '$+ 'rbp)
      100
      (%i1) infix ("##", 101, 101);
      (%o1)                          ##
      (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")");
      (%o2)       (a ## b) := sconcat("(", a, ",", b, ")")
      (%i3) 1 + a ## b + 2;
      (%o3)                       (a,b) + 3
      (%i4) infix ("##", 99, 99);
      (%o4)                          ##
      (%i5) 1 + a ## b + 2;
      (%o5)                       (a+1,b+2)

  grande eae torna op associativa à direita, enquanto grande ead torna op associativa à esquerda.

      (%i1) infix ("##", 100, 99);
      (%o1)                          ##
      (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")")$
      (%i3) foo ## bar ## baz;
      (%o3)                    (foo,(bar,baz))
      (%i4) infix ("##", 100, 101);
      (%o4)                          ##
      (%i5) foo ## bar ## baz;
      (%o5)                    ((foo,bar),baz)

Variável de opção: inflag

  Velor padrão: `false`

  Quando `inflag` for `true`, funções para extração de partes inspecionam a forma interna de `expr`.

  Note que o simplificador re-organiza expressões. Dessa forma `first (x + y)` retorna `x` se `inflag` for `true` e `y` se `inflag` for `false`. (`first (y + x)` fornece os mesmos resultados.)

  Também, escolhendo `inflag` para `true` e chamando `part` ou `substpart` é o mesmo que chamar `inpart` ou `substinpart`.

  As funções afetadas pela posição do sinalizador `inflag` são: `part`, `substpart`, `first`, `rest`, `last`, `length`, a estrutura `for` ... `in`, `map`, `fullmap`, `maplist`, `reveal` e `pickapart`.

Função: inpart (expr, n_1, ..., n_k)

  É similar a `part` mas trabalha sobre a representação interna da expressão em lugar da forma de exibição e dessa forma pode ser mais rápida uma vez que nenhuma formatação é realizada. Cuidado deve ser tomado com relação à ordem de subexpressões em adições e produtos (uma vez que a ordem das variáveis na forma interna é muitas vezes diferente daquela na forma mostrada) e no manuseio com menos unário, subtração, e divisão (uma vez que esses operadores são removidos da expressão). `part (x+y, 0)` ou `inpart (x+y, 0)` retorna `+`, embora com o objetivo de referirse ao operador isso deva ser abraçado por aspas duplas. Por exemplo `... if inpart (%o9,0) = "+" then ...`.

  Exemplos:

      (%i1) x + y + w*z;
      (%o1)                      w z + y + x
      (%i2) inpart (%, 3, 2);
      (%o2)                           z
      (%i3) part (%th (2), 1, 2);
      (%o3)                           z
      (%i4) 'limit (f(x)^g(x+1), x, 0, minus);
                                        g(x + 1)
      (%o4)                 limit   f(x)
                            x -> 0-
      (%i5) inpart (%, 1, 2);
      (%o5)                       g(x + 1)

Função: isolate (expr, x)

  Retorna expr com subexpressões que são adições e que não possuem x substituido por rótulos de expressão intermediária (esses sendo símbolos atômicos como `%t1`, `%t2`, ...). Isso é muitas vezes útil para evitar expansões desnecessárias de subexpressões que não possuam a variável de interesse. Uma vez que os rótulos intermediários são associados às subexpressões eles podem todos ser substituídos de volta por avaliação da expressão em que ocorrerem.

  `exptisolate` (valor padrão: `false`) se `true` fará com que `isolate` examine expoentes de átomos (como `%e`) que contenham x.

  `isolate_wrt_times` se `true`, então `isolate` irá também isolar com relação a produtos. Veja `isolate_wrt_times`.

  Faça `example (isolate)` para exemplos.

Variável de opção: isolate_wrt_times

  Valor padrão: `false`

  Quando `isolate_wrt_times` for `true`, `isolate` irá também isolar com relação a produtos. E.g. compare ambas as escolhas do comutador em

      (%i1) isolate_wrt_times: true$
      (%i2) isolate (expand ((a+b+c)^2), c);

      (%t2)                          2 a

      (%t3)                          2 b

                                2            2
      (%t4)                    b  + 2 a b + a

                           2
      (%o4)               c  + %t3 c + %t2 c + %t4
      (%i4) isolate_wrt_times: false$
      (%i5) isolate (expand ((a+b+c)^2), c);
                           2
      (%o5)               c  + 2 b c + 2 a c + %t4

Variável de opção: listconstvars

  Valor padrão: `false`

  Quando `listconstvars` for `true`, isso fará com que `listofvars` inclua `%e`, `%pi`, `%i`, e quaisquer variáveis declaradas contantes na lista seja retornado se aparecer na expressão que chamar `listofvars`. O comportamento padrão é omitir isso.

Variável de opção: listdummyvars

  Valor padrão: `true`

  Quando `listdummyvars` for `false`, "variáveis dummy" na expressão não serão incluídas na lista retornada por `listofvars`. (O significado de "variável dummy" é o mesmo que em `freeof`. "Variáveis dummy" são conceitos matemáticos como o índice de um somatório ou produtório, a variável limite, e a variável da integral definida.) Exemplo:

      (%i1) listdummyvars: true$
      (%i2) listofvars ('sum(f(i), i, 0, n));
      (%o2)                        [i, n]
      (%i3) listdummyvars: false$
      (%i4) listofvars ('sum(f(i), i, 0, n));
      (%o4)                          [n]

Função: listofvars (expr)

  Retorna uma lista de variáveis em expr.

  `listconstvars` se `true` faz com que `listofvars` inclua `%e`, `%pi`, `%i`, e quaisquer variáveis declaradas constantes na lista é retornada se aparecer em expr. O comportamento padrão é omitir isso.

      (%i1) listofvars (f (x[1]+y) / g^(2+a));
      (%o1)                     [g, a, x , y]
                                        1

Função: lfreeof (lista, expr)

  Para cada um dos membros m de lista, chama `freeof (m, expr)`. Retorna `false` se qualquer chamada a `freeof` for feita e `true` de outra forma.

Função: lopow (expr, x)

  Retorna o menor expoente de x que explicitamente aparecer em expr. Dessa forma

      (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
      (%o1)                       min(a, 2)

Função: lpart (rótulo, expr, n_1, ..., n_k)

  é similar a `dpart` mas usa uma caixa rotulada. Uma moldura rotulada é similar à que é produzida por `dpart` mas a produzida por `lpart` tem o nome na linha do topo.

Função: multthru (expr)
Função: multthru (expr_1, expr_2)

  Multiplica um fator (que pode ser uma adição) de expr pelos outros fatores de expr. Isto é, expr é `f_1 f_2 ... f_n` onde ao menos um fator, digamos f_i, é uma soma de termos. Cada termo naquela soma é multiplicado por outros fatores no produto. (A saber todos os fatores exceto f_i). `multthru` não expande somas exponenciais. Essa função é o caminho mais rápido para distribuir produtos (comutativos ou não) sobre adições. Uma vez que quocientes são representados como produtos `multthru` podem ser usados para dividir adições por produtos também.

  `multthru (expr_1, expr_2)` multiplica cada termo em expr_2 (que pode ser uma adição ou uma equção) por expr_1. Se expr_1 não for por si mesmo uma adição então essa forma é equivalente a `multthru (expr_1*expr_2)`.

      (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
                            1        x         f(x)
      (%o1)             - ----- + -------- - --------
                          x - y          2          3
                                  (x - y)    (x - y)
      (%i2) multthru ((x-y)^3, %);
                                 2
      (%o2)             - (x - y)  + x (x - y) - f(x)
      (%i3) ratexpand (%);
                                 2
      (%o3)                   - y  + x y - f(x)
      (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
                              10  2              2  2
                       (b + a)   s  + 2 a b s + a  b
      (%o4)            ------------------------------
                                        2
                                   a b s
      (%i5) multthru (%);  /* note que isso não expande (b+a)^10 */
                                              10
                             2   a b   (b + a)
      (%o5)                  - + --- + ---------
                             s    2       a b
                                 s
      (%i6) multthru (a.(b+c.(d+e)+f));
      (%o6)            a . f + a . c . (e + d) + a . b
      (%i7) expand (a.(b+c.(d+e)+f));
      (%o7)         a . f + a . c . e + a . c . d + a . b

Função: nounify (f)

  Retorna a forma substantiva do nome da função f. Isso é necessário se se quer referir ao nome de uma função verbo como se esse nome fosse um substantivo. Note que algumas funções verbos irão retornar sua forma substantiva senão puderem ser avaliadas para certos argumentos. A forma substantiva é também a forma retornada se uma chamada de função é precedida por um apóstrofo.

Função: nterms (expr)

  Retorna o número de termos que expr pode ter se for completamente expandida e nenhum cancelamento ou combinação de termos acontecer. Note expressões como `sin (expr)`, `sqrt (expr)`, `exp (expr)`, etc. contam como apenas um termo independentemente de quantos termos expr tenha (se expr for uma adição).

Função: op (expr)

  Retorna o operador principal da expressão expr. `op (expr)` é equivalente a `part (expr, 0)`.

  `op` retorna uma seqüência de caracteres se o operador principal for uma operador interno ou definido pelo usuário como prefixado, binário ou n-ário infixo, posfixado, matchfix ou nofix. De outra forma, se expr for uma expressão de função subscrita, `op` retorna uma função subscrita; nesse caso o valor de retorno não é um átomo. De outro modo, expr é uma função de array ou uma expressão de função comum, e `op` retorna um símbolo.

  `op` observa o valor do sinalizador global `inflag`.

  `op` avalia seus argumentos.

  Veja também `args`.

  Exemplos:

      (%i1) stringdisp: true$
      (%i2) op (a * b * c);
      (%o2)                          "*"
      (%i3) op (a * b + c);
      (%o3)                          "+"
      (%i4) op ('sin (a + b));
      (%o4)                          sin
      (%i5) op (a!);
      (%o5)                          "!"
      (%i6) op (-a);
      (%o6)                          "-"
      (%i7) op ([a, b, c]);
      (%o7)                          "["
      (%i8) op ('(if a > b then c else d));
      (%o8)                         "if"
      (%i9) op ('foo (a));
      (%o9)                          foo
      (%i10) prefix (foo);
      (%o10)                        "foo"
      (%i11) op (foo a);
      (%o11)                        "foo"
      (%i12) op (F [x, y] (a, b, c));
      (%o12)                        F
                                     x, y
      (%i13) op (G [u, v, w]);
      (%o13)                          G

Função: operatorp (expr, op)
Função: operatorp (expr, [op_1, ..., op_n])

  `operatorp (expr, op)` retorna `true` se op for igual ao operador de expr.

  `operatorp (expr, [op_1, ..., op_n])` retorna `true` se algum elementos de op_1, ..., op_n for igual ao operador de expr.

Função: optimize (expr)

  Retorna uma expressão que produz o mesmo valor e efeito que expr mas faz de forma mais eficientemente por evitar a recomputação de subexpressões comuns. `optimize` também tem o mesmo efeito de "colapsar" seus argumentos de forma que todas as subexpressões comuns são compartilhadas. Faça `example (optimize)` para exemplos.

Variável de opção: optimprefix

  Valor padrão: `%`

  `optimprefix` é o prefixo usado para símbolos gerados pelo comando `optimize`.

Função: ordergreat (v_1, ..., v_n)

  Escolhe aliases para as variáveis v_1, ..., v_n tais que v_1 > v_2 > ... > v_n, e v_n > qualquer outra variável não mencionada como um argumento.

  Veja também `orderless`.

Função: ordergreatp (expr_1, expr_2)

  Retorna `true` se expr_2 precede expr_1 na ordenação escolhida com a função `ordergreat`.

Função: orderless (v_1, ..., v_n)

  Escolhe aliases para as variáveis v_1, ..., v_n tais que v_1 < v_2 < ... < v_n, and v_n < qualquer outra variável não mencionada como um argumento.

  Dessa forma a escala de ordenação completa é: constantes numéricas < constantes declaradas < escalares declarados < primeiro argumento para `orderless` < ... < último argumento para `orderless` < variáveis que começam com A < ... < variáveis que começam com Z < último argumento para `ordergreat` < ... < primeiro argumento para `ordergreat` < `mainvar`s - variáveis principais declaradas.

  Veja também `ordergreat` e `mainvar`.

Função: orderlessp (expr_1, expr_2)

  Retorna `true` se expr_1 precede expr_2 na ordenação escolhida pelo comando `orderless`.

Função: part (expr, n_1, ..., n_k)

  Retorna partes da forma exibida de `expr`. Essa função obtém a parte de `expr` como especificado pelos índices n_1, ..., n_k. A primeira parte n_1 de `expr` é obtida, então a parte n_2 daquela é obtida, etc. O resultado é parte n_k de ... parte n_2 da parte n_1 da `expr`.

  `part` pode ser usada para obter um elemento de uma lista, uma linha de uma matriz, etc.

  Se o último argumento para uma função `part` for uma lista de índices então muitas subexpressões serão pinçadas, cada uma correspondendo a um índice da lista. Dessa forma `part (x + y + z, [1, 3])` é `z+x`.

  `piece` mantém a última expressão selecionada quando usando as funções `part`. Isso é escolhido durante a execução da função e dessa forma pode referir-se à função em si mesma como mostrado abaixo.

  Se `partswitch` for escolhido para `true` então `end` é retornado quando uma parte selecionada de uma expressão não existir, de outra forma uma mensagem de erro é forncecida.

  Exemplo: `part (z+2*y, 2, 1)` retorna 2.

  `example (part)` mostra exemplos adicionais.

Função: partition (expr, x)

  Retorna uma lista de duas expressões. Elas são (1) os fatores de expr (se essa expressão for um produto), os termos de expr (se isso for uma adição), ou a lista (se isso for uma lsita) que não contiver `var` e, (2) os fatores, termos, ou lista que faz.

      (%i1) partition (2*a*x*f(x), x);
      (%o1)                     [2 a, x f(x)]
      (%i2) partition (a+b, x);
      (%o2)                      [b + a, 0]
      (%i3) partition ([a, b, f(a), c], a);
      (%o3)                  [[b, c], [a, f(a)]]

Variável de opção: partswitch

  Valor padrão: `false`

  Quando `partswitch` for `true`, `end` é retornado quando uma parte selecionada de uma expressão não existir, de outra forma uma mensagem de erro é fornecida.

Função: pickapart (expr, n)

  Atribui rótulos de expressão intermediária a subexpressões de expr de comprimento n, um inteiro. A subexpressões maiores ou menores não são atribuidos rótulos. `pickapart` retorna uma expressão em termos de expressões intermediárias equivalentes à expressão original expr.

  Veja também `part`, `dpart`, `lpart`, `inpart`, e `reveal`.

  Exemplos:

      (%i1) expr: (a+b)/2 + sin (x^2)/3 - log (1 + sqrt(x+1));
                                                2
                                           sin(x )   b + a
      (%o1)       - log(sqrt(x + 1) + 1) + ------- + -----
                                              3        2
      (%i2) pickapart (expr, 0);

                                                2
                                           sin(x )   b + a
      (%t2)       - log(sqrt(x + 1) + 1) + ------- + -----
                                              3        2

      (%o2)                          %t2
      (%i3) pickapart (expr, 1);

      (%t3)                - log(sqrt(x + 1) + 1)

                                        2
                                   sin(x )
      (%t4)                        -------
                                      3

                                    b + a
      (%t5)                         -----
                                      2

      (%o5)                    %t5 + %t4 + %t3
      (%i5) pickapart (expr, 2);

      (%t6)                 log(sqrt(x + 1) + 1)

                                        2
      (%t7)                        sin(x )

      (%t8)                         b + a

                               %t8   %t7
      (%o8)                    --- + --- - %t6
                                2     3
      (%i8) pickapart (expr, 3);

      (%t9)                    sqrt(x + 1) + 1

                                      2
      (%t10)                         x

                        b + a              sin(%t10)
      (%o10)            ----- - log(%t9) + ---------
                          2                    3
      (%i10) pickapart (expr, 4);

      (%t11)                     sqrt(x + 1)

                            2
                       sin(x )   b + a
      (%o11)           ------- + ----- - log(%t11 + 1)
                          3        2
      (%i11) pickapart (expr, 5);

      (%t12)                        x + 1

                         2
                    sin(x )   b + a
      (%o12)        ------- + ----- - log(sqrt(%t12) + 1)
                       3        2
      (%i12) pickapart (expr, 6);
                        2
                   sin(x )   b + a
      (%o12)       ------- + ----- - log(sqrt(x + 1) + 1)
                      3        2

Variável de sistema: piece

  Mantém a ultima expressão selecionada quando usando funções `part`. Isso é escolhido durante a execução da função e dessa forma pode referir-se à função em si mesma.

Função: polarform (expr)

  Retorna uma expressão `r %e^(%i theta)` equivalente a expr, tal que `r` e `theta` sejam puramente reais.

Função: powers (expr, x)

  Fornece os expoentes de x que ocorrem em expressão expr.

  `load (powers)` chama essa função.

Função: product (expr, i, i_0, i_1)

  Representa um produto dos velores de `expr` com o índice i variando de i_0 a i_1. A forma substantiva `'product` é mostrada como um pi maiísculo.

  `product` avalia expr e os limites inferior e superior i_0 e i_1, `product` coloca um apóstrofo (não avalia) o índice i.

  Se os limites superiores e inferiores diferirem por um inteiro, expr é avaliada para cada valor do índice i, e o resultado um produto explícito.

  de outra forma, o intervalo do índice é indefinido. Algumas regras são aplicads para simplificar o produto. Quando a variável global `simpproduct` for `true`, regras adicionais são aplicadas. Em alguns casos, simplificação um resultado que não é um produto; de outra forma, o resultado é uma forma substantiva `'product`.

  Veja também `nouns` e `evflag`.

  Exemplos:

      (%i1) product (x + i*(i+1)/2, i, 1, 4);
      (%o1)           (x + 1) (x + 3) (x + 6) (x + 10)
      (%i2) product (i^2, i, 1, 7);
      (%o2)                       25401600
      (%i3) product (a[i], i, 1, 7);
      (%o3)                 a  a  a  a  a  a  a
                             1  2  3  4  5  6  7
      (%i4) product (a(i), i, 1, 7);
      (%o4)          a(1) a(2) a(3) a(4) a(5) a(6) a(7)
      (%i5) product (a(i), i, 1, n);
                                   n
                                 /===\
                                  ! !
      (%o5)                       ! !  a(i)
                                  ! !
                                 i = 1
      (%i6) product (k, k, 1, n);
                                     n
                                   /===\
                                    ! !
      (%o6)                         ! !  k
                                    ! !
                                   k = 1
      (%i7) product (k, k, 1, n), simpproduct;
      (%o7)                          n!
      (%i8) product (integrate (x^k, x, 0, 1), k, 1, n);
                                   n
                                 /===\
                                  ! !    1
      (%o8)                       ! !  -----
                                  ! !  k + 1
                                 k = 1
      (%i9) product (if k <= 5 then a^k else b^k, k, 1, 10);
                                    15  40
      (%o9)                        a   b

Função: realpart (expr)

  Retorna a parte real de expr. `realpart` e `imagpart` irão trabalhar sobre expressões envolvendo funções trigonométricas e hiperbólicas, bem como raízes quadradas, logarítmos, e exponenciação.

Função: rectform (expr)

  Retorna uma expressão `a + b %i` equivalente a expr, tal que a e b sejam puramente reais.

Função: rembox (expr, unlabelled)
Função: rembox (expr, rótulo)
Função: rembox (expr)

  Remove caixas de expr.

  `rembox (expr, unlabelled)` remove todas as caixas sem rótulos de expr.

  `rembox (expr, rótulo)` remove somente caixas contendo rótulo.

  `rembox (expr)` remove todas as caixas, rotuladas e nã rotuladas.

  Caixas são desenhadas pelas funções `box`, `dpart`, e `lpart`.

  Exemplos:

      (%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);
                                        a d - b c
      (%o1)                sin(%pi x) + ---------
                                            2
                                           h
      (%i2) dpart (dpart (expr, 1, 1), 2, 2);
                              """""""    a d - b c
      (%o2)               sin("%pi x") + ---------
                              """""""      """"
                                           " 2"
                                           "h "
                                           """"
      (%i3) expr2: lpart (BAR, lpart (FOO, %, 1), 2);
                        FOO"""""""""""   BAR""""""""
                        "    """"""" "   "a d - b c"
      (%o3)             "sin("%pi x")" + "---------"
                        "    """"""" "   "  """"   "
                        """"""""""""""   "  " 2"   "
                                         "  "h "   "
                                         "  """"   "
                                         """""""""""
      (%i4) rembox (expr2, unlabelled);
                                        BAR""""""""
                         FOO"""""""""   "a d - b c"
      (%o4)              "sin(%pi x)" + "---------"
                         """"""""""""   "    2    "
                                        "   h     "
                                        """""""""""
      (%i5) rembox (expr2, FOO);
                                        BAR""""""""
                             """""""    "a d - b c"
      (%o5)              sin("%pi x") + "---------"
                             """""""    "  """"   "
                                        "  " 2"   "
                                        "  "h "   "
                                        "  """"   "
                                        """""""""""
      (%i6) rembox (expr2, BAR);
                         FOO"""""""""""
                         "    """"""" "   a d - b c
      (%o6)              "sin("%pi x")" + ---------
                         "    """"""" "     """"
                         """"""""""""""     " 2"
                                            "h "
                                            """"
      (%i7) rembox (expr2);
                                        a d - b c
      (%o7)                sin(%pi x) + ---------
                                            2
                                           h

Função: sum (expr, i, i_0, i_1)

  Representa um somatório dos valores de expr com o índice i variando de i_0 a i_1. A forma substantiva `'sum` é mostrada com uma letra sigma maiúscula. `sum` avalia seu somando expr e limites inferior e superior i_0 e i_1, `sum` coloca apóstrofo (não avalia) o índice i.

  Se os limites superiores e inferiores diferirem de um número inteiro, o somatoriando expr é avaliado para cada valor do índice do somatório i, e o resultado é uma adição explícita.

  De outra forma, o intervalo dos índices é indefinido. Algumas regras são aplicadas para simplificar o somatório. Quando a variável global `simpsum` for `true`, regras adicionais são aplicadas. Em alguns casos, simplificações retornam um resultado que não é um somatório; de outra forma, o resultado é uma forma substantiva `'sum`.

  Quando o `evflag` (sinalizador de avaliação) `cauchysum` for `true`, um produto de somatórios é mostrado como um produto de Cauchy, no qual o índice do somatório mais interno é uma função de índice de um nível acima, em lugar de variar independentemente.

  A variável global `genindex` é o prefixo alfabético usado para gerar o próximo índice do somatório, quando um índice automaticamente gerado for necessário.

  `gensumnum` é o sufixo numérico usando para gerar o próximo índice do somatório, quando um índice gerado automaticamente for necessário. Quando `gensumnum` for `false`, um índice gerado automaticamente é somente `genindex` sem sufixo numérico.

  Veja também `sumcontract`, `intosum`, `bashindices`, `niceindices`, `nouns`, `evflag`, e `zeilberger`.

  Exemplos:

      (%i1) sum (i^2, i, 1, 7);
      (%o1)                          140
      (%i2) sum (a[i], i, 1, 7);
      (%o2)           a  + a  + a  + a  + a  + a  + a
                       7    6    5    4    3    2    1
      (%i3) sum (a(i), i, 1, 7);
      (%o3)    a(7) + a(6) + a(5) + a(4) + a(3) + a(2) + a(1)
      (%i4) sum (a(i), i, 1, n);
                                  n
                                 ====
                                 \
      (%o4)                       >    a(i)
                                 /
                                 ====
                                 i = 1
      (%i5) sum (2^i + i^2, i, 0, n);
                                n
                               ====
                               \       i    2
      (%o5)                     >    (2  + i )
                               /
                               ====
                               i = 0
      (%i6) sum (2^i + i^2, i, 0, n), simpsum;
                                    3      2
                         n + 1   2 n  + 3 n  + n
      (%o6)             2      + --------------- - 1
                                        6
      (%i7) sum (1/3^i, i, 1, inf);
                                  inf
                                  ====
                                  \     1
      (%o7)                        >    --
                                  /      i
                                  ====  3
                                  i = 1
      (%i8) sum (1/3^i, i, 1, inf), simpsum;
                                      1
      (%o8)                           -
                                      2
      (%i9) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
                                    inf
                                    ====
                                    \     1
      (%o9)                      30  >    --
                                    /      2
                                    ====  i
                                    i = 1
      (%i10) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
                                        2
      (%o10)                       5 %pi
      (%i11) sum (integrate (x^k, x, 0, 1), k, 1, n);
                                  n
                                 ====
                                 \       1
      (%o11)                      >    -----
                                 /     k + 1
                                 ====
                                 k = 1
      (%i12) sum (if k <= 5 then a^k else b^k, k, 1, 10));
      Incorrect syntax: Too many )'s
      else b^k, k, 1, 10))
                        ^
      (%i12) linenum:11;
      (%o11)                         11
      (%i12) sum (integrate (x^k, x, 0, 1), k, 1, n);
                                  n
                                 ====
                                 \       1
      (%o12)                      >    -----
                                 /     k + 1
                                 ====
                                 k = 1
      (%i13) sum (if k <= 5 then a^k else b^k, k, 1, 10);
                10    9    8    7    6    5    4    3    2
      (%o13)   b   + b  + b  + b  + b  + a  + a  + a  + a  + a

Função: lsum (expr, x, L)

  Representas a adição de expr a cada elemento x em L.

  Uma forma substantiva `'lsum` é retornada se o argumento L não avaliar para uma lista.

  Exemplos:

      (%i1) lsum (x^i, i, [1, 2, 7]);
                                  7    2
      (%o1)                      x  + x  + x
      (%i2) lsum (i^2, i, rootsof (x^3 - 1, x));
                           ====
                           \      2
      (%o2)                 >    i
                           /
                           ====
                                         3
                           i in rootsof(x  - 1, x)

Função: verbify (f)

  Retorna a forma verbal da função chamada f.

  Veja também `verb`, `noun`, e `nounify`.

  Exemplos:

      (%i1) verbify ('foo);
      (%o1)                          foo
      (%i2) :lisp $%
      $FOO
      (%i2) nounify (foo);
      (%o2)                          foo
      (%i3) :lisp $%
      %FOO

Previous: Sintaxe, Up: Expressões [Contents][Index]