[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

# 3. Ajuda

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

## 3.1 Lisp e Maxima

Maxima é escrito na liguagem de programação Lisp, e é fácil acessar funções Lisp e variáveis a partir do Maxima e vice-versa. Símbolos Lisp e Maxima são distingüidos através de uma convenção de nome. Um símbolo Lisp que começa com um sinal de dólar `$` corresponde a um símbolo Maxima sem o sinal de dólar. Um símbolo Maxima que começa com um ponto de interrogação `?` corresponde a um símbolo Lisp sem o ponto de interrogação. Por exemplo, o símbolo Maxima `foo` corresponde ao símbolo Lisp `$foo`, enquanto o símbolo Maxima `?foo` corresponde ao símbolo Lisp `foo`, Note que `?foo` é escrito sem um espaço entre `?` e `foo`; de outra forma pode ser uma chamada errônea para `describe ("foo")`.

Hífen `-`, asterisco `*`, ou outro caractere especial em símbolos Lisp deve ser precedido por uma barra invertida `\` onde ele aparecer no código Maxima. Por exemplo, o identificador Lisp `*foo-bar*` é escrito `?\*foo\-bar\*` no Maxima.

Código Lisp pode ser executado dentro de uma sessão Maxima. Uma linha simples de Lisp (contendo uma ou mais formas) pode ser executada através do comando especial `:lisp`. Por exemplo,

    (%i1) :lisp (foo $x $y)

chama a função Lisp `foo` com variáveis Maxima `x` e `y` como argumentos. A constução `:lisp` pode aparecer na linha de comando interativa ou em um arquivo processado por `batch` ou `demo`, mas não em um arquivo processado por `load`, `batchload`, `translate_file`, ou `compile_file`.

A função `to_lisp()` abre uma sessão interativa Lisp. Digitando `(to-maxima)` fecha a sessão Lisp e retorna para o Maxima.

Funções Lisp e variáveis que são para serem visíveis no Maxima como funções e variáveis com nomes comuns (sem pontuação especial) devem ter nomes Lisp começando com o sinal de dólar `$`.

Maxima é sensível à caixa, distingue entre letras em caixa alta (maiúsculas) e letras em caixa baixa (minúsculas) em identificadores, enquanto Lisp não é sensível à caixa. Existem algumas regras governando a tradução de nomes entre o Lisp e o Maxima.

1. Um identificador Lisp não contido entre barras verticais corresponde a um identificador Maxima em caixa baixa. Se o identificador Lisp estiver em caixa alta, caixa baixa, ou caixa mista, é ignorado. E.g., Lisp `$foo`, `$FOO`, e `$Foo` todos correspondem a Maxima `foo`.
2. Um identificador Lisp que está todo em caixa alta ou todo em caixa baixa e contido em barras verticais corresponde a um identificador Maxima com caixa invertida. Isto é, caixa alta é alterada para caixa baixa e caixa baixa para caixa alta. E.g., Lisp `|$FOO|` e `|$foo|` corresponde a Maxima `foo` e `FOO`, respectivamente.
3. Um identificador Lisp que é misto de caixa alta e caixa baixa e contido entre barras verticais corresponde a um identificador Maxima com o mesma caixa. E.g., Lisp `|$Foo|` corresponde a Maxima `Foo`.

A macro Lisp `#$` permite o uso de expressões Maxima em código Lisp. `#$expr$` expande para uma expressão Lisp equivalente à expressão Maxima expr.

    (msetq $foo #$[x, y]$)

Isso tem o mesmo efeito que digitar

    (%i1) foo: [x, y];

A função Lisp `displa` imprime uma expressão em formato Maxima.

    (%i1) :lisp #$[x, y, z]$
    ((MLIST SIMP) $X $Y $Z)
    (%i1) :lisp (displa '((MLIST SIMP) $X $Y $Z))
    [x, y, z]
    NIL

Funções definidas em Maxima não são funções comuns em Lisp. A função Lisp `mfuncall` chama uma função Maxima. Por exemplo:

    (%i1) foo(x,y) := x*y$
    (%i2) :lisp (mfuncall '$foo 'a 'b)
    ((MTIMES SIMP) A B)

Algumas funções Lisp possuem o mesmo nome que no pacote Maxima, a saber as seguintes.

`complement`, `continue`, `//`, `float`, `functionp`, `array`, `exp`, `listen`, `signum`, `atan`, `asin`, `acos`, `asinh`, `acosh`, `atanh`, `tanh`, `cosh`, `sinh`, `tan`, `break`, e `gcd`.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

## 3.2 Descartando

Computação simbólica tende a criar um bom volume de arquivos temporários, e o efetivo manuseio disso pode ser crucial para sucesso completo de alguns programas.

Sob GCL, nos sistemas UNIX onde a chamada de sistema mprotect ( controle de acessso autorizado a uma região de memória) está disponível (incluindo SUN OS 4.0 e algumas variantes de BSD) uma organização de arquivos temporários estratificada está disponível. Isso limita a organização para páginas que tenham sido recentemente escritas. Veja a documentação da GCL sob ALLOCATE e GBC. No ambiente Lisp fazendo (setq si::*notify-gbc* t) irá ajudar você a determinar quais áreas podem precisar de mais espaço.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

## 3.3 Documentação

O manual on-line de usuário do Maxima pode ser visto em diferentes formas. A partir da linha de comando interativa do Maxima, o manual de usuário é visto em texto plano através do comando `?` (i.e., a função `describe` ). O manual de usuário é visto como hipertexto `info` através do programa visualizador `info` e como uma web page através de qualquer navegador web comum.

`example` mostra exemplos de muitas funções do Maxima. Por exemplo,

    (%i1) example (integrate);

retorna

    (%i2) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x)))
    (%o2) test(f) := block([u], u : integrate(f, x),

                                             ratsimp(f - diff(u, x)))
    (%i3) test(sin(x))
    (%o3)                           0
    (%i4) test(1/(x+1))
    (%o4)                           0
    (%i5) test(1/(x^2+1))
    (%o5)                           0

e saída adicional.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

## 3.4 Funções e Variáveis Definidas para Ajuda

Função: demo (nomearquivo)

  Avalia expressões Maxima em nomearquivo e mostra os resultados. `demo` faz uma pausa após avaliar cada expressão e continua após a conclusão com um enter das entradas de usuário. (Se executando em Xmaxima, `demo` pode precisar ver um ponto e vírgula `;` seguido por um enter.)

  `demo` procura na lista de diretórios `file_search_demo` para achar `nomearquivo`. Se o arquivo tiver o sufixo `dem`, o sufixo pode ser omitido. Veja também `file_search`.

  `demo` avalia seus argumento. `demo` retorna o nome do arquivo de demonstração.

  Exemplo:

      (%i1) demo ("disol");

      batching /home/wfs/maxima/share/simplification/disol.dem
       At the _ prompt, type ';' followed by enter to get next demo
      (%i2)                      load(disol)

      _
      (%i3)           exp1 : a (e (g + f) + b (d + c))
      (%o3)               a (e (g + f) + b (d + c))

      _
      (%i4)                disolate(exp1, a, b, e)
      (%t4)                         d + c

      (%t5)                         g + f

      (%o5)                   a (%t5 e + %t4 b)

      _
      (%i5) demo ("rncomb");

      batching /home/wfs/maxima/share/simplification/rncomb.dem
       At the _ prompt, type ';' followed by enter to get next demo
      (%i6)                     load(rncomb)

      _
                                   z         x
      (%i7)               exp1 : ----- + ---------
                                 y + x   2 (y + x)
                                z         x
      (%o7)                   ----- + ---------
                              y + x   2 (y + x)

      _
      (%i8)                     combine(exp1)
                                z         x
      (%o8)                   ----- + ---------
                              y + x   2 (y + x)

      _
      (%i9)                     rncombine(%)
                                   2 z + x
      (%o9)                       ---------
                                  2 (y + x)

      _
                                   d   c   b   a
      (%i10)                exp2 : - + - + - + -
                                   3   3   2   2
                                d   c   b   a
      (%o10)                    - + - + - + -
                                3   3   2   2

      _
      (%i11)                    combine(exp2)
                            2 d + 2 c + 3 (b + a)
      (%o11)                ---------------------
                                      6

      _
      (%i12)                   rncombine(exp2)
                            2 d + 2 c + 3 b + 3 a
      (%o12)                ---------------------
                                      6

      _
      (%i13)

Função: describe (string)
Função: describe (string, exact)
Função: describe (string, inexact)

  `describe(string)` é equivalente a `describe(string, exact)`.

  `describe(string, exact)` encontra um item com título igual (case-insensitive) a string, se existir tal item.

  `describe(string, inexact)` encontra todos os itens documentados que contiverem string em seus títulos. Se existe mais de um de tal item, Maxima solicita ao usuário selecionar um item ou ítens para mostrar.

  Na linha de comando interativa, `? foo` (com um espaço entre `?` e `foo`) é equivalente a `describe("foo", exact)`. e `?? foo` é equivalente a `describe("foo", inexact)`.

  `describe("", inexact)` retorna uma lista de todos os tópicos documentados no manual on-line.

  `describe` não avalia seu argumento. `describe` retorna `true` se alguma documentação for encontrada, de outra forma retorna `false`.

  Veja também Documentação.

  Exemplo:

      (%i1) ?? integ
       0: Functions and Variables for Elliptic Integrals
       1: Functions and Variables for Integration
       2: Introduction to Elliptic Functions and Integrals
       3: Introduction to Integration
       4: askinteger  (Functions and Variables for Simplification)
       5: integerp  (Functions and Variables for Miscellaneous Options)
       6: integer_partitions  (Functions and Variables for Sets)
       7: integrate  (Functions and Variables for Integration)
       8: integrate_use_rootsof  (Functions and Variables for Integration)
       9: integration_constant_counter  (Functions and Variables for Integration)
       10: nonnegintegerp  (Functions and Variables for linearalgebra)
      Enter space-separated numbers, `all' or `none': 7 8

       -- Function: integrate (<expr>, <x>)
       -- Function: integrate (<expr>, <x>, <a>, <b>)
           Attempts to symbolically compute the integral of <expr> with
           respect to <x>.  `integrate (<expr>, <x>)' is an indefinite
           integral, while `integrate (<expr>, <x>, <a>, <b>)' is a definite
           integral, [...]

       -- Option variable: integrate_use_rootsof
           Default value: `false'

           When `integrate_use_rootsof' is `true' and the denominator of a
           rational function cannot be factored, `integrate' returns the
           integral in a form which is a sum over the roots (not yet known)
           of the denominator.
           [...]

  Nesse exemplo, ítens 7 e 8 foram selecionados (a saída foi encurtada por razões tipográficas e economico-financeiras como indicado por `[...]`. Todos ou nenhum dos ítens poderia ter sido selecionado através da inserção de `all` ou `none`, que podem ser abreviado para `a` ou para `n`, respectivamente.

Função: example (tópico)
Função: example ()

  `example (topic)` mostra alguns exemplos de tópico, que é um símbolo (não uma seqüência de caracteres). A maioria dos tópicos são nomes de função. `example ()` retorna a lista de todos os tópicos reconhecidos.

  O nome do arquivo contendo os exemplos é dado pela variável global `manual_demo`, cujo valor padrão é `"manual.demo"`.

  `example` não avalia seu argumento. `example` retorna `done` a menos que ocorra um erro ou não exista o argumento fornecido pelo usuário, nesse caso `example` retorna uma lista de todos os tópicos reconhecidos.

  Exemplos:

      (%i1) example (append);
      (%i2) append([x+y,0,-3.2],[2.5E+20,x])
      (%o2)             [y + x, 0, - 3.2, 2.5E+20, x]
      (%o2)                         done
      (%i3) example (coeff);
      (%i4) coeff(b+tan(x)+2*a*tan(x) = 3+5*tan(x),tan(x))
      (%o4)                      2 a + 1 = 5
      (%i5) coeff(1+x*%e^x+y,x,0)
      (%o5)                         y + 1
      (%o5)                         done

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

This document was generated by Viktor T. Toth on Setembro, 27 2018 using texi2html 1.76.