@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /Help.texi/1.23/Sat Jun  2 00:12:47 2007/-ko/
@iftex
@hyphenation{cor-res-pon-de}
@end iftex
@menu
* Lisp e Maxima::            
* Descartando::          
* Documenta@value{cedilha}@~{a}o::               
* Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Ajuda::        
@end menu

@node Lisp e Maxima, Descartando, Ajuda, Ajuda
@section Lisp e Maxima
Maxima @'{e} escrito na liguagem de programa@value{cedilha}@~{a}o Lisp, e @'{e} f@'{a}cil acessar fun@value{cedilha}@~{o}es Lisp e vari@'{a}veis
a partir do Maxima e vice-versa.
S@'{i}mbolos Lisp e Maxima s@~{a}o disting@"{u}idos atrav@'{e}s de uma conven@value{cedilha}@~{a}o de nome.
Um s@'{i}mbolo Lisp que come@value{cedilha}a com um sinal de d@'{o}lar @code{$} corresponde a
um s@'{i}mbolo Maxima sem o sinal de d@'{o}lar.
@c NEED TO MENTION THIS OR IS IT JUST CLUTTERING ??
@c This includes special Maxima variables such as @code{%} and input and output labels,
@c which appear as @code{$%}, @code{$%i1}, @code{$%o1}, etc., in Lisp.
Um s@'{i}mbolo Maxima que come@value{cedilha}a com um ponto de interroga@value{cedilha}@~{a}o @code{?} corresponde a
um s@'{i}mbolo Lisp sem o ponto de interroga@value{cedilha}@~{a}o.
Por exemplo, o s@'{i}mbolo Maxima @code{foo} corresponde ao s@'{i}mbolo Lisp @code{$foo},
enquanto o s@'{i}mbolo Maxima @code{?foo} corresponde ao s@'{i}mbolo Lisp @code{foo},
Note que @code{?foo} @'{e} escrito sem um espa@value{cedilha}o entre @code{?} e @code{foo};
de outra forma pode ser uma chamada err@^{o}nea para @code{describe ("foo")}.

H@'{i}fen @code{-}, asterisco @code{*}, ou outro caractere especial em s@'{i}mbolos Lisp
deve ser precedido por uma barra invertida @code{\} onde ele aparecer no c@'{o}digo Maxima.
Por exemplo, o identificador Lisp @code{*foo-bar*} @'{e} escrito @code{?\*foo\-bar\*} no Maxima.

C@'{o}digo Lisp pode ser executado dentro de uma sess@~{a}o Maxima.
Uma linha simples de Lisp (contendo uma ou mais formas) pode ser executada
atrav@'{e}s do comando especial @code{:lisp}. Por exemplo,

@example
(%i1) :lisp (foo $x $y)
@end example

@noindent
chama a fun@value{cedilha}@~{a}o Lisp @code{foo} com vari@'{a}veis Maxima @code{x} e @code{y} como argumentos.
A constu@value{cedilha}@~{a}o @code{:lisp} pode aparecer na linha de comando interativa
ou em um arquivo processado por @code{batch} ou @code{demo}, mas n@~{a}o em um arquivo processado por
@code{load}, @code{batchload}, @code{translate_file}, ou @code{compile_file}.

A fun@value{cedilha}@~{a}o @code{to_lisp()} abre uma sess@~{a}o interativa Lisp.
Digitando @code{(to-maxima)} fecha a sess@~{a}o Lisp e retorna para o Maxima.
@c I DON'T EVEN WANT TO MENTION USING CTRL-C TO OPEN A LISP SESSION.
@c (1) IT TAKES EXTRA SET UP TO GET STARTED NAMELY :lisp (setq *debugger-hook* nil)
@c (2) IT GETS SCREWED UP EASILY -- TYPE SOMETHING WRONG AND YOU CAN'T GET BACK TO MAXIMA
@c (3) IT DOESN'T OFFER FUNCTIONALITY NOT PRESENT IN THE to_lisp() SESSION

Fun@value{cedilha}@~{o}es Lisp e vari@'{a}veis que s@~{a}o para serem vis@'{i}veis no Maxima como
fun@value{cedilha}@~{o}es e vari@'{a}veis com nomes comuns (sem pontua@value{cedilha}@~{a}o especial)
devem ter nomes Lisp come@value{cedilha}ando com o sinal de d@'{o}lar @code{$}.

Maxima @'{e} sens@'{i}vel @`a caixa, distingue entre letras em caixa alta (mai@'{u}sculas) e letras em caixa baixa (min@'{u}sculas)
em identificadores, enquanto Lisp n@~{a}o @'{e} sens@'{i}vel @`a caixa.
Existem algumas regras governando a tradu@value{cedilha}@~{a}o de nomes entre o Lisp e o Maxima.

@enumerate
@item
Um identificador Lisp n@~{a}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, @'{e} ignorado.
E.g., Lisp @code{$foo}, @code{$FOO}, e @code{$Foo} todos correspondem a Maxima @code{foo}.
@item
Um identificador Lisp que est@'{a} todo em caixa alta ou todo em caixa baixa
e contido em barras verticais corresponde a um identificador Maxima com caixa invertida.
Isto @'{e}, caixa alta @'{e} alterada para caixa baixa e caixa baixa para caixa alta.
E.g., Lisp @code{|$FOO|} e @code{|$foo|}
corresponde a Maxima @code{foo} e @code{FOO}, respectivamente.
@item
Um identificador Lisp que @'{e} misto de caixa alta e caixa baixa
e contido entre barras verticais corresponde a um identificador Maxima com o mesma caixa.
E.g., Lisp @code{|$Foo|} corresponde a Maxima @code{Foo}.
@end enumerate

A macro Lisp @code{#$} permite o uso de express@~{o}es Maxima em c@'{o}digo Lisp.
@code{#$@var{expr}$} expande para uma express@~{a}o Lisp equivalente @`a express@~{a}o Maxima @var{expr}.

@example
(msetq $foo #$[x, y]$)
@end example

@noindent
Isso tem o mesmo efeito que digitar

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

@noindent
A fun@value{cedilha}@~{a}o Lisp @code{displa} imprime uma express@~{a}o em formato Maxima.

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

Fun@value{cedilha}@~{o}es definidas em Maxima n@~{a}o s@~{a}o fun@value{cedilha}@~{o}es comuns em Lisp.
A fun@value{cedilha}@~{a}o Lisp @code{mfuncall} chama uma fun@value{cedilha}@~{a}o Maxima.
Por exemplo:

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

Algumas fun@value{cedilha}@~{o}es Lisp possuem o mesmo nome que no pacote Maxima, a saber as seguintes.

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


@node Descartando, Documenta@value{cedilha}@~{a}o, Lisp e Maxima, Ajuda
@section Descartando
Computa@value{cedilha}@~{a}o simb@'{o}lica tende a criar um bom volume
de arquivos tempor@'{a}rios, e o efetivo manuseio disso pode ser crucial para sucesso
completo de alguns programas.

@c HOW MUCH OF THE FOLLOWING STILL HOLDS ??
@c WHAT ABOUT GC IN GCL ON MS WINDOWS ??
@c SHOULD WE SAY SOMETHING ABOUT GC FOR OTHER LISPS ??
Sob GCL, nos sistemas UNIX onde a chamada de sistema mprotect ( controle de acessso autorizado a uma regi@~{a}o de mem@'{o}ria) est@'{a} dispon@'{i}vel
(incluindo SUN OS 4.0 e algumas variantes de BSD) uma organiza@value{cedilha}@~{a}o de arquivos tempor@'{a}rios estratificada
est@'{a} dispon@'{i}vel.   Isso limita a organiza@value{cedilha}@~{a}o para p@'{a}ginas que tenham sido recentemente
escritas.    Veja a documenta@value{cedilha}@~{a}o da GCL sob ALLOCATE e GBC.   No
ambiente Lisp fazendo (setq si::*notify-gbc* t) ir@'{a} ajudar voc@^{e} a determinar quais
@'{a}reas podem precisar de mais espa@value{cedilha}o.

@node Documenta@value{cedilha}@~{a}o, Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Ajuda, Descartando, Ajuda
@section Documenta@value{cedilha}@~{a}o

@c SHOULD TALK ABOUT OTHER FORMS OF DOCUMENTATION ASIDE FROM ON-LINE MANUAL.

O manual on-line de usu@'{a}rio do Maxima pode ser visto em diferentes formas.
A partir da linha de comando interativa do Maxima, o manual de usu@'{a}rio
@'{e} visto em texto plano atrav@'{e}s do comando @code{?} (i.e., a fun@value{cedilha}@~{a}o @code{describe} ).
O manual de usu@'{a}rio @'{e} visto como hipertexto @code{info} atrav@'{e}s do programa visualizador @code{info}
e como uma web page atrav@'{e}s de qualquer navegador web comum.

@code{example} mostra exemplos de muitas fun@value{cedilha}@~{o}es do Maxima.
Por exemplo,

@example
(%i1) example (integrate);
@end example

retorna

@example
(%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
@end example

e sa@'{i}da adicional.

@node Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Ajuda,  , Documenta@value{cedilha}@~{a}o, Ajuda
@section Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Ajuda

@deffn {Fun@value{cedilha}@~{a}o} demo (@var{nomearquivo})
Avalia express@~{o}es Maxima em @var{nomearquivo} e mostra os resultados.
@code{demo} faz uma pausa ap@'{o}s avaliar cada express@~{a}o
e continua ap@'{o}s a conclus@~{a}o com um enter das entradas de usu@'{a}rio.
(Se executando em Xmaxima, @code{demo} pode precisar ver um ponto e v@'{i}rgula @code{;}
seguido por um enter.)

@code{demo} procura na lista de diret@'{o}rios
@code{file_search_demo} para achar @code{nomearquivo}.
Se o arquivo tiver o sufixo @code{dem},
o sufixo pode ser omitido.
Veja tamb@'{e}m @code{file_search}.

@code{demo} avalia seus argumento.
@code{demo} retorna o nome do arquivo de demonstra@value{cedilha}@~{a}o.

Exemplo:

@example
(%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) 
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} describe (@var{string})
@deffnx {Fun@value{cedilha}@~{a}o} describe (@var{string}, exact)
@deffnx {Fun@value{cedilha}@~{a}o} describe (@var{string}, inexact)
@ifinfo
@fnindex Ajuda
@end ifinfo

@code{describe(@var{string})} @'{e} equivalente a @code{describe(@var{string}, exact)}.

@code{describe(@var{string}, exact)} encontra um item com t@'{i}tulo igual
(case-insensitive)
a @var{string}, se existir tal item.

@code{describe(@var{string}, inexact)} encontra todos os itens documentados que contiverem @var{string} em seus t@'{i}tulos.
Se existe mais de um de tal item, Maxima solicita ao usu@'{a}rio selecionar
um item ou @'{i}tens para mostrar.

Na linha de comando interativa,
@code{? foo} (com um espa@value{cedilha}o entre @code{?} e @code{foo})
@'{e} equivalente a @code{describe("foo", exact)}.
e @code{?? foo} @'{e} equivalente a @code{describe("foo", inexact)}.

@code{describe("", inexact)} retorna uma lista de todos os t@'{o}picos documentados no manual on-line.

@code{describe} n@~{a}o avalia seu argumento.
@code{describe} retorna @code{true} se alguma documenta@value{cedilha}@~{a}o for encontrada, de outra forma retorna @code{false}.

Veja tamb@'{e}m @ref{Documenta@value{cedilha}@~{a}o}.

Exemplo:

@example
(%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.
     [...]
@end example

Nesse exemplo, @'{i}tens 7 e 8 foram selecionados
(a sa@'{i}da foi encurtada por raz@~{o}es tipogr@'{a}ficas e economico-financeiras como indicado por @code{[...]}.
Todos ou nenhum dos @'{i}tens poderia ter sido selecionado atrav@'{e}s da inser@value{cedilha}@~{a}o de @code{all} ou @code{none},
que podem ser abreviado para @code{a} ou para @code{n}, respectivamente.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} example (@var{t@'{o}pico})
@deffnx {Fun@value{cedilha}@~{a}o} example ()
@code{example (@var{topic})} mostra alguns exemplos de @var{t@'{o}pico},
que @'{e} um s@'{i}mbolo (n@~{a}o uma seq@"{u}@^{e}ncia de caracteres).
A maioria dos t@'{o}picos s@~{a}o nomes de fun@value{cedilha}@~{a}o.
@code{example ()} retorna a lista de todos os t@'{o}picos reconhecidos.

O nome do arquivo contendo os exemplos @'{e} dado pela
vari@'{a}vel global @code{manual_demo}, cujo valor padr@~{a}o @'{e} @code{"manual.demo"}.

@code{example} n@~{a}o avalia seu argumento.
@code{example} retorna @code{done}
a menos que ocorra um erro ou n@~{a}o exista o argumento fornecido pelo usu@'{a}rio, nesse caso @code{example}
retorna uma lista de todos os t@'{o}picos reconhecidos.

Exemplos:

@example
(%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
@end example

@end deffn

