~ubuntu-branches/debian/squeeze/maxima/squeeze

« back to all changes in this revision

Viewing changes to doc/info/pt.utf8/maxima.info-2

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2006-10-18 14:52:42 UTC
  • mto: (1.1.5 upstream)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20061018145242-vzyrm5hmxr8kiosf
Import upstream version 5.10.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
This is maxima.info, produced by makeinfo version 4.7 from maxima.texi.
 
2
 
 
3
   Esse é um Manual do Maxima no formato Texinfo
 
4
 
 
5
   Copyright 1994,2001 William F. Schelter
 
6
 
 
7
START-INFO-DIR-ENTRY
 
8
* Maxima: (maxima).     Um sistema de álgebra computacional.
 
9
END-INFO-DIR-ENTRY
 
10
 
 
11
 
 
12
File: maxima.info,  Node: Definições para Entrada e Saída,  Prev: Arquivos,  Up: Entrada e Saída
 
13
 
 
14
9.4 Definições para Entrada e Saída de Dados
 
15
============================================
 
16
 
 
17
 -- Variável de sistema: __
 
18
     `__' é a expressão de entrada atualmente sendo avaliada.  Isto é,
 
19
     enquanto um expressão de entrada <expr> está sendo avaliada, `__'
 
20
     é <expr>.
 
21
 
 
22
     `__' é atribuída à expressão de entrada antes de a entrada ser
 
23
     simplificada ou avaliada.  Todavia, o valor de `__' é simplificado
 
24
     (mas não avaliado) quando for mostrado.
 
25
 
 
26
     `__' é reconhecido por `batch' e `load'.  Em um arquivo processado
 
27
     por `batch', `__' tem o mesmo significado que na linha de comando
 
28
     interativa.  Em um arquivo processado por `load', `__' está
 
29
     associado à expressão de entrada mais recentemente informada no
 
30
     prompt interativo ou em um arquivo de lote (batch); `__' não é
 
31
     associado à expressões de entrada no arquivo que está sendo
 
32
     processado.  Em particular, quando `load (<nomedearquivo>)' for
 
33
     chamado a partir da linha de comando interativa, `__' é associado
 
34
     a `load (<filename>)' enquanto o arquivo está sendo processado.
 
35
 
 
36
     Veja também `_' e `%'.
 
37
 
 
38
     Exemplos:
 
39
 
 
40
          (%i1) print ("Eu fui chamada como", __);
 
41
          Eu fui chamada como print(Eu fui chamada como, __)
 
42
          (%o1)              print(Eu fui chamada como, __)
 
43
          (%i2) foo (__);
 
44
          (%o2)                     foo(foo(__))
 
45
          (%i3) g (x) := (print ("Expressão atual de entrada =", __), 0);
 
46
          (%o3) g(x) := (print("Expressão atual de entrada =", __), 0)
 
47
          (%i4) [aa : 1, bb : 2, cc : 3];
 
48
          (%o4)                       [1, 2, 3]
 
49
          (%i5) (aa + bb + cc)/(dd + ee + g(x));
 
50
                                         cc + bb + aa
 
51
          Expressão atual de entrada = --------------
 
52
                                        g(x) + ee + dd
 
53
                                          6
 
54
          (%o5)                        -------
 
55
                                       ee + dd
 
56
 
 
57
 
 
58
 -- Variável de sistema: _
 
59
     `_' é a mais recente expressão de  entrada (e.g., `%i1', `%i2',
 
60
     `%i3', ...).
 
61
 
 
62
     A `_' é atribuída à expressão de entrada antes dela ser
 
63
     simplificada ou avaliada.  Todavia, o valor de `_' é simplificado
 
64
     (mas não avaliado) quando for mostrado.
 
65
 
 
66
     `_' é reconhecido por `batch' e `load'.  Em um arquivo processado
 
67
     por `batch', `_' tem o mesmo significado que na linha de comando
 
68
     interativa.  Em um arquivo processado por load `load', `_' está
 
69
     associado à expressão de entrada mais recentemente avaliada na
 
70
     linha de comando interativa ou em um arquivo de lote; `_' não está
 
71
     associada a expressões de entrada no arquivo que está sendo
 
72
     processado.
 
73
 
 
74
     Veja também `__' e `%'.
 
75
 
 
76
     Exemplos:
 
77
 
 
78
          (%i1) 13 + 29;
 
79
          (%o1)                          42
 
80
          (%i2) :lisp $_
 
81
          ((MPLUS) 13 29)
 
82
          (%i2) _;
 
83
          (%o2)                          42
 
84
          (%i3) sin (%pi/2);
 
85
          (%o3)                           1
 
86
          (%i4) :lisp $_
 
87
          ((%SIN) ((MQUOTIENT) $%PI 2))
 
88
          (%i4) _;
 
89
          (%o4)                           1
 
90
          (%i5) a: 13$
 
91
          (%i6) b: 29$
 
92
          (%i7) a + b;
 
93
          (%o7)                          42
 
94
          (%i8) :lisp $_
 
95
          ((MPLUS) $A $B)
 
96
          (%i8) _;
 
97
          (%o8)                         b + a
 
98
          (%i9) a + b;
 
99
          (%o9)                          42
 
100
          (%i10) ev (_);
 
101
          (%o10)                         42
 
102
 
 
103
 
 
104
 -- Variável de sistema: %
 
105
     `%' é a expressão de saída (e.g., `%o1', `%o2', `%o3', ...)  mais
 
106
     recentemente calculada pelo Maxima, pode ou não ser mostrada.
 
107
 
 
108
     `%' é reconhecida por `batch' e `load'.  Em um arquivo processado
 
109
     por `batch', `%' tem o mesmo significado que na linha de comando
 
110
     interativa.  Em um arquivo processado por `load', `%' é associado
 
111
     à expressão de entrada mais recentemente calculada na linha de
 
112
     comando interativa ou em um arquivo de lote; `%' não está
 
113
     associada a expressões de saída no arquivo que está sendo
 
114
     processado.
 
115
 
 
116
     Veja também `_', `%%', e `%th'
 
117
 
 
118
 
 
119
 -- Variável de sistema: %%
 
120
     Em declaração composta, a saber `block', `lambda', ou `(<s_1>,
 
121
     ..., <s_n>)', `%%' é os valor da declaração anterior.  Por exemplo,
 
122
 
 
123
          block (integrate (x^5, x), ev (%%, x=2) - ev (%%, x=1));
 
124
          block ([prev], prev: integrate (x^5, x), ev (prev, x=2) - ev (prev, x=1));
 
125
 
 
126
     retornam o mesmo resultado, a saber `21/2'.
 
127
 
 
128
     Uma declaração composta pode compreender outras declarações
 
129
     compostas.  Pode uma declaração ser simples ou composta, `%%' é o
 
130
     valor da declaração anterior.  Por exemplo,
 
131
 
 
132
          block (block (a^n, %%*42), %%/6)
 
133
 
 
134
     retorna `7*a^n'.
 
135
 
 
136
     Dentro da declaração composta, o valor de `%%' pode ser
 
137
     inspecionado em uma parada de linha de comando, que é aberta pela
 
138
     execução da função `break'.  Por exemplo, na parada de linha de
 
139
     comando aberta por
 
140
 
 
141
          block (a: 42, break ())$
 
142
 
 
143
     digitando `%%;' retorna `42'.
 
144
 
 
145
     Na primeira declaração em uma declaração composta, ou fora de uma
 
146
     declaração composta, `%%' é indefinido.
 
147
 
 
148
     `%%'  reconhecido por `batch' e `load', e possem o mesmo
 
149
     significao que na linha de comando interativa.
 
150
 
 
151
     Veja também `%'.
 
152
 
 
153
 
 
154
 -- Variável de opção: %edispflag
 
155
     Valor padrão: `false'
 
156
 
 
157
     Quando `%edispflag' é `true', Maxima mostra `%e' para um expoente
 
158
     negativo como um quociente.  Por exemplo, `%e^-x' é mostrado como
 
159
     `1/%e^x'.
 
160
 
 
161
 
 
162
 -- Função: %th (<i>)
 
163
     O valor da <i>'ésima expressão prévia de saída.  Isto é, se a
 
164
     próxima expressão a ser calculada for a <n>'ésima saída, `%th
 
165
     (<m>)' será a (<n> - <m>)'ésima saída.
 
166
 
 
167
     `%th' é útil em arquivos `batch' ou para referir-se a um grupo de
 
168
     expressões de saída.  Por exemplo,
 
169
 
 
170
          block (s: 0, for i:1 thru 10 do s: s + %th (i))$
 
171
 
 
172
     escolhe `s' para a soma das últimas dez expressões de saída.
 
173
 
 
174
     `%th' é reconhecido por `batch' e `load'.  Em um arquivo
 
175
     processado por `batch', `%th' possue o mesmo significado que na
 
176
     linha de comando interativa.  Em um arquivo processado por `load',
 
177
     `%th' refere-se a expressões de saída mais recentemente calculadas
 
178
     na linha de comando interativa ou em um arquivo de lote; `%th' não
 
179
     se refere a expressões de saída no arquivo que está sendo
 
180
     processado.
 
181
 
 
182
     Veja também `%'.
 
183
 
 
184
 
 
185
 -- Símbolo especial: ?
 
186
     Como prefixo para uma função ou nome de variável, `?' significa que
 
187
     o nome é um nome Lisp, não um nome Maxima.  Por exemplo, `?round'
 
188
     significa a função Lisp `ROUND'.  Veja *Note Lisp e Maxima:: para
 
189
     mais sobre esse ponto.
 
190
 
 
191
     A notação `? word' (um ponto de interrogação seguido de uma
 
192
     palavra e separado desta por um espaço em branco) é equivalente a
 
193
     `describe ("word")'.
 
194
 
 
195
 
 
196
 -- Variável de opção: absboxchar
 
197
     Valor padrão: `!'
 
198
 
 
199
     `absboxchar' é o caracter usado para para desenhar o sinal de valor
 
200
     absoluto em torno de expressões que são maiores que uma linha de
 
201
     altura.
 
202
 
 
203
 
 
204
 -- Variável de opção: file_output_append
 
205
     Valor padrão: `false'
 
206
 
 
207
     `file_output_append' governa se funções de saída de arquivo anexam
 
208
     ao final ou truncam seu arquivo de saída.  Quando
 
209
     `file_output_append' for `true', tais funções anexam ao final de
 
210
     seu arquivo de saída.  De outra forma, o arquivo de saída é
 
211
     truncado.
 
212
 
 
213
     `save', `stringout', e `with_stdout' respeitam
 
214
     `file_output_append'.  Outras funções que escrevem arquivos de
 
215
     saída não respeitam `file_output_append'.  Em partivular, montagem
 
216
     de gráficos e traduções de funções sempre truncam seu arquivo de
 
217
     saída, e `tex' e `appendfile' sempre anexam ao final.
 
218
 
 
219
 
 
220
 -- Função: appendfile (<filename>)
 
221
     Adiciona ao final de <filename> uma transcrição do console.
 
222
     `appendfile' é o mesmo que `writefile', exceto que o arquivo
 
223
     transcrito, se já existe, terá sempre alguma coisa adicionada ao
 
224
     seu final.
 
225
 
 
226
     `closefile' fecha o arquivo transcrito que foi aberto
 
227
     anteriormente por `appendfile' ou por `writefile'.
 
228
 
 
229
 
 
230
 -- Função: batch (<filename>)
 
231
     Lê expressões Maxima do arquivo <filename> e as avalia.  `batch'
 
232
     procura pelo arquivo <filename> na lista `file_search_maxima'.
 
233
     Veja `file_search'.
 
234
 
 
235
     <filename> compreende uma seqüência de expressões Maxima, cada uma
 
236
     terminada com `;' ou `$'.  A varável especial `%' e a função `%th'
 
237
     referem-se a resultados prévios dentro do arquivo.  O arquivo pode
 
238
     incluir construções `:lisp'.  Espaços, tabulações, e o caracter de
 
239
     nova linha no arquivo serão ignorados.  um arquivo de entrada
 
240
     conveniente pode ser criado por um editor de texto ou pela função
 
241
     `stringout'.
 
242
 
 
243
     `batch' lê cada expressão de entrada de <filename>, mostra a
 
244
     entrada para o console, calcula a correspondente expressão de
 
245
     saída, e mostra a expressão de saída.  Rótulos de entrada são
 
246
     atribuídos para expressões de entrada e rótulos de saída são
 
247
     atribuídos para expressões de saída.  `batch' avalia toda
 
248
     expressão de entrada no arquivo a menos que exista um erro.  Se
 
249
     uma entrada de usuário for requisitada (by `asksign' ou
 
250
     `askinteger', por exemplo) `batch' interrompe para coletar a
 
251
     entrada requisitada e então continua.
 
252
 
 
253
     Isso possibilita interromper `batch' pela digitação de `control-C'
 
254
     no console.  O efeito de `control-C' depende da subjacente
 
255
     implementação do Lisp.
 
256
 
 
257
     `batch' tem muitos usos, tais como fornecer um reservatório para
 
258
     trabalhar linhas de comando, para fornecer demonstrações livres de
 
259
     erros, ou para ajudar a organizar alguma coisa na solução de
 
260
     problemas complexos.
 
261
 
 
262
     `batch' avalia seu argumento.  `batch' não possui valor de retorno.
 
263
 
 
264
     Veja também `load', `batchload', e `demo'.
 
265
 
 
266
 
 
267
 -- Função: batchload (<filename>)
 
268
     Lê expressões Maxima de <filename> e as avalia, sem mostrar a
 
269
     entrada ou expressões de saída e sem atribuir rótulos para
 
270
     expressões de saída.  Saídas impressas (tais como produzidas por
 
271
     `print' ou `describe') são mostradas, todavia.
 
272
 
 
273
     A variável especial `%' e a função `%th' referem-se a resultados
 
274
     anteriores do interpretador interativo, não a resultados dentro do
 
275
     arquivo.  O arquivo não pode incluir construções `:lisp'.
 
276
 
 
277
     `batchload' retorna o caminho de <filename>, como uma seqüência de
 
278
     caracteres.  `batchload' avalia seu argumento.
 
279
 
 
280
     Veja também `batch' e `load'.
 
281
 
 
282
 
 
283
 -- Função: closefile ()
 
284
     Fecha o arquivo transcrito aberto por `writefile' ou `appendfile'.
 
285
 
 
286
 
 
287
 -- Função: collapse (<expr>)
 
288
     Reduz <expr> fazendo com que todas as suas subexpressões comuns
 
289
     (i.e., iguais)  serem compartilhadas (i.e., usam a mesma células),
 
290
     dessa forma exonomizando espaço.  (`collapse' é uma subrotina
 
291
     usada pelo comando `optimize'.)  Dessa forma, chamar `collapse'
 
292
     pode ser útil após um `save' arquivo.  Você pode diminuir muitas
 
293
     expressões juntas pelo uso de `collapse ([<expr_1>, ...,
 
294
     <expr_n>])'.  Similarmente, você pode diminuir os elementos de um
 
295
     array `A' fazendo `collapse (listarray ('A))'.
 
296
 
 
297
 
 
298
 -- Função: concat (<arg_1>, <arg_2>, ...)
 
299
     Concatena seus argumentos.  Os argumentos devem obrigatóriamente
 
300
     serem avaliados para atomos.  O valor de retorno é um símbolo se o
 
301
     primeiro argumento for um símbolo e uma seqüência de caracteres no
 
302
     formato do Maxima em caso contrário.
 
303
 
 
304
     `concat' avalia seus argumentos.  O apóstrofo `'' evita avaliação.
 
305
 
 
306
          (%i1) y: 7$
 
307
          (%i2) z: 88$
 
308
          (%i3) concat (y, z/2);
 
309
          (%o3)                          744
 
310
          (%i4) concat ('y, z/2);
 
311
          (%o4)                          y44
 
312
 
 
313
     Um símbolo construído por `concat' pode ser atribuído a um valor e
 
314
     aparecer em expressões.  O operador de atribuição `::' (duplo dois
 
315
     pontos) avalia seu lado esquerdo.
 
316
 
 
317
          (%i5) a: concat ('y, z/2);
 
318
          (%o5)                          y44
 
319
          (%i6) a:: 123;
 
320
          (%o6)                          123
 
321
          (%i7) y44;
 
322
          (%o7)                          123
 
323
          (%i8) b^a;
 
324
                                         y44
 
325
          (%o8)                         b
 
326
          (%i9) %, numer;
 
327
                                         123
 
328
          (%o9)                         b
 
329
 
 
330
     Note que embora `concat (1, 2)' seja visto como um números, isso é
 
331
     uma seqüência de caracteres no formato do Maxima.
 
332
 
 
333
          (%i10) concat (1, 2) + 3;
 
334
          (%o10)                       12 + 3
 
335
 
 
336
 
 
337
 -- Função: sconcat (<arg_1>, <arg_2>, ...)
 
338
     Concatena seus argumentos em uma seqüência de caracteres.  Ao
 
339
     contrário de `concat', os argumentos arrumados não precisam ser
 
340
     atômicos.
 
341
 
 
342
     O resultado é uma seqüência de caracteres no format do Lisp.
 
343
 
 
344
          (%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
 
345
          (%o1)               xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
 
346
 
 
347
 
 
348
 -- Função: disp (<expr_1>, <expr_2>, ...)
 
349
     é como `display' mas somente os valores dos argumentos são
 
350
     mostrados em lugar de equações.  Isso é útil para argumentos
 
351
     complicados que não possuem nomes ou onde somente o valor do
 
352
     argumento é de interesse e não o nome.
 
353
 
 
354
 
 
355
 -- Função: dispcon (<tensor_1>, <tensor_2>, ...)
 
356
 -- Função: dispcon (all)
 
357
     Mostram as propriedades de contração de seus argumentos como foram
 
358
     dados para `defcon'.  `dispcon (all)' mostra todas as propriedades
 
359
     de contração que foram definidas.
 
360
 
 
361
 
 
362
 -- Função: display (<expr_1>, <expr_2>, ...)
 
363
     Mostra equações cujo lado esquerdo é <expr_i> não avaliado, e cujo
 
364
     lado direito é o valor da expressão centrada na linha.  Essa
 
365
     função é útil em blocos e em `for' declarações com o objetivo de
 
366
     ter resultados intermediários mostrados.  The Os argumentos para
 
367
     `display' são usualmente átomos, variáveis subscritas, ou chamadas
 
368
     de função.  Veja também `disp'.
 
369
 
 
370
          (%i1) display(B[1,2]);
 
371
                                                2
 
372
                                   B     = X - X
 
373
                                    1, 2
 
374
          (%o1)                            done
 
375
 
 
376
 
 
377
 -- Variável de opção: display2d
 
378
     Valor padrão: `true'
 
379
 
 
380
     Quando `display2d' é `false', O console visualizador é
 
381
     unidimensional ao invés de bidimensional.
 
382
 
 
383
 
 
384
 -- Variável de opção: display_format_internal
 
385
     Valor padrão: `false'
 
386
 
 
387
     Quando `display_format_internal' é `true', expressões são
 
388
     mostradas sem ser por caminhos que escondam a representação
 
389
     matemática interna.  O visualizador então corresponde ao que
 
390
     `inpart' retorna em lugar de `part'.
 
391
 
 
392
     Exemplos:
 
393
 
 
394
          User     part       inpart
 
395
          a-b;      A - B     A + (- 1) B
 
396
 
 
397
                     A            - 1
 
398
          a/b;       -         A B
 
399
                     B
 
400
                                 1/2
 
401
          sqrt(x);   sqrt(X)    X
 
402
 
 
403
                    4 X        4
 
404
          X*4/3;    ---        - X
 
405
                     3         3
 
406
 
 
407
 
 
408
 -- Função: dispterms (<expr>)
 
409
     Mostra <expr> em partes uma abaixo da outra.  Isto é, primeiro o
 
410
     operador de <expr> é mostrado, então cada parcela em uma adição,
 
411
     ou fatores em um produto, ou parte de uma expressão mais geral é
 
412
     mostrado separadamente.  Isso é útil se <expr> é muito larga para
 
413
     ser mostrada de outra forma.  Por exemplo se `P1', `P2', ...  são
 
414
     expressões muito largas então o programa visualizador pode sair
 
415
     fora do espaço de armazenamento na tentativa de mostrar `P1 + P2 +
 
416
     ...'  tudo de uma vez.  Todavia, `dispterms (P1 + P2 + ...)'
 
417
     mostra `P1', então abaixo disso `P2', etc.  Quando não usando
 
418
     `dispterms', se uma expressão exponencial é muito alta para ser
 
419
     mostrada como `A^B' isso aparece como `expt (A, B)' (ou como
 
420
     `ncexpt (A, B)' no caso de `A^^B').
 
421
 
 
422
 
 
423
 -- Variável de opção: error_size
 
424
     Valor padrão: 10
 
425
 
 
426
     `error_size' modifica mensagens de erro conforme o tamanho das
 
427
     expressões que aparecem nelas.  Se o tamanho de uma expressão
 
428
     (como determinado pela função Lisp `ERROR-SIZE') é maior que
 
429
     `error_size', a expressão é substituída na mensagem por um símbolo,
 
430
     e o o símbolo é atribuído à expressão.  Os símbolos são obtidos da
 
431
     lista `error_syms'.
 
432
 
 
433
     De outra forma, a expressão é menor que `error_size', e a
 
434
     expressão é mostrada na mensagem.
 
435
 
 
436
     Veja também `error' e `error_syms'.
 
437
 
 
438
     Exemplo:
 
439
 
 
440
     O tamanho de `U', como determinado por `ERROR-SIZE', é 24.
 
441
 
 
442
          (%i1) U: (C^D^E + B + A)/(cos(X-1) + 1)$
 
443
 
 
444
          (%i2) error_size: 20$
 
445
 
 
446
          (%i3) error ("Expressão exemplo é", U);
 
447
 
 
448
          Expressão exemplo é errexp1
 
449
           -- an error.  Quitting.  To debug this try debugmode(true);
 
450
          (%i4) errexp1;
 
451
                                      E
 
452
                                     D
 
453
                                    C   + B + A
 
454
          (%o4)                    --------------
 
455
                                   cos(X - 1) + 1
 
456
          (%i5) error_size: 30$
 
457
 
 
458
          (%i6) error ("Expressão exemplo é", U);
 
459
 
 
460
                                     E
 
461
                                    D
 
462
                                   C   + B + A
 
463
          Expressão exemplo é --------------
 
464
                                  cos(X - 1) + 1
 
465
           -- an error.  Quitting.  To debug this try debugmode(true);
 
466
 
 
467
 
 
468
 -- Variável de opção: error_syms
 
469
     Valor padrão: `[errexp1, errexp2, errexp3]'
 
470
 
 
471
     Em mensagens de erro, expressões mais largas que `error_size' são
 
472
     substituídas por símbolos, e os símbolos são escolhidos para as
 
473
     expressões.  Os símbolos são obtidos da lista `error_syms'.  A
 
474
     primeira expressão muito larga é substituída por `error_syms[1]',
 
475
     a segunda por `error_syms[2]', e assim por diante.
 
476
 
 
477
     Se houverem mais expressões muito largas que há elementos em
 
478
     `error_syms', símbolos são construídos automaticamente, com o
 
479
     <n>-ésimo símbolo equivalente a `concat ('errexp, <n>)'.
 
480
 
 
481
     Veja também `error' e `error_size'.
 
482
 
 
483
 
 
484
 -- Função: expt (<a>, <b>)
 
485
     Se uma expressão exponencial é muito alta para ser mostrada cmo
 
486
     `<a>^<b>' isso aparece como `expt (<a>, <b>)' (ou como `ncexpt
 
487
     (<a>, <b>)' no caso de `<a>^^<b>').
 
488
 
 
489
     `expt' e `ncexpt' não são reconhecidas em entradas.
 
490
 
 
491
 
 
492
 -- Variável de opção: exptdispflag
 
493
     Valor padrão: `true'
 
494
 
 
495
     Quando `exptdispflag' é `true', Maxima mostra expressões com
 
496
     expoente negativo usando quocientes, e.g., `X^(-1)' como `1/X'.
 
497
 
 
498
 
 
499
 -- Função: filename_merge (<path>, <filename>)
 
500
     Constroem um caminho modificado de <path> e <filename>.  Se o
 
501
     componente final de <path> é da forma `###.<algumacoisa>', o
 
502
     componente é substituído com `<filename>.<algumacoisa>'.  De outra
 
503
     forma, o componente final é simplesmente substituído por
 
504
     <filename>.
 
505
 
 
506
 
 
507
 -- Função: file_search (<filename>)
 
508
 -- Função: file_search (<filename>, <pathlist>)
 
509
     `file_search' procura pelo arquivo <filename> e retorna o caminho
 
510
     para o arquivo (como uma seqüência de caracteres) se ele for
 
511
     achado; de outra forma `file_search' retorna `false'.
 
512
     `file_search (<filename>)' procura nos diretórios padrões de busca,
 
513
     que são especificados pelas variáveis `file_search_maxima',
 
514
     `file_search_lisp', e `file_search_demo'.
 
515
 
 
516
     `file_search' primeiro verifica se o nome atual passado existe,
 
517
     antes de tentar coincidir esse nome atual com o modelo "coringa"
 
518
     de busca do arquivo.  Veja `file_search_maxima' concernente a
 
519
     modelos de busca de arquivos.
 
520
 
 
521
     O argumento <filename> pode ser um caminho e nome de arquivo, ou
 
522
     apenas um nome de arquivo, ou, se um diretório de busca de arquivo
 
523
     inclui um modelo de busca de arquivo, apenas a base do nome de
 
524
     arquivo (sem uma extensão).  Por exemplo,
 
525
 
 
526
          file_search ("/home/wfs/special/zeta.mac");
 
527
          file_search ("zeta.mac");
 
528
          file_search ("zeta");
 
529
 
 
530
     todos acham o mesmo arquivo, assumindo que o arquivo exista e
 
531
     `/home/wfs/special/###.mac' está em `file_search_maxima'.
 
532
 
 
533
     `file_search (<filename>, <pathlist>)' procura somente nesses
 
534
     diretórios especificados por <pathlist>, que é uma lista de
 
535
     seqüências de caracteres.  O argumento <pathlist> substitui os
 
536
     diretórios de busca padrão, então se a lista do caminho é dada,
 
537
     `file_search' procura somente nesses especificados, e não qualquer
 
538
     dos diretórios padrão de busca.  Mesmo se existe somente um
 
539
     diretório em <pathlist>, esse deve ainda ser dado como uma lista
 
540
     de um único elemento.
 
541
 
 
542
     O usuário pode modificar o diretório de busca padrão.  Veja
 
543
     `file_search_maxima'.
 
544
 
 
545
     `file_search' é invocado por `load' com `file_search_maxima' e
 
546
     `file_search_lisp' como diretórios de busca.
 
547
 
 
548
 
 
549
 -- Variável de opção: file_search_maxima
 
550
 -- Variável de opção: file_search_lisp
 
551
 -- Variável de opção: file_search_demo
 
552
     Essas variáveis especificam listas de diretórios a serem procurados
 
553
     por `load', `demo', e algumas outras funções do Maxima.  O valor
 
554
     padrão dessas variáveis nomeia vários diretórios na instalaçã
 
555
     padrão do Maxima.
 
556
 
 
557
     O usuáro pode modificar essas variáveis, quer substituindo os
 
558
     valores padrão ou colocando no final diretórios adicionais.  Por
 
559
     exemplo,
 
560
 
 
561
          file_search_maxima: ["/usr/local/foo/###.mac",
 
562
              "/usr/local/bar/###.mac"]$
 
563
 
 
564
     substitui o valor padrão de `file_search_maxima', enquanto
 
565
 
 
566
          file_search_maxima: append (file_search_maxima,
 
567
              ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$
 
568
 
 
569
     adiciona no final da lista dois diretórios adicionais.  Isso pode
 
570
     ser conveniente para colocar assim uma expressão no arquivo
 
571
     `maxima-init.mac' de forma que o caminho de busca de arquivo é
 
572
     atribuído automaticamente quando o Maxima inicia.
 
573
 
 
574
     Multiplas extensões de arquivo e e multiplos caminhos podem ser
 
575
     especificados por construções "coringa" especiais.  A seqüência de
 
576
     caracteres `###' expande a busca para além do nome básico,
 
577
     enquanto uma lista separada por vírgulas e entre chaves
 
578
     `{foo,bar,baz}' expande em multiplas seqüências de caracteres.
 
579
     Por exemplo, supondo que o nome básico a ser procurado seja
 
580
     `neumann',
 
581
 
 
582
          "/home/{wfs,gcj}/###.{lisp,mac}"
 
583
 
 
584
     expande em `/home/wfs/neumann.lisp', `/home/gcj/neumann.lisp',
 
585
     `/home/wfs/neumann.mac', e `/home/gcj/neumann.mac'.
 
586
 
 
587
 
 
588
 -- Função: file_type (<filename>)
 
589
     Retorna uma suposta informação sobre o conteúdo de <filename>,
 
590
     baseada na extensão do arquivo.  <filename> não precisa referir-se
 
591
     a um arquivo atual; nenhuma tentativa é feita para abrir o arquivo
 
592
     e inspecionar seu conteúdo.
 
593
 
 
594
     O valor de retorno é um símbolo, qualquer um entre `object',
 
595
     `lisp', ou `maxima'.  Se a extensão começa com `m' ou `d',
 
596
     `file_type' retorna `maxima'.  Se a extensão começa om `l',
 
597
     `file_type' retorna `lisp'.  Se nenhum dos acima, `file_type'
 
598
     retorna `object'.
 
599
 
 
600
 
 
601
 -- Função: grind (<expr>)
 
602
 -- Variável de opção: grind
 
603
     A função `grind' imprime <expr> para o console em uma forma
 
604
     adequada de entrada para Maxima.  `grind' sempre retorna `done'.
 
605
 
 
606
     Quando <expr> for um nome de uma função ou o nome de uma macro,
 
607
     `grind' mostra na tela a definição da função ou da macro em lugar
 
608
     de apenas o nome.
 
609
 
 
610
     Veja também `string', que retorna uma seqüência de caracteres em
 
611
     lugar de imprimir sua saída.  `grind' tenta imprimir a expressão
 
612
     de uma maneira que a faz levemente mais fácil para ler que a saída
 
613
     de `string'.
 
614
 
 
615
     Quando a variável `grind' é `true', a saída de `string' e
 
616
     `stringout' tem o mesmo formato que `grind'; de outra forma
 
617
     nenhuma tentativa é feita para formatar especialmente a saída
 
618
     dessas funções.  O valor padrão da variável `grind' é `false'.
 
619
 
 
620
     `grind' pode também ser especificado como um argumento de
 
621
     `playback'.  Quando `grind' está presente, `playback' imprime
 
622
     expressões de entrada no mesmo formato que a função `grind'.  De
 
623
     outra forma, nenhuma tentativa é feita para formatar especialmente
 
624
     as expressões de entrada.  `grind' avalia seus argumentos.
 
625
 
 
626
     Exemplos:
 
627
 
 
628
          (%i1) aa + 1729;
 
629
          (%o1)                       aa + 1729
 
630
          (%i2) grind (%);
 
631
          aa+1729$
 
632
          (%o2)                         done
 
633
          (%i3) [aa, 1729, aa + 1729];
 
634
          (%o3)                 [aa, 1729, aa + 1729]
 
635
          (%i4) grind (%);
 
636
          [aa,1729,aa+1729]$
 
637
          (%o4)                         done
 
638
          (%i5) matrix ([aa, 17], [29, bb]);
 
639
                                     [ aa  17 ]
 
640
          (%o5)                      [        ]
 
641
                                     [ 29  bb ]
 
642
          (%i6) grind (%);
 
643
          matrix([aa,17],[29,bb])$
 
644
          (%o6)                         done
 
645
          (%i7) set (aa, 17, 29, bb);
 
646
          (%o7)                   {17, 29, aa, bb}
 
647
          (%i8) grind (%);
 
648
          {17,29,aa,bb}$
 
649
          (%o8)                         done
 
650
          (%i9) exp (aa / (bb + 17)^29);
 
651
                                          aa
 
652
                                      -----------
 
653
                                               29
 
654
                                      (bb + 17)
 
655
          (%o9)                     %e
 
656
          (%i10) grind (%);
 
657
          %e^(aa/(bb+17)^29)$
 
658
          (%o10)                        done
 
659
          (%i11) expr: expand ((aa + bb)^10);
 
660
                   10           9        2   8         3   7         4   6
 
661
          (%o11) bb   + 10 aa bb  + 45 aa  bb  + 120 aa  bb  + 210 aa  bb
 
662
                   5   5         6   4         7   3        8   2
 
663
           + 252 aa  bb  + 210 aa  bb  + 120 aa  bb  + 45 aa  bb
 
664
                  9        10
 
665
           + 10 aa  bb + aa
 
666
          (%i12) grind (expr);
 
667
          bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6
 
668
               +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2
 
669
               +10*aa^9*bb+aa^10$
 
670
          (%o12)                        done
 
671
          (%i13) string (expr);
 
672
          (%o13) bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6\
 
673
          +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2+10*aa^9*\
 
674
          bb+aa^10
 
675
          (%i14) cholesky (A):= block ([n : length (A), L : copymatrix (A),
 
676
          p : makelist (0, i, 1, length (A))], for i thru n do for j : i thru n do
 
677
          (x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1), if i = j then
 
678
          p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]), for i thru n do L[i, i] : 1 / p[i],
 
679
          for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
 
680
          (%i15) grind (cholesky);
 
681
          cholesky(A):=block(
 
682
                   [n:length(A),L:copymatrix(A),
 
683
                    p:makelist(0,i,1,length(A))],
 
684
                   for i thru n do
 
685
                       (for j from i thru n do
 
686
                            (x:L[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),
 
687
                             if i = j then p[i]:1/sqrt(x)
 
688
                                 else L[j,i]:x*p[i])),
 
689
                   for i thru n do L[i,i]:1/p[i],
 
690
                   for i thru n do (for j from i+1 thru n do L[i,j]:0),L)$
 
691
          (%o15)                        done
 
692
          (%i16) string (fundef (cholesky));
 
693
          (%o16) cholesky(A):=block([n:length(A),L:copymatrix(A),p:makelis\
 
694
          t(0,i,1,length(A))],for i thru n do (for j from i thru n do (x:L\
 
695
          [i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),if i = j then p[i]:1/sqrt(x\
 
696
          ) else L[j,i]:x*p[i])),for i thru n do L[i,i]:1/p[i],for i thru \
 
697
          n do (for j from i+1 thru n do L[i,j]:0),L)
 
698
 
 
699
 
 
700
 -- Variável de opção: ibase
 
701
     Valor padrão: 10
 
702
 
 
703
     Inteiros fornecidos dentro do Maxima são interpretados com
 
704
     respeito à base `ibase'.
 
705
 
 
706
     A `ibase' pode ser atribuído qualquer inteiro entre 2 e 35
 
707
     (decimal), inclusive.  Quando `ibase' é maior que 10, os numerais
 
708
     compreendem aos numerais decimais de 0 até 9 mais as letras
 
709
     maiúsculas do alfabeto A, B, C, ..., como necessário.  Os numerais
 
710
     para a base 35, a maior base aceitável, compreendem de 0 até 9 e
 
711
     de A até Y.
 
712
 
 
713
     Veja também `obase'.
 
714
 
 
715
 
 
716
 -- Variável de opção: inchar
 
717
     Valor padrão: `%i'
 
718
 
 
719
     `inchar' é o prefixo dos rótulos de expressões fornecidas pelo
 
720
     usuário.  Maxima automaticamente constrói um rótulo para cada
 
721
     expressão de entrada por concatenação de `inchar' e `linenum'.  A
 
722
     `inchar' pode ser atribuído qualquer seqüência de caracteres ou
 
723
     símbolo, não necessariamente um caracter simples.
 
724
 
 
725
          (%i1) inchar: "input";
 
726
          (%o1)                                input
 
727
          (input1) expand ((a+b)^3);
 
728
                                      3        2      2      3
 
729
          (%o1)                      b  + 3 a b  + 3 a  b + a
 
730
          (input2)
 
731
 
 
732
     Veja também `labels'.
 
733
 
 
734
 
 
735
 -- Função: ldisp (<expr_1>, ..., <expr_n>)
 
736
     Mostra expressões <expr_1>, ..., <expr_n> para o console como
 
737
     saída impressa na tela.  `ldisp' atribue um rótulo de expressão
 
738
     intermediária a cada argumento e retorna a lista de rótulos.
 
739
 
 
740
     Veja também `disp'.
 
741
 
 
742
          (%i1) e: (a+b)^3;
 
743
                                             3
 
744
          (%o1)                       (b + a)
 
745
          (%i2) f: expand (e);
 
746
                               3        2      2      3
 
747
          (%o2)               b  + 3 a b  + 3 a  b + a
 
748
          (%i3) ldisp (e, f);
 
749
                                             3
 
750
          (%t3)                       (b + a)
 
751
 
 
752
                               3        2      2      3
 
753
          (%t4)               b  + 3 a b  + 3 a  b + a
 
754
 
 
755
          (%o4)                      [%t3, %t4]
 
756
          (%i4) %t3;
 
757
                                             3
 
758
          (%o4)                       (b + a)
 
759
          (%i5) %t4;
 
760
                               3        2      2      3
 
761
          (%o5)               b  + 3 a b  + 3 a  b + a
 
762
 
 
763
 
 
764
 -- Função: ldisplay (<expr_1>, ..., <expr_n>)
 
765
     Mostra expressões <expr_1>, ..., <expr_n> para o console como
 
766
     saída impressa na tela.  Cada expressão é impressa como uma
 
767
     equação da forma `lhs = rhs' na qual `lhs' é um dos argumentos de
 
768
     `ldisplay' e `rhs' é seu valor.  Tipicamente cada argumento é uma
 
769
     variável.  `ldisp' atribui um rótulo de expressão intermediáia a
 
770
     cada equação e retorna a lista de rótulos.
 
771
 
 
772
     Veja também `display'.
 
773
 
 
774
          (%i1) e: (a+b)^3;
 
775
                                             3
 
776
          (%o1)                       (b + a)
 
777
          (%i2) f: expand (e);
 
778
                               3        2      2      3
 
779
          (%o2)               b  + 3 a b  + 3 a  b + a
 
780
          (%i3) ldisplay (e, f);
 
781
                                               3
 
782
          (%t3)                     e = (b + a)
 
783
 
 
784
                                 3        2      2      3
 
785
          (%t4)             f = b  + 3 a b  + 3 a  b + a
 
786
 
 
787
          (%o4)                      [%t3, %t4]
 
788
          (%i4) %t3;
 
789
                                               3
 
790
          (%o4)                     e = (b + a)
 
791
          (%i5) %t4;
 
792
                                 3        2      2      3
 
793
          (%o5)             f = b  + 3 a b  + 3 a  b + a
 
794
 
 
795
 
 
796
 -- Variável de opção: linechar
 
797
     Valor padrão: `%t'
 
798
 
 
799
     `linechar' é o refixo de rótulos de expressões intermediárias
 
800
     gerados pelo Maxima.  Maxima constrói um rótulo para cada
 
801
     expressão intermediária (se for mostrada) pela concatenação de
 
802
     `linechar' e `linenum'.  A `linechar' pode ser atribuído qualquer
 
803
     seqüência de caracteres ou símbolo, não necessáriamente um
 
804
     caractere simples.
 
805
 
 
806
     Expressões intermediárias podem ou não serem mostradas.  See
 
807
     `programmode' e `labels'.
 
808
 
 
809
 
 
810
 -- Variável de opção: linel
 
811
     Valor padrão: 79
 
812
 
 
813
     `linel' é a largura assumida (em caracteres) do console para o
 
814
     propósito de mostrar expressões.  A `linel' pode ser atribuído
 
815
     qualquer valor pelo usuário, embora valores muio pequenos ou muito
 
816
     grandes possam ser impraticáveis.  Textos impressos por funções
 
817
     internas do Maxima, tais como mensagens de erro e a saída de
 
818
     `describe', não são afetadas por `linel'.
 
819
 
 
820
 
 
821
 -- Variável de opção: lispdisp
 
822
     Valor padrão: `false'
 
823
 
 
824
     Quando `lispdisp' for `true', símbolos Lisp são mostrados com um
 
825
     ponto de interrogação `?' na frente.  De outra forma, símbolos
 
826
     Lisp serão mostrados sem o ponto de interrogaçõ na frente.
 
827
 
 
828
     Exemplos:
 
829
 
 
830
          (%i1) lispdisp: false$
 
831
          (%i2) ?foo + ?bar;
 
832
          (%o2)                       foo + bar
 
833
          (%i3) lispdisp: true$
 
834
          (%i4) ?foo + ?bar;
 
835
          (%o4)                      ?foo + ?bar
 
836
 
 
837
 
 
838
 -- Função: load (<nomedearquivo>)
 
839
     Avalia expressões em <nomedearquivo>, dessa forma conduzindo
 
840
     variáveis, funções, e outros objetos dentro do Maxima.  A
 
841
     associação de qualquer objeto existente é substituída pela
 
842
     associação recuperada de <nomedearquivo>.  Para achar o arquivo,
 
843
     `load' chama `file_search' com `file_search_maxima' e
 
844
     `file_search_lisp' como diretórios de busca.  Se `load' obtém
 
845
     sucesso, isso retorna o nome do arquivo.  De outra forma `load'
 
846
     imprime uma mensagem e erro.
 
847
 
 
848
     `load' trabalha igualmente bem para códigos Lisp e códigos Maxima.
 
849
     Arquivos criados por `save', `translate_file', e `compile_file',
 
850
     que criam códigos Lisp, e `stringout', que criam códigos Maxima,
 
851
     podem ser processadas por `load'.  `load' chama `loadfile' para
 
852
     carregar arquivos Lisp e `batchload' para carregar arquivos Maxima.
 
853
 
 
854
     `load' não reconhece construções `:lisp' em arquivos do Maxima, e
 
855
     quando processando <nomedearquivo>, as variáveis globais `_',
 
856
     `__', `%', e `%th' possuem as mesmas associações que possuiam
 
857
     quando `load' foi chamada.
 
858
 
 
859
     Veja também `loadfile', `batch', `batchload', e `demo'.
 
860
     `loadfile' processa arquivos Lisp; `batch', `batchload', e `demo'
 
861
     processam arquivos Maxima.
 
862
 
 
863
     Veja `file_search' para mais detalhes sobre o mecanismo de busca
 
864
     de arquivos.
 
865
 
 
866
     `load' avalia seu argumento.
 
867
 
 
868
 
 
869
 -- Função: loadfile (<nomedearquivo>)
 
870
     Avalia expressões Lisp em <nomedearquivo>.  `loadfile' não invoca
 
871
     `file_search', então `nomedearquivo' deve obrigatóriamente incluir
 
872
     a extensão do arquivo e tanto quanto o caminho como necessário
 
873
     para achar o arquivo.
 
874
 
 
875
     `loadfile' pode processar arquivos criados por `save',
 
876
     `translate_file', e `compile_file'.  O usuário pode achar isso
 
877
     mais conveniente para usar `load' em lugar de `loadfile'.
 
878
 
 
879
     `loadfile' avalia seu argumento, então `nomedearquivo' deve
 
880
     obrigatóriamente ser uma seqüência de caracteres literal, não uma
 
881
     variável do tipo seqüência de caracteres.  O operador
 
882
     apóstrofo-apóstrofo `''' não aceita avaliação.
 
883
 
 
884
 
 
885
 -- Variável de opção: loadprint
 
886
     Valor padrão: `true'
 
887
 
 
888
     `loadprint' diz se deve imprimir uma mensagem quando um arquivo é
 
889
     chamado.
 
890
 
 
891
        * Quando `loadprint' é `true', sempre imprime uma mensagem.
 
892
 
 
893
        * Quando `loadprint' é `'loadfile', imprime uma mensagem
 
894
          somente se um arquivo é chamado pela função `loadfile'.
 
895
 
 
896
        * Quando `loadprint' é `'autoload', imprime uma mensagem
 
897
          somente se um arquivo é automaticamente carregado.  Veja
 
898
          `setup_autoload'.
 
899
 
 
900
        * Quando `loadprint' é `false', nunca imprime uma mensagem.
 
901
 
 
902
 
 
903
 -- Variável de opção: obase
 
904
     Valor padrão: 10
 
905
 
 
906
     `obase' é a base para inteiros mostrados pelo Maxima.
 
907
 
 
908
     A `obase' poode ser atribuído qualquer inteiro entre 2 e 35
 
909
     (decimal), inclusive.  Quando `obase' é maior que 10, os numerais
 
910
     compreendem os numerais decimais de 0 até 9 e letras maiúsulas do
 
911
     alfabeto A, B, C, ..., quando necessário.  Os numerais para a base
 
912
     35, a maior base aceitável, compreendem de 0 até 9, e de A até Y.
 
913
 
 
914
     Veja também `ibase'.
 
915
 
 
916
 
 
917
 -- Variável de opção: outchar
 
918
     Valor padrão: `%o'
 
919
 
 
920
     `outchar' é o prefixo dos rótulos de expressões calculadas pelo
 
921
     Maxima.  Maxima automaticamente constrói um rótulo para cada
 
922
     expressão calculada pela concatenação de `outchar' e `linenum'.  A
 
923
     `outchar' pode ser atribuído qualquer seqüência de caracteres ou
 
924
     símbolo, não necessáriamente um caractere simples.
 
925
 
 
926
          (%i1) outchar: "output";
 
927
          (output1)                           output
 
928
          (%i2) expand ((a+b)^3);
 
929
                                      3        2      2      3
 
930
          (output2)                  b  + 3 a b  + 3 a  b + a
 
931
          (%i3)
 
932
 
 
933
     Veja também `labels'.
 
934
 
 
935
 
 
936
 -- Variável de opção: packagefile
 
937
     Valor padrão: `false'
 
938
 
 
939
     Projetistas de pacotes que usam `save' ou `translate' para criar
 
940
     pacotes (arquivos) para outros usarem podem querer escolher
 
941
     `packagefile: true' para prevenir qu informações sejam
 
942
     acrescentadas à lista de informações do Maxima (e.g. `values',
 
943
     `funções') exceto onde necessário quando o arquivo é carregado.
 
944
     Nesse caminho, o conteúdo do pacote não pegará no caminho do
 
945
     usuário quando ele adicionar seus próprios dados.  Note que isso
 
946
     não resolve o problema de possíveis conflitos de nome.  Também
 
947
     note que o sinalizador simplesmente afeta o que é saída para o
 
948
     arquivo pacote.  Escolhendo o sinalizador para `true' é também
 
949
     útil para criar arquivos de init do Maxima.
 
950
 
 
951
 
 
952
 -- Variável de opção: pfeformat
 
953
     Valor padrão: `false'
 
954
 
 
955
     Quando `pfeformat' é `true', uma razão de inteiros é mostrada com
 
956
     o caractere sólido (barra normal), e um denominador inteiro `n' é
 
957
     mostrado como um termo multiplicativo em primeiro lugar `1/n'.
 
958
 
 
959
          (%i1) pfeformat: false$
 
960
          (%i2) 2^16/7^3;
 
961
                                        65536
 
962
          (%o2)                         -----
 
963
                                         343
 
964
          (%i3) (a+b)/8;
 
965
                                        b + a
 
966
          (%o3)                         -----
 
967
                                          8
 
968
          (%i4) pfeformat: true$
 
969
          (%i5) 2^16/7^3;
 
970
          (%o5)                       65536/343
 
971
          (%i6) (a+b)/8;
 
972
          (%o6)                      1/8 (b + a)
 
973
 
 
974
 
 
975
 -- Função: print (<expr_1>, ..., <expr_n>)
 
976
     Avalia e mostra <expr_1>, ..., <expr_n> uma após a outra, da
 
977
     esquerda para a direita, iniciando no lado esquerdo do console.
 
978
 
 
979
     O valor retornado por `print' é o valor de seu último argumento.
 
980
     `print' não gera rótulos de expressão intermediária.
 
981
 
 
982
     Veja também `display', `disp', `ldisplay', e `ldisp'.  Essas
 
983
     funções mostram uma expressão por linha, enquanto `print' tenta
 
984
     mostrar duas ou mais expressões por linha.
 
985
 
 
986
     Para mostrar o conteúdo de um arquivo, veja `printfile'.
 
987
 
 
988
          (%i1) r: print ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is", radcan (log (a^10/b)))$
 
989
                      3        2      2      3
 
990
          (a+b)^3 is b  + 3 a b  + 3 a  b + a  log (a^10/b) is
 
991
 
 
992
                                                        10 log(a) - log(b)
 
993
          (%i2) r;
 
994
          (%o2)                  10 log(a) - log(b)
 
995
          (%i3) disp ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is", radcan (log (a^10/b)))$
 
996
                                     (a+b)^3 is
 
997
 
 
998
                               3        2      2      3
 
999
                              b  + 3 a b  + 3 a  b + a
 
1000
 
 
1001
                                   log (a^10/b) is
 
1002
 
 
1003
                                 10 log(a) - log(b)
 
1004
 
 
1005
 
 
1006
 -- Função: tcl_output (<list>, <i0>, <skip>)
 
1007
 -- Função: tcl_output (<list>, <i0>)
 
1008
 -- Função: tcl_output ([<list_1>, ..., <list_n>], <i>)
 
1009
     Imprime os elementos de uma lista entre chaves `{ }', conveniente
 
1010
     como parte de um programa na linguagem Tcl/Tk.
 
1011
 
 
1012
     `tcl_output (<list>, <i0>, <skip>)' imprime <list>, começando com
 
1013
     o elemento <i0> e imprimindo elementos `<i0> + <skip>', `<i0> + 2
 
1014
     <skip>', etc.
 
1015
 
 
1016
     `tcl_output (<list>, <i0>)' é equivalente a `tcl_output (<list>,
 
1017
     <i0>, 2)'.
 
1018
 
 
1019
     `tcl_output ([<list_1>, ..., <list_n>], <i>)' imprime os
 
1020
     <i>'ésimos elementos de <list_1>, ..., <list_n>.
 
1021
 
 
1022
     Exemplos:
 
1023
 
 
1024
          (%i1) tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$
 
1025
 
 
1026
           {1.000000000     4.000000000
 
1027
           }
 
1028
          (%i2) tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$
 
1029
 
 
1030
           {2.000000000     5.000000000
 
1031
           }
 
1032
          (%i3) tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$
 
1033
 
 
1034
           {((RAT SIMP) 3 7) ((RAT SIMP) 11 13)
 
1035
           }
 
1036
          (%i4) tcl_output ([x1, y1, x2, y2, x3, y3], 2)$
 
1037
 
 
1038
           {$Y1 $Y2 $Y3
 
1039
           }
 
1040
          (%i5) tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$
 
1041
 
 
1042
           {SIMP 1.000000000     11.00000000
 
1043
           }
 
1044
 
 
1045
 
 
1046
 -- Função: read (<expr_1>, ..., <expr_n>)
 
1047
     Imprime <expr_1>, ..., <expr_n>, então lê uma expressão do console
 
1048
     e retorna a expressão avaliada.  A expressão é terminada com um
 
1049
     ponto e vírgula `;' ou o sinal de dólar `$'.
 
1050
 
 
1051
     Veja também `readonly'.
 
1052
 
 
1053
          (%i1) foo: 42$
 
1054
          (%i2) foo: read ("foo is", foo, " -- enter new value.")$
 
1055
          foo is 42  -- enter new value.
 
1056
          (a+b)^3;
 
1057
          (%i3) foo;
 
1058
                                               3
 
1059
          (%o3)                         (b + a)
 
1060
 
 
1061
 
 
1062
 -- Função: readonly (<expr_1>, ..., <expr_n>)
 
1063
     Imprime <expr_1>, ..., <expr_n>, então lê uma expressão do console
 
1064
     e retorna a expressão (sem avaliação).  A expressão é terminada
 
1065
     com um `;' (ponto e vírgula) ou `$' (sinal de dólar).
 
1066
 
 
1067
          (%i1) aa: 7$
 
1068
          (%i2) foo: readonly ("Forneça uma expressão:");
 
1069
          Enter an expressão:
 
1070
          2^aa;
 
1071
                                            aa
 
1072
          (%o2)                            2
 
1073
          (%i3) foo: read ("Forneça uma expressão:");
 
1074
          Enter an expressão:
 
1075
          2^aa;
 
1076
          (%o3)                            128
 
1077
 
 
1078
     Veja também `read'.
 
1079
 
 
1080
 
 
1081
 -- Função: reveal (<expr>, <depth>)
 
1082
     Substitue partes de <expr> no inteiro especificado <depth> com
 
1083
     sumário descritivo.
 
1084
 
 
1085
        * Somas e diferenças são substituídas por `sum(<n>)' onde <n> é
 
1086
          o número de operandos do produto.
 
1087
 
 
1088
        * Produtos são substituídos por `product(<n>)' onde <n> é o
 
1089
          número de operandos da multiplicação.
 
1090
 
 
1091
        * Exponenciais são substituídos por `expt'.
 
1092
 
 
1093
        * Quocientes são substituídos por `quotient'.
 
1094
 
 
1095
        * Negação unária é substituída por `negterm'.
 
1096
 
 
1097
     Quando <depth> é maior que ou igual à máxima intensidade de <expr>,
 
1098
     `reveal (<expr>, <depth>)' retornam <expr> sem modificações.
 
1099
 
 
1100
     `reveal' avalia seus argumentos.  `reveal' retorna expressão
 
1101
     sumarizada.
 
1102
 
 
1103
     Exemplo:
 
1104
 
 
1105
          (%i1) e: expand ((a - b)^2)/expand ((exp(a) + exp(b))^2);
 
1106
                                    2            2
 
1107
                                   b  - 2 a b + a
 
1108
          (%o1)               -------------------------
 
1109
                                  b + a     2 b     2 a
 
1110
                              2 %e      + %e    + %e
 
1111
          (%i2) reveal (e, 1);
 
1112
          (%o2)                       quotient
 
1113
          (%i3) reveal (e, 2);
 
1114
                                       sum(3)
 
1115
          (%o3)                        ------
 
1116
                                       sum(3)
 
1117
          (%i4) reveal (e, 3);
 
1118
                               expt + negterm + expt
 
1119
          (%o4)               ------------------------
 
1120
                              product(2) + expt + expt
 
1121
          (%i5) reveal (e, 4);
 
1122
                                 2                 2
 
1123
                                b  - product(3) + a
 
1124
          (%o5)         ------------------------------------
 
1125
                                   product(2)     product(2)
 
1126
                        2 expt + %e           + %e
 
1127
          (%i6) reveal (e, 5);
 
1128
                                   2            2
 
1129
                                  b  - 2 a b + a
 
1130
          (%o6)              --------------------------
 
1131
                                 sum(2)     2 b     2 a
 
1132
                             2 %e       + %e    + %e
 
1133
          (%i7) reveal (e, 6);
 
1134
                                    2            2
 
1135
                                   b  - 2 a b + a
 
1136
          (%o7)               -------------------------
 
1137
                                  b + a     2 b     2 a
 
1138
                              2 %e      + %e    + %e
 
1139
 
 
1140
 
 
1141
 -- Variável de opção: rmxchar
 
1142
     Valor padrão: `]'
 
1143
 
 
1144
     `rmxchar' é the caractere desenhado lado direito de uma matriz.
 
1145
 
 
1146
     Veja também `lmxchar'.
 
1147
 
 
1148
 
 
1149
 -- Função: save (<filename>, <name_1>, <name_2>, <name_3>, ...)
 
1150
 -- Função: save (<filename>, values, functions, labels, ...)
 
1151
 -- Função: save (<filename>, [<m>, <n>])
 
1152
 -- Função: save (<filename>, <name_1>=<expr_1>, ...)
 
1153
 -- Função: save (<filename>, all)
 
1154
     Armazena os valores correntes de <name_1>, <name_2>, <name_3>,
 
1155
     ..., em <filename>.  Os argumentos são os nomes das variáveis,
 
1156
     funções, ou outros objetos.  Se um nome não possui valore ou
 
1157
     função associada a ele, esse nome sem nenhum valor ou função
 
1158
     associado será ignorado.  `save' retorna <filename>.
 
1159
 
 
1160
     `save' armazena dados na forma de expressões Lisp.  Os dados
 
1161
     armazenados por `save' podem ser recuperados por `load
 
1162
     (<filename>)'.
 
1163
 
 
1164
     O sinalizador global `file_output_append' governa se `save' anexa
 
1165
     ao final ou trunca o arquivo de saída.  Quando
 
1166
     `file_output_append' for `true', `save' anexa ao final doarquivo
 
1167
     de saída.  De outra forma, `save' trunca o arquivo de saída.
 
1168
     Nesse caso, `save' cria o arquivo se ele não existir ainda.
 
1169
 
 
1170
     A forma especial `save (<filename>, values, functions, labels,
 
1171
     ...)'  armazena os ítens nomeados por `values', `funções',
 
1172
     `labels', etc.  Os nomes podem ser quaisquer especificados pela
 
1173
     variável `infolists'.  `values' compreende todas as variáveis
 
1174
     definidas pelo usuário.
 
1175
 
 
1176
     A forma especial `save (<filename>, [<m>, <n>])' armazena os
 
1177
     valores de rótulos de entrada e saída de <m> até <n>.  Note que
 
1178
     <m> e <n> devem obrigatóriamente ser inteiros literais.  Rótulos
 
1179
     de entrada e saída podem também ser armazenados um a um, e.g.,
 
1180
     `save ("foo.1", %i42, %o42)'.  `save (<filename>, labels)'
 
1181
     armazena todos os rótulos de entrada e saída.  Quando rótulos
 
1182
     armazenados são recuperados, eles substituem rótulos existentes.
 
1183
 
 
1184
     A forma especial `save (<filename>, <name_1>=<expr_1>,
 
1185
     <name_2>=<expr_2>, ...)' armazena os valores de <expr_1>,
 
1186
     <expr_2>, ..., com nomes <name_1>, <name_2>, ....  Isso é útil
 
1187
     para aplicar essa forma para rótulos de entrada e saída, e.g.,
 
1188
     `save ("foo.1", aa=%o88)'.  O lado direito dessa igualdade nessa
 
1189
     forma pode ser qualquer expressão, que é avaliada.  Essa forma não
 
1190
     introduz os novos nomes no ambiente corrente do Maxima, mas
 
1191
     somente armazena-os em <filename>.
 
1192
 
 
1193
     Essa forma especial e a forma geral de `save' podem ser misturados.
 
1194
     Por exemplo, `save (<filename>, aa, bb, cc=42, funções, [11, 17])'.
 
1195
 
 
1196
     A forma especial `save (<filename>, all)' armazena o estado
 
1197
     corrente do Maxima.  Isso inclui todas as variáveis definidas pelo
 
1198
     usuário, funções, arrays, etc., bem como alguns ítens definidos
 
1199
     automaticamente.  Os ítes salvos incluem variáveis de sistema,
 
1200
     tais como `file_search_maxima' ou `showtime', se a elas tiverem
 
1201
     sido atribuídos novos valores pelo usuário; veja `myoptions'.
 
1202
 
 
1203
     `save' avalia seus argumentos.  <filename> deve obrigatóriamente
 
1204
     ser uma seqüência de caracteres, não uma variável tipo seqüência
 
1205
     de caracteres.  O primeiro e o último rótulos a salvar, se
 
1206
     especificado, devem obrigatóriamente serem inteiros.  O operador
 
1207
     apóstrofo-apóstrofo `''' avalia uma variável tipo seqüência de
 
1208
     caracteres para seu valor seqüência de caracteres, e.g., `s:
 
1209
     "foo.1"$ save (''s, all)$', e variáveis inteiras para seus valores
 
1210
     inteiros, e.g., `m: 5$ n: 12$ save ("foo.1", [''m, ''n])$'.
 
1211
 
 
1212
 
 
1213
 -- Variável de opção: savedef
 
1214
     Valor padrão: `true'
 
1215
 
 
1216
     Quando `savedef' é `true', a vesão Maxima de uma função de usuário
 
1217
     é preservada quando a função é traduzida.  Isso permite que a
 
1218
     definição seja mostrada por `dispfun' e autoriza a função a ser
 
1219
     editada.
 
1220
 
 
1221
     Quando `savedef' é `false', os nomes de funções traduzidas são
 
1222
     removidos da lista de `funções'.
 
1223
 
 
1224
 
 
1225
 -- Função: show (<expr>)
 
1226
     Mostra `expr' com os objetos indexados tendo índices covariantes
 
1227
     como subscritos, índices contravariantes como sobrescritos.  Os
 
1228
     índices derivativos são mostrados como subscritos, separados dos
 
1229
     índices covariantes por uma vírgula.
 
1230
 
 
1231
 
 
1232
 -- Função: showratvars (<expr>)
 
1233
     Retorna uma lista de variáveis expressão racional canônica (CRE)
 
1234
     na expressão `expr'.
 
1235
 
 
1236
     Veja também `ratvars'.
 
1237
 
 
1238
 
 
1239
 -- Variável de opção: stardisp
 
1240
     Valor padrão: `false'
 
1241
 
 
1242
     Quando `stardisp' é `true', multiplicação é mostrada com um
 
1243
     asterisco `*' entre os operandos.
 
1244
 
 
1245
 
 
1246
 -- Função: string (<expr>)
 
1247
     Converte `expr' para a notação linear do Maxima apenas como se
 
1248
     tivesse sido digitada.
 
1249
 
 
1250
     O valor de retorno de `string' é uma seqüência de caracteres, e
 
1251
     dessa forma não pode ser usada em um cálculo.
 
1252
 
 
1253
 
 
1254
 -- Variável Lisp: stringdisp
 
1255
     Valor padrão: `false'
 
1256
 
 
1257
     Quando `?stringdisp' for `true', seqüências de caracteres serão
 
1258
     mostradas contidas em aspas duplas.  De outra forma, aspas não são
 
1259
     mostradas.
 
1260
 
 
1261
     `?stringdisp' é sempre `true' quando mostrando uma definição de
 
1262
     função.
 
1263
 
 
1264
     `?stringdisp' é uma variável Lisp, então deve ser escrita com um
 
1265
     ponto de interrogação `?' na frente.
 
1266
 
 
1267
     Exemplos:
 
1268
 
 
1269
          (%i1) ?stringdisp: false$
 
1270
          (%i2) "This is an example string.";
 
1271
          (%o2)              This is an example string.
 
1272
          (%i3) foo () := print ("This is a string in a function definition.");
 
1273
          (%o3) foo() :=
 
1274
                        print("This is a string in a function definition.")
 
1275
          (%i4) ?stringdisp: true$
 
1276
          (%i5) "This is an example string.";
 
1277
          (%o5)             "This is an example string."
 
1278
 
 
1279
 
 
1280
 -- Função: stringout (<filename>, <expr_1>, <expr_2>, <expr_3>, ...)
 
1281
 -- Função: stringout (<filename>, [<m>, <n>])
 
1282
 -- Função: stringout (<filename>, input)
 
1283
 -- Função: stringout (<filename>, functions)
 
1284
 -- Função: stringout (<filename>, values)
 
1285
     `stringout' escreve expressões para um arquivo na mesma forma de
 
1286
     expressões que foram digitadas para entrada.  O arquivo pode então
 
1287
     ser usado como entrada para comandos `batch' ou `demo', e isso
 
1288
     pode ser editado para qualquer propósito.  `stringout' pode ser
 
1289
     executado enquanto `writefile' está em progresso.
 
1290
 
 
1291
     O sinalizador global `file_output_append' governa se `stringout'
 
1292
     anexa ao final ou trunca o arquivo de saída.  Quando
 
1293
     `file_output_append' for `true', `stringout' anexa ao final do
 
1294
     arquivo de sad'a.  De outra forma, `stringout' trunca o arquivo de
 
1295
     saída.  Nesse caso, `stringout' cria o arquivo de saída se ele não
 
1296
     existir ainda.
 
1297
 
 
1298
     A forma geral de `stringout' escreve os valores de um ou mais
 
1299
     expressões para o arquivo de saída.  Note que se uma expressão é
 
1300
     uma variável, somente o valor da variável é escrito e não o nome
 
1301
     da variável.  Como um útil caso especial, as expressões podem ser
 
1302
     rótulos de entrada (`%i1', `%i2', `%i3', ...) ou rótulos de saída
 
1303
     (`%o1', `%o2', `%o3', ...).
 
1304
 
 
1305
     Se `grind' é `true', `stringout' formata a saída usando o formato
 
1306
     `grind'.  De outra forma o formato `string' é usado.  Veja `grind'
 
1307
     e `string'.
 
1308
 
 
1309
     A forma especial `stringout (<filename>, [<m>, <n>])' escreve os
 
1310
     valores dos rótulos de entrada de m até n, inclusive.
 
1311
 
 
1312
     A forma especial `stringout (<filename>, input)' escreve todos os
 
1313
     rótulos de entrada para o arquivo.
 
1314
 
 
1315
     A forma especial `stringout (<filename>, functions)' escreve todas
 
1316
     as funções definidas pelo usuário (nomeadas pela lista global
 
1317
     `functions') para o arquivo.
 
1318
 
 
1319
     A forma especial `stringout (<filename>, values)' escreve todas as
 
1320
     variáveis atribuídas pelo usuário (nomeadas pela lista global
 
1321
     `values') para o arquivo.  Cada variável é impressa como uma
 
1322
     declaração de atribuição, com o nome da variável seguida de dois
 
1323
     pontos, e seu valor.  Note que a forma geral de `stringout' não
 
1324
     imprime variáveis como declarações de atribuição.
 
1325
 
 
1326
 
 
1327
 -- Função: tex (<expr>)
 
1328
 -- Função: tex (<rótulo>)
 
1329
 -- Função: tex (<expr>, <momearquivo>)
 
1330
 -- Função: tex (<label>, <nomearquivo>)
 
1331
     Imprime uma representação de uma expressão adequada para o sistema
 
1332
     TeX  de preparação de documento.  O resultado é um fragmento de um
 
1333
     documento, que pode ser copiado dentro de um documento maior.
 
1334
     Esse fragmento não pode ser processado de forma direta e isolada.
 
1335
 
 
1336
     `tex (<expr>)' imprime uma representação TeX da <expr> no console.
 
1337
 
 
1338
     `tex (<rótulo>)' imprime uma representação TeX de uma expressão
 
1339
     chamada <rótulo> e atribui a essa um rótulo de equação (a ser
 
1340
     mostrado à esquerda da expressão).  O rótulo de equação TeX é o
 
1341
     mesmo que o rótulo da equação no Maxima.
 
1342
 
 
1343
     `tex (<expr>, <nomearquivo>)' anexa ao final uma representação TeX
 
1344
     de <expr> no arquivo <nomearquivo>.  `tex' não avalia o argumento
 
1345
     <nomearquivo>; apóstrofo-apóstrofo `''' força a avaliação so
 
1346
     argumento.
 
1347
 
 
1348
     `tex (<rótulo>, <nomearquivo>)' anexa ao final uma representação
 
1349
     TeX da expressão chamada de <rótulo>, com um rótulo de equação, ao
 
1350
     arquivo <nomearquivo>.
 
1351
 
 
1352
     `tex' não avalia o argumento <nomearquivo>; apóstrofo-apóstrofo
 
1353
     `''' força a avaliação so argumento.  `tex' avalia seus argumentos
 
1354
     após testar esse argumento para ver se é um rótulo.  duplo
 
1355
     apóstrofo `''' força a avaliação do argumento, desse modo
 
1356
     frustrando o teste e prevenindo o rótulo.
 
1357
 
 
1358
     Veja também `texput'.
 
1359
 
 
1360
     Exemplos:
 
1361
 
 
1362
          (%i1) integrate (1/(1+x^3), x);
 
1363
                                              2 x - 1
 
1364
                            2            atan(-------)
 
1365
                       log(x  - x + 1)        sqrt(3)    log(x + 1)
 
1366
          (%o1)      - --------------- + ------------- + ----------
 
1367
                              6             sqrt(3)          3
 
1368
          (%i2) tex (%o1);
 
1369
          $$-{{\log \left(x^2-x+1\right)}\over{6}}+{{\arctan \left({{2\,x-1
 
1370
           }\over{\sqrt{3}}}\right)}\over{\sqrt{3}}}+{{\log \left(x+1\right)
 
1371
           }\over{3}}\leqno{\tt (\%o1)}$$
 
1372
          (%o2)                          (\%o1)
 
1373
          (%i3) tex (integrate (sin(x), x));
 
1374
          $$-\cos x$$
 
1375
          (%o3)                           false
 
1376
          (%i4) tex (%o1, "foo.tex");
 
1377
          (%o4)                          (\%o1)
 
1378
 
 
1379
 
 
1380
 -- Função: texput (<a>, <s>)
 
1381
 -- Função: texput (<a>, <s>, <operator_type>)
 
1382
 -- Função: texput (<a>, [<s_1>, <s_2>], matchfix)
 
1383
 -- Função: texput (<a>, [<s_1>, <s_2>, <s_3>], matchfix)
 
1384
     Escolhe a saída TeX para o átomo <a>, que pode ser um símbolo ou o
 
1385
     nome de um operador.
 
1386
 
 
1387
     `texput (<a>, <s>)' faz com que a função `tex' interpole a
 
1388
     seqüência de caracteres <s> dentro da saída TeX em lugar de <a>.
 
1389
 
 
1390
     `texput (<a>, <s>, <operator_type>)', onde <operator_type> é
 
1391
     `prefix', `infix', ou `postfix' faz com que a função `tex'
 
1392
     interpole <s> dentro da saída TeX em lugar de <a>, e coloca o
 
1393
     texto interpolado na posição apropriada.
 
1394
 
 
1395
     `texput (<a>, [<s_1>, <s_2>], matchfix)' faz com que a função
 
1396
     `tex' interpole <s_1> e <s_2> dentro da saída TeX sobre qualquer
 
1397
     lado dos argumentos de <a>.  Os argumentos (se mais de um) são
 
1398
     separados por vírgulas.
 
1399
 
 
1400
     `texput (<a>, [<s_1>, <s_2>, <s_3>], matchfix)' faz com que a
 
1401
     função `tex' interpole <s_1> e <s_2> dentro da saída TeX sobre
 
1402
     qualquer lado dos argumentos de <a>, com <s_3> separando os
 
1403
     argumentos.
 
1404
 
 
1405
     Exemplos:
 
1406
 
 
1407
          (%i1) texput (me,"\\mu_e");
 
1408
          (%o1)                         \mu_e
 
1409
          (%i2) tex (me);
 
1410
          $$\mu_e$$
 
1411
          (%o2)                         false
 
1412
          (%i3) texput (lcm, "\\mathrm{lcm}");
 
1413
          (%o3)                     \mathrm{lcm}
 
1414
          (%i4) tex (lcm (a, b));
 
1415
          $$\mathrm{lcm}\left(a , b\right)$$
 
1416
          (%o4)                         false
 
1417
          (%i5) prefix ("grad");
 
1418
          (%o5)                         grad
 
1419
          (%i6) texput ("grad", " \\nabla ", prefix);
 
1420
          (%o6)                          180
 
1421
          (%i7) tex (grad f);
 
1422
          $$ \nabla f$$
 
1423
          (%o7)                         false
 
1424
          (%i8) infix ("~");
 
1425
          (%o8)                           ~
 
1426
          (%i9) texput ("~", " \\times ", infix);
 
1427
          (%o9)                          180
 
1428
          (%i10) tex (a ~ b);
 
1429
          $$a \times b$$
 
1430
          (%o10)                        false
 
1431
          (%i11) postfix ("@");
 
1432
          (%o11)                          @
 
1433
          (%i12) texput ("@", "!!", postfix);
 
1434
          (%o12)                         160
 
1435
          (%i13) tex (x @);
 
1436
          $$x!!$$
 
1437
          (%o13)                        false
 
1438
          (%i14) matchfix ("<<", ">>");
 
1439
          (%o14)                         <<
 
1440
          (%i15) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
 
1441
          (%o15)              \langle ( \rangle , false)
 
1442
          (%i16) tex (<<a>>);
 
1443
          $$ \langle a \rangle $$
 
1444
          (%o16)                        false
 
1445
          (%i17) tex (<<a, b>>);
 
1446
          $$ \langle a , b \rangle $$
 
1447
          (%o17)                        false
 
1448
          (%i18) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"], matchfix);
 
1449
          (%o18)            \langle ( \rangle ,  \, | \,)
 
1450
          (%i19) tex (<<a>>);
 
1451
          $$ \langle a \rangle $$
 
1452
          (%o19)                        false
 
1453
          (%i20) tex (<<a, b>>);
 
1454
          $$ \langle a \, | \,b \rangle $$
 
1455
          (%o20)                        false
 
1456
 
 
1457
 
 
1458
 -- Função: system (<comando>)
 
1459
     Executa <comando> como um processo separado.  O comando é passado
 
1460
     ao shell padraõ para execução.  `system' não é suportado por todos
 
1461
     os sistemas operacionais, mas geralmente existe em ambientes Unix
 
1462
     e Unix-like.
 
1463
 
 
1464
     Supondo que `_hist.out' é uma lista de freqüência que você deseja
 
1465
     imprimir como um gráfico em barras usando `xgraph'.
 
1466
 
 
1467
          (%i1) (with_stdout("_hist.out",
 
1468
                     for i:1 thru length(hist) do (
 
1469
                       print(i,hist[i]))),
 
1470
                 system("xgraph -bar -brw .7 -nl < _hist.out"));
 
1471
 
 
1472
     Com o objetivo de fazer com que a impressão do gráfico seja
 
1473
     concluída em segundo plano (retornando o controle para o Maxima) e
 
1474
     remover o arquivo temporário após isso ter sido concluído faça:
 
1475
 
 
1476
          system("(xgraph -bar -brw .7 -nl < _hist.out;  rm -f _hist.out)&")
 
1477
 
 
1478
 
 
1479
 -- Variável de opção: ttyoff
 
1480
     Valor padrão: `false'
 
1481
 
 
1482
     Quando `ttyoff' é `true', expressões de saída não são mostradas.
 
1483
     Expressões de saída são ainda calculadas e atribuídas rótulos.
 
1484
     Veja `labels'.
 
1485
 
 
1486
     Textos impresso por funções internas do Maxima, tais como
 
1487
     mensagens de erro e a saída de `describe', não são afetadas por
 
1488
     `ttyoff'.
 
1489
 
 
1490
 
 
1491
 -- Função: with_stdout (<filename>, <expr_1>, <expr_2>, <expr_3>, ...)
 
1492
     Abre <filename> e então avalia <expr_1>, <expr_2>, <expr_3>, ....
 
1493
     Os valores dos argumentos não são armazenados em <filename>, mas
 
1494
     qualquer saída impressa gerada pela avaliação dos argumentos (de
 
1495
     `print', `display', `disp', ou `grind', por exemplo) vai para
 
1496
     <filename> em lugar do console.
 
1497
 
 
1498
     O sinalizador global `file_output_append' governa se `with_stdout'
 
1499
     anexa ao final ou trunca o arquivo de saída.  Quando
 
1500
     `file_output_append' for `true', `with_stdout' anexa ao final do
 
1501
     arquivo de saída.  De outra forma, `with_stdout' trunca o arquivo
 
1502
     de saída.  Nesse caso, `with_stdout' cria o arquivo se ele não
 
1503
     existir ainda.
 
1504
 
 
1505
     `with_stdout' retorna o valor do seu argumento final.
 
1506
 
 
1507
     Veja também `writefile'.
 
1508
 
 
1509
          (%i1) with_stdout ("tmp.out", for i:5 thru 10 do print (i, "! yields", i!))$
 
1510
          (%i2) printfile ("tmp.out")$
 
1511
          5 ! yields 120
 
1512
          6 ! yields 720
 
1513
          7 ! yields 5040
 
1514
          8 ! yields 40320
 
1515
          9 ! yields 362880
 
1516
          10 ! yields 3628800
 
1517
 
 
1518
 
 
1519
 -- Função: writefile (<filename>)
 
1520
     Começa escrevendo uma transcrição da sessão Maxima para <filename>.
 
1521
     Toda interação entre o usuário e Maxima é então gravada nesse
 
1522
     arquivo, da mesma forma que aparece no console.
 
1523
 
 
1524
     Como a transcrição é impressa no formato de saída do console, isso
 
1525
     não pode ser reaproveitado pelo Maxima.  Para fazer um arquivo
 
1526
     contendo expressões que podem ser reaproveitadas, veja `save' e
 
1527
     `stringout'.  `save' armazena expressões no formato Lisp, enquanto
 
1528
     `stringout' armazena expressões no formato Maxima.
 
1529
 
 
1530
     O efeito de executar `writefile' quando <filename> ainda existe
 
1531
     depende da implementação Lisp subjacente; o arquivo transcrito
 
1532
     pode ser substituído, ou o arquivo pode receber um anexo.
 
1533
     `appendfile' sempre anexa para o arquivo transcrito.
 
1534
 
 
1535
     Isso pode ser conveniente para executar `playback' após
 
1536
     `writefile' para salvar a visualização de interações prévias.
 
1537
     Como `playback' mostra somente as variáveis de entrada e saída
 
1538
     (`%i1', `%o1', etc.), qualquer saída gerada por uma declaração de
 
1539
     impressão em uma função (como oposição a um valor de retorno) não
 
1540
     é mostrada por `playback'.
 
1541
 
 
1542
     `closefile' fecha o arquivo transcrito aberto por `writefile' ou
 
1543
     `appendfile'.
 
1544
 
 
1545
 
 
1546
 
 
1547
File: maxima.info,  Node: Ponto Flutuante,  Next: Contextos,  Prev: Entrada e Saída,  Up: Top
 
1548
 
 
1549
10 Ponto Flutuante
 
1550
******************
 
1551
 
 
1552
* Menu:
 
1553
 
 
1554
* Definições para ponto Flutuante::
 
1555
 
 
1556
 
 
1557
File: maxima.info,  Node: Definições para ponto Flutuante,  Prev: Ponto Flutuante,  Up: Ponto Flutuante
 
1558
 
 
1559
10.1 Definições para ponto Flutuante
 
1560
====================================
 
1561
 
 
1562
 -- Função: bffac (<expr>, <n>)
 
1563
     Versão para grandes números em ponto flutuante da função
 
1564
     `factorial' (usa o artifício gamma).  O segundo argumento informa
 
1565
     quantos dígitos reter e retornar, isso é uma boa idéia para
 
1566
     requisitar precisão adicional.
 
1567
 
 
1568
     `load ("bffac")' chama essa função.
 
1569
 
 
1570
 
 
1571
 -- Variável de Opção: algepsilon
 
1572
     Valor padrão: 10^8
 
1573
 
 
1574
     `algepsilon' é usada por `algsys'.
 
1575
 
 
1576
 
 
1577
 -- Função: bfloat (<expr>)
 
1578
     Converte todos os números e funções de números em <expr> para
 
1579
     grandes números em ponto flutuante (bigfloat).  O número de
 
1580
     algarismos significativos no grande número em ponto flutuante
 
1581
     resultante é especificado através da variável global `fpprec'.
 
1582
 
 
1583
     Quando `float2bf' for `false' uma mensagem de alerta é mostrada
 
1584
     quando uma número em ponto flutuante (float) é convertido em um
 
1585
     grande número em ponto flutuante (bigfloat - uma vez que isso pode
 
1586
     resultar em perda de precisão).
 
1587
 
 
1588
 
 
1589
 -- Função: bfloatp (<expr>)
 
1590
     Retorna `true' se a avaliação da <expr> resultar em um grande
 
1591
     número em ponto flutuante, de outra forma retorna `false'.
 
1592
 
 
1593
 
 
1594
 -- Função: bfpsi (<n>, <z>, <fpprec>)
 
1595
 -- Função: bfpsi0 (<z>, <fpprec>)
 
1596
     `bfpsi' é a função `polygamma' de argumentos reais <z> e ordem de
 
1597
     inteiro <n>.  `bfpsi0' é a função `digamma'.  `bfpsi0 (<z>,
 
1598
     <fpprec>)' é equivalente a `bfpsi (0, <z>, <fpprec>)'.
 
1599
 
 
1600
     Essas funções retornam valores em grandes números em ponto
 
1601
     flutuante.  <fpprec> é a precisão do valor de retorno dos grandes
 
1602
     números em ponto flutuante.
 
1603
 
 
1604
     `load ("bffac")' chama essas funções.
 
1605
 
 
1606
 
 
1607
 -- Variável de Opção: bftorat
 
1608
     Valor padrão: `false'
 
1609
 
 
1610
     `bftorat' controla a conversão de `bfloats' para números racionais.
 
1611
     Quando `bftorat' for `false', `ratepsilon' será usada para
 
1612
     controlar a conversão (isso resulta em números racionais
 
1613
     relativametne pequenos).  Quando `bftorat' for `true', o número
 
1614
     racional gerado irá representar precisamente o `bfloat'.
 
1615
 
 
1616
 
 
1617
 -- Variável de Opção: bftrunc
 
1618
     Valor padrão: `true'
 
1619
 
 
1620
     `bftrunc' faz com que tilhas de zeros em grandes números em ponto
 
1621
     flutuante diferentes de zero sejam ocultadas.  Desse modo, se
 
1622
     `bftrunc' for `false', `bfloat (1)' será mostrado como
 
1623
     `1.000000000000000B0'. De outra forma, será mostrado como `1.0B0'.
 
1624
 
 
1625
 
 
1626
 -- Função: cbffac (<z>, <fpprec>)
 
1627
     Fatorial complexo de grandes números em ponto flutuante.
 
1628
 
 
1629
     `load ("bffac")' chama essa função.
 
1630
 
 
1631
 
 
1632
 -- Função: float (<expr>)
 
1633
     Converte inteiros, números racionais e grandes números em ponto
 
1634
     flutuante em <expr> para números em ponto flutuante.  Da mesma
 
1635
     forma um `evflag', `float' faz com que números racionais
 
1636
     não-inteiros e grandes números em ponto flutuante sejam
 
1637
     convertidos para ponto flutuante.
 
1638
 
 
1639
 
 
1640
 -- Variável de Opção: float2bf
 
1641
     Valor padrão: `false'
 
1642
 
 
1643
     Quando `float2bf' for `false', uma mensagem de alerta é mostrada
 
1644
     quando um número em ponto flutuante é convertido em um grande
 
1645
     número em ponto flutuante (uma vez que isso pode resultar em perda
 
1646
     de precisão).
 
1647
 
 
1648
 
 
1649
 -- Função: floatnump (<expr>)
 
1650
     Retorna `true' se <expr> for um número em ponto flutuante, de
 
1651
     outra forma retorna `false'.
 
1652
 
 
1653
 
 
1654
 -- Variável de Opção: fpprec
 
1655
     Valor padrão: 16
 
1656
 
 
1657
     `fpprec' é o número de algarismos significativos para aritmética
 
1658
     sobre grandes números em ponto flutuante `fpprec' não afeta
 
1659
     cálculos sobre números em ponto flutuante comuns.
 
1660
 
 
1661
     Veja também `bfloat' e `fpprintprec'.
 
1662
 
 
1663
 
 
1664
 -- Variável de Opção: fpprintprec
 
1665
     Valor padrão: 0
 
1666
 
 
1667
     `fpprintprec' é o n;umero de dígitos a serem mostrados na tela
 
1668
     quando no caso de nuúmeros em ponto flutuante e no caso de grandes
 
1669
     números em ponto flutuante.
 
1670
 
 
1671
     Para números em ponto flutuante comuns, quando `fpprintprec' tiver
 
1672
     um valor entre 2 e 16  (inclusive), o n;umero de dígitos mostrado
 
1673
     na tela é igual a `fpprintprec'.  De outra forma, `fpprintprec' é
 
1674
     0, ou maior que 16, e o número de dígitos mostrados é 16.
 
1675
 
 
1676
     Para grandes números em ponto flutuante, quando `fpprintprec'
 
1677
     tiver um valor entre 2 e `fpprec' (inclusive), o n;umero de
 
1678
     dígitos mostrados é giaul a `fpprintprec'.  De outra forma,
 
1679
     `fpprintprec' é 0, ou maior que `fpprec', e o n;umero de dígitos
 
1680
     mostrados é igual a `fpprec'.
 
1681
 
 
1682
     `fpprintprec' não pode ser 1.
 
1683
 
 
1684
 
 
1685
 -- Função Lisp: ?round (<x>)
 
1686
 -- Função Lisp: ?round (<x>, <divisor>)
 
1687
     Arredonda o ponto flutuante <x> para o inteiro mais próximo.   O
 
1688
     argumento obrigatoriamente deve ser um ponto flutuante comum, não
 
1689
     um grandes números em ponto flutuante.   A `?' começando o nome
 
1690
     indica que isso é uma função Lisp.
 
1691
 
 
1692
          (%i1) ?round (-2.8);
 
1693
          (%o1)                            - 3
 
1694
 
 
1695
 
 
1696
 -- Função Lisp: ?truncate (<x>)
 
1697
 -- Função Lisp: ?truncate (<x>, <divisor>)
 
1698
     Trunca o ponto flutuante <x> na direção do 0, para transormar-se
 
1699
     em um inteiro.   O argumento deve ser um número em ponto flutuante
 
1700
     comum, não um grandes números em ponto flutuante.  A `?'
 
1701
     começando o nome indica que isso é uma função Lisp.
 
1702
 
 
1703
          (%i1) ?truncate (-2.8);
 
1704
          (%o1)                            - 2
 
1705
          (%i2) ?truncate (2.4);
 
1706
          (%o2)                             2
 
1707
          (%i3) ?truncate (2.8);
 
1708
          (%o3)                             2
 
1709
 
 
1710
 
 
1711
 
 
1712
File: maxima.info,  Node: Contextos,  Next: Polinômios,  Prev: Ponto Flutuante,  Up: Top
 
1713
 
 
1714
11 Contextos
 
1715
************
 
1716
 
 
1717
* Menu:
 
1718
 
 
1719
* Definições para Contextos::
 
1720
 
 
1721
 
 
1722
File: maxima.info,  Node: Definições para Contextos,  Prev: Contextos,  Up: Contextos
 
1723
 
 
1724
11.1 Definições para Contextos
 
1725
==============================
 
1726
 
 
1727
 -- Função: activate (<context_1>, ..., <context_n>)
 
1728
     Ativa os contextos <context_1>, ..., <context_n>.  Os fatos nesses
 
1729
     contextos estão então disponíveis para fazer deduções e recuperar
 
1730
     informação.  Os fatos nesses contextos não são listadas através de
 
1731
     `facts ()'.
 
1732
 
 
1733
     A variável `activecontexts' é a lista de contextos que estão
 
1734
     ativos pelo caminho da função `activate'.
 
1735
 
 
1736
 
 
1737
 -- Variável de sistema: activecontexts
 
1738
     Valor padrão: `[]'
 
1739
 
 
1740
     `activecontexts' é a lista de contextos que estão ativos pelo
 
1741
     caminho da função `activate', em oposição a sendo ativo porque
 
1742
     eles são subcontextos do contexto corrente.
 
1743
 
 
1744
 
 
1745
 -- Função: assume (<pred_1>, ..., <pred_n>)
 
1746
     Adiciona predicados <pred_1>, ..., <pred_n> ao contexto corrente.
 
1747
     Se um predicado for incossistente ou redundante com os predicados
 
1748
     no contexto corrente, esses predicados não são adicionados ao
 
1749
     contexto.  O contexto acumula predicados de cada chamada a
 
1750
     `assume'.
 
1751
 
 
1752
     `assume' retorna uma lista cujos elementos são os predicados
 
1753
     adicionados ao contexto ou os átomos `redundant' ou `inconsistent'
 
1754
     onde for aplicável.
 
1755
 
 
1756
     Os predicados <pred_1>, ..., <pred_n> podem somente ser expressões
 
1757
     com os operadores relacionais `< <= equal notequal >=' e `>'.
 
1758
     Predicados não podem ser expressões de igualdades literais `=' ou
 
1759
     expressões de desigualdades literais `#', nem podem elas serem
 
1760
     funções de predicado tais como `integerp'.
 
1761
 
 
1762
     Predicados combinados da forma `<pred_1> and ... and <pred_n>' são
 
1763
     reconhecidos, mas não `<pred_1> or ... or <pred_n>'.  `not
 
1764
     <pred_k>' é reconhecidos se <pred_k> for um predicado relacional.
 
1765
     Expressões da forma `not (<pred_1> and <pred_2>)' and `not
 
1766
     (<pred_1> or <pred_2>)' não são reconhecidas.
 
1767
 
 
1768
     O mecanismo de dedução do Maxima não é muito forte; exitem
 
1769
     conseqüências muito óbvias as quais não podem ser determinadas por
 
1770
     meio de `is'.  Isso é uma fraqueza conhecida.
 
1771
 
 
1772
     `assume' avalia seus argumentos.
 
1773
 
 
1774
     Veja também `is', `facts', `forget', `context', e `declare'.
 
1775
 
 
1776
     Exemplos:
 
1777
 
 
1778
          (%i1) assume (xx > 0, yy < -1, zz >= 0);
 
1779
          (%o1)              [xx > 0, yy < - 1, zz >= 0]
 
1780
          (%i2) assume (aa < bb and bb < cc);
 
1781
          (%o2)                  [bb > aa, cc > bb]
 
1782
          (%i3) facts ();
 
1783
          (%o3)     [xx > 0, - 1 > yy, zz >= 0, bb > aa, cc > bb]
 
1784
          (%i4) is (xx > yy);
 
1785
          (%o4)                         true
 
1786
          (%i5) is (yy < -yy);
 
1787
          (%o5)                         true
 
1788
          (%i6) is (sinh (bb - aa) > 0);
 
1789
          (%o6)                         true
 
1790
          (%i7) forget (bb > aa);
 
1791
          (%o7)                       [bb > aa]
 
1792
          (%i8) prederror : false;
 
1793
          (%o8)                         false
 
1794
          (%i9) is (sinh (bb - aa) > 0);
 
1795
          (%o9)                        unknown
 
1796
          (%i10) is (bb^2 < cc^2);
 
1797
          (%o10)                       unknown
 
1798
 
 
1799
 
 
1800
 -- Variável de opção: assumescalar
 
1801
     Valor padrão: `true'
 
1802
 
 
1803
     `assumescalar' ajuda a governar se expressões `expr' para as quais
 
1804
     `nonscalarp (expr)' for `false' são assumidas comportar-se como
 
1805
     escalares para certas transformações.
 
1806
 
 
1807
     Tomemos `expr' representando qualquer expressão outra que não uma
 
1808
     lista ou uma matriz, e tomemos `[1, 2, 3]' representando qualquer
 
1809
     lista ou matriz.  Então `expr . [1, 2, 3]' retorna `[expr, 2 expr,
 
1810
     3 expr]' se `assumescalar' for `true', ou `scalarp (expr)' for
 
1811
     `true', ou `constantp (expr)' for `true'.
 
1812
 
 
1813
     Se `assumescalar' for `true', tais expressões irão comportar-se
 
1814
     como escalares somente para operadores comutativos, mas não para
 
1815
     multiplicação não comutativa `.'.
 
1816
 
 
1817
     Quando `assumescalar' for `false', tais expressões irão
 
1818
     comportar-se como não escalares.
 
1819
 
 
1820
     Quando `assumescalar' for `all', tais expressões irão comportar-se
 
1821
     como escalares para todos os operadores listados acima.
 
1822
 
 
1823
 
 
1824
 -- Variável de opção: assume_pos
 
1825
     Valor padrão: `false'
 
1826
 
 
1827
     Quando `assume_pos' for `true' e o sinal de um parâmetro <x> não
 
1828
     pode ser determinado a partir do contexto corrente ou outras
 
1829
     considerações, `sign' e `asksign (<x>)' retornam `true'.  Isso
 
1830
     pode impedir algum questionamento de `asksign' gerado
 
1831
     automaticamente, tal como pode surgir de `integrate' ou de outros
 
1832
     cálculos.
 
1833
 
 
1834
     Por padrão, um parâmetro é <x> tal como `symbolp (<x>)' or
 
1835
     `subvarp (<x>)'.  A classe de expressões consideradas parâmetros
 
1836
     pode ser modificada para alguma abrangência através da variável
 
1837
     `assume_pos_pred'.
 
1838
 
 
1839
     `sign' e `asksign' tentam deduzir o sinal de expressões a partir
 
1840
     de sinais de operandos dentro da expressão.  Por exemplo, se `a' e
 
1841
     `b' são ambos positivos, então `a + b' é também positivo.
 
1842
 
 
1843
     Todavia, não existe caminho para desviar todos os questionamentos
 
1844
     de `asksign'.  Particularmente, quando o argumento de `asksign'
 
1845
     for uma diferença `<x> - <y>' ou um logarítmo `log(<x>)',
 
1846
     `asksign' sempre solicita uma entrada ao usuário, mesmo quando
 
1847
     `assume_pos' for `true' e `assume_pos_pred' for uma função que
 
1848
     retorna `true' para todos os argumentos.
 
1849
 
 
1850
 
 
1851
 -- Variável de opção: assume_pos_pred
 
1852
     Valor padrão: `false'
 
1853
 
 
1854
     Quando `assume_pos_pred' for atribuído o nome de uma função ou uma
 
1855
     expressão lambda de um argumento <x>, aquela função é chamada para
 
1856
     determinar se <x> é considerado um parâmetro para o propósito de
 
1857
     `assume_pos'.  `assume_pos_pred' é ignorado quando `assume_pos'
 
1858
     for `false'.
 
1859
 
 
1860
     A função `assume_pos_pred' é chamada através de `sign' e de
 
1861
     `asksign' com um argumento <x> que é ou um átomo, uma variável
 
1862
     subscrita, ou uma expressão de chamada de função.  Se a função
 
1863
     `assume_pos_pred' retorna `true', <x> é considerado um parâmetro
 
1864
     para o propósito de `assume_pos'.
 
1865
 
 
1866
     Por padrão, um parâmetro é <x> tal que `symbolp (x)' ou `subvarp
 
1867
     (x)'.
 
1868
 
 
1869
     Veja também `assume' e `assume_pos'.
 
1870
 
 
1871
     Exemplos:
 
1872
 
 
1873
          (%i1) assume_pos: true$
 
1874
          (%i2) assume_pos_pred: symbolp$
 
1875
          (%i3) sign (a);
 
1876
          (%o3)                          pos
 
1877
          (%i4) sign (a[1]);
 
1878
          (%o4)                          pnz
 
1879
          (%i5) assume_pos_pred: lambda ([x], display (x), true)$
 
1880
          (%i6) asksign (a);
 
1881
                                        x = a
 
1882
 
 
1883
          (%o6)                          pos
 
1884
          (%i7) asksign (a[1]);
 
1885
                                       x = a
 
1886
                                            1
 
1887
 
 
1888
          (%o7)                          pos
 
1889
          (%i8) asksign (foo (a));
 
1890
                                     x = foo(a)
 
1891
 
 
1892
          (%o8)                          pos
 
1893
          (%i9) asksign (foo (a) + bar (b));
 
1894
                                     x = foo(a)
 
1895
 
 
1896
                                     x = bar(b)
 
1897
 
 
1898
          (%o9)                          pos
 
1899
          (%i10) asksign (log (a));
 
1900
                                        x = a
 
1901
 
 
1902
          Is  a - 1  positive, negative, or zero?
 
1903
 
 
1904
          p;
 
1905
          (%o10)                         pos
 
1906
          (%i11) asksign (a - b);
 
1907
                                        x = a
 
1908
 
 
1909
                                        x = b
 
1910
 
 
1911
                                        x = a
 
1912
 
 
1913
                                        x = b
 
1914
 
 
1915
          Is  b - a  positive, negative, or zero?
 
1916
 
 
1917
          p;
 
1918
          (%o11)                         neg
 
1919
 
 
1920
 
 
1921
 -- Variável de opção: context
 
1922
     Valor padrão: `initial'
 
1923
 
 
1924
     `context' nomeia a coleção de fatos mantida através de `assume' e
 
1925
     `forget'.  `assume' adiciona fatos à coleção nomeada através de
 
1926
     `context', enquanto `forget' remove fatos.
 
1927
 
 
1928
     Associando `context' para um nome <foo> altera o contexto corrente
 
1929
     para <foo>.  Se o contexto especificado <foo> não existe ainda,
 
1930
     ele é criado automaticamente através de uma chamada a `newcontext'.
 
1931
     O contexto especificado é ativado automaticamente.
 
1932
 
 
1933
     Veja `contexts' para uma descrição geral do mecanismo de contexto.
 
1934
 
 
1935
 
 
1936
 -- Variável de opção: contexts
 
1937
     Valor padrão: `[initial, global]'
 
1938
 
 
1939
     `contexts' é uma lista dos contextos que existem atualmente,
 
1940
     incluindo o contexto ativo atualmente.
 
1941
 
 
1942
     O mecanismo de contexto torna possível para um usuário associar e
 
1943
     nomear uma porção selecionada de fatos, chamada um contexto.
 
1944
     Assim que isso for concluído, o usuário pode ter o Maxima
 
1945
     assumindo ou esquecendo grande quantidade de fatos meramente
 
1946
     através da ativação ou desativação seu contexto.
 
1947
 
 
1948
     Qualquer átomo simbólico pode ser um contexto, e os fatos contidos
 
1949
     naquele contexto irão ser retidos em armazenamento até que sejam
 
1950
     destruídos um por um através de chamadas a `forget' ou destruídos
 
1951
     com um conjunto através de uma chamada a `kill' para destruir o
 
1952
     contexto que eles pertencem.
 
1953
 
 
1954
     Contextos existem em uma hierarquía, com o raíz sempre sendo o
 
1955
     contexto `global', que contém informações sobre Maxima que alguma
 
1956
     função precisa.  Quando em um contexto dado, todos os fatos naquele
 
1957
     contexto estão "ativos" (significando que eles são usados em
 
1958
     deduções e recuperados) como estão também todos os fatos em
 
1959
     qualquer contexto que for um subcontexto do contexto ativo.
 
1960
 
 
1961
     Quando um novo Maxima for iniciado, o usuário está em um contexto
 
1962
     chamado `initial', que tem `global' como um subcontexto.
 
1963
 
 
1964
     Veja também `facts', `newcontext', `supcontext', `killcontext',
 
1965
     `activate', `deactivate', `assume', e `forget'.
 
1966
 
 
1967
 
 
1968
 -- Função: deactivate (<context_1>, ..., <context_n>)
 
1969
     Desativa os contextos especificados <context_1>, ..., <context_n>.
 
1970
 
 
1971
 
 
1972
 -- Função: facts (<item>)
 
1973
 -- Função: facts ()
 
1974
     Se <item> for o nome de um contexto, `facts (<item>)' retorna uma
 
1975
     lista de fatos no contexto especificado.
 
1976
 
 
1977
     Se <item> não for o nome de um contexto, `facts (<item>)' retorna
 
1978
     uma lista de fatos conhecidos sobre <item> no contexto atual.
 
1979
     Fatos que estão atuvos, mas em um diferente contexto, não são
 
1980
     listados.
 
1981
 
 
1982
     `facts ()' (i.e., sem argumento) lista o contexto atual.
 
1983
 
 
1984
 
 
1985
 -- Declaração: features
 
1986
     Maxima recnhece ceertas propriedades matemáticas de funções e
 
1987
     variáveis.  Essas são chamadas "recursos".
 
1988
 
 
1989
     `declare (<x>, <foo>)' fornece a propriedade <foo> para a função
 
1990
     ou variável <x>.
 
1991
 
 
1992
     `declare (<foo>, recurso)' declara um novo recurso <foo>.  Por
 
1993
     exemplo, `declare ([red, green, blue], feature)' declara três
 
1994
     novos recursos, `red', `green', e `blue'.
 
1995
 
 
1996
     O predicado `featurep (<x>, <foo>)' retorna `true' se <x> possui a
 
1997
     propriedade <foo>, e `false' de outra forma.
 
1998
 
 
1999
     A infolista `features' é uma lista de recursos conhecidos.  São
 
2000
     esses `integer', `noninteger', `even', `odd', `rational',
 
2001
     `irrational', `real', `imaginary', `complex', `analytic',
 
2002
     `increasing', `decreasing', `oddfun', `evenfun', `posfun',
 
2003
     `commutative', `lassociative', `rassociative', `symmetric', e
 
2004
     `antisymmetric', mais quaisquer recursos definidos pelo usuário.
 
2005
 
 
2006
     `features' é uma lista de recursos matemáticos.  Existe também uma
 
2007
     lista de recursos não matemáticos, recursos dependentes do
 
2008
     sistema. Veja `status'.
 
2009
 
 
2010
 
 
2011
 -- Função: forget (<pred_1>, ..., <pred_n>)
 
2012
 -- Função: forget (<L>)
 
2013
     Remove predicados estabelecidos através de `assume'.  Os
 
2014
     predicados podem ser expressões equivalentes a (mas não
 
2015
     necessáriamente idênticas a) esses prevamentes assumidos.
 
2016
 
 
2017
     `forget (<L>)', onde <L> é uma lista de predicados, esquece cada
 
2018
     item da lista.
 
2019
 
 
2020
 
 
2021
 -- Função: killcontext (<context_1>, ..., <context_n>)
 
2022
     Mata os contextos <context_1>, ..., <context_n>.
 
2023
 
 
2024
     Se um dos contextos estiver for o contexto atual, o novo contexto
 
2025
     atual irá tornar-se o primeiro subcontexto disponível do contexto
 
2026
     atual que não tiver sido morto.  Se o primeiro contexto disponível
 
2027
     não morto for `global' então `initial' é usado em seu lugar.  Se o
 
2028
     contexto `initial' for morto, um novo, porém vazio contexto
 
2029
     `initial' é criado.
 
2030
 
 
2031
     `killcontext' recusa-se a matar um contexto que estiver ativo
 
2032
     atualmente, ou porque ele é um subcontexto do contexto atual, ou
 
2033
     através do uso da função `activate'.
 
2034
 
 
2035
     `killcontext' avalia seus argumentos.  `killcontext' retorna
 
2036
     `done'.
 
2037
 
 
2038
 
 
2039
 -- Função: newcontext (<nome>)
 
2040
     Cria um novo contexto, porém vazio, chamado <nome>, que tem
 
2041
     `global' como seu único subcontexto.  O contexto recentemente
 
2042
     criado torna-se o contexto ativo atualmente.
 
2043
 
 
2044
     `newcontext' avalia seu argumento.  `newcontext' retorna <nome>.
 
2045
 
 
2046
 
 
2047
 -- Função: supcontext (<nome>, <context>)
 
2048
 -- Função: supcontext (<nome>)
 
2049
     Cria um novo contexto, chamado <nome>, que tem <context> como um
 
2050
     subcontexto.  <context> deve existir.
 
2051
 
 
2052
     Se <context> não for especificado, o contexto atual é assumido.
 
2053
 
 
2054
 
 
2055
 
 
2056
File: maxima.info,  Node: Polinômios,  Next: Constantes,  Prev: Contextos,  Up: Top
 
2057
 
 
2058
12 Polinômios
 
2059
*************
 
2060
 
 
2061
* Menu:
 
2062
 
 
2063
* Introdução a Polinômios::
 
2064
* Definições para Polinômios::
 
2065
 
 
2066
 
 
2067
File: maxima.info,  Node: Introdução a Polinômios,  Next: Definições para Polinômios,  Prev: Polinômios,  Up: Polinômios
 
2068
 
 
2069
12.1 Introdução a Polinômios
 
2070
============================
 
2071
 
 
2072
Polinômios são armazenados no Maxima ou na forma geral ou na forma de
 
2073
Expressões Racionais Canônicas (CRE).  Essa última é uma forma padrão,
 
2074
e é usada internamente por operações tais como `factor', `ratsimp', e
 
2075
assim por diante.
 
2076
 
 
2077
   Expressões Racionais Canônicas constituem um tipo de representação
 
2078
que é especialmente adequado para polinômios expandidos e funções
 
2079
racionais (também para polinômios parcialmente fatorados e funções
 
2080
racionais quando RATFAC for escolhida para `true').  Nessa forma CRE uma
 
2081
ordenação de variáveis (da mais para a menos importante) é assumida
 
2082
para cada expressão.  Polinômios são representados recursivamente por
 
2083
uma lista consistindo da variável principal seguida por uma série de
 
2084
pares de expressões, uma para cada termo do polinômio.  O primeiro
 
2085
membro de cada par é o expoente da variável principal naquele termo e o
 
2086
segundo membro é o coeficiente daquele termo que pode ser um número ou
 
2087
um polinômio em outra variável novamente respresentado nessa forma.
 
2088
Sendo assim a parte principal da forma CRE de 3*X^2-1 é (X 2 3 0 -1) e
 
2089
que a parte principal da forma CRE de 2*X*Y+X-3 é (Y 1 (X 1 2) 0 (X 1 1
 
2090
0 -3)) assumindo Y como sendo a variável principal, e é (X 1 (Y 1 2 0
 
2091
1) 0 -3) assumindo X como sendo a variável principal. A variável
 
2092
principal é usualmente determineda pela ordem alfabética reversa.  As
 
2093
"variáveis" de uma expressão CRE não necessariamente devem ser
 
2094
atômicas.  De fato qualquer subexpressão cujo principal operador não
 
2095
for + - * / or ^ com expoente inteiro será considerado uma "variável"
 
2096
da expressão (na forma CRE) na qual essa ocorrer.  Por exemplo as
 
2097
variáveis CRE da expressão X+SIN(X+1)+2*SQRT(X)+1 são X, SQRT(X), e
 
2098
SIN(X+1).  Se o usuário não especifica uma ordem de variáveis pelo uso
 
2099
da função RATVARS Maxima escolherá a alfabética por conta própria.  Em
 
2100
geral, CREs representam expressões racionais, isto é, razões de
 
2101
polinômios, onde o numerador e o denominador não possuem fatores
 
2102
comuns, e o denominador for positivo.  A forma interna é essencialmente
 
2103
um par de polinômios (o numerador e o denominador) precedidos pela
 
2104
lista de ordenação de variável.  Se uma expressão a ser mostrada
 
2105
estiver na forma CRE ou se contiver quaisquer subexpressões na forma
 
2106
CRE, o símbolo /R/ seguirá o rótulo da linha.  Veja a função RAT para
 
2107
saber como converter uma expressão para a forma CRE.  Uma forma CRE
 
2108
extendida é usada para a representação de séries de Taylor.  A noção de
 
2109
uma expressão racional é extendida de modo que os expoentes das
 
2110
variáveis podem ser números racionais positivos ou negativos em lugar
 
2111
de apenas inteiros positivos e os coeficientes podem eles mesmos serem
 
2112
expressões racionais como descrito acima em lugar de apenas polinômios.
 
2113
Estes são representados internamente por uma forma polinomial
 
2114
recursiva que é similar à forma CRE e é a generalização dessa mesma
 
2115
forma CRE, mas carrega informação adicional tal com o grau de
 
2116
truncação.  Do mesmo modo que na forma CRE, o símbolo /T/ segue o
 
2117
rótulo de linha que contém as tais expressões.
 
2118
 
 
2119
 
 
2120
File: maxima.info,  Node: Definições para Polinômios,  Prev: Introdução a Polinômios,  Up: Polinômios
 
2121
 
 
2122
12.2 Definições para Polinômios
 
2123
===============================
 
2124
 
 
2125
 -- Variável de opção: algebraic
 
2126
     Valor Padrão: `false'
 
2127
 
 
2128
     `algebraic' deve ser escolhida para `true' com o objetivo de que a
 
2129
     simplificação de inteiros algébricos tenha efeito.
 
2130
 
 
2131
 
 
2132
 -- Variável de opção: berlefact
 
2133
     Valor Padrão: `true'
 
2134
 
 
2135
     Quando `berlefact' for `false' então o algorítmo de fatoração de
 
2136
     Kronecker será usado.  De outra forma o algorítmo de Berlekamp,
 
2137
     que é o padrão, será usado.
 
2138
 
 
2139
 
 
2140
 -- Função: bezout (<p1>, <p2>, <x>)
 
2141
     uma alternativa para o comando `resultant'.  Isso retorna uma
 
2142
     matriz.  `determinant' dessa matriz é o resultante desejado.
 
2143
 
 
2144
 
 
2145
 -- Função: bothcoef (<expr>, <x>)
 
2146
     Retorna uma lista da qual o primeiro membro é o coeficiente de <x>
 
2147
     em <expr> (como achado por `ratcoef' se <expr> está na forma CRE
 
2148
     de outro modo por `coeff') e cujo segundo membro é a parte
 
2149
     restante de <expr>.  Isto é, `[A, B]' onde `<expr> = A*<x> + B'.
 
2150
 
 
2151
     Exemplo:
 
2152
 
 
2153
          (%i1) islinear (expr, x) := block ([c],
 
2154
                  c: bothcoef (rat (expr, x), x),
 
2155
                  é (freeof (x, c) and c[1] # 0))$
 
2156
          (%i2) islinear ((r^2 - (x - r)^2)/x, x);
 
2157
          (%o2)                         true
 
2158
 
 
2159
 
 
2160
 -- Função: coeff (<expr>, <x>, <n>)
 
2161
     Retorna o coeficiente de `<x>^<n>' em <expr>.  <n> pode ser
 
2162
     omitido se for 1.  <x> pode ser um átomo, ou subexpressão completa
 
2163
     de <expr> e.g., `sin(x)', `a[i+1]', `x + y', etc. (No último caso a
 
2164
     expressão `(x + y)' pode ocorrer em <expr>).  Algumas vezes isso
 
2165
     pode ser necessário para expandir ou fatorar <expr> com o objetivo
 
2166
     de fazer `<x>^<n>' explicito.  Isso não é realizado por `coeff'.
 
2167
 
 
2168
     Exemplos:
 
2169
 
 
2170
          (%i1) coeff (2*a*tan(x) + tan(x) + b = 5*tan(x) + 3, tan(x));
 
2171
          (%o1)                      2 a + 1 = 5
 
2172
          (%i2) coeff (y + x*%e^x + 1, x, 0);
 
2173
          (%o2)                         y + 1
 
2174
 
 
2175
 
 
2176
 -- Função: combine (<expr>)
 
2177
     Simplifica a adição <expr> por termos combinados com o mesmo
 
2178
     denominador dentro de um termo simples.
 
2179
 
 
2180
 
 
2181
 -- Função: content (<p_1>, <x_1>, ..., <x_n>)
 
2182
     Retorna uma lista cujo primeiro elemento é o máximo divisor comum
 
2183
     dos coeficientes dos termos do polinômio <p_1> na variável <x_n>
 
2184
     (isso é o conteúdo) e cujo segundo elemento é o polinômio <p_1>
 
2185
     dividido pelo conteúdo.
 
2186
 
 
2187
     Exemplos:
 
2188
 
 
2189
          (%i1) content (2*x*y + 4*x^2*y^2, y);
 
2190
                                             2
 
2191
          (%o1)                   [2 x, 2 x y  + y]
 
2192
 
 
2193
 
 
2194
 -- Função: denom (<expr>)
 
2195
     Retorna o denominador da expressão racional <expr>.
 
2196
 
 
2197
 
 
2198
 -- Função: divide (<p_1>, <p_2>, <x_1>, ..., <x_n>)
 
2199
     calcula o quocietne e o resto do polinômio <p_1> dividido pelo
 
2200
     polinômio <p_2>, na variável principal do polinômio, <x_n>.  As
 
2201
     outras variáveis são como na função `ratvars'.  O resultado é uma
 
2202
     lista cujo primeiro elemento é o quociente e cujo segundo elemento
 
2203
     é o resto.
 
2204
 
 
2205
     Exemplos:
 
2206
 
 
2207
          (%i1) divide (x + y, x - y, x);
 
2208
          (%o1)                       [1, 2 y]
 
2209
          (%i2) divide (x + y, x - y);
 
2210
          (%o2)                      [- 1, 2 x]
 
2211
 
 
2212
     Note que `y' é a variável principal no segundo exemplo.
 
2213
 
 
2214
 
 
2215
 -- Função: eliminate ([<eqn_1>, ..., <eqn_n>], [<x_1>, ..., <x_k>])
 
2216
     Elimina variáveis de equações (ou expressões assumidas iguais a
 
2217
     zero) pegando resultantes sucessivos. Isso retorna uma lista de
 
2218
     `<n> - <k>' expressões com <k> variáveis <x_1>, ..., <x_k>
 
2219
     eliminadas.  Primeiro <x_1> é eliminado retornando `<n> - 1'
 
2220
     expressões, então `x_2' é eliminado, etc.  Se `<k> = <n>' então
 
2221
     uma expressão simples em uma lista é retornada livre das variáveis
 
2222
     <x_1>, ..., <x_k>.  Nesse caso `solve' é chamado para resolver a
 
2223
     última resultante para a última variável.
 
2224
 
 
2225
     Exemplo:
 
2226
 
 
2227
          (%i1) expr1: 2*x^2 + y*x + z;
 
2228
                                                2
 
2229
          (%o1)                    z + x y + 2 x
 
2230
          (%i2) expr2: 3*x + 5*y - z - 1;
 
2231
          (%o2)                  - z + 5 y + 3 x - 1
 
2232
          (%i3) expr3: z^2 + x - y^2 + 5;
 
2233
                                    2    2
 
2234
          (%o3)                    z  - y  + x + 5
 
2235
          (%i4) eliminate ([expr3, expr2, expr1], [y, z]);
 
2236
                       8         7         6          5          4
 
2237
          (%o4) [7425 x  - 1170 x  + 1299 x  + 12076 x  + 22887 x
 
2238
 
 
2239
                                              3         2
 
2240
                                      - 5154 x  - 1291 x  + 7688 x + 15376]
 
2241
 
 
2242
 
 
2243
 -- Função: ezgcd (<p_1>, <p_2>, <p_3>, ...)
 
2244
     Retorna uma lista cujo primeiro elemento é o m.d.c. dos polinômios
 
2245
     <p_1>, <p_2>, <p_3>, ...  e cujos restantes elementos são os
 
2246
     polinômios divididos pelo mdc.  Isso sempre usa o algorítmo
 
2247
     `ezgcd'.
 
2248
 
 
2249
 
 
2250
 -- Variável de opção: facexpand
 
2251
     Valor Padrão: `true'
 
2252
 
 
2253
     `facexpand' controla se os fatores irredutíveis retornados por
 
2254
     `factor' estão na forma expandida (o padrão) ou na forma recursiva
 
2255
     (CRE normal).
 
2256
 
 
2257
 
 
2258
 -- Função: factcomb (<expr>)
 
2259
     Tenta combinar os coeficientes de fatoriais em <expr> com os
 
2260
     próprios fatoriais convertendo, por exemplo, `(n + 1)*n!' em `(n +
 
2261
     1)!'.
 
2262
 
 
2263
     `sumsplitfact' se escolhida para `false' fará com que
 
2264
     `minfactorial' seja aplicado após um `factcomb'.
 
2265
 
 
2266
 
 
2267
 -- Função: factor (<expr>)
 
2268
     Fatora a expressão <expr>, contendo qualquer número de variáveis
 
2269
     ou funções, em fatores irredutíveis sobre os inteiros.  `factor
 
2270
     (<expr>, p)' fatora <expr> sobre o campo dos inteiros com um
 
2271
     elemento adjunto cujo menor polinômio é p.
 
2272
 
 
2273
     `factor' usa a função `ifactors' para fatorar inteiros.
 
2274
 
 
2275
     `factorflag' se `false' suprime a fatoração de fatores inteiros de
 
2276
     expressões racionais.
 
2277
 
 
2278
     `dontfactor' pode ser escolhida para uma lista de variáveis com
 
2279
     relação à qual fatoração não é para ocorrer.  (Essa é inicialmente
 
2280
     vazia).  Fatoração também não acontece com relação a quaisquer
 
2281
     variáveis que são menos importantes (usando a ordenação de
 
2282
     variável assumida pela forma CRE) como essas na lista `dontfactor'.
 
2283
 
 
2284
     `savefactors' se `true' faz com que os fatores de uma expressão que
 
2285
     é um produto de fatores seja guardada por certas funções com o
 
2286
     objetivo de aumentar a velocidade de futuras fatorações de
 
2287
     expressões contendo alguns dos mesmos fatores.
 
2288
 
 
2289
     `berlefact' se `false' então o algorítmo de fatoração de Kronecker
 
2290
     será usado de outra forma o algorítmo de Berlekamp, que é o
 
2291
     padrão, será usado.
 
2292
 
 
2293
     `intfaclim' se `true' maxima irá interromper a fatoração de
 
2294
     inteiros se nenhum fator for encontrado após tentar divisões e o
 
2295
     método rho de Pollard.  Se escolhida para `false' (esse é o caso
 
2296
     quando o usuário chama `factor' explicitamente), a fatoração
 
2297
     completa do inteiro será tentada.  A escolha do usuário para
 
2298
     `intfaclim' é usada para chamadas internas a `factor'. Dessa
 
2299
     forma, `intfaclim' pode ser resetada para evitar que o Maxima
 
2300
     gaste um tempo muito longo fatorando inteiros grandes.
 
2301
 
 
2302
     Exemplos:
 
2303
 
 
2304
          (%i1) factor (2^63 - 1);
 
2305
                              2
 
2306
          (%o1)              7  73 127 337 92737 649657
 
2307
          (%i2) factor (-8*y - 4*x + z^2*(2*y + x));
 
2308
          (%o2)               (2 y + x) (z - 2) (z + 2)
 
2309
          (%i3) -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2;
 
2310
                          2  2        2    2    2
 
2311
          (%o3)          x  y  + 2 x y  + y  - x  - 2 x - 1
 
2312
          (%i4) block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
 
2313
                                 2
 
2314
                               (x  + 2 x + 1) (y - 1)
 
2315
          (%o4)                ----------------------
 
2316
                                     36 (y + 1)
 
2317
          (%i5) factor (1 + %e^(3*x));
 
2318
                                x         2 x     x
 
2319
          (%o5)              (%e  + 1) (%e    - %e  + 1)
 
2320
          (%i6) factor (1 + x^4, a^2 - 2);
 
2321
                              2              2
 
2322
          (%o6)             (x  - a x + 1) (x  + a x + 1)
 
2323
          (%i7) factor (-y^2*z^2 - x*z^2 + x^2*y^2 + x^3);
 
2324
                                 2
 
2325
          (%o7)              - (y  + x) (z - x) (z + x)
 
2326
          (%i8) (2 + x)/(3 + x)/(b + x)/(c + x)^2;
 
2327
                                       x + 2
 
2328
          (%o8)               ------------------------
 
2329
                                                     2
 
2330
                              (x + 3) (x + b) (x + c)
 
2331
          (%i9) ratsimp (%);
 
2332
                          4                  3
 
2333
          (%o9) (x + 2)/(x  + (2 c + b + 3) x
 
2334
 
 
2335
               2                       2             2                   2
 
2336
           + (c  + (2 b + 6) c + 3 b) x  + ((b + 3) c  + 6 b c) x + 3 b c )
 
2337
          (%i10) partfrac (%, x);
 
2338
                     2                   4                3
 
2339
          (%o10) - (c  - 4 c - b + 6)/((c  + (- 2 b - 6) c
 
2340
 
 
2341
               2              2         2                2
 
2342
           + (b  + 12 b + 9) c  + (- 6 b  - 18 b) c + 9 b ) (x + c))
 
2343
 
 
2344
                           c - 2
 
2345
           - ---------------------------------
 
2346
               2                             2
 
2347
             (c  + (- b - 3) c + 3 b) (x + c)
 
2348
 
 
2349
                                   b - 2
 
2350
           + -------------------------------------------------
 
2351
                       2             2       3      2
 
2352
             ((b - 3) c  + (6 b - 2 b ) c + b  - 3 b ) (x + b)
 
2353
 
 
2354
                                   1
 
2355
           - ----------------------------------------------
 
2356
                       2
 
2357
             ((b - 3) c  + (18 - 6 b) c + 9 b - 27) (x + 3)
 
2358
          (%i11) map ('factor, %);
 
2359
                        2
 
2360
                       c  - 4 c - b + 6                 c - 2
 
2361
          (%o11) - ------------------------- - ------------------------
 
2362
                          2        2                                  2
 
2363
                   (c - 3)  (c - b)  (x + c)   (c - 3) (c - b) (x + c)
 
2364
 
 
2365
                                 b - 2                        1
 
2366
                      + ------------------------ - ------------------------
 
2367
                                       2                          2
 
2368
                        (b - 3) (c - b)  (x + b)   (b - 3) (c - 3)  (x + 3)
 
2369
          (%i12) ratsimp ((x^5 - 1)/(x - 1));
 
2370
                                 4    3    2
 
2371
          (%o12)                x  + x  + x  + x + 1
 
2372
          (%i13) subst (a, x, %);
 
2373
                                 4    3    2
 
2374
          (%o13)                a  + a  + a  + a + 1
 
2375
          (%i14) factor (%th(2), %);
 
2376
                                 2        3        3    2
 
2377
          (%o14)   (x - a) (x - a ) (x - a ) (x + a  + a  + a + 1)
 
2378
          (%i15) factor (1 + x^12);
 
2379
                                 4        8    4
 
2380
          (%o15)               (x  + 1) (x  - x  + 1)
 
2381
          (%i16) factor (1 + x^99);
 
2382
                           2            6    3
 
2383
          (%o16) (x + 1) (x  - x + 1) (x  - x  + 1)
 
2384
 
 
2385
             10    9    8    7    6    5    4    3    2
 
2386
           (x   - x  + x  - x  + x  - x  + x  - x  + x  - x + 1)
 
2387
 
 
2388
             20    19    17    16    14    13    11    10    9    7    6
 
2389
           (x   + x   - x   - x   + x   + x   - x   - x   - x  + x  + x
 
2390
 
 
2391
              4    3            60    57    51    48    42    39    33
 
2392
           - x  - x  + x + 1) (x   + x   - x   - x   + x   + x   - x
 
2393
 
 
2394
              30    27    21    18    12    9    3
 
2395
           - x   - x   + x   + x   - x   - x  + x  + 1)
 
2396
 
 
2397
 
 
2398
 -- Variável de opção: factorflag
 
2399
     Valor Padrão: `false'
 
2400
 
 
2401
     Quando `factorflag' for `false', suprime a fatoração de fatores
 
2402
     inteiros em expressões racionais.
 
2403
 
 
2404
 
 
2405
 -- Função: factorout (<expr>, <x_1>, <x_2>, ...)
 
2406
     Rearranja a adição <expr> em uma adição de parcelas da forma `f
 
2407
     (<x_1>, <x_2>, ...)*g' onde `g' é um produto de expressões que não
 
2408
     possuem qualquer <x_i> e `f' é fatorado.
 
2409
 
 
2410
 
 
2411
 -- Função: factorsum (<expr>)
 
2412
     Tenta agrupar parcelas em fatores de <expr> que são adições em
 
2413
     grupos de parcelas tais que sua adição é fatorável.  `factorsum'
 
2414
     pode recuperar o resultado de `expand ((x + y)^2 + (z + w)^2)' mas
 
2415
     não pode recuperar `expand ((x + 1)^2 + (x + y)^2)' porque os
 
2416
     termos possuem variáveis em comum.
 
2417
 
 
2418
     Exemplo:
 
2419
 
 
2420
          (%i1) expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
 
2421
                     2      2                            2      2
 
2422
          (%o1) a x z  + a z  + 2 a w x z + 2 a w z + a w  x + v  x
 
2423
 
 
2424
                                               2        2    2            2
 
2425
                                  + 2 u v x + u  x + a w  + v  + 2 u v + u
 
2426
          (%i2) factorsum (%);
 
2427
                                             2          2
 
2428
          (%o2)            (x + 1) (a (z + w)  + (v + u) )
 
2429
 
 
2430
 
 
2431
 -- Função: fasttimes (<p_1>, <p_2>)
 
2432
     Retorna o produto dos polinômios <p_1> e <p_2> usando um algorítmo
 
2433
     especial para a multiplicação de polinômios.  `p_1' e `p_2' podem
 
2434
     ser de várias variáveis, densos, e aproximadamente do mesmo
 
2435
     tamanho.  A multiplicação clássica é de ordem `n_1 n_2' onde `n_1'
 
2436
     é o grau de `p_1' and `n_2' é o grau de `p_2'.  `fasttimes' é da
 
2437
     ordem `max (n_1, n_2)^1.585'.
 
2438
 
 
2439
 
 
2440
 -- Função: fullratsimp (<expr>)
 
2441
     `fullratsimp' aplica repetidamente `ratsimp' seguido por
 
2442
     simplificação não racional a uma expressão até que nenhuma mudança
 
2443
     adicional ocorra, e retorna o resultado.
 
2444
 
 
2445
     Quando expressões não racionais estão envolvidas, uma chamada a
 
2446
     `ratsimp' seguida como é usual por uma simplificação não racional
 
2447
     ("geral") pode não ser suficiente para retornar um resultado
 
2448
     simplificado.  Algumas vezes, mais que uma tal chamada pode ser
 
2449
     necessária.  `fullratsimp' faz esse processo convenientemente.
 
2450
 
 
2451
     `fullratsimp (<expr>, <x_1>, ..., <x_n>)' pega um ou mais
 
2452
     argumentos similar a `ratsimp' e `rat'.
 
2453
 
 
2454
     Exemplo:
 
2455
 
 
2456
          (%i1) expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
 
2457
                                 a/2     2   a/2     2
 
2458
                               (x    - 1)  (x    + 1)
 
2459
          (%o1)                -----------------------
 
2460
                                        a
 
2461
                                       x  - 1
 
2462
          (%i2) ratsimp (expr);
 
2463
                                    2 a      a
 
2464
                                   x    - 2 x  + 1
 
2465
          (%o2)                    ---------------
 
2466
                                        a
 
2467
                                       x  - 1
 
2468
          (%i3) fullratsimp (expr);
 
2469
                                        a
 
2470
          (%o3)                        x  - 1
 
2471
          (%i4) rat (expr);
 
2472
                                 a/2 4       a/2 2
 
2473
                               (x   )  - 2 (x   )  + 1
 
2474
          (%o4)/R/             -----------------------
 
2475
                                        a
 
2476
                                       x  - 1
 
2477
 
 
2478
 
 
2479
 -- Função: fullratsubst (<a>, <b>, <c>)
 
2480
     é o mesmo que `ratsubst' exceto que essa chama a si mesma
 
2481
     recursivamente sobre esse resultado até que o resultado para de
 
2482
     mudar.  Essa função é útil quando a expressão de substituição e a
 
2483
     expressão substituída tenham uma ou mais variáveis em comum.
 
2484
 
 
2485
     `fullratsubst' irá também aceitar seus argumentos no formato de
 
2486
     `lratsubst'.  Isto é, o primeiro argumento pode ser uma
 
2487
     substituição simples de equação ou uma lista de tais equações,
 
2488
     enquanto o segundo argumento é a expressão sendo processada.
 
2489
 
 
2490
     `load ("lrats")' chama `fullratsubst' e `lratsubst'.
 
2491
 
 
2492
     Exemplos:
 
2493
 
 
2494
          (%i1) load ("lrats")$
 
2495
 
 
2496
        * `subst' pode realizar multiplas substituições.  `lratsubst' é
 
2497
          analogo a `subst'.
 
2498
 
 
2499
          (%i2) subst ([a = b, c = d], a + c);
 
2500
          (%o2)                         d + b
 
2501
          (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
 
2502
          (%o3)                (d + a c) e + a d + b c
 
2503
 
 
2504
        * Se somente uma substituição é desejada, então uma equação
 
2505
          simples pode ser dada como primeiro argumento.
 
2506
 
 
2507
          (%i4) lratsubst (a^2 = b, a^3);
 
2508
          (%o4)                          a b
 
2509
 
 
2510
        * `fullratsubst' é equivalente a `ratsubst' exceto que essa
 
2511
          executa recursivamente até que seu resultado para de mudar.
 
2512
 
 
2513
          (%i5) ratsubst (b*a, a^2, a^3);
 
2514
                                         2
 
2515
          (%o5)                         a  b
 
2516
          (%i6) fullratsubst (b*a, a^2, a^3);
 
2517
                                           2
 
2518
          (%o6)                         a b
 
2519
 
 
2520
        * `fullratsubst' também aceita uma lista de equações ou uma
 
2521
          equação simples como primeiro argumento.
 
2522
 
 
2523
          (%i7) fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
 
2524
          (%o7)                           b
 
2525
          (%i8) fullratsubst (a^2 = b*a, a^3);
 
2526
                                           2
 
2527
          (%o8)                         a b
 
2528
 
 
2529
        * `fullratsubst' pode causar uma recursão infinita.
 
2530
 
 
2531
          (%i9) errcatch (fullratsubst (b*a^2, a^2, a^3));
 
2532
 
 
2533
          *** - Lisp stack overflow. RESET
 
2534
 
 
2535
 
 
2536
 -- Função: gcd (<p_1>, <p_2>, <x_1>, ...)
 
2537
     Retorna o máximo divisor comum entre <p_1> e <p_2>.  O sinalizador
 
2538
     `gcd' determina qual algorítmo é empregado.  Escolhendo `gcd' para
 
2539
     `ez', `subres', `red', ou `spmod' seleciona o algorítmo `ezgcd',
 
2540
     subresultante `prs', reduzido, ou modular, respectivamente.  Se
 
2541
     `gcd' for `false' então `gcd (<p_1>, <p_2>, <x>)' sempre retorna 1
 
2542
     para todo <x>.  Muitas funções (e.g.  `ratsimp', `factor', etc.)
 
2543
     fazem com que mdc's sejam feitos implicitamente.  Para polinômios
 
2544
     homogêneos é recomendado que `gcd' igual a `subres' seja usado.
 
2545
     Para pegar o mdc quando uma expressão algébrica está presente,
 
2546
     e.g. `gcd (<x>^2 - 2*sqrt(2)*<x> + 2, <x> - sqrt(2))', `algebraic'
 
2547
     deve ser `true' e `gcd' não deve ser `ez'.  `subres' é um novo
 
2548
     algorítmo, e pessoas que tenham estado usando a opção `red' podem
 
2549
     provavelmente alterar isso para `subres'.
 
2550
 
 
2551
     O sinalizador `gcd', padrão: `subres', se `false' irá também
 
2552
     evitar o máximo divisor comum de ser usado quando expressões são
 
2553
     convertidas para a forma de expressão racional canônica (CRE).
 
2554
     Isso irá algumas vezes aumentar a velocidade dos cálculos se mdc's
 
2555
     não são requeridos.
 
2556
 
 
2557
 
 
2558
 -- Função: gcdex (<f>, <g>)
 
2559
 -- Função: gcdex (<f>, <g>, <x>)
 
2560
     Retornam uma lista `[<a>, <b>, <u>]' onde <u> é o máximo divisor
 
2561
     comum (mdc) entre <f> e <g>, e <u> é igual a `<a> <f> + <b> <g>'.
 
2562
     Os argumentos <f> e <g> podem ser polinômios de uma variável, ou
 
2563
     de outra forma polinômios em <x> uma main(principal) variável
 
2564
     suprida desde que nós precisamos estar em um domínio de ideal
 
2565
     principal para isso trabalhar.  O mdc significa o mdc considerando
 
2566
     <f> e <g> como polinômios de uma única variável com coeficientes
 
2567
     sendo funções racionais em outras variáveis.
 
2568
 
 
2569
     `gcdex' implementa o algorítmo Euclideano, onde temos a seqüência
 
2570
     of `L[i]: [a[i], b[i], r[i]]' que são todos perpendiculares a `[f,
 
2571
     g, -1]' e o próximo se é construído como se `q =
 
2572
     quotient(r[i]/r[i+1])' então `L[i+2]: L[i] - q L[i+1]', e isso
 
2573
     encerra em `L[i+1]' quando o resto `r[i+2]' for zero.
 
2574
 
 
2575
          (%i1) gcdex (x^2 + 1, x^3 + 4);
 
2576
                                 2
 
2577
                                x  + 4 x - 1  x + 4
 
2578
          (%o1)/R/           [- ------------, -----, 1]
 
2579
                                     17        17
 
2580
          (%i2) % . [x^2 + 1, x^3 + 4, -1];
 
2581
          (%o2)/R/                        0
 
2582
 
 
2583
     Note que o mdc adiante é `1' uma vez que trabalhamos em `k(y)[x]',
 
2584
     o `y+1' não pode ser esperado em `k[y, x]'.
 
2585
 
 
2586
          (%i1) gcdex (x*(y + 1), y^2 - 1, x);
 
2587
                                         1
 
2588
          (%o1)/R/                 [0, ------, 1]
 
2589
                                        2
 
2590
                                       y  - 1
 
2591
 
 
2592
 
 
2593
 -- Função: gcfactor (<n>)
 
2594
     Fatora o inteiro Gaussiano <n> sobre os inteiros Gaussianos, i.e.,
 
2595
     números da forma `<a> + <b> `%i'' onde <a> e <b> são inteiros
 
2596
     raconais (i.e.,  inteiros comuns).  Fatorações são normalizadas
 
2597
     fazendo <a> e <b> não negativos.
 
2598
 
 
2599
 
 
2600
 -- Função: gfactor (<expr>)
 
2601
     Fatora o polinômio <expr> sobre os inteiros de Gauss (isto é, os
 
2602
     inteiros com a unidade imaginária `%i' adjunta).  Isso é como
 
2603
     `factor (<expr>, <a>^2+1)' trocando <a> por `%i'.
 
2604
 
 
2605
     Exemplo:
 
2606
 
 
2607
          (%i1) gfactor (x^4 - 1);
 
2608
          (%o1)           (x - 1) (x + 1) (x - %i) (x + %i)
 
2609
 
 
2610
 
 
2611
 -- Função: gfactorsum (<expr>)
 
2612
     é similar a `factorsum' mas aplica `gfactor' em lugar de `factor'.
 
2613
 
 
2614
 
 
2615
 -- Função: hipow (<expr>, <x>)
 
2616
     Retorna o maior expoente explícito de <x> em <expr>.  <x> pode ser
 
2617
     uma variável ou uma expressão geral.  Se <x> não aparece em <expr>,
 
2618
     `hipow' retorna `0'.
 
2619
 
 
2620
     `hipow' não considera expressões equivalentes a `expr'.  Em
 
2621
     particular, `hipow' não expande `expr', então `hipow (<expr>,
 
2622
     <x>)' e `hipow (expand (<expr>, <x>))' podem retornar diferentes
 
2623
     resultados.
 
2624
 
 
2625
     Exemplos:
 
2626
 
 
2627
          (%i1) hipow (y^3 * x^2 + x * y^4, x);
 
2628
          (%o1)                           2
 
2629
          (%i2) hipow ((x + y)^5, x);
 
2630
          (%o2)                           1
 
2631
          (%i3) hipow (expand ((x + y)^5), x);
 
2632
          (%o3)                           5
 
2633
          (%i4) hipow ((x + y)^5, x + y);
 
2634
          (%o4)                           5
 
2635
          (%i5) hipow (expand ((x + y)^5), x + y);
 
2636
          (%o5)                           0
 
2637
 
 
2638
 
 
2639
 -- Variável de opção: intfaclim
 
2640
     Valor padrão: true
 
2641
 
 
2642
     Se `true', maxima irá interromper a fatoração de inteiros se
 
2643
     nenhum fator for encontrado após tentar divisões e o método rho de
 
2644
     Pollard e a fatoração não irá ser completada.
 
2645
 
 
2646
     Quando `intfaclim' for `false' (esse é o caso quando o usuário
 
2647
     chama `factor' explicitamente), a fatoração completa irá ser
 
2648
     tentada.  `intfaclim' é escolhida para `false' quando fatores são
 
2649
     calculados em `divisors', `divsum' e `totient'.
 
2650
 
 
2651
     Chamadas internas a `factor' respeitam o valor especificado pelo
 
2652
     usuário para `intfaclim'.  Setting `intfaclim' to `true' may reduce
 
2653
     `intfaclim'.  Escolhendo `intfaclim' para `true' podemos reduzir o
 
2654
     tempo gasto fatorando grandes inteiros.
 
2655
 
 
2656
 
 
2657
 -- Variável de opção: keepfloat
 
2658
     Valor Padrão: `false'
 
2659
 
 
2660
     Quando `keepfloat' for `true', evitamos que números em ponto
 
2661
     flutuante sejam racionalizados quando expressões que os possuem
 
2662
     são então convertidas para a forma de expressão racional canônica
 
2663
     (CRE).
 
2664
 
 
2665
 
 
2666
 -- Função: lratsubst (<L>, <expr>)
 
2667
     é análogo a `subst (<L>, <expr>)' exceto que esse usa `ratsubst'
 
2668
     em lugar de `subst'.
 
2669
 
 
2670
     O primeiro argumento de `lratsubst' é uma equação ou uma lista de
 
2671
     equações idênticas em formato para que sejam aceitas por `subst'.
 
2672
     As substituições são feitas na ordem dada pela lista de equações,
 
2673
     isto é, da esquerda para a direita.
 
2674
 
 
2675
     `load ("lrats")' chama `fullratsubst' e `lratsubst'.
 
2676
 
 
2677
     Exemplos:
 
2678
 
 
2679
          (%i1) load ("lrats")$
 
2680
 
 
2681
        * `subst' pode realizar multiplas substituições.  `lratsubst' é
 
2682
          analoga a `subst'.
 
2683
 
 
2684
          (%i2) subst ([a = b, c = d], a + c);
 
2685
          (%o2)                         d + b
 
2686
          (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
 
2687
          (%o3)                (d + a c) e + a d + b c
 
2688
 
 
2689
        * Se somente uma substituição for desejada, então uma equação
 
2690
          simples pode ser dada como primeiro argumento.
 
2691
 
 
2692
          (%i4) lratsubst (a^2 = b, a^3);
 
2693
          (%o4)                          a b
 
2694
 
 
2695
 
 
2696
 -- Variável de opção: modulus
 
2697
     Valor Padrão: `false'
 
2698
 
 
2699
     Quando `modulus' for um número positivo <p>, operações sobre os
 
2700
     números racionais (como retornado por `rat' e funções relacionadas)
 
2701
     são realizadas módulo <p>, usando o então chamado sistema de
 
2702
     módulo "balanceado" no qual `<n> módulo <p>' é definido como um
 
2703
     inteiro <k> em `[-(<p>-1)/2, ..., 0, ..., (<p>-1)/2]' quando <p>
 
2704
     for ímpar, ou `[-(<p>/2 - 1), ..., 0, ...., <p>/2]' quando <p> for
 
2705
     par, tal que `<a> <p> + <k>' seja igual a <n> para algum inteiro
 
2706
     <a>.
 
2707
 
 
2708
     Se <expr> já estiver na forma de expressão racional canônica (CRE)
 
2709
     quando `modulus' for colocado em seu valor original, então você
 
2710
     pode precisar repetir o rat <expr>, e.g., `expr: rat (ratdisrep
 
2711
     (expr))', com o objetivo de pegar resultados corretos.
 
2712
 
 
2713
     Tipicamente `modulus' é escolhido para um número primo.  Se
 
2714
     `modulus' for escolhido para um inteiro não primo positivo, essa
 
2715
     escolha é aceita, mas uma mensagem de alerta é mostrada.  Maxima
 
2716
     permitirá que zero ou um inteiro negativo seja atribuído a
 
2717
     `modulus', embora isso não seja limpo se aquele tiver quaisquer
 
2718
     conseqüências úteis.
 
2719
 
 
2720
 
 
2721
 -- Função: num (<expr>)
 
2722
     Retorna o numerador de <expr> se isso for uma razão.  Se <expr>
 
2723
     não for uma razão, <expr> é retornado.
 
2724
 
 
2725
     `num' avalia seu argumento.
 
2726
 
 
2727
 
 
2728
 -- Função: polydecomp (<p>, <x>)
 
2729
     Decompões o polinômio <p> na variável  <x> em uma composição
 
2730
     funcional de polinômios em <x>.  `polydecomp' retorna uma lista
 
2731
     `[<p_1>, ..., <p_n>]' tal que
 
2732
 
 
2733
          lambda ([x], p_1) (lambda ([x], p_2) (... (lambda ([x], p_n) (x)) ...))
 
2734
 
 
2735
     seja igual a <p>.  O grau de <p_i> é maior que 1 para <i> menor
 
2736
     que <n>.
 
2737
 
 
2738
     Tal decomposição não é única.
 
2739
 
 
2740
     Exemplos:
 
2741
 
 
2742
          (%i1) polydecomp (x^210, x);
 
2743
                                    7   5   3   2
 
2744
          (%o1)                   [x , x , x , x ]
 
2745
          (%i2) p : expand (subst (x^3 - x - 1, x, x^2 - a));
 
2746
                          6      4      3    2
 
2747
          (%o2)          x  - 2 x  - 2 x  + x  + 2 x - a + 1
 
2748
          (%i3) polydecomp (p, x);
 
2749
                                  2       3
 
2750
          (%o3)                 [x  - a, x  - x - 1]
 
2751
 
 
2752
     As seguintes funções compõem `L = [e_1, ..., e_n]' como funções em
 
2753
     `x'; essa funçào é a inversa de `polydecomp':
 
2754
 
 
2755
          compose (L, x) :=
 
2756
            block ([r : x], for e in L do r : subst (e, x, r), r) $
 
2757
 
 
2758
     Re-exprimindo o exemplo acima usando `compose':
 
2759
 
 
2760
          (%i3) polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
 
2761
                                  2       3
 
2762
          (%o3)                 [x  - a, x  - x - 1]
 
2763
 
 
2764
     Note que apesar de `compose (polydecomp (<p>, <x>), <x>)' sempre
 
2765
     retornar <p> (não expandido), `polydecomp (compose ([<p_1>, ...,
 
2766
     <p_n>], <x>), <x>)' não necessáriamente retorna `[<p_1>, ...,
 
2767
     <p_n>]':
 
2768
 
 
2769
          (%i4) polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
 
2770
                                    2       2
 
2771
          (%o4)                   [x  + 2, x  + 1]
 
2772
          (%i5) polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
 
2773
                                2       2
 
2774
                               x  + 3  x  + 5
 
2775
          (%o5)               [------, ------, 2 x + 1]
 
2776
                                 4       2
 
2777
 
 
2778
 
 
2779
 -- Função: quotient (<p_1>, <p_2>)
 
2780
 -- Função: quotient (<p_1>, <p_2>, <x_1>, ..., <x_n>)
 
2781
     Retorna o polinômio <p_1> dividido pelo polinômio <p_2>.  Os
 
2782
     argumentos <x_1>, ..., <x_n> são interpretados como em `ratvars'.
 
2783
 
 
2784
     `quotient' retorna o primeiro elemento de uma lista de dois
 
2785
     elementos retornada por `divide'.
 
2786
 
 
2787
 
 
2788
 -- Função: rat (<expr>)
 
2789
 -- Função: rat (<expr>, <x_1>, ..., <x_n>)
 
2790
     Converte <expr> para a forma de expressão racional canônica (CRE)
 
2791
     expandindo e combinando todos os termos sobre um denominador comum
 
2792
     e cancelando para fora o máximo divisor comum entre o numerador e
 
2793
     o denominador, também convertendo números em ponto flutuante para
 
2794
     números racionais dentro da tolerância de `ratepsilon'.  As
 
2795
     variáveis são ordenadas de acordo com <x_1>, ..., <x_n>, se
 
2796
     especificado, como em `ratvars'.
 
2797
 
 
2798
     `rat' geralmente não simplifica funções outras que não sejam
 
2799
     adição `+', subtração `-', multiplicação `*', divisão `/', e
 
2800
     exponenciação com expoente inteiro, uma vez que `ratsimp' não
 
2801
     manuseia esses casos.  Note que átomos (números e variáveis) na
 
2802
     forma CRE não são os mesmos que eles são na forma geral.  Por
 
2803
     exemplo, `rat(x)- x' retorna `rat(0)' que tem uma representação
 
2804
     interna diferente de 0.
 
2805
 
 
2806
     Quando `ratfac' for `true', `rat' retorna uma forma parcialmente
 
2807
     fatorada para CRE.  Durante operações racionais a expressão é
 
2808
     mantida como totalmente fatorada como possível sem uma chamada ao
 
2809
     pacote de fatoração (`factor').  Isso pode sempre economizar
 
2810
     espaço de memória e algum tempo em algumas computações.  O
 
2811
     numerador e o denominador são ainda tidos como relativamente primos
 
2812
     (e.g.  `rat ((x^2 - 1)^4/(x + 1)^2)' retorna `(x - 1)^4 (x +
 
2813
     1)^2)', mas os fatores dentro de cada parte podem não ser
 
2814
     relativamente primos.
 
2815
 
 
2816
     `ratprint' se `false' suprime a impressão de mensagens informando
 
2817
     o usuário de conversões de números em ponto flutuante para números
 
2818
     racionais.
 
2819
 
 
2820
     `keepfloat' se `true' evita que números em ponto flutuante sejam
 
2821
     convertidos para números racionais.
 
2822
 
 
2823
     Veja também `ratexpand' e  `ratsimp'.
 
2824
 
 
2825
     Exemplos:
 
2826
 
 
2827
          (%i1) ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /(4*y^2 + x^2);
 
2828
                                                     4
 
2829
                                            (x - 2 y)
 
2830
                        (y + a) (2 y + x) (------------ + 1)
 
2831
                                             2      2 2
 
2832
                                           (x  - 4 y )
 
2833
          (%o1)         ------------------------------------
 
2834
                                        2    2
 
2835
                                     4 y  + x
 
2836
          (%i2) rat (%, y, a, x);
 
2837
                                      2 a + 2 y
 
2838
          (%o2)/R/                    ---------
 
2839
                                       x + 2 y
 
2840
 
 
2841
 
 
2842
 -- Variável de opção: ratalgdenom
 
2843
     Valor Padrão: `true'
 
2844
 
 
2845
     Quando `ratalgdenom' for `true', permite racionalização de
 
2846
     denominadores com respeito a radicais tenham efeito.
 
2847
     `ratalgdenom' tem efeito somente quando expressões racionais
 
2848
     canônicas (CRE) forem usadas no modo algébrico.
 
2849
 
 
2850
 
 
2851
 -- Função: ratcoef (<expr>, <x>, <n>)
 
2852
 -- Função: ratcoef (<expr>, <x>)
 
2853
     Retorna o coeficiente da expressão `<x>^<n>' dentro da expressão
 
2854
     <expr>.  Se omitido, <n> é assumido ser 1.
 
2855
 
 
2856
     O valor de retorno está livre (exceto possivelmente em um senso
 
2857
     não racional) das variáveis em <x>.  Se nenhum coeficiente desse
 
2858
     tipo existe, 0 é retornado.
 
2859
 
 
2860
     `ratcoef' expande e simplifica racionalmente seu primeiro
 
2861
     argumento e dessa forma pode produzir respostas diferentes das de
 
2862
     `coeff' que é puramente sintática.  Dessa forma `ratcoef ((x +
 
2863
     1)/y + x, x)' retorna `(y + 1)/y' ao passo que `coeff' retorna 1.
 
2864
 
 
2865
     `ratcoef (<expr>, <x>, 0)', visualiza <expr> como uma adição,
 
2866
     retornando uma soma desses termos que não possuem <x>.  portanto
 
2867
     se <x> ocorre para quaisquer expoentes negativos, `ratcoef' pode
 
2868
     não ser usado.
 
2869
 
 
2870
     Uma vez que <expr> é racionalmente simplificada antes de ser
 
2871
     examinada, coeficientes podem não aparecer inteiramente no caminho
 
2872
     que eles foram pensados.
 
2873
 
 
2874
     Exemplo:
 
2875
 
 
2876
          (%i1) s: a*x + b*x + 5$
 
2877
          (%i2) ratcoef (s, a + b);
 
2878
          (%o2)                           x
 
2879
 
 
2880
 
 
2881
 -- Função: ratdenom (<expr>)
 
2882
     Retorna o denominador de <expr>, após forçar a conversão de <expr>
 
2883
     para expressão racional canônica (CRE).  O valor de retorno é a
 
2884
     CRE.
 
2885
 
 
2886
     <expr> é forçada para uma CRE por `rat' se não for já uma CRE.
 
2887
     Essa conversão pode mudar a forma de <expr> colocando todos os
 
2888
     termos sobre um denominador comum.
 
2889
 
 
2890
     `denom' é similar, mas retorna uma expressão comum em lugar de uma
 
2891
     CRE.  Também, `denom' não tenta colocar todos os termos sobre um
 
2892
     denominador comum, e dessa forma algumas expressões que são
 
2893
     consideradas razões por `ratdenom' não são consideradas razões por
 
2894
     `denom'.
 
2895
 
 
2896
 
 
2897
 -- Variável de opção: ratdenomdivide
 
2898
     Valor Padrão: `true'
 
2899
 
 
2900
     Quando `ratdenomdivide' for `true', `ratexpand' expande uma razão
 
2901
     cujo o numerador for uma adição dentro de uma soma de razões,
 
2902
     tendo todos um denominador comum.  De outra forma, `ratexpand'
 
2903
     colapsa uma adição de razões dentro de uma razão simples, cujo
 
2904
     numerador seja a adição dos numeradores de cada razão.
 
2905
 
 
2906
     Exemplos:
 
2907
 
 
2908
          (%i1) expr: (x^2 + x + 1)/(y^2 + 7);
 
2909
                                      2
 
2910
                                     x  + x + 1
 
2911
          (%o1)                      ----------
 
2912
                                        2
 
2913
                                       y  + 7
 
2914
          (%i2) ratdenomdivide: true$
 
2915
          (%i3) ratexpand (expr);
 
2916
                                 2
 
2917
                                x        x        1
 
2918
          (%o3)               ------ + ------ + ------
 
2919
                               2        2        2
 
2920
                              y  + 7   y  + 7   y  + 7
 
2921
          (%i4) ratdenomdivide: false$
 
2922
          (%i5) ratexpand (expr);
 
2923
                                      2
 
2924
                                     x  + x + 1
 
2925
          (%o5)                      ----------
 
2926
                                        2
 
2927
                                       y  + 7
 
2928
          (%i6) expr2: a^2/(b^2 + 3) + b/(b^2 + 3);
 
2929
                                               2
 
2930
                                     b        a
 
2931
          (%o6)                    ------ + ------
 
2932
                                    2        2
 
2933
                                   b  + 3   b  + 3
 
2934
          (%i7) ratexpand (expr2);
 
2935
                                            2
 
2936
                                       b + a
 
2937
          (%o7)                        ------
 
2938
                                        2
 
2939
                                       b  + 3
 
2940
 
 
2941
 
 
2942
 -- Função: ratdiff (<expr>, <x>)
 
2943
     Realiza a derivação da expressão racional <expr> com relação a <x>.
 
2944
     <expr> deve ser uma razão de polinômios ou um polinômio em <x>.  O
 
2945
     argumento <x> pode ser uma variável ou uma subexpressão de <expr>.
 
2946
 
 
2947
     O resultado é equivalente a `diff', embora talvez em uma forma
 
2948
     diferente.  `ratdiff' pode ser mais rápida que `diff', para
 
2949
     expressões racionais.
 
2950
 
 
2951
     `ratdiff' retorna uma expressão racional canônica (CRE) se `expr'
 
2952
     for uma CRE.  De outra forma, `ratdiff' retorna uma expressão
 
2953
     geral.
 
2954
 
 
2955
     `ratdiff' considera somente as dependências de <expr> sobre <x>, e
 
2956
     ignora quaisquer dependências estabelecidas por `depends'.
 
2957
 
 
2958
     Exemplo:
 
2959
 
 
2960
          (%i1) expr: (4*x^3 + 10*x - 11)/(x^5 + 5);
 
2961
                                     3
 
2962
                                  4 x  + 10 x - 11
 
2963
          (%o1)                   ----------------
 
2964
                                        5
 
2965
                                       x  + 5
 
2966
          (%i2) ratdiff (expr, x);
 
2967
                              7       5       4       2
 
2968
                           8 x  + 40 x  - 55 x  - 60 x  - 50
 
2969
          (%o2)          - ---------------------------------
 
2970
                                    10       5
 
2971
                                   x   + 10 x  + 25
 
2972
          (%i3) expr: f(x)^3 - f(x)^2 + 7;
 
2973
                                   3       2
 
2974
          (%o3)                   f (x) - f (x) + 7
 
2975
          (%i4) ratdiff (expr, f(x));
 
2976
                                     2
 
2977
          (%o4)                   3 f (x) - 2 f(x)
 
2978
          (%i5) expr: (a + b)^3 + (a + b)^2;
 
2979
                                        3          2
 
2980
          (%o5)                  (b + a)  + (b + a)
 
2981
          (%i6) ratdiff (expr, a + b);
 
2982
                              2                    2
 
2983
          (%o6)            3 b  + (6 a + 2) b + 3 a  + 2 a
 
2984
 
 
2985
 
 
2986
 -- Função: ratdisrep (<expr>)
 
2987
     Retorna seu argumento como uma expressão geral.  Se <expr> for uma
 
2988
     expressão geral, é retornada inalterada.
 
2989
 
 
2990
     Tipicamente `ratdisrep' é chamada para converter uma expressão
 
2991
     racional canônica (CRE) em uma expressão geral.  Isso é algumas
 
2992
     vezes conveniente se deseja-se parar o "contágio", ou caso se
 
2993
     esteja usando funções racionais em contextos não racionais.
 
2994
 
 
2995
     Veja também `totaldisrep'.
 
2996
 
 
2997
 
 
2998
 -- Variável de opção: ratepsilon
 
2999
     Valor Padrão: 2.0e-8
 
3000
 
 
3001
     `ratepsilon' é a tolerância usada em conversões de números em
 
3002
     ponto flutuante para números racionais.
 
3003
 
 
3004
 
 
3005
 -- Função: ratexpand (<expr>)
 
3006
 -- Variável de opção: ratexpand
 
3007
     Expande <expr> multiplicando para fora produtos de somas e somas
 
3008
     exponenciadas, combinando frações sobre um denominador comum,
 
3009
     cancelando o máximo divisor comum entre entre o numerador e o
 
3010
     denominador, então quebrando o numerador (se for uma soma) dentro
 
3011
     de suas respectivas parcelas divididas pelo denominador.
 
3012
 
 
3013
     O valor de retorno de `ratexpand' é uma expressão geral, mesmo se
 
3014
     <expr> for uma expressão racional canônica (CRE).
 
3015
 
 
3016
     O comutador `ratexpand' se `true' fará com que expressões CRE
 
3017
     sejam completamente expandidas quando forem convertidas de volta
 
3018
     para a forma geral ou mostradas, enquanto se for `false' então
 
3019
     elas serão colocadas na forma recursiva.  Veja também `ratsimp'.
 
3020
 
 
3021
     Quando `ratdenomdivide' for `true', `ratexpand' expande uma razão
 
3022
     na qual o numerador é uma adição dentro de uma adição de razões,
 
3023
     todas tendo um denominador comum.  De outra forma, `ratexpand'
 
3024
     contrai uma soma de razões em uma razão simples, cujo numerador é
 
3025
     a soma dos numeradores de cada razão.
 
3026
 
 
3027
     Quando `keepfloat' for `true', evita que números em ponto
 
3028
     flutuante sejam racionalizados quando expressões que contenham
 
3029
     números em ponto flutuante forem convertidas para a forma de
 
3030
     expressão racional canônica (CRE).
 
3031
 
 
3032
     Exemplos:
 
3033
 
 
3034
          (%i1) ratexpand ((2*x - 3*y)^3);
 
3035
                               3         2       2        3
 
3036
          (%o1)          - 27 y  + 54 x y  - 36 x  y + 8 x
 
3037
          (%i2) expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
 
3038
                                   x - 1       1
 
3039
          (%o2)                   -------- + -----
 
3040
                                         2   x - 1
 
3041
                                  (x + 1)
 
3042
          (%i3) expand (expr);
 
3043
                              x              1           1
 
3044
          (%o3)          ------------ - ------------ + -----
 
3045
                          2              2             x - 1
 
3046
                         x  + 2 x + 1   x  + 2 x + 1
 
3047
          (%i4) ratexpand (expr);
 
3048
                                  2
 
3049
                               2 x                 2
 
3050
          (%o4)           --------------- + ---------------
 
3051
                           3    2            3    2
 
3052
                          x  + x  - x - 1   x  + x  - x - 1
 
3053
 
 
3054
 
 
3055
 -- Variável de opção: ratfac
 
3056
     Valor Padrão: `false'
 
3057
 
 
3058
     Quando `ratfac' for `true', expressões racionais canônicas (CRE)
 
3059
     são manipuladas na forma parcialmente fatorada.
 
3060
 
 
3061
     Durante operações racionais a expressão é mantida como
 
3062
     completamente fatorada como foi possível sem chamadas a `factor'.
 
3063
     Isso pode sempre economizar espaço e pode economizar tempo em
 
3064
     algumas computações.  O numerador e o denominador são feitos
 
3065
     relativamente primos, por exemplo `rat ((x^2 - 1)^4/(x + 1)^2)'
 
3066
     retorna `(x - 1)^4 (x + 1)^2)', mas o fator dentro de cada parte
 
3067
     pode não ser relativamente primo.
 
3068
 
 
3069
     No pacote `ctensor' (Manipulação de componentes de tensores),
 
3070
     tensores de Ricci, Einstein, Riemann, e de Weyl e a curvatura
 
3071
     escalar são fatorados automaticamente quando `ratfac' for `true'.
 
3072
     `ratfac' pode somente ser escolhido para casos onde as componentes
 
3073
     tensoriais sejam sabidametne consistidas de poucos termos.
 
3074
 
 
3075
     Os esquemas de `ratfac' e de `ratweight' são incompatíveis e não
 
3076
     podem ambos serem usados ao mesmo tempo.
 
3077
 
 
3078
 
 
3079
 -- Função: ratnumer (<expr>)
 
3080
     Retorna o numerador de <expr>, após forçar <expr> para uma
 
3081
     expressão racional canônica (CRE).  O valor de retorno é uma CRE.
 
3082
 
 
3083
     <expr> é forçada para uma CRE por `rat' se isso não for já uma CRE.
 
3084
     Essa conversão pode alterar a forma de <expr> pela colocação de
 
3085
     todos os termos sobre um denominador comum.
 
3086
 
 
3087
     `num' é similar, mas retorna uma expressão comum em lugar de uma
 
3088
     CRE.  Também, `num' não tenta colocar todos os termos sobre um
 
3089
     denominador comum, e dessa forma algumas expressões que são
 
3090
     consideradas razões por `ratnumer' não são consideradas razões por
 
3091
     `num'.
 
3092
 
 
3093
 
 
3094
 -- Função: ratnump (<expr>)
 
3095
     Retorna `true' se <expr> for um inteiro literal ou razão de
 
3096
     inteiros literais, de outra forma retorna `false'.
 
3097
 
 
3098
 
 
3099
 -- Função: ratp (<expr>)
 
3100
     Retorna `true' se <expr> for uma expressão racional canônica (CRE)
 
3101
     ou CRE extendida, de outra forma retorna `false'.
 
3102
 
 
3103
     CRE são criadas por `rat' e funções relacionadas.  CRE extendidas
 
3104
     são criadas por `taylor' e funções relacionadas.
 
3105
 
 
3106
 
 
3107
 -- Variável de opção: ratprint
 
3108
     Valor Padrão: `true'
 
3109
 
 
3110
     Quando `ratprint' for `true', uma mensagem informando ao usuário
 
3111
     da conversão de números em ponto flutuante para números racionais
 
3112
     é mostrada.
 
3113
 
 
3114
 
 
3115
 -- Função: ratsimp (<expr>)
 
3116
 -- Função: ratsimp (<expr>, <x_1>, ..., <x_n>)
 
3117
     Simplifica a expressão <expr> e todas as suas subexpressões,
 
3118
     incluindo os argumentos para funções não racionais.  O resultado é
 
3119
     retornado como o quociente de dois polinômios na forma recursiva,
 
3120
     isto é, os coeficientes de variável principal são polinômios em
 
3121
     outras variáveis.  Variáveis podem incluir funções não racionais
 
3122
     (e.g., `sin (x^2 + 1)') e os argumentos para quaisquer tais
 
3123
     funções são também simplificados racionalmente.
 
3124
 
 
3125
     `ratsimp (<expr>, <x_1>, ..., <x_n>)' habilita simplificação
 
3126
     racional com a especiicação de variável ordenando como em
 
3127
     `ratvars'.
 
3128
 
 
3129
     Quando `ratsimpexpons' for `true', `ratsimp' é aplicado para os
 
3130
     expoentes de expressões durante a simplificação.
 
3131
 
 
3132
     Veja também `ratexpand'.  Note que `ratsimp' é afetado por algum
 
3133
     dos sinalizadores que afetam `ratexpand'.
 
3134
 
 
3135
     Exemplos:
 
3136
 
 
3137
          (%i1) sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
 
3138
                                                   2      2
 
3139
                             x         (log(x) + 1)  - log (x)
 
3140
          (%o1)        sin(------) = %e
 
3141
                            2
 
3142
                           x  + x
 
3143
          (%i2) ratsimp (%);
 
3144
                                       1          2
 
3145
          (%o2)                  sin(-----) = %e x
 
3146
                                     x + 1
 
3147
          (%i3) ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
 
3148
                                 3/2
 
3149
                          (x - 1)    - sqrt(x - 1) (x + 1)
 
3150
          (%o3)           --------------------------------
 
3151
                               sqrt((x - 1) (x + 1))
 
3152
          (%i4) ratsimp (%);
 
3153
                                     2 sqrt(x - 1)
 
3154
          (%o4)                    - -------------
 
3155
                                           2
 
3156
                                     sqrt(x  - 1)
 
3157
          (%i5) x^(a + 1/a), ratsimpexpons: true;
 
3158
                                         2
 
3159
                                        a  + 1
 
3160
                                        ------
 
3161
                                          a
 
3162
          (%o5)                        x
 
3163
 
 
3164
 
 
3165
 -- Variável de opção: ratsimpexpons
 
3166
     Valor Padrão: `false'
 
3167
 
 
3168
     Quando `ratsimpexpons' for `true', `ratsimp' é aplicado para os
 
3169
     expoentes de expressões durante uma simplificação.
 
3170
 
 
3171
 
 
3172
 -- Função: ratsubst (<a>, <b>, <c>)
 
3173
     Substitue <a> por <b> em <c> e retorna a expressão resultante.
 
3174
     <b> pode também ser uma adição, produto, expoente, etc.
 
3175
 
 
3176
     `ratsubst' sabe alguma coisa do significado de expressões uma vez
 
3177
     que `subst' não é uma substituição puramente sintática.  Dessa
 
3178
     forma `subst (a, x + y, x + y + z)' retorna `x + y + z' ao passo
 
3179
     que `ratsubst' retorna `z + a'.
 
3180
 
 
3181
     Quando `radsubstflag' for `true', `ratsubst' faz substituição de
 
3182
     radicais em expressões que explicitamente não possuem esses
 
3183
     radicais.
 
3184
 
 
3185
     Exemplos:
 
3186
 
 
3187
          (%i1) ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
 
3188
                                        3      4
 
3189
          (%o1)                      a x  y + a
 
3190
          (%i2) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
 
3191
                         4         3         2
 
3192
          (%o2)       cos (x) + cos (x) + cos (x) + cos(x) + 1
 
3193
          (%i3) ratsubst (1 - sin(x)^2, cos(x)^2, %);
 
3194
                      4           2                     2
 
3195
          (%o3)    sin (x) - 3 sin (x) + cos(x) (2 - sin (x)) + 3
 
3196
          (%i4) ratsubst (1 - cos(x)^2, sin(x)^2, sin(x)^4);
 
3197
                                  4           2
 
3198
          (%o4)                cos (x) - 2 cos (x) + 1
 
3199
          (%i5) radsubstflag: false$
 
3200
          (%i6) ratsubst (u, sqrt(x), x);
 
3201
          (%o6)                           x
 
3202
          (%i7) radsubstflag: true$
 
3203
          (%i8) ratsubst (u, sqrt(x), x);
 
3204
                                          2
 
3205
          (%o8)                          u
 
3206
 
 
3207
 
 
3208
 -- Função: ratvars (<x_1>, ..., <x_n>)
 
3209
 -- Função: ratvars ()
 
3210
 -- Variável de sistema: ratvars
 
3211
     Declara variáveis principais <x_1>, ..., <x_n> para expressões
 
3212
     racionais.  <x_n>, se presente em uma expressão racional, é
 
3213
     considerada a variável principal.  De outra forma, <x_[n-1]> é
 
3214
     considerada a variável principal se presente, e assim por diante
 
3215
     até as variáveis precedentes para <x_1>, que é considerada a
 
3216
     variável principal somente se nenhuma das variáveis que a sucedem
 
3217
     estiver presente.
 
3218
 
 
3219
     Se uma variável em uma expressão racional não está presente na
 
3220
     lista `ratvars', a ela é dada uma prioridade menor que <x_1>.
 
3221
 
 
3222
     Os argumentos para `ratvars' podem ser ou variáveis ou funções não
 
3223
     racionais tais como `sin(x)'.
 
3224
 
 
3225
     A variável `ratvars' é uma lista de argumentos da função `ratvars'
 
3226
     quando ela foi chamada mais recentemente.  Cada chamada para a
 
3227
     função `ratvars' sobre-grava a lista apagando seu conteúdo
 
3228
     anterior.  `ratvars ()' limpa a lista.
 
3229
 
 
3230
 
 
3231
 -- Função: ratweight (<x_1>, <w_1>, ..., <x_n>, <w_n>)
 
3232
 -- Função: ratweight ()
 
3233
     Atribui um peso <w_i> para a variável <x_i>.  Isso faz com que um
 
3234
     termo seja substituído por 0 se seu peso exceder o valor da
 
3235
     variável `ratwtlvl' (o padrão retorna sem truncação).  O peso de
 
3236
     um termo é a soma dos produtos dos pesos de uma variável no termo
 
3237
     vezes seu expoente.  Por exemplo, o peso de `3 x_1^2 x_2' é `2 w_1
 
3238
     + w_2'.  A truncação de acordo com `ratwtlvl' é realizada somente
 
3239
     quando multiplicando ou exponencializando expressões racionais
 
3240
     canônicas (CRE).
 
3241
 
 
3242
     `ratweight ()' retorna a lista cumulativa de atribuições de pesos.
 
3243
 
 
3244
     Nota: Os esquemas de `ratfac' e `ratweight' são incompatíveis e
 
3245
     não podem ambo serem usados ao mesmo tempo.
 
3246
 
 
3247
     Exemplos:
 
3248
 
 
3249
          (%i1) ratweight (a, 1, b, 1);
 
3250
          (%o1)                     [a, 1, b, 1]
 
3251
          (%i2) expr1: rat(a + b + 1)$
 
3252
          (%i3) expr1^2;
 
3253
                            2                  2
 
3254
          (%o3)/R/         b  + (2 a + 2) b + a  + 2 a + 1
 
3255
          (%i4) ratwtlvl: 1$
 
3256
          (%i5) expr1^2;
 
3257
          (%o5)/R/                  2 b + 2 a + 1
 
3258
 
 
3259
 
 
3260
 -- Variável de sistema: ratweights
 
3261
     Valor Padrão: `[]'
 
3262
 
 
3263
     `ratweights' é a lista de pesos atribuídos por `ratweight'.  A
 
3264
     lista é cumulativa: cada chamada a `ratweight' coloca ítens
 
3265
     adicionais na lista.
 
3266
 
 
3267
     `kill (ratweights)' e `save (ratweights)' ambos trabalham como
 
3268
     esperado.
 
3269
 
 
3270
 
 
3271
 -- Variável de opção: ratwtlvl
 
3272
     Valor Padrão: `false'
 
3273
 
 
3274
     `ratwtlvl' é usada em combinação com a função `ratweight' para
 
3275
     controlar a truncação de expressão racionais canônicas (CRE).
 
3276
     Para o valor padrão `false', nenhuma truncação ocorre.
 
3277
 
 
3278
 
 
3279
 -- Função: remainder (<p_1>, <p_2>)
 
3280
 -- Função: remainder (<p_1>, <p_2>, <x_1>, ..., <x_n>)
 
3281
     Retorna o resto do polinômio <p_1> dividido pelo polinômio <p_2>.
 
3282
     Os argumentos <x_1>, ..., <x_n> são interpretados como em
 
3283
     `ratvars'.
 
3284
 
 
3285
     `remainder' retorna o segundo elemento de uma lista de dois
 
3286
     elementos retornada por `divide'.
 
3287
 
 
3288
 
 
3289
 -- Função: resultant (<p_1>, <p_2>, <x>)
 
3290
 -- Variável: resultant
 
3291
     Calcula o resultante de dois polinômios <p_1> e <p_2>, eliminando
 
3292
     a variável <x>.  O resultante é um determinante dos coeficientes
 
3293
     de <x> em <p_1> e <p_2>, que é igual a zero se e somente se <p_1>
 
3294
     e <p_2> tiverem um fator em comum não constante.
 
3295
 
 
3296
     Se <p_1> ou <p_2> puderem ser fatorados, pode ser desejável chamar
 
3297
     `factor' antes de chamar `resultant'.
 
3298
 
 
3299
     A variável `resultant' controla que algorítmo será usado para
 
3300
     calcular o resultante.  `subres' para o prs subresultante, `mod'
 
3301
     para o algorítmo resultante modular, e `red' para prs reduzido.
 
3302
     Para muitos problemas `subres' pode ser melhor.  Para alguns
 
3303
     problemas com valores grandes de grau de uma única variável ou de
 
3304
     duas variáveis `mod' pode ser melhor.
 
3305
 
 
3306
     A função `bezout' pega os mesmos argumentos que `resultant' e
 
3307
     retorna uma matriz.  O determinante do valor de retorno é o
 
3308
     resultante desejado.
 
3309
 
 
3310
 
 
3311
 -- Variável de opção: savefactors
 
3312
     Valor Padrão: `false'
 
3313
 
 
3314
     Quando `savefactors' for `true', faz com que os fatores de uma
 
3315
     expressão que é um produto de fatores sejam gravados por certas
 
3316
     funções com o objetivo de aumentar a velocidade em posteriores
 
3317
     fatorações de expressões contendo algum desses mesmos fatores.
 
3318
 
 
3319
 
 
3320
 -- Função: sqfr (<expr>)
 
3321
     é similar a `factor' exceto que os fatores do polinômio são
 
3322
     "livres de raízes".  Isto é, eles possuem fatores somente de grau
 
3323
     um.  Esse algorítmo, que é também usado no primeiro estágio de
 
3324
     `factor', utiliza o fato que um polinômio tem em comum com sua
 
3325
     n'ésima derivada todos os seus fatores de grau maior que n.  Dessa
 
3326
     forma pegando o maior divisor comum com o polinômio das derivadas
 
3327
     com relação a cada variável no polinômio, todos os fatores de grau
 
3328
     maior que 1 podem ser achados.
 
3329
 
 
3330
     Exemplo:
 
3331
 
 
3332
          (%i1) sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
 
3333
                                          2   2
 
3334
          (%o1)                  (2 x + 1)  (x  - 1)
 
3335
 
 
3336
 
 
3337
 -- Função: tellrat (<p_1>, ..., <p_n>)
 
3338
 -- Função: tellrat ()
 
3339
     Adiciona ao anel dos inteiros algébricos conhecidos do Maxima os
 
3340
     elementos que são as soluções dos polinômios <p_1>, ..., <p_n>.
 
3341
     Cada argumento <p_i> é um polinômio concoeficientes inteiros.
 
3342
 
 
3343
     `tellrat (<x>)' efetivamente significa substituir 0 por <x> em
 
3344
     funções racionais.
 
3345
 
 
3346
     `tellrat ()' retorna uma lista das substituições correntes.
 
3347
 
 
3348
     `algebraic' deve ser escolhida para `true' com o objetivo de que a
 
3349
     simplificação de inteiros algébricos tenha efeito.
 
3350
 
 
3351
     Maxima inicialmente sabe sobre a unidade imaginária `%i' e todas
 
3352
     as raízes de inteiros.
 
3353
 
 
3354
     Existe um comando `untellrat' que pega kernels (núcleos) e remove
 
3355
     propriedades `tellrat'.
 
3356
 
 
3357
     Quando fazemos `tellrat' em um polinômio de várias variáveis,
 
3358
     e.g., `tellrat (x^2 - y^2)', pode existir uma ambigüidade como para
 
3359
     ou substituir `<y>^2' por `<x>^2' ou vice-versa.  Maxima seleciona
 
3360
     uma ordenação particular, mas se o usuário desejar especificar
 
3361
     qual e.g.  `tellrat (y^2 = x^2)' forneçe uma sintaxe que diga para
 
3362
     substituir `<y>^2' por `<x>^2'.
 
3363
 
 
3364
     Exemplos:
 
3365
 
 
3366
          (%i1) 10*(%i + 1)/(%i + 3^(1/3));
 
3367
                                     10 (%i + 1)
 
3368
          (%o1)                      -----------
 
3369
                                            1/3
 
3370
                                      %i + 3
 
3371
          (%i2) ev (ratdisrep (rat(%)), algebraic);
 
3372
                       2/3      1/3              2/3      1/3
 
3373
          (%o2)    (4 3    - 2 3    - 4) %i + 2 3    + 4 3    - 2
 
3374
          (%i3) tellrat (1 + a + a^2);
 
3375
                                      2
 
3376
          (%o3)                     [a  + a + 1]
 
3377
          (%i4) 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
 
3378
                                1                 a
 
3379
          (%o4)           ------------- + -----------------
 
3380
                          sqrt(2) a - 1   sqrt(3) + sqrt(2)
 
3381
          (%i5) ev (ratdisrep (rat(%)), algebraic);
 
3382
                   (7 sqrt(3) - 10 sqrt(2) + 2) a - 2 sqrt(2) - 1
 
3383
          (%o5)    ----------------------------------------------
 
3384
                                         7
 
3385
          (%i6) tellrat (y^2 = x^2);
 
3386
                                  2    2   2
 
3387
          (%o6)                 [y  - x , a  + a + 1]
 
3388
 
 
3389
 
 
3390
 -- Função: totaldisrep (<expr>)
 
3391
     Converte toda subexpressão de <expr> da forma de expressão
 
3392
     racionais canônicas (CRE) para a forma geral e retorna o resultado.
 
3393
     Se <expr> é em sí mesma na forma CRE então `totaldisrep' é
 
3394
     identica a `ratdisrep'.
 
3395
 
 
3396
     `totaldisrep' pode ser usada para fazer um `ratdisrep' em
 
3397
     expressões tais como equações, listas, matrizes, etc., que tiverem
 
3398
     algumas subexpressões na forma CRE.
 
3399
 
 
3400
 
 
3401
 -- Função: untellrat (<x_1>, ..., <x_n>)
 
3402
     Remove propriedades `tellrat' de <x_1>, ..., <x_n>.
 
3403
 
 
3404
 
 
3405
 
 
3406
File: maxima.info,  Node: Constantes,  Next: Logarítmos,  Prev: Polinômios,  Up: Top
 
3407
 
 
3408
13 Constantes
 
3409
*************
 
3410
 
 
3411
* Menu:
 
3412
 
 
3413
* Definições para Constantes::
 
3414
 
 
3415
 
 
3416
File: maxima.info,  Node: Definições para Constantes,  Prev: Constantes,  Up: Constantes
 
3417
 
 
3418
13.1 Definições para Constantes
 
3419
===============================
 
3420
 
 
3421
 -- Constante: %e
 
3422
     - A base dos logarítmos naturais, e, é representada no Maxima como
 
3423
     `%e'.
 
3424
 
 
3425
 
 
3426
 -- Constante: false
 
3427
     - a contante Booleana, falso.  (NIL em Lisp)
 
3428
 
 
3429
 
 
3430
 -- Constante: inf
 
3431
     - infinito positivo real.
 
3432
 
 
3433
 
 
3434
 -- Constante: infinity
 
3435
     - infinito complexo.
 
3436
 
 
3437
 
 
3438
 -- Constante: minf
 
3439
     - menos infinito real.
 
3440
 
 
3441
 
 
3442
 -- Constante: %pi
 
3443
     - "pi" é representado no Maxima como `%pi'.
 
3444
 
 
3445
 
 
3446
 -- Constante: true
 
3447
     - a constante Booleana, verdadeiro.  (T em Lisp)
 
3448
 
 
3449
 
 
3450
 
 
3451
File: maxima.info,  Node: Logarítmos,  Next: Trigonometria,  Prev: Constantes,  Up: Top
 
3452
 
 
3453
14 Logarítmos
 
3454
*************
 
3455
 
 
3456
* Menu:
 
3457
 
 
3458
* Definições para Logarítmos::
 
3459
 
 
3460
 
 
3461
File: maxima.info,  Node: Definições para Logarítmos,  Prev: Logarítmos,  Up: Logarítmos
 
3462
 
 
3463
14.1 Definições para Logarítmos
 
3464
===============================
 
3465
 
 
3466
 -- Variável de opção: %e_to_numlog
 
3467
     Valor padrão: `false'
 
3468
 
 
3469
     Quando `true', sendo `r' algum número racional, e `x' alguma
 
3470
     expressão, `%e^(r*log(x))' irá ser simplificado em `x^r' .
 
3471
     Note-se que o comando `radcan' também faz essa transformação, e
 
3472
     transformações mais complicadas desse tipo também.  O comando
 
3473
     `logcontract' "contrai" expressões contendo `log'.
 
3474
 
 
3475
 
 
3476
 -- Função: li [<s>] (<z>)
 
3477
     Representa a função polilogarítmo de ordem <s> e argumento <z>,
 
3478
     definida por meio de séries infinitas
 
3479
 
 
3480
                                           inf
 
3481
                                           ====   k
 
3482
                                           \     z
 
3483
                                  Li (z) =  >    --
 
3484
                                    s      /      s
 
3485
                                           ====  k
 
3486
                                           k = 1
 
3487
 
 
3488
     `li [1]' é `- log (1 - z)'.  `li [2]' e `li [3]' são as funções
 
3489
     dilogarítmo e trilogarítmo, respectivamente.
 
3490
 
 
3491
     Quando a ordem for 1, o polilogarítmo simplifica para `- log (1 -
 
3492
     z)', o qual por sua vez simplifica para um valor numérico se <z>
 
3493
     for um número em ponto flutuante real ou complexo ou o sinalizador
 
3494
     de avaliação `numer' estiver presente.
 
3495
 
 
3496
     Quando a ordem for 2 ou 3, o polilogarítmo simplifica para um
 
3497
     valor numérico se <z> for um número real em ponto flutuante ou o
 
3498
     sinalizador de avaliação `numer' estiver presente.
 
3499
 
 
3500
     Exemplos:
 
3501
 
 
3502
          (%i1) assume (x > 0);
 
3503
          (%o1)                        [x > 0]
 
3504
          (%i2) integrate ((log (1 - t)) / t, t, 0, x);
 
3505
          (%o2)                       - li (x)
 
3506
                                          2
 
3507
          (%i3) li [2] (7);
 
3508
          (%o3)                        li (7)
 
3509
                                         2
 
3510
          (%i4) li [2] (7), numer;
 
3511
          (%o4)        1.24827317833392 - 6.113257021832577 %i
 
3512
          (%i5) li [3] (7);
 
3513
          (%o5)                        li (7)
 
3514
                                         3
 
3515
          (%i6) li [2] (7), numer;
 
3516
          (%o6)        1.24827317833392 - 6.113257021832577 %i
 
3517
          (%i7) L : makelist (i / 4.0, i, 0, 8);
 
3518
          (%o7)   [0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]
 
3519
          (%i8) map (lambda ([x], li [2] (x)), L);
 
3520
          (%o8) [0, .2676526384986274, .5822405249432515,
 
3521
          .9784693966661848, 1.64493407, 2.190177004178597
 
3522
           - .7010261407036192 %i, 2.374395264042415
 
3523
           - 1.273806203464065 %i, 2.448686757245154
 
3524
           - 1.758084846201883 %i, 2.467401098097648
 
3525
           - 2.177586087815347 %i]
 
3526
          (%i9) map (lambda ([x], li [3] (x)), L);
 
3527
          (%o9) [0, .2584613953442624, 0.537213192678042,
 
3528
          .8444258046482203, 1.2020569, 1.642866878950322
 
3529
           - .07821473130035025 %i, 2.060877505514697
 
3530
           - .2582419849982037 %i, 2.433418896388322
 
3531
           - .4919260182322965 %i, 2.762071904015935
 
3532
           - .7546938285978846 %i]
 
3533
 
 
3534
 
 
3535
 -- Função: log (<x>)
 
3536
     Representa o logarítmo natural (base e) de <x>.
 
3537
 
 
3538
     Maxima não possui uma função interna para logarítmo de base 10 ou
 
3539
     de outras bases. `log10(x) := log(x) / log(10)' é uma definição
 
3540
     útil.
 
3541
 
 
3542
     Simplificação e avaliação de logarítmos são governadas por muitos
 
3543
     sinalizadores globais:
 
3544
 
 
3545
     `logexpand' - faz com que `log(a^b)' torne-se `b*log(a)'.  Se
 
3546
     `logexpand' for escolhida para `all', `log(a*b)' irá também
 
3547
     simplificar para `log(a)+log(b)'.  Se `logexpand' for escolhida
 
3548
     para `super', então `log(a/b)' irá também simplificar para
 
3549
     `log(a)-log(b)' para números racionais `a/b', `a#1'.  (`log(1/b)',
 
3550
     para `b' inteiro, sempre simplifica).  Se `logexpand' for
 
3551
     escolhida para `false', todas essas simplificações irão ser
 
3552
     desabilitadas.
 
3553
 
 
3554
     `logsimp' - se `false' então nenhuma simplificação de `%e' para um
 
3555
     expoente contendo `log''s é concluída.
 
3556
 
 
3557
     `lognumer' - se `true' então argumentos negativos em ponto
 
3558
     flutuante para `log' irá sempre ser convertido para seu valor
 
3559
     absoluto antes que `log' seja tomado.  Se `numer' for também
 
3560
     `true', então argumentos negativos inteiros para `log' irão também
 
3561
     ser convertidos para seu valor absoluto.
 
3562
 
 
3563
     `lognegint' - se `true' implementa a regra `log(-n)' ->
 
3564
     `log(n)+%i*%pi' para `n' um inteiro positivo.
 
3565
 
 
3566
     `%e_to_numlog' - quando `true', `r' sendo algum número racional, e
 
3567
     `x' alguma expressão, `%e^(r*log(x))' irá ser simplificado em
 
3568
     `x^r' .  Note-se que o comando `radcan' também faz essa
 
3569
     transformação, e transformações mais complicadas desse tipo também.
 
3570
     O comando `logcontract' "contrai" expressões contendo `log'.
 
3571
 
 
3572
 
 
3573
 -- Variável de opção: logabs
 
3574
     Valor padrão: `false'
 
3575
 
 
3576
     Quando fazendo integração indefinida onde logs são gerados, e.g.
 
3577
     `integrate(1/x,x)', a resposta é dada em termos de `log(abs(...))'
 
3578
     se `logabs' for `true', mas em termos de `log(...)' se `logabs'
 
3579
     for `false'.  Para integração definida, a escolha `logabs:true' é
 
3580
     usada, porque aqui "avaliação" de integral indefinida nos extremos
 
3581
     é muitas vezes necessária.
 
3582
 
 
3583
 
 
3584
 -- Variável de opção: logarc
 
3585
 -- Função: logarc (<expr>)
 
3586
     Se `true' irá fazer com que as funções circularee inversas e
 
3587
     hiperbólicas sejam convertidas em formas logarítimicas.
 
3588
     `logarc(<exp>)' irá fazer com que essa conversão para uma expressão
 
3589
     particular <exp> sem escolher o comutador ou tendo que re-avaliar
 
3590
     a expressão com `ev'.
 
3591
 
 
3592
     Quando a variável global `logarc' for `true', funções circulares
 
3593
     inversas e funções hiperbólicas são substituídas por suas funções
 
3594
     logarítmicas equivalentes.  O valor padrão de `logarc' é `false'.
 
3595
 
 
3596
     A função `logarc(<expr>)' realiza aquela substituíção para uma
 
3597
     expressão <expr> sem modificar o valor da variável global `logarc'.
 
3598
 
 
3599
 
 
3600
 -- Variável de opção: logconcoeffp
 
3601
     Valor padrão: `false'
 
3602
 
 
3603
     Controla quais coeficientes são contraídos quando usando
 
3604
     `logcontract'.  Pode ser escolhida para o nome de uma função
 
3605
     predicado de um argumento.  E.g. se você gosta de gerar raízes
 
3606
     quadradas, você pode fazer `logconcoeffp:'logconfun$
 
3607
     logconfun(m):=featurep(m,integer) ou ratnump(m)$' .  Então
 
3608
     `logcontract(1/2*log(x));' irá fornecer `log(sqrt(x))'.
 
3609
 
 
3610
 
 
3611
 -- Função: logcontract (<expr>)
 
3612
     Recursivamente examina a expressão <expr>, transformando
 
3613
     subexpressões da forma `a1*log(b1) + a2*log(b2) + c' em
 
3614
     `log(ratsimp(b1^a1 * b2^a2)) + c'
 
3615
 
 
3616
          (%i1) 2*(a*log(x) + 2*a*log(y))$
 
3617
          (%i2) logcontract(%);
 
3618
                                           2  4
 
3619
          (%o2)                     a log(x  y )
 
3620
 
 
3621
     Se você faz `declare(n,integer);' então
 
3622
     `logcontract(2*a*n*log(x));' fornece `a*log(x^(2*n))'.  Os
 
3623
     coeficientes que "contraem" dessa maneira são aqueles tais que 2 e
 
3624
     `n' que satisfazem `featurep(coeff,integer)'.  O usuário pode
 
3625
     controlar quais coeficientes são contraídos escolhendo a opção
 
3626
     `logconcoeffp' para o nome de uma função predicado de um
 
3627
     argumento.  E.g. se você gosta de gerara raízes quadradas, você
 
3628
     pode fazer `logconcoeffp:'logconfun$
 
3629
     logconfun(m):=featurep(m,integer) ou ratnump(m)$' .  então
 
3630
     `logcontract(1/2*log(x));' irá fornecer `log(sqrt(x))'.
 
3631
 
 
3632
 
 
3633
 -- Variável de opção: logexpand
 
3634
     Valor padrão: `true'
 
3635
 
 
3636
     Faz com que `log(a^b)' torne-se `b*log(a)'.  Se for escolhida para
 
3637
     `all', `log(a*b)' irá também simplificar para `log(a)+log(b)'.  Se
 
3638
     for escolhida para `super', então `log(a/b)' irá também
 
3639
     simplificar para `log(a)-log(b)' para números racionais `a/b',
 
3640
     `a#1'.  (`log(1/b)', para `b' inteiro, sempre simplifica).  Se for
 
3641
     escolhida para `false', todas essas simplificações irão ser
 
3642
     desabilitadas.
 
3643
 
 
3644
 
 
3645
 -- Variável de opção: lognegint
 
3646
     Valor padrão: `false'
 
3647
 
 
3648
     Se `true' implementa a regra `log(-n)' -> `log(n)+%i*%pi' para `n'
 
3649
     um inteiro positivo.
 
3650
 
 
3651
 
 
3652
 -- Variável de opção: lognumer
 
3653
     Valor padrão: `false'
 
3654
 
 
3655
     Se `true' então argumentos negativos em ponto flutuante para `log'
 
3656
     irão sempre ser convertidos para seus valores absolutos antes que
 
3657
     o `log' seja tomado.  Se `numer' for também `true', então
 
3658
     argumentos inteiros negativos para `log' irão também ser
 
3659
     convertidos para seus valores absolutos.
 
3660
 
 
3661
 
 
3662
 -- Variável de opção: logsimp
 
3663
     Valor padrão: `true'
 
3664
 
 
3665
     Se `false' então nenhuma simplificação de `%e' para um expoente
 
3666
     contendo `log''s é concluída.
 
3667
 
 
3668
 
 
3669
 -- Função: plog (<x>)
 
3670
     Representa o principal ramo logarítmos naturais avaliados para
 
3671
     complexos com `-%pi' < `carg(<x>)' <= `+%pi' .
 
3672
 
 
3673
 
 
3674
 
 
3675
File: maxima.info,  Node: Trigonometria,  Next: Funções Especiais,  Prev: Logarítmos,  Up: Top
 
3676
 
 
3677
15 Trigonometria
 
3678
****************
 
3679
 
 
3680
* Menu:
 
3681
 
 
3682
* Introdução ao Pacote Trigonométrico::
 
3683
* Definições para Trigonometria::
 
3684
 
 
3685
 
 
3686
File: maxima.info,  Node: Introdução ao Pacote Trigonométrico,  Next: Definições para Trigonometria,  Prev: Trigonometria,  Up: Trigonometria
 
3687
 
 
3688
15.1 Introdução ao Pacote Trigonométrico
 
3689
========================================
 
3690
 
 
3691
Maxima tem muitas funções trigonométricas definidas.  Não todas as
 
3692
identidades trigonometricas estão programadas, mas isso é possível para
 
3693
o usuário adicionar muitas delas usando a compatibilidade de
 
3694
correspondência de modelos do sistema.  As funções trigonométricas
 
3695
definidas no Maxima são: `acos', `acosh', `acot', `acoth', `acsc',
 
3696
`acsch', `asec', `asech', `asin', `asinh', `atan', `atanh', `cos',
 
3697
`cosh', `cot', `coth', `csc', `csch', `sec', `sech', `sin', `sinh',
 
3698
`tan', e `tanh'.  Existe uma coleção de comandos especialmente para
 
3699
manusear funções trigonométricas, veja `trigexpand', `trigreduce', e o
 
3700
comutador `trigsign'.  Dois pacotes compartilhados extendem as regras
 
3701
de simplificação construídas no Maxima, `ntrig' e `atrig1'.  Faça
 
3702
`describe(<comando>)' para detalhes.
 
3703
 
 
3704
 
 
3705
File: maxima.info,  Node: Definições para Trigonometria,  Prev: Introdução ao Pacote Trigonométrico,  Up: Trigonometria
 
3706
 
 
3707
15.2 Definições para Trigonometria
 
3708
==================================
 
3709
 
 
3710
 -- Função: acos (<x>)
 
3711
     - Arco Cosseno.
 
3712
 
 
3713
 
 
3714
 -- Função: acosh (<x>)
 
3715
     - Arco Cosseno Hiperbólico.
 
3716
 
 
3717
 
 
3718
 -- Função: acot (<x>)
 
3719
     - Arco Cotangente.
 
3720
 
 
3721
 
 
3722
 -- Função: acoth (<x>)
 
3723
     - Arco Cotangente Hiperbólico.
 
3724
 
 
3725
 
 
3726
 -- Função: acsc (<x>)
 
3727
     - Arco Cossecante.
 
3728
 
 
3729
 
 
3730
 -- Função: acsch (<x>)
 
3731
     - Arco Cossecante Hiperbólico.
 
3732
 
 
3733
 
 
3734
 -- Função: asec (<x>)
 
3735
     - Arco Secante.
 
3736
 
 
3737
 
 
3738
 -- Função: asech (<x>)
 
3739
     - Arco Secante Hiperbólico.
 
3740
 
 
3741
 
 
3742
 -- Função: asin (<x>)
 
3743
     - Arco Seno.
 
3744
 
 
3745
 
 
3746
 -- Função: asinh (<x>)
 
3747
     - Arco Seno Hiperbólico.
 
3748
 
 
3749
 
 
3750
 -- Função: atan (<x>)
 
3751
     - Arco Tangente.
 
3752
 
 
3753
 
 
3754
 -- Função: atan2 (<y>, <x>)
 
3755
     - retorna o valor de `atan(<y>/<x>)' no intervalo de `-%pi' a
 
3756
     `%pi'.
 
3757
 
 
3758
 
 
3759
 -- Função: atanh (<x>)
 
3760
     - Arco tangente Hiperbólico.
 
3761
 
 
3762
 
 
3763
 -- Pacote: atrig1
 
3764
     O pacote `atrig1' contém muitas regras adicionais de simplificação
 
3765
     para funções trigonométricas inversas.  Junto com regras já
 
3766
     conhecidas para Maxima, os seguintes ângulos estão completamente
 
3767
     implementados: `0', `%pi/6', `%pi/4', `%pi/3', and `%pi/2'.  Os
 
3768
     ângulos correspondentes nos outros três quadrantes estão também
 
3769
     disponíveis.  Faça `load(atrig1);' para usá-lo.
 
3770
 
 
3771
 
 
3772
 -- Função: cos (<x>)
 
3773
     - Cosseno.
 
3774
 
 
3775
 
 
3776
 -- Função: cosh (<x>)
 
3777
     - Cosseno hiperbólico.
 
3778
 
 
3779
 
 
3780
 -- Função: cot (<x>)
 
3781
     - Cotangente.
 
3782
 
 
3783
 
 
3784
 -- Função: coth (<x>)
 
3785
     - Cotangente Hyperbólica.
 
3786
 
 
3787
 
 
3788
 -- Função: csc (<x>)
 
3789
     - Cossecante.
 
3790
 
 
3791
 
 
3792
 -- Função: csch (<x>)
 
3793
     - Cossecante Hyperbólica.
 
3794
 
 
3795
 
 
3796
 -- Variável de opção: halfangles
 
3797
     Default value: `false'
 
3798
 
 
3799
     Quando `halfangles' for `true', meios-ângulos são simplificados
 
3800
     imediatamente.
 
3801
 
 
3802
 
 
3803
 -- Pacote: ntrig
 
3804
     O pacote `ntrig' contém um conjunto de regras de simplificação que
 
3805
     são usadas para simplificar função trigonométrica cujos argumentos
 
3806
     estão na forma `<f>(<n> %pi/10)' onde <f> é qualquer das funções
 
3807
     `sin', `cos', `tan', `csc', `sec' e `cot'.
 
3808
 
 
3809
 
 
3810
 -- Função: sec (<x>)
 
3811
     - Secante.
 
3812
 
 
3813
 
 
3814
 -- Função: sech (<x>)
 
3815
     - Secante Hyperbólica.
 
3816
 
 
3817
 
 
3818
 -- Função: sin (<x>)
 
3819
     - Seno.
 
3820
 
 
3821
 
 
3822
 -- Função: sinh (<x>)
 
3823
     - Seno Hyperbólico.
 
3824
 
 
3825
 
 
3826
 -- Função: tan (<x>)
 
3827
     - Tangente.
 
3828
 
 
3829
 
 
3830
 -- Função: tanh (<x>)
 
3831
     - Tangente Hyperbólica.
 
3832
 
 
3833
 
 
3834
 -- Função: trigexpand (<expr>)
 
3835
     Expande funções trigonometricas e hyperbólicas de adições de
 
3836
     ângulos e de ângulos multiplos que ocorram em <expr>.  Para
 
3837
     melhores resultados, <expr> deve ser expandida.  Para intensificar
 
3838
     o controle do usuário na simplificação, essa função expande
 
3839
     somente um nível de cada vez, expandindo adições de ângulos ou
 
3840
     ângulos multiplos.  Para obter expansão completa dentro de senos e
 
3841
     cossenos imediatamente, escolha o comutador `trigexpand: true'.
 
3842
 
 
3843
     `trigexpand' é governada pelos seguintes sinalizadores globais:
 
3844
 
 
3845
    `trigexpand'
 
3846
          Se `true' causa expansão de todas as expressões contendo
 
3847
          senos e cossenos ocorrendo subseqüêntemente.
 
3848
 
 
3849
    `halfangles'
 
3850
          Se `true' faz com que meios-ângulos sejam simplificados
 
3851
          imediatamente.
 
3852
 
 
3853
    `trigexpandplus'
 
3854
          Controla a regra "soma" para `trigexpand', expansão de
 
3855
          adições (e.g. `sin(x + y)') terão lugar somente se
 
3856
          `trigexpandplus' for `true'.
 
3857
 
 
3858
    `trigexpandtimes'
 
3859
          Controla a regra "produto" para `trigexpand', expansão de
 
3860
          produtos (e.g. `sin(2 x)') terão lugar somente se
 
3861
          `trigexpandtimes' for `true'.
 
3862
 
 
3863
     Exemplos:
 
3864
 
 
3865
          (%i1) x+sin(3*x)/sin(x),trigexpand=true,expand;
 
3866
                                   2           2
 
3867
          (%o1)               - sin (x) + 3 cos (x) + x
 
3868
          (%i2) trigexpand(sin(10*x+y));
 
3869
          (%o2)          cos(10 x) sin(y) + sin(10 x) cos(y)
 
3870
 
 
3871
 
 
3872
 -- Variável de opção: trigexpandplus
 
3873
     Valor padrão: `true'
 
3874
 
 
3875
     `trigexpandplus' controla a regra da "soma" para `trigexpand'.
 
3876
     Dessa forma, quando o comando `trigexpand' for usado ou o
 
3877
     comutador `trigexpand' escolhido para `true', expansão de adições
 
3878
     (e.g. `sin(x+y))' terão lugar somente se `trigexpandplus' for
 
3879
     `true'.
 
3880
 
 
3881
 
 
3882
 -- Variável de opção: trigexpandtimes
 
3883
     Valor padrão: `true'
 
3884
 
 
3885
     `trigexpandtimes' controla a regra "produto" para `trigexpand'.
 
3886
     Dessa forma, quando o comando `trigexpand' for usado ou o
 
3887
     comutador `trigexpand' escolhido para `true', expansão de produtos
 
3888
     (e.g. `sin(2*x)') terão lugar somente se `trigexpandtimes' for
 
3889
     `true'.
 
3890
 
 
3891
 
 
3892
 -- Variável de opção: triginverses
 
3893
     Valor padrão: `all'
 
3894
 
 
3895
     `triginverses' controla a simplificação de composições de funções
 
3896
     trigonométricas e hiperbólicas com suas funções inversas.
 
3897
 
 
3898
     Se `all', ambas e.g. `atan(tan(<x>))' e `tan(atan(<x>))'
 
3899
     simplificarão para <x>.
 
3900
 
 
3901
     Se `true', a simplificação  de `<arcfun>(<fun>(<x>))' é
 
3902
     desabilitada.
 
3903
 
 
3904
     Se `false', ambas as simplificações `<arcfun>(<fun>(<x>))' e
 
3905
     `<fun>(<arcfun>(<x>))' são desabilitadas.
 
3906
 
 
3907
 
 
3908
 -- Função: trigreduce (<expr>, <x>)
 
3909
 -- Função: trigreduce (<expr>)
 
3910
     Combina produtos e expoentes de senos e cossenso trigonométricos e
 
3911
     hiperbólicos de <x> dentro daqueles de múltiplos de <x>.  Também
 
3912
     tenta eliminar essas funções quando elas ocorrerem em
 
3913
     denominadores.  Se <x> for omitido então todas as variáveis em
 
3914
     <expr> são usadas.
 
3915
 
 
3916
     Veja também `poissimp'.
 
3917
 
 
3918
          (%i1) trigreduce(-sin(x)^2+3*cos(x)^2+x);
 
3919
                         cos(2 x)      cos(2 x)   1        1
 
3920
          (%o1)          -------- + 3 (-------- + -) + x - -
 
3921
                            2             2       2        2
 
3922
 
 
3923
     As rotinas de simplificação trigonométrica irão usar informações
 
3924
     declaradas em alguns casos simples.  Declarações sobre variáveis
 
3925
     são usadas como segue, e.g.
 
3926
 
 
3927
          (%i1) declare(j, integer, e, even, o, odd)$
 
3928
          (%i2) sin(x + (e + 1/2)*%pi);
 
3929
          (%o2)                        cos(x)
 
3930
          (%i3) sin(x + (o + 1/2)*%pi);
 
3931
          (%o3)                       - cos(x)
 
3932
 
 
3933
 
 
3934
 -- Variável de opção: trigsign
 
3935
     Valor padrão: `true'
 
3936
 
 
3937
     Quando `trigsign' for `true', permite simplificação de argumentos
 
3938
     negativos para funções trigonométricas. E.g., `sin(-x)'
 
3939
     transformar-se-á em `-sin(x)' somente se `trigsign' for `true'.
 
3940
 
 
3941
 
 
3942
 -- Função: trigsimp (<expr>)
 
3943
     Utiliza as identidades sin(x)^2 + cos(x)^2 = 1 and cosh(x)^2 -
 
3944
     sinh(x)^2 = 1 para simplificar expressões contendo `tan', `sec',
 
3945
     etc., para `sin', `cos', `sinh', `cosh'.
 
3946
 
 
3947
     `trigreduce', `ratsimp', e `radcan' podem estar habilitadas a
 
3948
     adicionar simplificações ao resultado.
 
3949
 
 
3950
     `demo ("trgsmp.dem")' mostra alguns exemplos de `trigsimp'.
 
3951
 
 
3952
 
 
3953
 -- Função: trigrat (<expr>)
 
3954
     Fornece uma forma quase-linear simplificada canônica de uma
 
3955
     expressão trigonométrica; <expr> é uma fração racional de muitos
 
3956
     `sin', `cos' ou `tan', os argumentos delas são formas lineares em
 
3957
     algumas variáveis (ou kernels-núcleos) e `%pi/<n>' (<n> inteiro)
 
3958
     com coeficientes inteiros. O resultado é uma fração simplificada
 
3959
     com numerador e denominador ambos lineares em `sin' e `cos'.
 
3960
     Dessa forma `trigrat' lineariza sempre quando isso for passível.
 
3961
 
 
3962
          (%i1) trigrat(sin(3*a)/sin(a+%pi/3));
 
3963
          (%o1)            sqrt(3) sin(2 a) + cos(2 a) - 1
 
3964
 
 
3965
     O seguinte exemplo encontra-se em Davenport, Siret, and Tournier,
 
3966
     Calcul Formel, Masson (ou em inglês, Addison-Wesley), seção 1.5.5,
 
3967
     teorema de Morley.
 
3968
 
 
3969
          (%i1) c: %pi/3 - a - b;
 
3970
                                              %pi
 
3971
          (%o1)                     - b - a + ---
 
3972
                                               3
 
3973
          (%i2) bc: sin(a)*sin(3*c)/sin(a+b);
 
3974
                                sin(a) sin(3 b + 3 a)
 
3975
          (%o2)                 ---------------------
 
3976
                                     sin(b + a)
 
3977
          (%i3) ba: bc, c=a, a=c$
 
3978
          (%i4) ac2: ba^2 + bc^2 - 2*bc*ba*cos(b);
 
3979
                   2       2
 
3980
                sin (a) sin (3 b + 3 a)
 
3981
          (%o4) -----------------------
 
3982
                         2
 
3983
                      sin (b + a)
 
3984
 
 
3985
                                                  %pi
 
3986
             2 sin(a) sin(3 a) cos(b) sin(b + a - ---) sin(3 b + 3 a)
 
3987
                                                   3
 
3988
           - --------------------------------------------------------
 
3989
                                     %pi
 
3990
                             sin(a - ---) sin(b + a)
 
3991
                                      3
 
3992
 
 
3993
                2         2         %pi
 
3994
             sin (3 a) sin (b + a - ---)
 
3995
                                     3
 
3996
           + ---------------------------
 
3997
                       2     %pi
 
3998
                    sin (a - ---)
 
3999
                              3
 
4000
          (%i5) trigrat (ac2);
 
4001
          (%o5) - (sqrt(3) sin(4 b + 4 a) - cos(4 b + 4 a)
 
4002
 
 
4003
           - 2 sqrt(3) sin(4 b + 2 a) + 2 cos(4 b + 2 a)
 
4004
 
 
4005
           - 2 sqrt(3) sin(2 b + 4 a) + 2 cos(2 b + 4 a)
 
4006
 
 
4007
           + 4 sqrt(3) sin(2 b + 2 a) - 8 cos(2 b + 2 a) - 4 cos(2 b - 2 a)
 
4008
 
 
4009
           + sqrt(3) sin(4 b) - cos(4 b) - 2 sqrt(3) sin(2 b) + 10 cos(2 b)
 
4010
 
 
4011
           + sqrt(3) sin(4 a) - cos(4 a) - 2 sqrt(3) sin(2 a) + 10 cos(2 a)
 
4012
 
 
4013
           - 9)/4
 
4014
 
 
4015
 
 
4016
 
 
4017
File: maxima.info,  Node: Funções Especiais,  Next: Funções Elípticas,  Prev: Trigonometria,  Up: Top
 
4018
 
 
4019
16 Funções Especiais
 
4020
********************
 
4021
 
 
4022
* Menu:
 
4023
 
 
4024
* Introdução a Funções Especiais::
 
4025
* specint::
 
4026
* Definições para Funções Especiais::
 
4027
 
 
4028
 
 
4029
File: maxima.info,  Node: Introdução a Funções Especiais,  Next: specint,  Prev: Funções Especiais,  Up: Funções Especiais
 
4030
 
 
4031
16.1 Introdução a Funções Especiais
 
4032
===================================
 
4033
 
 
4034
 
 
4035
File: maxima.info,  Node: specint,  Next: Definições para Funções Especiais,  Prev: Introdução a Funções Especiais,  Up: Funções Especiais
 
4036
 
 
4037
16.2 specint
 
4038
============
 
4039
 
 
4040
`hypgeo' é um pacote para manusear transformações de Laplace de
 
4041
funções especiais.  `hyp' é um pacote para manusear funções
 
4042
Hipergeométricas generalizadas.
 
4043
 
 
4044
   `specint' tenta calcular a integral definida (sobre o intervalo de
 
4045
zero a infinito) de uma expressão contendo funções especiais.  Quando o
 
4046
integrando contém um fator `exp (-s t)', o resultado é uma
 
4047
transformação de Laplace.
 
4048
 
 
4049
   A sintaxe é como segue:
 
4050
 
 
4051
     specint (exp (-s*<t>) * <expr>, <t>);
 
4052
 
 
4053
   onde <t> é a variável de integração e <expr> é uma expressão
 
4054
contendo funções especiais.
 
4055
 
 
4056
   Se `specint' não puder calcular a integral, o valor de retorno pode
 
4057
conter vários símbolos Lisp, incluindo `other-defint-to-follow-negtest',
 
4058
`other-lt-exponential-to-follow', `product-of-y-with-nofract-indices',
 
4059
etc.; isso é um bug.
 
4060
 
 
4061
   A notação de função especial segue adiante:
 
4062
 
 
4063
     bessel_j (index, expr)         Função de Bessel, primeiro tipo
 
4064
     bessel_y (index, expr)         Função de Bessel, segundo tipo
 
4065
     bessel_i (index, expr)         Função de Bessel modificada, primeiro tipo
 
4066
     bessel_k (index, expr)         Função de Bessel modificada, segundo tipo
 
4067
     %he[n] (z)                     Polinômio de Hermite (Note bem: `he', não `h'. Veja A&S 22.5.18)
 
4068
     %p[u,v] (z)                    Função de Legendre
 
4069
     %q[u,v] (z)                    Função de Legendre, segundo tipo
 
4070
     hstruve[n] (z)                 Função H de Struve H
 
4071
     lstruve[n] (z)                 Função de L Struve
 
4072
     %f[p,q] ([], [], expr)         Função Hipergeométrica Generalizada
 
4073
     gamma()                        Função Gamma
 
4074
     gammagreek(a,z)                Função gama incompleta
 
4075
     gammaincomplete(a,z)           Final da função gama incompleta
 
4076
     slommel
 
4077
     %m[u,k] (z)                    Função de Whittaker, primeiro tipo
 
4078
     %w[u,k] (z)                    Função de Whittaker, segundo tipo
 
4079
     erfc (z)                       Complemento da função erf (função de erros - integral da distribuição normal)
 
4080
     ei (z)                         Integral de exponencial (?)
 
4081
     kelliptic (z)                  integral eliptica completa de primeiro tipo (K)
 
4082
     %d [n] (z)                     Função cilíndrica parabólica
 
4083
 
 
4084
   `demo ("hypgeo")' mostra muitos exemplos de transformações de
 
4085
Laplace calculadas através de `specint'.
 
4086
 
 
4087
   Esse é um trabalho em andamento.  Alguns nomes de funções podem
 
4088
mudar.
 
4089
 
 
4090
 
 
4091
File: maxima.info,  Node: Definições para Funções Especiais,  Prev: specint,  Up: Funções Especiais
 
4092
 
 
4093
16.3 Definições para Funções Especiais
 
4094
======================================
 
4095
 
 
4096
 -- Função: airy (<x>)
 
4097
     A função de Airy Ai.  Se o argumento <x> for um número, o valor
 
4098
     numérico de `airy (<x>)' é retornado.  de outra forma, uma
 
4099
     expressão não avaliada `airy (<x>)' é retornada.
 
4100
 
 
4101
     A equação de Airy `diff (y(x), x, 2) - x y(x) = 0' tem duas
 
4102
     soluções linearmente independentes, chamadas `ai' e `bi'. Essa
 
4103
     equação é muito popular como uma aproximação para problemas mais
 
4104
     complicados em muitos ambientes de física matemática.
 
4105
 
 
4106
     `load ("airy")' chama as funções `ai', `bi', `dai', e `dbi'.
 
4107
 
 
4108
     O pacote `airy' contém rotinas para calcular `ai' e `bi' e suas
 
4109
     derivadas `dai' e `dbi'. O resultado é um número em ponto
 
4110
     flutuante se o argumento for um número, e uma expressão não
 
4111
     avaliada de outra forma.
 
4112
 
 
4113
     Um erro ocorre se o argumento for maior que o esperado causando um
 
4114
     estouro nas exponenciais, ou uma perda de precisão no `sin' ou no
 
4115
     `cos'. Isso faz o intervalo de validade sobre -2800 a 10^38 para
 
4116
     `ai' e `dai', e de -2800 a 25 para `bi' e `dbi'.
 
4117
 
 
4118
     Essas regras de derivação são conhecidas para Maxima:
 
4119
        * `diff (ai(x), x)' retorna `dai(x)',
 
4120
 
 
4121
        * `diff (dai(x), x)' retorna `x ai(x)',
 
4122
 
 
4123
        * `diff (bi(x), x)' retorna `dbi(x)',
 
4124
 
 
4125
        * `diff (dbi(x), x)' retorna `x bi(x)'.
 
4126
 
 
4127
     Valores de função são calculados a partir das séries de Taylor
 
4128
     convergentes para `abs(<x>) < 3', e a partir de expansões
 
4129
     assintóticas para `<x> < -3' ou `<x> > 3' como necessário.  Esses
 
4130
     resultados somente apresentam discrepâncias numéricas muito
 
4131
     pequenas em `<x> = 3' e `<x> = -3'.  Para detalhes, veja
 
4132
     Abramowitz e Stegun, Handbook of Mathematical Functions, Sessão
 
4133
     10.4 e Tabela 10.11.
 
4134
 
 
4135
     `ev (taylor (ai(x), x, 0, 9), infeval)' retorna uma expansão de
 
4136
     Taylor em ponto flutuante da função `ai'.  Uma expressão similar
 
4137
     pode ser construída para `bi'.
 
4138
 
 
4139
 
 
4140
 -- Função: airy_ai (<x>)
 
4141
     A função de Airy Ai, como definida em Abramowitz e Stegun,
 
4142
     Handbook of Mathematical Functions, Sessão 10.4.
 
4143
 
 
4144
     A equação de Airy `diff (y(x), x, 2) - x y(x) = 0' tem duas
 
4145
     soluções linearmente independentes, `y = Ai(x)' e `y = Bi(x)'.  A
 
4146
     derivada de `diff (airy_ai(x), x)' é `airy_dai(x)'.
 
4147
 
 
4148
     Se o argumento `x' for um número real ou um número complexo
 
4149
     qualquer deles em ponto flutuante , o valor numérico de `airy_ai'
 
4150
     é retornado quando possível.
 
4151
 
 
4152
     Veja também `airy_bi', `airy_dai', `airy_dbi'.
 
4153
 
 
4154
 -- Função: airy_dai (<x>)
 
4155
     A derivada da função de Airy Ai `airy_ai(x)'.
 
4156
 
 
4157
     Veja `airy_ai'.
 
4158
 
 
4159
 -- Função: airy_bi (<x>)
 
4160
     A função de Airy Bi, como definida em Abramowitz e Stegun,
 
4161
     Handbook of Mathematical Functions, Sessão 10.4, é a segunda
 
4162
     solução da equação de Airy `diff (y(x), x, 2) - x y(x) = 0'.
 
4163
 
 
4164
     Se o argumento `x' for um número real ou um número complexo
 
4165
     qualquer deles em ponto flutuante, o valor numérico de `airy_bi' é
 
4166
     retornado quando possível.  Em outros casos a expressão não
 
4167
     avaliada é retornada.
 
4168
 
 
4169
     A derivada de `diff (airy_bi(x), x)' é `airy_dbi(x)'.
 
4170
 
 
4171
     Veja `airy_ai', `airy_dbi'.
 
4172
 
 
4173
 -- Função: airy_dbi (<x>)
 
4174
     A derivada de função de Airy Bi `airy_bi(x)'.
 
4175
 
 
4176
     Veja `airy_ai' e `airy_bi'.
 
4177
 
 
4178
 -- Função: asympa
 
4179
     `asympa' é um pacote para análise assintótica. O pacote contém
 
4180
     funções de simplificação para análise assintótica, incluindo as
 
4181
     funções "grande O" e "pequeno o" que são largamente usadas em
 
4182
     análises de complexidade e análise numérica.
 
4183
 
 
4184
     `load ("asympa")' chama esse pacote.
 
4185
 
 
4186
 
 
4187
 -- Função: bessel (<z>, <a>)
 
4188
     A função de Bessel de primeiro tipo.
 
4189
 
 
4190
     Essa função está desatualizada.  Escreva `bessel_j (<z>, <a>)' em
 
4191
     lugar dessa.
 
4192
 
 
4193
 
 
4194
 -- Função: bessel_j (<v>, <z>)
 
4195
     A função de Bessel do primeiro tipo de ordem v e argumento z.
 
4196
 
 
4197
     `bessel_j' calcula o array `besselarray' tal que `besselarray [i]
 
4198
     = bessel_j [i + v - int(v)] (z)' para `i' de zero a `int(v)'.
 
4199
 
 
4200
     `bessel_j' é definida como
 
4201
                          inf
 
4202
                          ====       k  - v - 2 k  v + 2 k
 
4203
                          \     (- 1)  2          z
 
4204
                           >    --------------------------
 
4205
                          /        k! gamma(v + k + 1)
 
4206
                          ====
 
4207
                          k = 0
 
4208
 
 
4209
     todavia séries infinitas não são usadas nos cálculos.
 
4210
 
 
4211
 
 
4212
 -- Função: bessel_y (<v>, <z>)
 
4213
     A função de Bessel do segundo tipo de ordem v e argumento z.
 
4214
 
 
4215
     `bessel_y' calcula o array `besselarray' tal que `besselarray [i]
 
4216
     = bessel_y [i + v - int(v)] (z)' para `i' de zero a `int(v)'.
 
4217
 
 
4218
     `bessel_y' é definida como
 
4219
                        cos(%pi v) bessel_j(v, z) - bessel_j(-v, z)
 
4220
                        -------------------------------------------
 
4221
                                       sin(%pi v)
 
4222
 
 
4223
     quando v não for um inteiro.  Quando v for um inteiro n, o limite
 
4224
     com v aprocimando-se de n é tomado.
 
4225
 
 
4226
 
 
4227
 -- Função: bessel_i (<v>, <z>)
 
4228
     A função de Bessel modificada de primeiro tipo de ordem v e
 
4229
     argumento z.
 
4230
 
 
4231
     `bessel_i' calcula o array `besselarray' tal que `besselarray [i]
 
4232
     = bessel_i [i + v - int(v)] (z)' para `i' de zero a `int(v)'.
 
4233
 
 
4234
     `bessel_i' é definida como
 
4235
                              inf
 
4236
                              ====   - v - 2 k  v + 2 k
 
4237
                              \     2          z
 
4238
                               >    -------------------
 
4239
                              /     k! gamma(v + k + 1)
 
4240
                              ====
 
4241
                              k = 0
 
4242
 
 
4243
     todavia séries infinitas não são usadas nos cálculos.
 
4244
 
 
4245
 
 
4246
 -- Função: bessel_k (<v>, <z>)
 
4247
     A função de Bessel modificada de segundo tipo de ordem v e
 
4248
     argumento z.
 
4249
 
 
4250
     `bessel_k' calcula o array `besselarray' tal que `besselarray [i]
 
4251
     = bessel_k [i + v - int(v)] (z)' para `i' de zero a `int(v)'.
 
4252
 
 
4253
     `bessel_k' é definida como
 
4254
                     %pi csc(%pi v) (bessel_i(-v, z) - bessel_i(v, z))
 
4255
                     -------------------------------------------------
 
4256
                                            2
 
4257
 
 
4258
     quando v não for inteiro.  Se v for um inteiro n, então o limite
 
4259
     com v aproximando-se de n é tomado.
 
4260
 
 
4261
 
 
4262
 -- Variável de opção: besselexpand
 
4263
     Valor padrão: `false'
 
4264
 
 
4265
     Expansões de controle de funções de Bessel quando a ordem for a
 
4266
     metade de um inteiro ímpar.  Nesse caso, as funções de Bessel
 
4267
     podem ser expandidas em termos de outras funções elementares.
 
4268
     Quando `besselexpand' for `true', a função de Bessel é expandida.
 
4269
 
 
4270
          (%i1) besselexpand: false$
 
4271
          (%i2) bessel_j (3/2, z);
 
4272
                                              3
 
4273
          (%o2)                      bessel_j(-, z)
 
4274
                                              2
 
4275
          (%i3) besselexpand: true$
 
4276
          (%i4) bessel_j (3/2, z);
 
4277
                                    2 z   sin(z)   cos(z)
 
4278
          (%o4)                sqrt(---) (------ - ------)
 
4279
                                    %pi      2       z
 
4280
                                            z
 
4281
 
 
4282
 -- Função: j0 (<x>)
 
4283
     A função de Bessel de primeiro tipo de ordem 0.
 
4284
 
 
4285
     Essa função está desatualizada.  Escreva `bessel_j (0, <x>)' em
 
4286
     lugar dessa função.
 
4287
 
 
4288
 
 
4289
 -- Função: j1 (<x>)
 
4290
     A função de Bessel de primeiro tipo de ordem 1.
 
4291
 
 
4292
     Essa função está desatualizada.  Escreva `bessel_j (1, <x>)' em
 
4293
     lugar dessa função.
 
4294
 
 
4295
 
 
4296
 -- Função: jn (<x>, <n>)
 
4297
     A função de Bessel de primeiro tipo de ordem <n>.
 
4298
 
 
4299
     Essa função éstá desatualizada.  Escreva `bessel_j (<n>, <x>)' em
 
4300
     lugar dessa função.
 
4301
 
 
4302
 
 
4303
 -- Função: i0 (<x>)
 
4304
     A função de Bessel modificada de primeiro tipo de ordem 0.
 
4305
 
 
4306
     Essa função éstá desatualizada.  Escreva `bessel_i (0, <x>)' em
 
4307
     lugar dessa função.
 
4308
 
 
4309
 
 
4310
 -- Função: i1 (<x>)
 
4311
     A função de Bessel modificada de primeiro tipo de ordem 1.
 
4312
 
 
4313
     Essa função está desatualizada.  Escreva `bessel_i (1, `x')' em
 
4314
     lugar dessa função.
 
4315
 
 
4316
 
 
4317
 -- Função: beta (<x>, <y>)
 
4318
     A função beta, definida como `gamma(x) gamma(y)/gamma(x + y)'.
 
4319
 
 
4320
 
 
4321
 -- Função: gamma (<x>)
 
4322
     A função gama.
 
4323
 
 
4324
     Veja também `makegamma'.
 
4325
 
 
4326
     A variável `gammalim' controla a simplificação da função gama.
 
4327
 
 
4328
     A constante de Euler-Mascheroni é `%gamma'.
 
4329
 
 
4330
 
 
4331
 -- Variável de opção: gammalim
 
4332
     Valor padrão: 1000000
 
4333
 
 
4334
     `gammalim' controla a simplificação da função gama para integral e
 
4335
     argumentos na forma de números racionais.  Se o valor absoluto do
 
4336
     argumento não for maior que `gammalim', então a simplificação
 
4337
     ocorrerá.  Note que `factlim' comuta controle de simplificaçcão do
 
4338
     resultado de `gamma' de um argumento inteiro também.
 
4339
 
 
4340
 
 
4341
 -- Função: intopois (<a>)
 
4342
     Converte <a> em um código de Poisson.
 
4343
 
 
4344
 
 
4345
 -- Função: makefact (<expr>)
 
4346
     Transforma instâncias de funções binomiais, gama, e beta em <expr>
 
4347
     para fatoriais.
 
4348
 
 
4349
     Veja também `makegamma'.
 
4350
 
 
4351
 
 
4352
 -- Função: makegamma (<expr>)
 
4353
     Transforma instâncias de funções binomiais, fatorial, e beta em
 
4354
     <expr> para funções gama.
 
4355
 
 
4356
     Veja também `makefact'.
 
4357
 
 
4358
 
 
4359
 -- Função: numfactor (<expr>)
 
4360
     Retorna o fator numérico multiplicando a expressão <expr>, que
 
4361
     pode ser um termo simples.
 
4362
 
 
4363
     `content' retorna o máximo divisor comum (mdc) de todos os termos
 
4364
     em uma adição.
 
4365
 
 
4366
          (%i1) gamma (7/2);
 
4367
                                    15 sqrt(%pi)
 
4368
          (%o1)                     ------------
 
4369
                                         8
 
4370
          (%i2) numfactor (%);
 
4371
                                         15
 
4372
          (%o2)                          --
 
4373
                                         8
 
4374
 
 
4375
 
 
4376
 -- Função: outofpois (<a>)
 
4377
     Converte <a> de um código de Poisson para uma representação geral.
 
4378
     Se <a> não for uma forma de Poisson, `outofpois' realiza a
 
4379
     conversão, i.e., o valor de retorno é `outofpois (intopois (<a>))'.
 
4380
     Essa função é desse modo um simplificador canônico para adições e
 
4381
     potências de termos de seno e cosseno de um tipo particular.
 
4382
 
 
4383
 
 
4384
 -- Função: poisdiff (<a>, <b>)
 
4385
     Deriva <a> com relação a <b>.  <b> deve ocorrer somente nos
 
4386
     argumentos trigonométricos ou somente nos coeficientes.
 
4387
 
 
4388
 
 
4389
 -- Função: poisexpt (<a>, <b>)
 
4390
     Funcionalmente identica a `intopois (<a>^<b>)'.  <b> deve ser um
 
4391
     inteiro positico.
 
4392
 
 
4393
 
 
4394
 -- Função: poisint (<a>, <b>)
 
4395
     Integra em um senso restrito similarmente (para `poisdiff').
 
4396
     Termos não periódicos em <b> são diminuídos se <b> estiver em
 
4397
     argumentos trigonométricos.
 
4398
 
 
4399
 
 
4400
 -- Variável de opção: poislim
 
4401
     Valor padrão: 5
 
4402
 
 
4403
     `poislim' determina o domínio dos coeficientes nos argumentos de
 
4404
     funções trigonométricas.  O valor inicial de 5 corresponde ao
 
4405
     intervalo [-2^(5-1)+1,2^(5-1)], ou [-15,16], mas isso pode ser
 
4406
     alterado para [-2^(n-1)+1, 2^(n-1)].
 
4407
 
 
4408
 
 
4409
 -- Função: poismap (<series>, <sinfn>, <cosfn>)
 
4410
     mapeará as funções <sinfn> sobre os termos de seno e <cosfn>
 
4411
     ssobre os termos de cosseno das séries de Poisson dadas.  <sinfn>
 
4412
     e <cosfn> são funções de dois argumentos que são um coeficiente e
 
4413
     uma parte trigonométrica de um termo em séries respectivamente.
 
4414
 
 
4415
 
 
4416
 -- Função: poisplus (<a>, <b>)
 
4417
     É funcionalmente identica a `intopois (a + b)'.
 
4418
 
 
4419
 
 
4420
 -- Função: poissimp (<a>)
 
4421
     Converte <a> em séries de Poisson para <a> em representação geral.
 
4422
 
 
4423
 
 
4424
 -- Símbolo especial: poisson
 
4425
     O símbolo `/P/' segue o rótulo de linha de uma expressão contendo
 
4426
     séries de Poisson.
 
4427
 
 
4428
 
 
4429
 -- Função: poissubst (<a>, <b>, <c>)
 
4430
     Substitue <a> por <b> em <c>.  <c> é uma série de Poisson.
 
4431
 
 
4432
     (1) Quando <B> é uma variável <u>, <v>, <w>, <x>, <y>, ou <z>,
 
4433
     então <a> deve ser uma expressão linear nessas variáveis (e.g.,
 
4434
     `6*u + 4*v').
 
4435
 
 
4436
     (2) Quando <b> for outra que não essas variáveis, então <a> deve
 
4437
     também ser livre dessas variáveis, e alé disso, livre de senos ou
 
4438
     cossenos.
 
4439
 
 
4440
     `poissubst (<a>, <b>, <c>, <d>, <n>)' é um tipo especial d
 
4441
     substituição que opera sobre <a> e <b> como no tipo (1) acima, mas
 
4442
     onde <d> é uma série de Poisson, expande `cos(<d>)' e `sin(<d>)'
 
4443
     para a ordem <n> como provendo o resultado da substituição `<a> +
 
4444
     <d>' por <b> em <c>.  A idéia é que <d> é uma expansão em termos
 
4445
     de um pequeno parâmetro.  Por exemplo, `poissubst (u, v, cos(v),
 
4446
     %e, 3)' retorna `cos(u)*(1 - %e^2/2) - sin(u)*(%e - %e^3/6)'.
 
4447
 
 
4448
 
 
4449
 -- Função: poistimes (<a>, <b>)
 
4450
     É funcionalmente idêntica a `intopois (<a>*<b>)'.
 
4451
 
 
4452
 
 
4453
 -- Função: poistrim ()
 
4454
     é um nome de função reservado que (se o usuário tiver definido uma
 
4455
     função com esse nome) é aplicada durante multiplicação de Poisson.
 
4456
     Isso é uma função predicada de 6 argumentos que são os
 
4457
     coeficientes de <u>, <v>, ..., <z> em um termo.  Termos para os
 
4458
     quais `poistrim' for `true' (para os coeficientes daquele termo)
 
4459
     são eliminados durante a multiplicação.
 
4460
 
 
4461
 
 
4462
 -- Função: printpois (<a>)
 
4463
     Mostra uma série de Poisson em um formato legível.  Em comum com
 
4464
     `outofpois', essa função converterá <a> em um código de Poisson
 
4465
     primeiro, se necessário.
 
4466
 
 
4467
 
 
4468
 -- Função: psi [<n>](<x>)
 
4469
     A derivada de `log (gamma (<x>))' de ordem `<n>+1'.  Dessa forma,
 
4470
     `psi[0](<x>)' é a primeira derivada, `psi[1](<x>)' é a segunda
 
4471
     derivada, etc.
 
4472
 
 
4473
     Maxima não sabe como, em geral, calcular um valor numérico de
 
4474
     `psi', mas Maxima pode calcular alguns valores exatos para
 
4475
     argumentos racionais.  Muitas variáveis controlam qual intervalo
 
4476
     de argumentos racionais `psi' irá retornar um valor exato, se
 
4477
     possível.  Veja `maxpsiposint', `maxpsinegint', `maxpsifracnum', e
 
4478
     `maxpsifracnum'.  Isto é, <x> deve localizar-se entre
 
4479
     `maxpsinegint' e `maxpsiposint'.  Se o valor absoluto da parte
 
4480
     facionária de <x> for racional e tiver um numerador menor que
 
4481
     `maxpsifracnum' e tiver um denominador menor que
 
4482
     `maxpsifracdenom', `psi' irá retornar um valor exato.
 
4483
 
 
4484
     A função `bfpsi' no pacote `bffac' pode calcular valores numéricos.
 
4485
 
 
4486
 
 
4487
 -- Variável de opção: maxpsiposint
 
4488
     Valor padrão: 20
 
4489
 
 
4490
     `maxpsiposint' é o maior valor positivo para o qual `psi[n](x)'
 
4491
     irá tentar calcular um valor exato.
 
4492
 
 
4493
 
 
4494
 -- Variável de opção: maxpsinegint
 
4495
     Valor padrão: -10
 
4496
 
 
4497
     `maxpsinegint' é o valor mais negativo para o qual `psi[n](x)' irá
 
4498
     tentar calcular um valor exato.  Isto é, se <x> for menor que
 
4499
     `maxnegint', `psi[n](<x>)' não irá retornar resposta simplificada,
 
4500
     mesmo se isso for possível.
 
4501
 
 
4502
 
 
4503
 -- Variável de opção: maxpsifracnum
 
4504
     Valor padrão: 4
 
4505
 
 
4506
     Tomemos <x> como sendo um número racional menor que a unidade e da
 
4507
     forma `p/q'.  Se `p' for menor que `maxpsifracnum', então
 
4508
     `psi[<n>](<x>)' não irá tentar retornar um valor simplificado.
 
4509
 
 
4510
 
 
4511
 -- Variável de opção: maxpsifracdenom
 
4512
     Valor padrão: 4
 
4513
 
 
4514
     Tomemos <x> como sendo um número racional menor que a unidade e da
 
4515
     forma `p/q'.  Se `q' for maior que `maxpsifracdeonm', então
 
4516
     `psi[<n>](<x>)' não irá tentar retornar um valor simplificado.
 
4517
 
 
4518
 
 
4519
 
 
4520
File: maxima.info,  Node: Funções Elípticas,  Next: Limites,  Prev: Funções Especiais,  Up: Top
 
4521
 
 
4522
17 Funções Elípticas
 
4523
********************
 
4524
 
 
4525
* Menu:
 
4526
 
 
4527
* Introdução a Funções Elípticas e Integrais::
 
4528
* Definições para Funções Elípticas::
 
4529
* Definições para Integrais Elípticas::
 
4530
 
 
4531
 
 
4532
File: maxima.info,  Node: Introdução a Funções Elípticas e Integrais,  Next: Definições para Funções Elípticas,  Up: Top
 
4533
 
 
4534
17.1 Introdução a Funções Elípticas e Integrais
 
4535
===============================================
 
4536
 
 
4537
Maxima inclui suporte a funções elípticas Jacobianas e a integrais
 
4538
elípticas completas e incompletas.  Isso inclui manipulação simbólica
 
4539
dessas funções e avaliação numérica também.  Definições dessas
 
4540
funções e muitas de suas propriedades podem ser encontradas em
 
4541
Abramowitz e Stegun, Capítulos 16-17.  Tanto quanto possível, usamos as
 
4542
definições e relações dadas aí.
 
4543
 
 
4544
   Em particular, todas as funções elípticas e integrais elípticas usam
 
4545
o parâmetro m em lugar de módulo k ou o ângulo modular \alpha.  Isso é
 
4546
uma área onde discordamos de Abramowitz e Stegun que usam o ângulo
 
4547
modular para as funções elípticas.  As seguintes relações são
 
4548
verdadeiras: m = k^2 e k = \sin(\alpha)
 
4549
 
 
4550
   As funções elípticas e integrais elípticas estão primariamente
 
4551
tencionando suportar computação simbólica.  Portanto, a maiora das
 
4552
derivadas de funções e integrais são conhecidas.  Todavia, se valores
 
4553
em ponto flutuante forem dados, um resultado em ponto flutuante é
 
4554
retornado.
 
4555
 
 
4556
   Suporte para a maioria de outras propriedades das funções elípticas e
 
4557
integrais elípticas além das derivadas não foram ainda escritas.
 
4558
 
 
4559
   Alguns exemplos de funções elípticas:
 
4560
 
 
4561
     (%i1) jacobi_sn (u, m);
 
4562
     (%o1)                    jacobi_sn(u, m)
 
4563
     (%i2) jacobi_sn (u, 1);
 
4564
     (%o2)                        tanh(u)
 
4565
     (%i3) jacobi_sn (u, 0);
 
4566
     (%o3)                        sin(u)
 
4567
     (%i4) diff (jacobi_sn (u, m), u);
 
4568
     (%o4)            jacobi_cn(u, m) jacobi_dn(u, m)
 
4569
     (%i5) diff (jacobi_sn (u, m), m);
 
4570
     (%o5) jacobi_cn(u, m) jacobi_dn(u, m)
 
4571
 
 
4572
           elliptic_e(asin(jacobi_sn(u, m)), m)
 
4573
      (u - ------------------------------------)/(2 m)
 
4574
                          1 - m
 
4575
 
 
4576
                 2
 
4577
        jacobi_cn (u, m) jacobi_sn(u, m)
 
4578
      + --------------------------------
 
4579
                   2 (1 - m)
 
4580
 
 
4581
   Alguns exemplos de integrais elípticas:
 
4582
 
 
4583
     (%i1) elliptic_f (phi, m);
 
4584
     (%o1)                  elliptic_f(phi, m)
 
4585
     (%i2) elliptic_f (phi, 0);
 
4586
     (%o2)                          phi
 
4587
     (%i3) elliptic_f (phi, 1);
 
4588
                                    phi   %pi
 
4589
     (%o3)                  log(tan(--- + ---))
 
4590
                                     2     4
 
4591
     (%i4) elliptic_e (phi, 1);
 
4592
     (%o4)                       sin(phi)
 
4593
     (%i5) elliptic_e (phi, 0);
 
4594
     (%o5)                          phi
 
4595
     (%i6) elliptic_kc (1/2);
 
4596
                                          1
 
4597
     (%o6)                    elliptic_kc(-)
 
4598
                                          2
 
4599
     (%i7) makegamma (%);
 
4600
                                      2 1
 
4601
                                 gamma (-)
 
4602
                                        4
 
4603
     (%o7)                      -----------
 
4604
                                4 sqrt(%pi)
 
4605
     (%i8) diff (elliptic_f (phi, m), phi);
 
4606
                                     1
 
4607
     (%o8)                 ---------------------
 
4608
                                         2
 
4609
                           sqrt(1 - m sin (phi))
 
4610
     (%i9) diff (elliptic_f (phi, m), m);
 
4611
            elliptic_e(phi, m) - (1 - m) elliptic_f(phi, m)
 
4612
     (%o9) (-----------------------------------------------
 
4613
                                   m
 
4614
 
 
4615
                                      cos(phi) sin(phi)
 
4616
                                  - ---------------------)/(2 (1 - m))
 
4617
                                                  2
 
4618
                                    sqrt(1 - m sin (phi))
 
4619
 
 
4620
   Suporte a funções elípticas e integrais elípticas foi escrito por
 
4621
Raymond Toy.  Foi colocado sob os termos da Licençã Pública Geral (GPL)
 
4622
que governa a distribuição do Maxima.
 
4623
 
 
4624
 
 
4625
File: maxima.info,  Node: Definições para Funções Elípticas,  Next: Definições para Integrais Elípticas,  Prev: Introdução a Funções Elípticas e Integrais,  Up: Top
 
4626
 
 
4627
17.2 Definições para Funções Elípticas
 
4628
======================================
 
4629
 
 
4630
 -- Função: jacobi_sn (<u>, <m>)
 
4631
     A Função elíptica Jacobiana sn(u,m).
 
4632
 
 
4633
 -- Função: jacobi_cn (<u>, <m>)
 
4634
     A função elíptica Jacobiana cn(u,m).
 
4635
 
 
4636
 -- Função: jacobi_dn (<u>, <m>)
 
4637
     A função elíptica Jacobiana dn(u,m).
 
4638
 
 
4639
 -- Função: jacobi_ns (<u>, <m>)
 
4640
     A função elíptica Jacobiana ns(u,m) = 1/sn(u,m).
 
4641
 
 
4642
 -- Função: jacobi_sc (<u>, <m>)
 
4643
     A função elíptica Jacobiana sc(u,m) = sn(u,m)/cn(u,m).
 
4644
 
 
4645
 -- Função: jacobi_sd (<u>, <m>)
 
4646
     A função elíptica Jacobiana sd(u,m) = sn(u,m)/dn(u,m).
 
4647
 
 
4648
 -- Função: jacobi_nc (<u>, <m>)
 
4649
     A função elíptica Jacobiana nc(u,m) = 1/cn(u,m).
 
4650
 
 
4651
 -- Função: jacobi_cs (<u>, <m>)
 
4652
     A função elíptica Jacobiana cs(u,m) = cn(u,m)/sn(u,m).
 
4653
 
 
4654
 -- Função: jacobi_cd (<u>, <m>)
 
4655
     A função elíptica Jacobiana cd(u,m) = cn(u,m)/dn(u,m).
 
4656
 
 
4657
 -- Função: jacobi_nd (<u>, <m>)
 
4658
     A função elíptica Jacobiana nc(u,m) = 1/cn(u,m).
 
4659
 
 
4660
 -- Função: jacobi_ds (<u>, <m>)
 
4661
     A função elíptica Jacobiana ds(u,m) = dn(u,m)/sn(u,m).
 
4662
 
 
4663
 -- Função: jacobi_dc (<u>, <m>)
 
4664
     A função elíptica Jacobiana dc(u,m) = dn(u,m)/cn(u,m).
 
4665
 
 
4666
 -- Função: inverse_jacobi_sn (<u>, <m>)
 
4667
     A inversa da função elíptica Jacobiana sn(u,m).
 
4668
 
 
4669
 -- Função: inverse_jacobi_cn (<u>, <m>)
 
4670
     A inversa da função elíptica Jacobiana cn(u,m).
 
4671
 
 
4672
 -- Função: inverse_jacobi_dn (<u>, <m>)
 
4673
     A inversa da função elíptica Jacobiana dn(u,m).
 
4674
 
 
4675
 -- Função: inverse_jacobi_ns (<u>, <m>)
 
4676
     A inversa da função elíptica Jacobiana ns(u,m).
 
4677
 
 
4678
 -- Função: inverse_jacobi_sc (<u>, <m>)
 
4679
     A inversa da função elíptica Jacobiana sc(u,m).
 
4680
 
 
4681
 -- Função: inverse_jacobi_sd (<u>, <m>)
 
4682
     A inversa da função elíptica Jacobiana sd(u,m).
 
4683
 
 
4684
 -- Função: inverse_jacobi_nc (<u>, <m>)
 
4685
     A inversa da função elíptica Jacobiana nc(u,m).
 
4686
 
 
4687
 -- Função: inverse_jacobi_cs (<u>, <m>)
 
4688
     A inversa da função elíptica Jacobiana cs(u,m).
 
4689
 
 
4690
 -- Função: inverse_jacobi_cd (<u>, <m>)
 
4691
     A inversa da função elíptica Jacobiana cd(u,m).
 
4692
 
 
4693
 -- Função: inverse_jacobi_nd (<u>, <m>)
 
4694
     A inversa da função elíptica Jacobiana nc(u,m).
 
4695
 
 
4696
 -- Função: inverse_jacobi_ds (<u>, <m>)
 
4697
     A inversa da função elíptica Jacobiana ds(u,m).
 
4698
 
 
4699
 -- Função: inverse_jacobi_dc (<u>, <m>)
 
4700
     A inversa da função elíptica Jacobiana dc(u,m).
 
4701
 
 
4702
 
 
4703
File: maxima.info,  Node: Definições para Integrais Elípticas,  Prev: Definições para Funções Elípticas,  Up: Top
 
4704
 
 
4705
17.3 Definições para Integrais Elípticas
 
4706
========================================
 
4707
 
 
4708
 -- Função: elliptic_f (<phi>, <m>)
 
4709
     A integral elíptica incompleta de primeiro tipo, definida como
 
4710
 
 
4711
     integrate(1/sqrt(1 - m*sin(x)^2), x, 0, phi)
 
4712
 
 
4713
     Veja também *Note elliptic_e:: e *Note elliptic_kc::.
 
4714
 
 
4715
 
 
4716
 -- Função: elliptic_e (<phi>, <m>)
 
4717
     A integral elíptica incompleta de segundo tipo, definida como
 
4718
 
 
4719
     elliptic_e(u, m) = integrate(sqrt(1 - m*sin(x)^2), x, 0, phi) Veja
 
4720
     também *Note elliptic_e:: and *Note elliptic_ec::.
 
4721
 
 
4722
 
 
4723
 -- Função: elliptic_eu (<u>, <m>)
 
4724
     A integral elíptica incompleta de segundo tipo, definida como
 
4725
     integrate(dn(v,m)^2,v,0,u) = integrate(sqrt(1-m*t^2)/sqrt(1-t^2),
 
4726
     t, 0, tau)
 
4727
 
 
4728
     onde tau = sn(u,m)
 
4729
 
 
4730
     Isso é relacionado a elliptic_e através de elliptic_eu(u, m) =
 
4731
     elliptic_e(asin(sn(u,m)),m) Veja também *Note elliptic_e::.
 
4732
 
 
4733
 -- Função: elliptic_pi (<n>, <phi>, <m>)
 
4734
     A integral elíptica incompleta de terceiro tipo, definida como
 
4735
 
 
4736
     integrate(1/(1-n*sin(x)^2)/sqrt(1 - m*sin(x)^2), x, 0, phi)
 
4737
 
 
4738
     Somente a derivada em relação a phi é conhecida pelo Maxima.
 
4739
 
 
4740
 -- Função: elliptic_kc (<m>)
 
4741
     A integral elíptica completa de primeiro tipo, definida como
 
4742
 
 
4743
     integrate(1/sqrt(1 - m*sin(x)^2), x, 0, %pi/2)
 
4744
 
 
4745
     Para certos valores de m, o valor da integral é conhecido em
 
4746
     termos de funções Gamma.  Use `makegamma' para avaliar esse valor.
 
4747
 
 
4748
 -- Função: elliptic_ec (<m>)
 
4749
     A integral elíptica completa de sgundo tipo, definida como
 
4750
 
 
4751
     integrate(sqrt(1 - m*sin(x)^2), x, 0, %pi/2)
 
4752
 
 
4753
     Para certos valores de m, o valor da integral é conhecido em
 
4754
     termos de funçõesvGamma.  Use `makegamma' para avaliar esse valor.
 
4755
 
 
4756
 
 
4757
File: maxima.info,  Node: Limites,  Next: Diferenciação,  Prev: Funções Elípticas,  Up: Top
 
4758
 
 
4759
18 Limites
 
4760
**********
 
4761
 
 
4762
* Menu:
 
4763
 
 
4764
* Definições para Limites::
 
4765
 
 
4766
 
 
4767
File: maxima.info,  Node: Definições para Limites,  Prev: Limites,  Up: Limites
 
4768
 
 
4769
18.1 Definições para Limites
 
4770
============================
 
4771
 
 
4772
 -- Variável de Opção: lhospitallim
 
4773
     Valor padrão: 4
 
4774
 
 
4775
     `lhospitallim' é o máximo número de vezes que a regra L'Hospital é
 
4776
     usada em `limit'.  Isso evita ciclos infinitos em casos como
 
4777
     `limit (cot(x)/csc(x), x, 0)'.
 
4778
 
 
4779
 
 
4780
 -- Função: limit (<expr>, <x>, <val>, <dir>)
 
4781
 -- Função: limit (<expr>, <x>, <val>)
 
4782
 -- Função: limit (<expr>)
 
4783
     Calcula o limite de <expr> com a variável real <x> aproximando-se
 
4784
     do valor <val> pela direção <dir>.  <dir> pode ter o valor `plus'
 
4785
     para um limite pela direita, `minus' para um limite pela esquerda,
 
4786
     ou pode ser omitido (implicando em um limite em ambos os lados é
 
4787
     para ser computado).
 
4788
 
 
4789
     `limit' usa os seguintes símbolos especiais: `inf' (infinito
 
4790
     positivo) e `minf' (infinito negativo).  Em saídas essa função
 
4791
     pode também usar `und' (undefined - não definido), `ind'
 
4792
     (indefinido mas associado) e `infinity' (infinito complexo).
 
4793
 
 
4794
     `lhospitallim' é o máximo número de vezes que a regra L'Hospital é
 
4795
     usada em `limit'.  Isso evita ciclos infinitos em casos como
 
4796
     `limit (cot(x)/csc(x), x, 0)'.
 
4797
 
 
4798
     `tlimswitch' quando `true' fará o pacote `limit' usar série de
 
4799
     Taylor quando possível.
 
4800
 
 
4801
     `limsubst' evita que `limit' tente substituições sobre formas
 
4802
     desconhecidas.  Isso é para evitar erros como `limit (f(n)/f(n+1),
 
4803
     n, inf)' dando igual a 1.  Escolhendo `limsubst' para `true'
 
4804
     permitirá tais substituições.
 
4805
 
 
4806
     `limit' com um argumento é muitas vezes chamado em ocasiões para
 
4807
     simplificar expressões de constantes, por exemplo, `limit (inf-1)'.
 
4808
 
 
4809
     `example (limit)' mostra alguns exemplos.
 
4810
 
 
4811
     Para saber sobre o método utilizado veja Wang, P., "Evaluation of
 
4812
     Definite Integrals by Symbolic Manipulation", tese de Ph.D., MAC
 
4813
     TR-92, Outubro de 1971.
 
4814
 
 
4815
 
 
4816
 -- Variável de Opção: limsubst
 
4817
     valor padrão: `false' - evita que `limit' tente substituições sobre
 
4818
     formas desconhecidas.  Isso é para evitar erros como `limit
 
4819
     (f(n)/f(n+1), n, inf)' dando igual a 1.  Escolhendo `limsubst'
 
4820
     para `true' permitirá tais substituições.
 
4821
 
 
4822
 
 
4823
 -- Função: tlimit (<expr>, <x>, <val>, <dir>)
 
4824
 -- Função: tlimit (<expr>, <x>, <val>)
 
4825
 -- Função: tlimit (<expr>)
 
4826
     Retorna `limit' com `tlimswitch' escolhido para `true'.
 
4827
 
 
4828
 
 
4829
 -- Variável de Opção: tlimswitch
 
4830
     Valor padrão: `false'
 
4831
 
 
4832
     Quando `tlimswitch' for `true', fará o pacote `limit' usar série
 
4833
     de Taylor quando possível.
 
4834
 
 
4835
 
 
4836
 
 
4837
File: maxima.info,  Node: Diferenciação,  Next: Integração,  Prev: Limites,  Up: Top
 
4838
 
 
4839
19 Diferenciação
 
4840
****************
 
4841
 
 
4842
* Menu:
 
4843
 
 
4844
* Definições para Diferenciação::
 
4845
 
 
4846
 
 
4847
File: maxima.info,  Node: Definições para Diferenciação,  Prev: Diferenciação,  Up: Diferenciação
 
4848
 
 
4849
19.1 Definições para Diferenciação
 
4850
==================================
 
4851
 
 
4852
 -- Função: antid (<expr>, <x>, <u(x)>)
 
4853
     Retorna uma lista de dois elementos, tais que uma antiderivada de
 
4854
     <expr> com relação a <x> pode ser constuída a partir da lista.  A
 
4855
     expressão <expr> pode conter uma função desconhecida <u> e suas
 
4856
     derivadas.
 
4857
 
 
4858
     Tome <L>, uma lista de dois elementos, como sendo o valor de
 
4859
     retorno de `antid'.  Então `<L>[1] + 'integrate (<L>[2], <x>)' é
 
4860
     uma antiderivada de <expr> com relação a <x>.
 
4861
 
 
4862
     Quando `antid' obtém sucesso inteiramente, o segundo elemento do
 
4863
     valor de retorno é zero.  De outra forma, o segundo elemento é não
 
4864
     zero, e o primeiro elemento não zero ou zero.  Se `antid' não pode
 
4865
     fazer nenhum progresso, o primeiro elemento é zero e o segundo não
 
4866
     zero.
 
4867
 
 
4868
     `load ("antid")' chama essa função.  O pacote `antid' também
 
4869
     define as funções `nonzeroandfreeof' e `linear'.
 
4870
 
 
4871
     `antid' está relacionada a `antidiff' como segue.  Tome <L>, uma
 
4872
     lista de dois elementos, que é o valor de retorno de `antid'.
 
4873
     Então o valor de retorno de `antidiff' é igual a `<L>[1] +
 
4874
     'integrate (<L>[2], <x>)' onde <x> é a variável de integração.
 
4875
 
 
4876
     Exemplos:
 
4877
 
 
4878
          (%i1) load ("antid")$
 
4879
          (%i2) expr: exp (z(x)) * diff (z(x), x) * y(x);
 
4880
                                      z(x)  d
 
4881
          (%o2)                y(x) %e     (-- (z(x)))
 
4882
                                            dx
 
4883
          (%i3) a1: antid (expr, x, z(x));
 
4884
                                 z(x)      z(x)  d
 
4885
          (%o3)          [y(x) %e    , - %e     (-- (y(x)))]
 
4886
                                                 dx
 
4887
          (%i4) a2: antidiff (expr, x, z(x));
 
4888
                                      /
 
4889
                               z(x)   [   z(x)  d
 
4890
          (%o4)         y(x) %e     - I %e     (-- (y(x))) dx
 
4891
                                      ]         dx
 
4892
                                      /
 
4893
          (%i5) a2 - (first (a1) + 'integrate (second (a1), x));
 
4894
          (%o5)                           0
 
4895
          (%i6) antid (expr, x, y(x));
 
4896
                                       z(x)  d
 
4897
          (%o6)             [0, y(x) %e     (-- (z(x)))]
 
4898
                                             dx
 
4899
          (%i7) antidiff (expr, x, y(x));
 
4900
                            /
 
4901
                            [        z(x)  d
 
4902
          (%o7)             I y(x) %e     (-- (z(x))) dx
 
4903
                            ]              dx
 
4904
                            /
 
4905
 
 
4906
 
 
4907
 -- Função: antidiff (<expr>, <x>, <u>(<x>))
 
4908
     Retorna uma antiderivada de <expr> com relação a <x>.  A expressão
 
4909
     <expr> pode conter uma função desconhecida <u> e suas derivadas.
 
4910
 
 
4911
     Quando `antidiff' obtém sucesso inteiramente, a expressão
 
4912
     resultante é livre do sinal de integral (isto é, livre do
 
4913
     substantivo `integrate').  De outra forma, `antidiff' retorna uma
 
4914
     expressão que é parcialmente ou inteiramente dentro de um sinal de
 
4915
     um sinal de integral.  Se `antidiff' não pode fazer qualquer
 
4916
     progresso, o valor de retorno é inteiramente dentro de um sinal de
 
4917
     integral.
 
4918
 
 
4919
     `load ("antid")' chama essa função.  O pacote `antid' também
 
4920
     define as funções `nonzeroandfreeof' e `linear'.
 
4921
 
 
4922
     `antidiff' é relacionada a `antid' como segue.  Tome <L>, uma
 
4923
     lista de dois elementos, como sendo o valor de retorno de `antid'.
 
4924
     Então o valor de retorno de `antidiff' é igual a `<L>[1] +
 
4925
     'integrate (<L>[2], <x>)' onde <x> é a variável de integração.
 
4926
 
 
4927
     Exemplos:
 
4928
 
 
4929
          (%i1) load ("antid")$
 
4930
          (%i2) expr: exp (z(x)) * diff (z(x), x) * y(x);
 
4931
                                      z(x)  d
 
4932
          (%o2)                y(x) %e     (-- (z(x)))
 
4933
                                            dx
 
4934
          (%i3) a1: antid (expr, x, z(x));
 
4935
                                 z(x)      z(x)  d
 
4936
          (%o3)          [y(x) %e    , - %e     (-- (y(x)))]
 
4937
                                                 dx
 
4938
          (%i4) a2: antidiff (expr, x, z(x));
 
4939
                                      /
 
4940
                               z(x)   [   z(x)  d
 
4941
          (%o4)         y(x) %e     - I %e     (-- (y(x))) dx
 
4942
                                      ]         dx
 
4943
                                      /
 
4944
          (%i5) a2 - (first (a1) + 'integrate (second (a1), x));
 
4945
          (%o5)                           0
 
4946
          (%i6) antid (expr, x, y(x));
 
4947
                                       z(x)  d
 
4948
          (%o6)             [0, y(x) %e     (-- (z(x)))]
 
4949
                                             dx
 
4950
          (%i7) antidiff (expr, x, y(x));
 
4951
                            /
 
4952
                            [        z(x)  d
 
4953
          (%o7)             I y(x) %e     (-- (z(x))) dx
 
4954
                            ]              dx
 
4955
                            /
 
4956
 
 
4957
 
 
4958
 -- propriedade: atomgrad
 
4959
     `atomgrad' é a propriedade do gradiente atômico de uma expressão.
 
4960
     Essa propriedade é atribuída por `gradef'.
 
4961
 
 
4962
 
 
4963
 -- Função: atvalue (<expr>, [<x_1> = <a_1>, ..., <x_m> = <a_m>], <c>)
 
4964
 -- Função: atvalue (<expr>, <x_1> = <a_1>, <c>)
 
4965
     Atribui o valor <c> a <expr> no ponto `<x> = <a>'.  Tipicamente
 
4966
     valores de extremidade são estabelecidos por esse mecanismo.
 
4967
 
 
4968
     <expr> é a função de avaliação, `<f>(<x_1>, ..., <x_m>)', ou uma
 
4969
     derivada, `diff (<f>(<x_1>, ..., <x_m>), <x_1>, <n_1>, ..., <x_n>,
 
4970
     <n_m>)' na qual os argumentos da função explicitamente aparecem.
 
4971
     <n_i> é a ordem de diferenciação com relação a <x_i>.
 
4972
 
 
4973
     O ponto no qual o `atvalue' é estabelecido é dado pela lista de
 
4974
     equações `[<x_1> = <a_1>, ..., <x_m> = <a_m>]'.  Se existe uma
 
4975
     variável simples <x_1>, uma única equação pode ser dada sem ser
 
4976
     contida em uma lista.
 
4977
 
 
4978
     `printprops ([<f_1>, <f_2>, ...], atvalue)' mostra os `atvalues'
 
4979
     das funções `<f_1>, <f_2>, ...' como especificado por chamadas a
 
4980
     `atvalue'.  `printprops (<f>, atvalue)' mostra os `atvalues' de
 
4981
     uma função <f>.  `printprops (all, atvalue)' mostra os `atvalue's
 
4982
     de todas as funções para as quais `atvalue's são definidos.
 
4983
 
 
4984
     Os simbolos `@1', `@2', ... representam as variáveis <x_1>, <x_2>,
 
4985
     ... quando `atvalue's são mostrados.
 
4986
 
 
4987
     `atvalue' avalia seus argumentos.  `atvalue' retorna <c>, o
 
4988
     `atvalue'.
 
4989
 
 
4990
     Exemplos:
 
4991
 
 
4992
          (%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
 
4993
                                          2
 
4994
          (%o1)                          a
 
4995
          (%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
 
4996
          (%o2)                        @2 + 1
 
4997
          (%i3) printprops (all, atvalue);
 
4998
                                          !
 
4999
                            d             !
 
5000
                           --- (f(@1, @2))!       = @2 + 1
 
5001
                           d@1            !
 
5002
                                          !@1 = 0
 
5003
 
 
5004
                                               2
 
5005
                                    f(0, 1) = a
 
5006
 
 
5007
          (%o3)                         done
 
5008
          (%i4) diff (4*f(x,y)^2 - u(x,y)^2, x);
 
5009
                            d                          d
 
5010
          (%o4)  8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
 
5011
                            dx                         dx
 
5012
          (%i5) at (%, [x = 0, y = 1]);
 
5013
                                                   !
 
5014
                        2              d           !
 
5015
          (%o5)     16 a  - 2 u(0, 1) (-- (u(x, y))!            )
 
5016
                                       dx          !
 
5017
                                                   !x = 0, y = 1
 
5018
 
 
5019
 
 
5020
 -- Função: cartan -
 
5021
     O cálculo exterior de formas diferenciais é uma ferramenta básica
 
5022
     de geometria diferencial desenvolvida por Elie Cartan e tem
 
5023
     importantes aplicações na teoria das equações diferenciais
 
5024
     parciais.  O pacote `cartan' implementa as funções `ext_diff' e
 
5025
     `lie_diff', juntamente com os operadores `~' (produto da cunha) e
 
5026
     `|' (contração de uma forma com um vetor.)  Digite `demo (tensor)'
 
5027
     para ver uma breve descrição desses comandos juntamente com
 
5028
     exemplos.
 
5029
 
 
5030
     `cartan' foi implementado por F.B. Estabrook e H.D. Wahlquist.
 
5031
 
 
5032
 
 
5033
 -- Função: del (<x>)
 
5034
     `del (<x>)' representa a diferencial da variável x.
 
5035
 
 
5036
     `diff' retorna uma expressão contendo `del' se uma variável
 
5037
     independente não for especificada.  Nesse caso, o valor de retorno
 
5038
     é a então chamada "diferencial total".
 
5039
 
 
5040
     Exemplos:
 
5041
 
 
5042
          (%i1) diff (log (x));
 
5043
                                       del(x)
 
5044
          (%o1)                        ------
 
5045
                                         x
 
5046
          (%i2) diff (exp (x*y));
 
5047
                               x y              x y
 
5048
          (%o2)            x %e    del(y) + y %e    del(x)
 
5049
          (%i3) diff (x*y*z);
 
5050
          (%o3)         x y del(z) + x z del(y) + y z del(x)
 
5051
 
 
5052
 
 
5053
 -- Função: delta (<t>)
 
5054
     A função Delta de Dirac.
 
5055
 
 
5056
     Correntemente somente `laplace' sabe sobre a função `delta'.
 
5057
 
 
5058
     Exemplo:
 
5059
 
 
5060
          (%i1) laplace (delta (t - a) * sin(b*t), t, s);
 
5061
          Is  a  positive, negative, or zero?
 
5062
 
 
5063
          p;
 
5064
                                             - a s
 
5065
          (%o1)                   sin(a b) %e
 
5066
 
 
5067
 
 
5068
 -- Variável: dependencies
 
5069
     Valor padrão: `[]'
 
5070
 
 
5071
     `dependencies' é a lista de átomos que possuem dependências
 
5072
     funcionais, atribuídas por `depends' ou `gradef'.  A lista
 
5073
     `dependencies' é cumulativa: cada chamada a `depends' ou a
 
5074
     `gradef' anexa ítens adicionais.
 
5075
 
 
5076
     Veja `depends' e `gradef'.
 
5077
 
 
5078
 
 
5079
 -- Função: depends (<f_1>, <x_1>, ..., <f_n>, <x_n>)
 
5080
     Declara dependêcias funcionais entre variáveis para o propósito de
 
5081
     calcular derivadas.  Na ausência de dependêcias declaradas, `diff
 
5082
     (f, x)' retorna zero.  Se `depends (f, x)' for declarada, `diff
 
5083
     (f, x)' retorna uma derivada simbólica (isto é, um substantivo
 
5084
     `diff').
 
5085
 
 
5086
     Cada argumento <f_1>, <x_1>, etc., pode ser o nome de uma variável
 
5087
     ou array, ou uma lista de nomes.  Todo elemento de <f_i> (talvez
 
5088
     apenas um elemento simples) é declarado para depender de todo
 
5089
     elemento de <x_i> (talvez apenas um elemento simples).  Se algum
 
5090
     <f_i> for o nome de um array ou contém o nome de um array, todos
 
5091
     os elementos do array dependem de <x_i>.
 
5092
 
 
5093
     `diff' reconhece dependências indiretas estabelecidas por `depends'
 
5094
     e aplica a regra da cadeia nesses casos.
 
5095
 
 
5096
     `remove (<f>, dependency)' remove todas as dependências declaradas
 
5097
     para <f>.
 
5098
 
 
5099
     `depends' retorna uma lista de dependências estabelecidas.  As
 
5100
     dependências são anexadas à variável global `dependencies'.
 
5101
     `depends' avalia seus argumentos.
 
5102
 
 
5103
     `diff' é o único comando Maxima que reconhece dependências
 
5104
     estabelecidas por `depends'.  Outras funções (`integrate',
 
5105
     `laplace', etc.)  somente reconhecem dependências explicitamente
 
5106
     representadas por seus argumentos.  Por exemplo, `integrate' não
 
5107
     reconhece a dependência de `f' sobre `x' a menos que
 
5108
     explicitamente representada como `integrate (f(x), x)'.
 
5109
 
 
5110
          (%i1) depends ([f, g], x);
 
5111
          (%o1)                     [f(x), g(x)]
 
5112
          (%i2) depends ([r, s], [u, v, w]);
 
5113
          (%o2)               [r(u, v, w), s(u, v, w)]
 
5114
          (%i3) depends (u, t);
 
5115
          (%o3)                        [u(t)]
 
5116
          (%i4) dependencies;
 
5117
          (%o4)      [f(x), g(x), r(u, v, w), s(u, v, w), u(t)]
 
5118
          (%i5) diff (r.s, u);
 
5119
                                   dr           ds
 
5120
          (%o5)                    -- . s + r . --
 
5121
                                   du           du
 
5122
 
 
5123
          (%i6) diff (r.s, t);
 
5124
                                dr du           ds du
 
5125
          (%o6)                 -- -- . s + r . -- --
 
5126
                                du dt           du dt
 
5127
 
 
5128
          (%i7) remove (r, dependency);
 
5129
          (%o7)                         done
 
5130
          (%i8) diff (r.s, t);
 
5131
                                          ds du
 
5132
          (%o8)                       r . -- --
 
5133
                                          du dt
 
5134
 
 
5135
 
 
5136
 -- Variável de opção: derivabbrev
 
5137
     Valor padrão: `false'
 
5138
 
 
5139
     Quando `derivabbrev' for `true', derivadas simbólicas (isto é,
 
5140
     substantivos `diff') são mostradas como subscritos.  De outra
 
5141
     forma, derivadas são mostradas na notação de Leibniz `dy/dx'.
 
5142
 
 
5143
 
 
5144
 -- Função: derivdegree (<expr>, <y>, <x>)
 
5145
     Retorna o maior grau de uma derivada da variável dependente <y>
 
5146
     com relação à variável independente <x> ocorrendo em <expr>.
 
5147
 
 
5148
     Exemplo:
 
5149
          (%i1) 'diff (y, x, 2) + 'diff (y, z, 3) + 'diff (y, x) * x^2;
 
5150
                                   3     2
 
5151
                                  d y   d y    2 dy
 
5152
          (%o1)                   --- + --- + x  --
 
5153
                                    3     2      dx
 
5154
                                  dz    dx
 
5155
          (%i2) derivdegree (%, y, x);
 
5156
          (%o2)                           2
 
5157
 
 
5158
 
 
5159
 -- Função: derivlist (<var_1>, ..., <var_k>)
 
5160
     Causa somente diferenciações com relação às variáveis indicadas,
 
5161
     dentro do comando `ev'.
 
5162
 
 
5163
 
 
5164
 -- Variável de opção: derivsubst
 
5165
     Valor padrão: `false'
 
5166
 
 
5167
     Quando `derivsubst' for `true', uma substiruíção não sintática
 
5168
     tais como `subst (x, 'diff (y, t), 'diff (y, t, 2))' retorna
 
5169
     `'diff (x, t)'.
 
5170
 
 
5171
 
 
5172
 -- Função: diff (<expr>, <x_1>, <n_1>, ..., <x_m>, <n_m>)
 
5173
 -- Função: diff (<expr>, <x>, <n>)
 
5174
 -- Função: diff (<expr>, <x>)
 
5175
 -- Função: diff (<expr>)
 
5176
     Retorna uma derivada ou diferencial de <expr> com relação a alguma
 
5177
     ou todas as variáveis em <expr>.
 
5178
 
 
5179
     `diff (<expr>, <x>, <n>)' retorna a <n>'ésima derivada de <expr>
 
5180
     com relação a <x>.
 
5181
 
 
5182
     `diff (<expr>, <x_1>, <n_1>, ..., <x_m>, <n_m>)' retorna a
 
5183
     derivada parcial mista de <expr> com relação a <x_1>, ..., <x_m>.
 
5184
     Isso é equivalente a `diff (... (diff (<expr>, <x_m>, <n_m>) ...),
 
5185
     <x_1>, <n_1>)'.
 
5186
 
 
5187
     `diff (<expr>, <x>)' retorna a primeira derivada de <expr> com
 
5188
     relação a uma variável <x>.
 
5189
 
 
5190
     `diff (<expr>)' retorna a diferencial total de <expr>, isto é, a
 
5191
     soma das derivadas de <expr> com relação a cada uma de suas
 
5192
     variáveis vezes a diferencial `del' de cada variável.  Nenhuma
 
5193
     simplificação adicional de `del' é oferecida.
 
5194
 
 
5195
     A forma substantiva de `diff' é requerida em alguns contextos, tal
 
5196
     como declarando uma equação diferencial.  Nesses casos, `diff'
 
5197
     pode ser colocado apóstrofo (com `'diff') para retornar a forma
 
5198
     substantiva em lugar da realização da diferenciação.
 
5199
 
 
5200
     Quando `derivabbrev' for `true', derivadas são mostradas como
 
5201
     subscritos.  De outra forma, derivadas são mostradas na notação de
 
5202
     Leibniz, `dy/dx'.
 
5203
 
 
5204
     Exemplos:
 
5205
 
 
5206
          (%i1) diff (exp (f(x)), x, 2);
 
5207
                               2
 
5208
                        f(x)  d               f(x)  d         2
 
5209
          (%o1)       %e     (--- (f(x))) + %e     (-- (f(x)))
 
5210
                                2                   dx
 
5211
                              dx
 
5212
          (%i2) derivabbrev: true$
 
5213
          (%i3) 'integrate (f(x, y), y, g(x), h(x));
 
5214
                                   h(x)
 
5215
                                  /
 
5216
                                  [
 
5217
          (%o3)                   I     f(x, y) dy
 
5218
                                  ]
 
5219
                                  /
 
5220
                                   g(x)
 
5221
          (%i4) diff (%, x);
 
5222
                 h(x)
 
5223
                /
 
5224
                [
 
5225
          (%o4) I     f(x, y)  dy + f(x, h(x)) h(x)  - f(x, g(x)) g(x)
 
5226
                ]            x                     x                  x
 
5227
                /
 
5228
                 g(x)
 
5229
 
 
5230
     Para o pacote tensor, as seguintes modificações foram incorporadas:
 
5231
 
 
5232
     (1) As derivadas de quaisquer objetos indexados em <expr> terão as
 
5233
     variáveis <x_i> anexadas como argumentos adicionais.  Então todos
 
5234
     os índices de derivada serão ordenados.
 
5235
 
 
5236
     (2) As variáveis <x_i> podem ser inteiros de 1 até o valor de uma
 
5237
     variável `dimension' [valor padrão: 4].  Isso fará com que a
 
5238
     diferenciação seja concluída com relação aos <x_i>'ésimos membros
 
5239
     da lista `coordinates' que pode ser escolhida para uma lista de
 
5240
     nomes de coordenadas, e.g., `[x, y, z, t]'. Se `coordinates' for
 
5241
     associada a uma variável atômica, então aquela variável subscrita
 
5242
     por <x_i> será usada para uma variável de diferenciação.  Isso
 
5243
     permite um array de nomes de coordenadas ou nomes subscritos como
 
5244
     `X[1]', `X[2]', ... sejam usados.  Se `coordinates' não foram
 
5245
     atribuídas um valor, então as variáveis seram tratadas como em (1)
 
5246
     acima.
 
5247
 
 
5248
 
 
5249
 -- Símbolo especial: diff
 
5250
     Quando `diff' está presente como um `evflag' em chamadas para `ev',
 
5251
     Todas as diferenciações indicadas em `expr' são realizdas.
 
5252
 
 
5253
 
 
5254
 -- Função: dscalar (<f>)
 
5255
     Aplica o d'Alembertiano escalar para a função escalar <f>.
 
5256
 
 
5257
     `load ("ctensor")' chama essa função.
 
5258
 
 
5259
 
 
5260
 -- Função: express (<expr>)
 
5261
     Expande o substantivo do operador diferencial em expressões em
 
5262
     termos de derivadas parciais.  `express' reconhece os operadores
 
5263
     `grad', `div', `curl', `laplacian'.  `express' também expande o
 
5264
     produto do X `~'.
 
5265
 
 
5266
     Derivadas simbólicas (isto é, substantivos `diff') no valor de
 
5267
     retorno de `express' podem ser avaliadas incluíndo `diff' na
 
5268
     chamada à função `ev' ou na linha de comando.  Nesse contexto,
 
5269
     `diff' age como uma `evfun'.
 
5270
 
 
5271
     `load ("vect")' chama essa função.
 
5272
 
 
5273
     Exemplos:
 
5274
 
 
5275
          (%i1) load ("vect")$
 
5276
          (%i2) grad (x^2 + y^2 + z^2);
 
5277
                                        2    2    2
 
5278
          (%o2)                  grad (z  + y  + x )
 
5279
          (%i3) express (%);
 
5280
                 d    2    2    2   d    2    2    2   d    2    2    2
 
5281
          (%o3) [-- (z  + y  + x ), -- (z  + y  + x ), -- (z  + y  + x )]
 
5282
                 dx                 dy                 dz
 
5283
          (%i4) ev (%, diff);
 
5284
          (%o4)                    [2 x, 2 y, 2 z]
 
5285
          (%i5) div ([x^2, y^2, z^2]);
 
5286
                                        2   2   2
 
5287
          (%o5)                   div [x , y , z ]
 
5288
          (%i6) express (%);
 
5289
                             d    2    d    2    d    2
 
5290
          (%o6)              -- (z ) + -- (y ) + -- (x )
 
5291
                             dz        dy        dx
 
5292
          (%i7) ev (%, diff);
 
5293
          (%o7)                    2 z + 2 y + 2 x
 
5294
          (%i8) curl ([x^2, y^2, z^2]);
 
5295
                                         2   2   2
 
5296
          (%o8)                   curl [x , y , z ]
 
5297
          (%i9) express (%);
 
5298
                 d    2    d    2   d    2    d    2   d    2    d    2
 
5299
          (%o9) [-- (z ) - -- (y ), -- (x ) - -- (z ), -- (y ) - -- (x )]
 
5300
                 dy        dz       dz        dx       dx        dy
 
5301
          (%i10) ev (%, diff);
 
5302
          (%o10)                      [0, 0, 0]
 
5303
          (%i11) laplacian (x^2 * y^2 * z^2);
 
5304
                                            2  2  2
 
5305
          (%o11)                laplacian (x  y  z )
 
5306
          (%i12) express (%);
 
5307
                   2                2                2
 
5308
                  d     2  2  2    d     2  2  2    d     2  2  2
 
5309
          (%o12)  --- (x  y  z ) + --- (x  y  z ) + --- (x  y  z )
 
5310
                    2                2                2
 
5311
                  dz               dy               dx
 
5312
          (%i13) ev (%, diff);
 
5313
                                2  2      2  2      2  2
 
5314
          (%o13)             2 y  z  + 2 x  z  + 2 x  y
 
5315
          (%i14) [a, b, c] ~ [x, y, z];
 
5316
          (%o14)                [a, b, c] ~ [x, y, z]
 
5317
          (%i15) express (%);
 
5318
          (%o15)          [b z - c y, c x - a z, a y - b x]
 
5319
 
 
5320
 
 
5321
 -- Função: gradef (<f>(<x_1>, ..., <x_n>), <g_1>, ..., <g_m>)
 
5322
 -- Função: gradef (<a>, <x>, <expr>)
 
5323
     Define as derivadas parciais (i.e., os componentes do gradiente)
 
5324
     da função <f> ou variável <a>.
 
5325
 
 
5326
     `gradef (<f>(<x_1>, ..., <x_n>), <g_1>, ..., <g_m>)' define
 
5327
     `d<f>/d<x_i>' como <g_i>, onde <g_i> é uma expressão; <g_i> pode
 
5328
     ser uma chamada de função, mas não o nome de uma função.  O número
 
5329
     de derivadas parciais <m> pode ser menor que o número de
 
5330
     argumentos <n>, nesses casos derivadas são definidas com relação a
 
5331
     <x_1> até <x_m> somente.
 
5332
 
 
5333
     `gradef (<a>, <x>, <expr>)' define uma derivada de variável <a>
 
5334
     com relação a <x> como <expr>.  Isso também estabelece a
 
5335
     dependência de <a> sobre <x> (via `depends (<a>, <x>)').
 
5336
 
 
5337
     O primeiro argumento `<f>(<x_1>, ..., <x_n>)' ou <a> é acompanhado
 
5338
     de apóstrofo, mas os argumentos restantes <g_1>, ..., <g_m> são
 
5339
     avaliados.  `gradef' retorna a função ou variável para as quais as
 
5340
     derivadas parciais são definidas.
 
5341
 
 
5342
     `gradef' pode redefinir as derivadas de funções internas do Maxima.
 
5343
     Por exemplo, `gradef (sin(x), sqrt (1 - sin(x)^2))' redefine uma
 
5344
     derivada de `sin'.
 
5345
 
 
5346
     `gradef' não pode definir derivadas parciais para um função
 
5347
     subscrita.
 
5348
 
 
5349
     `printprops ([<f_1>, ..., <f_n>], gradef)' mostra as derivadas
 
5350
     parciais das funções <f_1>, ..., <f_n>, como definidas por
 
5351
     `gradef'.
 
5352
 
 
5353
     `printprops ([<a_n>, ..., <a_n>], atomgrad)' mostra as derivadas
 
5354
     parciais das variáveis <a_n>, ..., <a_n>, como definidas por
 
5355
     `gradef'.
 
5356
 
 
5357
     `gradefs' é a lista de funções para as quais derivadas parciais
 
5358
     foram definidas por `gradef'.  `gradefs' não inclui quaisquer
 
5359
     variáveis para quais derivadas parciais foram definidas por
 
5360
     `gradef'.
 
5361
 
 
5362
     Gradientes são necessários quando, por exemplo, uma função não é
 
5363
     conhecida explicitamente mas suas derivadas primeiras são e isso é
 
5364
     desejado para obter derivadas de ordem superior.
 
5365
 
 
5366
 
 
5367
 -- Variável de sistema: gradefs
 
5368
     Valor padrão: `[]'
 
5369
 
 
5370
     `gradefs' é a lista de funções para as quais derivadas parciais
 
5371
     foram definidas por `gradef'.  `gradefs' não inclui quaisquer
 
5372
     variáveis para as quais derivadas parciais foram deinidas por
 
5373
     `gradef'.
 
5374
 
 
5375
 
 
5376
 -- Função: laplace (<expr>, <t>, <s>)
 
5377
     Tenta calcular a transformada de Laplace de <expr> com relação a
 
5378
     uma variável <t> e parâmetro de transformação <s>.  Se `laplace'
 
5379
     não pode achar uma solução, um substantivo `'laplace' é retornado.
 
5380
 
 
5381
     `laplace' reconhece em <expr> as funções `delta', `exp', `log',
 
5382
     `sin', `cos', `sinh', `cosh', e `erf', também `derivative',
 
5383
     `integrate', `sum', e `ilt'.  Se algumas outras funções estiverem
 
5384
     presente, `laplace' pode não ser habilitada a calcular a
 
5385
     tranformada.
 
5386
 
 
5387
     <expr> pode também ser uma equação linear, diferencial de
 
5388
     coeficiente contante no qual caso o `atvalue' da variável
 
5389
     dependente é usado.  O requerido `atvalue' pode ser fornecido ou
 
5390
     antes ou depois da transformada ser calculada.  Uma vez que as
 
5391
     condições iniciais devem ser especificadas em zero, se um teve
 
5392
     condições de limite impostas em qualquer outro lugar ele pode
 
5393
     impor essas sobre a solução geral e eliminar as constantes
 
5394
     resolvendo a solução geral para essas e substituindo seus valores
 
5395
     de volta.
 
5396
 
 
5397
     `laplace' reconhece integrais de convolução da forma `integrate
 
5398
     (f(x) * g(t - x), x, 0, t)'; outros tipos de convoluções não são
 
5399
     reconhecidos.
 
5400
 
 
5401
     Relações funcionais devem ser explicitamente representadas em
 
5402
     <expr>; relações implícitas, estabelecidas por `depends', não são
 
5403
     reconhecidas.  Isto é, se <f> depende de <x> e <y>, `f (x, y)'
 
5404
     deve aparecer em <expr>.
 
5405
 
 
5406
     Veja também `ilt', a transformada inversa de Laplace.
 
5407
 
 
5408
     Exemplos:
 
5409
 
 
5410
          (%i1) laplace (exp (2*t + a) * sin(t) * t, t, s);
 
5411
                                      a
 
5412
                                    %e  (2 s - 4)
 
5413
          (%o1)                    ---------------
 
5414
                                     2           2
 
5415
                                   (s  - 4 s + 5)
 
5416
          (%i2) laplace ('diff (f (x), x), x, s);
 
5417
          (%o2)             s laplace(f(x), x, s) - f(0)
 
5418
          (%i3) diff (diff (delta (t), t), t);
 
5419
                                    2
 
5420
                                   d
 
5421
          (%o3)                    --- (delta(t))
 
5422
                                     2
 
5423
                                   dt
 
5424
          (%i4) laplace (%, t, s);
 
5425
                                      !
 
5426
                         d            !         2
 
5427
          (%o4)        - -- (delta(t))!      + s  - delta(0) s
 
5428
                         dt           !
 
5429
                                      !t = 0
 
5430
 
 
5431
 
 
5432
 
 
5433
File: maxima.info,  Node: Integração,  Next: Equações,  Prev: Diferenciação,  Up: Top
 
5434
 
 
5435
20 Integração
 
5436
*************
 
5437
 
 
5438
* Menu:
 
5439
 
 
5440
* Introdução a Integração::
 
5441
* Definições para Integração::
 
5442
* Introdução a QUADPACK::
 
5443
* Definições para QUADPACK::
 
5444
 
 
5445
 
 
5446
File: maxima.info,  Node: Introdução a Integração,  Next: Definições para Integração,  Prev: Integração,  Up: Integração
 
5447
 
 
5448
20.1 Introdução a Integração
 
5449
============================
 
5450
 
 
5451
Maxima tem muitas rotinas para manusear integração.  A função
 
5452
`integrate' faz uso de muitas dessas.  Exite também o pacote `antid',
 
5453
que manuseia uma função não especificada (e suas derivadas,
 
5454
certamente).  Para usos numéricos, existe a função `romberg'; um
 
5455
integrador adaptativo que usa a regra da quadratura dos currais de
 
5456
Newton, chamada `quanc8'; e uma escolha de integradores adaptativos de
 
5457
Quadpack, a saber `quad_qag', `quad_qags', etc., os quais são descritos
 
5458
sob o tópico `QUADPACK'.  Funções hipergeométricas estão sendo
 
5459
trabalhadas, veja `specint' for details.  Geralmente falando, Maxima
 
5460
somente manuseia integrais que são integráveis em termos de "funções
 
5461
elementares" (funções racionais, trigonometricas, logarítmicas,
 
5462
exponenciais, radicais, etc.) e umas poucas extensões (função de erro,
 
5463
dilogarithm).  Isso não manuseia integrais em termos de funções
 
5464
desconhecidas tais como `g(x)' e `h(x)'.
 
5465
 
 
5466
 
 
5467
File: maxima.info,  Node: Definições para Integração,  Next: Introdução a QUADPACK,  Prev: Introdução a Integração,  Up: Integração
 
5468
 
 
5469
20.2 Definições para Integração
 
5470
===============================
 
5471
 
 
5472
 -- Função: changevar (<expr>, <f(x,y)>, <y>, <x>)
 
5473
     Faz a mudança de variável dada por `<f(x,y)> = 0' em todas as
 
5474
     integrais que ocorrem em <expr> com integração em relação a <x>.
 
5475
     A nova variável é <y>.
 
5476
 
 
5477
          (%i1) assume(a > 0)$
 
5478
          (%i2) 'integrate (%e**sqrt(a*y), y, 0, 4);
 
5479
                                4
 
5480
                               /
 
5481
                               [    sqrt(a) sqrt(y)
 
5482
          (%o2)                I  %e                dy
 
5483
                               ]
 
5484
                               /
 
5485
                                0
 
5486
          (%i3) changevar (%, y-z^2/a, z, y);
 
5487
                                0
 
5488
                               /
 
5489
                               [                abs(z)
 
5490
                             2 I            z %e       dz
 
5491
                               ]
 
5492
                               /
 
5493
                                - 2 sqrt(a)
 
5494
          (%o3)            - ----------------------------
 
5495
                                          a
 
5496
 
 
5497
     Uma expressão contendo uma forma substantiva, tais como as
 
5498
     instâncias de `'integrate' acima, pode ser avaliada por `ev' com o
 
5499
     sinalizador `nouns'.  Por exemplo, a expressão retornada por
 
5500
     `changevar' acima pode ser avaliada por `ev (%o3, nouns)'.
 
5501
 
 
5502
     `changevar' pode também ser usada para alterações nos índices de
 
5503
     uma soma ou de um produto.  Todavia, isso deve obrigatóriamente
 
5504
     ser realizado de forma que quando uma alteração é feita em uma
 
5505
     soma ou produto, essa mudança deve ser um artifício, i.e., `i = j+
 
5506
     ...', não uma função de grau mais alto.  E.g.,
 
5507
 
 
5508
          (%i4) sum (a[i]*x^(i-2), i, 0, inf);
 
5509
                                   inf
 
5510
                                   ====
 
5511
                                   \         i - 2
 
5512
          (%o4)                     >    a  x
 
5513
                                   /      i
 
5514
                                   ====
 
5515
                                   i = 0
 
5516
          (%i5) changevar (%, i-2-n, n, i);
 
5517
                                  inf
 
5518
                                  ====
 
5519
                                  \               n
 
5520
          (%o5)                    >      a      x
 
5521
                                  /        n + 2
 
5522
                                  ====
 
5523
                                  n = - 2
 
5524
 
 
5525
 
 
5526
 -- Função: dblint (<f>, <r>, <s>, <a>, <b>)
 
5527
     Uma rotina de integral dupla que foi escrita no alto-nível do
 
5528
     Maxima e então traduzida e compilada para linguagem de máquina.
 
5529
     Use `load (dblint)' para acessar esse pacote.  Isso usa o método
 
5530
     da regra de Simpson em ambas as direções x e y para calcular
 
5531
 
 
5532
          /b /s(x)
 
5533
          |  |
 
5534
          |  |    f(x,y) dy dx
 
5535
          |  |
 
5536
          /a /r(x)
 
5537
 
 
5538
     A função <f> deve ser uma função traduzida ou compilada de duas
 
5539
     variáveis, e <r> e <s> devem cada uma ser uma função traduzida ou
 
5540
     compilada de uma variável, enquanto <a> e <b> devem ser números em
 
5541
     ponto flutuante.  A rotina tem duas variáveis globais que
 
5542
     determinam o número de divisões dos intervalos x e y: `dblint_x' e
 
5543
     `dblint_y', ambas as quais são inicialmente 10, e podem ser
 
5544
     alteradas independentemente para outros valores inteiros (existem
 
5545
     `2*dblint_x+1' pontos calculados na direção x , e `2*dblint_y+1'
 
5546
     na direção y).  A rotina subdivide o eixo X e então para cada
 
5547
     valor de X isso primeiro calcula `<r>(x)' e `<s>(x)'; então o eixo
 
5548
     Y entre `<r>(x)' e `<s>(x)' é subdividido e a integral ao longo do
 
5549
     eixo Y é executada usando a regra de Simpson; então a integral ao
 
5550
     longo do eixo X é concluída usando a regra de Simpson com os
 
5551
     valores da função sendo as integrais-Y.  Esse procedimento pode
 
5552
     ser numericamente instável por uma grande variedade razões, mas
 
5553
     razoávelmente rápido: evite usar isso sobre funções altamente
 
5554
     oscilatórias e funções com singularidades (postes ou pontos de
 
5555
     ramificação na região).  As integrais Y dependem de quanto
 
5556
     fragmentados `<r>(x)' e `<s>(x)' são, então se a ditância `<s>(x)
 
5557
     - <r>(x)' varia rapidamente com X, nesse ponto pode ter erros
 
5558
     substanciais provenientes de truncação com diferentes
 
5559
     saltos-tamanhos nas várias integrais Y.  Um pode incrementar
 
5560
     `dblint_x' e `dblint_y' em uma tentativa para melhorar a
 
5561
     convergência da reião, com sacrifício do tempo de computação.  Os
 
5562
     valores da função não são salvos, então se a função é muito
 
5563
     desperdiçadora de tempo,você terá de esperar por re-computação se
 
5564
     você mudar qualquer coisa (desculpe).  Isso é requerido que as
 
5565
     funções <f>, <r>, e <s> sejam ainda traduzidas ou compiladas
 
5566
     previamente chamando `dblint'.  Isso resultará em ordens de
 
5567
     magnitude de melhoramentos de velocidade sobre o código
 
5568
     interpretado em muitos casos!
 
5569
 
 
5570
     `demo (dblint)' executa uma demonstração de `dblint' aplicado a um
 
5571
     problema exemplo.
 
5572
 
 
5573
 
 
5574
 -- Função: defint (<expr>, <x>, <a>, <b>)
 
5575
     Tenta calcular uma integral definida.  `defint' é chamada por
 
5576
     `integrate' quando limites de integração são especificados, i.e.,
 
5577
     quando `integrate' é chamado como `integrate (<expr>, <x>, <a>,
 
5578
     <b>)'.  Dessa forma do ponto de vista do usuário, isso é
 
5579
     suficiente para chamar `integrate'.
 
5580
 
 
5581
     `defint' retorna uma expressão simbólica, e executa um dos dois:
 
5582
     ou calcula a integral ou a forma substantiva da integral.  Veja
 
5583
     `quad_qag' e funções rellacionadas para aproximação numérica de
 
5584
     integrais definidas.
 
5585
 
 
5586
 
 
5587
 -- Função: erf (<x>)
 
5588
     Representa a função de erro, cuja derivada é:
 
5589
     `2*exp(-x^2)/sqrt(%pi)'.
 
5590
 
 
5591
 
 
5592
 -- Variável de opção: erfflag
 
5593
     Valor padrão: `true'
 
5594
 
 
5595
     Quando `erfflag' é `false', previne `risch' da introdução da
 
5596
     função `erf' na resposta se não houver nenhum no integrando para
 
5597
     começar.
 
5598
 
 
5599
 
 
5600
 -- Função: ilt (<expr>, <t>, <s>)
 
5601
     Calcula a transformação inversa de Laplace de <expr> em relação a
 
5602
     <t> e parâmetro <s>.  <expr> deve ser uma razão de polinômios cujo
 
5603
     denominador tem somente fatores lineares e quadráticos.  Usando a
 
5604
     funções `laplace' e `ilt' juntas com as funções `solve' ou
 
5605
     `linsolve' o usuário pode resolver uma diferencial simples ou uma
 
5606
     equação integral de convolução ou um conjunto delas.
 
5607
 
 
5608
          (%i1) 'integrate (sinh(a*x)*f(t-x), x, 0, t) + b*f(t) = t**2;
 
5609
                        t
 
5610
                       /
 
5611
                       [                                    2
 
5612
          (%o1)        I  f(t - x) sinh(a x) dx + b f(t) = t
 
5613
                       ]
 
5614
                       /
 
5615
                        0
 
5616
          (%i2) laplace (%, t, s);
 
5617
                                         a laplace(f(t), t, s)   2
 
5618
          (%o2)  b laplace(f(t), t, s) + --------------------- = --
 
5619
                                                 2    2           3
 
5620
                                                s  - a           s
 
5621
          (%i3) linsolve ([%], ['laplace(f(t), t, s)]);
 
5622
                                                  2      2
 
5623
                                               2 s  - 2 a
 
5624
          (%o3)     [laplace(f(t), t, s) = --------------------]
 
5625
                                              5         2     3
 
5626
                                           b s  + (a - a  b) s
 
5627
          (%i4) ilt (rhs (first (%)), s, t);
 
5628
          Is  a b (a b - 1)  positive, negative, or zero?
 
5629
 
 
5630
          pos;
 
5631
                         sqrt(a b (a b - 1)) t
 
5632
                  2 cosh(---------------------)       2
 
5633
                                   b               a t
 
5634
          (%o4) - ----------------------------- + -------
 
5635
                        3  2      2               a b - 1
 
5636
                       a  b  - 2 a  b + a
 
5637
 
 
5638
                                                                 2
 
5639
                                                       + ------------------
 
5640
                                                          3  2      2
 
5641
                                                         a  b  - 2 a  b + a
 
5642
 
 
5643
 
 
5644
 -- Função: integrate (<expr>, <x>)
 
5645
 -- Função: integrate (<expr>, <x>, <a>, <b>)
 
5646
     Tenta símbolicamente calcular a integral de <expr> em relação a
 
5647
     <x>.  `integrate (<expr>, <x>)' é uma integral indefinida,
 
5648
     enquanto `integrate (<expr>, <x>, <a>, <b>)' é uma integral
 
5649
     definida, com limites de integração <a> e <b>.  Os limites não
 
5650
     poderam conter <x>, embora `integrate' não imponha essa restrição.
 
5651
     <a> não precisa ser menor que <b>.  Se <b> é igual a <a>,
 
5652
     `integrate' retorna zero.
 
5653
 
 
5654
     Veja `quad_qag' e funções relacionadas para aproximação numérica
 
5655
     de integrais definidas.  Veja `residue' para computação de
 
5656
     resíduos (integração complexa).  Veja `antid' para uma forma
 
5657
     alternativa de calcular integrais indefinidas.
 
5658
 
 
5659
     A integral (uma expressão livre de `integrate') é retornada se
 
5660
     `integrate' obtém sucesso.  De outra forma o valor de retorno é a
 
5661
     forma substantiva da integral (o operador com apóstrofo
 
5662
     `'integrate') ou uma expressão contendo uma ou mais formas
 
5663
     substantivas.  A forma substantiva de `integrate' é mostrada com
 
5664
     um sinal de integral.
 
5665
 
 
5666
     Em algumas circunstâncias isso é útil para construir uma forma
 
5667
     substantiva manualmente, colocando em `integrate' um apóstrofo,
 
5668
     e.g., `'integrate (<expr>, <x>)'.  Por exemplo, a integral pode
 
5669
     depender de alguns parâmetos que não estão ainda calculados.  A
 
5670
     forma substantiva pode ser aplicada a seus argumentos por `ev
 
5671
     (<i>, nouns)' onde <i> é a forma substantiva de interesse.
 
5672
 
 
5673
     `integrate' manuseia integrais definidas separadamente das
 
5674
     indefinidas, e utiliza uma gama de heurísticas para manusear cada
 
5675
     caso.  Casos especiais de integrais definidas incluem limites de
 
5676
     integração iguais a zero ou infinito (`inf' ou `minf'), funções
 
5677
     trigonométricas com limites de integração iguais a zero e `%pi' ou
 
5678
     `2 %pi', funções racionais, integrais relacionadas para as
 
5679
     definições de funções `beta' e `psi', e algumas integrais
 
5680
     logarítmicas e trigonométricas.  Processando funções racionais
 
5681
     pode incluir computação de resíduo.  Se um caso especial aplicável
 
5682
     não é encontrado, tentativa será feita para calcular a integra
 
5683
     indefinida e avaliar isso nos limites de integração.  Isso pode
 
5684
     incluir pegar um limite como um limite de integração tendendo ao
 
5685
     infinito ou a menos infinito; veja também `ldefint'.
 
5686
 
 
5687
     Casos especiais de integrais indefinidas incluem funções
 
5688
     trigonométricas, exponenciais e funções logarítmicas, e funções
 
5689
     racionais.  `integrate' pode também fazer uso de uma curta tabela
 
5690
     de integais elementares.
 
5691
 
 
5692
     `integrate' pode realizar uma mudança de variável se o integrando
 
5693
     tem a forma `f(g(x)) * diff(g(x), x)'.  `integrate' tenta achar
 
5694
     uma subexpressão `g(x)' de forma que a derivada de `g(x)' divida o
 
5695
     integrando.  Essa busca pode fazer uso de derivadas definidas pela
 
5696
     função `gradef'.  Veja também `changevar' e `antid'.
 
5697
 
 
5698
     Se nenhum dos procedimentos heurísticos acha uma integral
 
5699
     indefinida, o algorítmo de Risch é executado.  O sinalizador
 
5700
     `risch' pode ser escolhido como um `evflag', na chamada para `ev'
 
5701
     ou na linha de comando, e.g., `ev (integrate (<expr>, <x>),
 
5702
     risch)' ou `integrate (<expr>, <x>), risch'.  Se `risch' está
 
5703
     presente, `integrate' chama a função `risch' sem tentar
 
5704
     heurísticas primeiro.  Veja também `risch'.
 
5705
 
 
5706
     `integrate' trabalha somente com relações funcionais representadas
 
5707
     explicitamente com a notação `f(x)'.  `integrate' não respeita
 
5708
     dependências implicitas estabelecidas pela função `depends'.
 
5709
     `integrate' pode necessitar conhecer alguma propriedade de um
 
5710
     parâmetro no integrando.  `integrate' irá primeiro consultar a
 
5711
     base de dados do `assume', e , se a variável de interesse não está
 
5712
     lá, `integrate' perguntará ao usuário.  Dependendo da pergunta,
 
5713
     respostas adequadas são `yes;' ou `no;', ou `pos;', `zero;', ou
 
5714
     `neg;'.
 
5715
 
 
5716
     `integrate' não é, por padrão, declarada ser linear.  Veja
 
5717
     `declare' e `linear'.
 
5718
 
 
5719
     `integrate' tenta integração por partes somente em uns poucos
 
5720
     casos especiais.
 
5721
 
 
5722
     Exemplos:
 
5723
 
 
5724
        * Integrais definidas e indefinidas elementares.
 
5725
 
 
5726
               (%i1) integrate (sin(x)^3, x);
 
5727
                                          3
 
5728
                                       cos (x)
 
5729
               (%o1)                   ------- - cos(x)
 
5730
                                          3
 
5731
               (%i2) integrate (x/ sqrt (b^2 - x^2), x);
 
5732
                                                2    2
 
5733
               (%o2)                    - sqrt(b  - x )
 
5734
               (%i3) integrate (cos(x)^2 * exp(x), x, 0, %pi);
 
5735
                                              %pi
 
5736
                                          3 %e      3
 
5737
               (%o3)                      ------- - -
 
5738
                                             5      5
 
5739
               (%i4) integrate (x^2 * exp(-x^2), x, minf, inf);
 
5740
                                           sqrt(%pi)
 
5741
               (%o4)                       ---------
 
5742
                                               2
 
5743
 
 
5744
        * Uso de `assume' e dúvida interativa.
 
5745
 
 
5746
               (%i1) assume (a > 1)$
 
5747
               (%i2) integrate (x**a/(x+1)**(5/2), x, 0, inf);
 
5748
                   2 a + 2
 
5749
               Is  -------  an integer?
 
5750
                      5
 
5751
 
 
5752
               no;
 
5753
               Is  2 a - 3  positive, negative, or zero?
 
5754
 
 
5755
               neg;
 
5756
                                                  3
 
5757
               (%o2)                  beta(a + 1, - - a)
 
5758
                                                  2
 
5759
 
 
5760
        * Mudança de variável.  Existem duas mudanças de variável nesse
 
5761
          exemplo: uma usando a derivada estabelecida por `gradef', e
 
5762
          uma usando a derivação `diff(r(x))' de uma função não
 
5763
          especificada `r(x)'.
 
5764
 
 
5765
               (%i3) gradef (q(x), sin(x**2));
 
5766
               (%o3)                         q(x)
 
5767
               (%i4) diff (log (q (r (x))), x);
 
5768
                                     d               2
 
5769
                                    (-- (r(x))) sin(r (x))
 
5770
                                     dx
 
5771
               (%o4)                ----------------------
 
5772
                                           q(r(x))
 
5773
               (%i5) integrate (%, x);
 
5774
               (%o5)                     log(q(r(x)))
 
5775
 
 
5776
        * O valor de retorno contém a forma substantiva `'integrate'.
 
5777
          Nesse exemplo, Maxima pode extrair um fator do denominador de
 
5778
          uma função racional, mas não pode fatorar o restante ou de
 
5779
          outra forma achar sua integral.  `grind' mostra a forma
 
5780
          substantiva `'integrate' no resultado.  Veja também
 
5781
          `integrate_use_rootsof' para mais sobre integrais de funções
 
5782
          racionais.
 
5783
 
 
5784
               (%i1) expand ((x-4) * (x^3+2*x+1));
 
5785
                                   4      3      2
 
5786
               (%o1)              x  - 4 x  + 2 x  - 7 x - 4
 
5787
               (%i2) integrate (1/%, x);
 
5788
                                             /  2
 
5789
                                             [ x  + 4 x + 18
 
5790
                                             I ------------- dx
 
5791
                                             ]  3
 
5792
                                log(x - 4)   / x  + 2 x + 1
 
5793
               (%o2)            ---------- - ------------------
 
5794
                                    73               73
 
5795
               (%i3) grind (%);
 
5796
               log(x-4)/73-('integrate((x^2+4*x+18)/(x^3+2*x+1),x))/73$
 
5797
 
 
5798
        * Definindo uma função em termos de uma integral.  O corpo de
 
5799
          uma função não é avaliado quando a função é definida.  Dessa
 
5800
          forma o corpo de `f_1' nesse exemplo contém a forma
 
5801
          substantiva de `integrate'.  O operador apóstrofo-apóstrofo
 
5802
          `''' faz com que a integral seja avaliada, e o resultado
 
5803
          transforme-se no corpo de `f_2'.
 
5804
 
 
5805
               (%i1) f_1 (a) := integrate (x^3, x, 1, a);
 
5806
                                                    3
 
5807
               (%o1)           f_1(a) := integrate(x , x, 1, a)
 
5808
               (%i2) ev (f_1 (7), nouns);
 
5809
               (%o2)                          600
 
5810
               (%i3) /* Note parentheses around integrate(...) here */
 
5811
                     f_2 (a) := ''(integrate (x^3, x, 1, a));
 
5812
                                                  4
 
5813
                                                 a    1
 
5814
               (%o3)                   f_2(a) := -- - -
 
5815
                                                 4    4
 
5816
               (%i4) f_2 (7);
 
5817
               (%o4)                          600
 
5818
 
 
5819
 
 
5820
 -- Variável de sistema: integration_constant_counter
 
5821
     Valor padrão: 0
 
5822
 
 
5823
     `integração_constant_counter' é um contador que é atualizado a
 
5824
     cada vez que uma constante de integração (nomeada pelo Maxima,
 
5825
     e.g., `integrationconstant1') é introduzida em uma expressão pela
 
5826
     integração indefinida de uma equação.
 
5827
 
 
5828
 
 
5829
 -- Variável de opção: integrate_use_rootsof
 
5830
     Valor padrão: `false'
 
5831
 
 
5832
     Quando `integrate_use_rootsof' é `true' e o denominador de uma
 
5833
     função racional não pode ser fatorado, `integrate' retorna a
 
5834
     integral em uma forma que é uma soma sobre as raízes (não
 
5835
     conhecidas ainda) do denominador.
 
5836
 
 
5837
     Por exemplo, com `integrate_use_rootsof' escolhido para `false',
 
5838
     `integrate' retorna uma integral não resolvida de uma função
 
5839
     racional na forma substantiva:
 
5840
 
 
5841
          (%i1) integrate_use_rootsof: false$
 
5842
          (%i2) integrate (1/(1+x+x^5), x);
 
5843
                  /  2
 
5844
                  [ x  - 4 x + 5
 
5845
                  I ------------ dx                            2 x + 1
 
5846
                  ]  3    2                2            5 atan(-------)
 
5847
                  / x  - x  + 1       log(x  + x + 1)          sqrt(3)
 
5848
          (%o2)   ----------------- - --------------- + ---------------
 
5849
                          7                 14             7 sqrt(3)
 
5850
 
 
5851
     Agora vamos escolher o sinalizador para ser true e a parte não
 
5852
     resolvida da integral será expressa como um somatório sobre as
 
5853
     raízes do denominador da função racional:
 
5854
 
 
5855
          (%i3) integrate_use_rootsof: true$
 
5856
          (%i4) integrate (1/(1+x+x^5), x);
 
5857
                ====        2
 
5858
                \       (%r4  - 4 %r4 + 5) log(x - %r4)
 
5859
                 >      -------------------------------
 
5860
                /                    2
 
5861
                ====            3 %r4  - 2 %r4
 
5862
                                3    2
 
5863
                %r4 in rootsof(x  - x  + 1)
 
5864
          (%o4) ----------------------------------------------------------
 
5865
                         7
 
5866
 
 
5867
                                                                       2 x + 1
 
5868
                                                   2            5 atan(-------)
 
5869
                                              log(x  + x + 1)          sqrt(3)
 
5870
                                            - --------------- + ---------------
 
5871
                                                    14             7 sqrt(3)
 
5872
 
 
5873
     Alternativamente o usuário pode calcular as raízes do denominador
 
5874
     separadamente, e então expressar o integrando em termos dessas
 
5875
     raízes, e.g., `1/((x - a)*(x - b)*(x - c))' ou `1/((x^2 - (a+b)*x
 
5876
     + a*b)*(x - c))' se o denominador for um polinômio cúbico.
 
5877
     Algumas vezes isso ajudará Maxima a obter resultados mais úteis.
 
5878
 
 
5879
 
 
5880
 -- Função: ldefint (<expr>, <x>, <a>, <b>)
 
5881
     Tenta calcular a integral definida de <expr> pelo uso de `limit'
 
5882
     para avaliar a integral indefinida <expr> em relação a <x> no
 
5883
     limite superior <b> e no limite inferior <a>.  Se isso falha para
 
5884
     calcular a integral definida, `ldefint' retorna uma expressão
 
5885
     contendo limites como formas substantivas.
 
5886
 
 
5887
     `ldefint' não é chamada por `integrate', então executando `ldefint
 
5888
     (<expr>, <x>, <a>, <b>)' pode retornar um resultado diferente de
 
5889
     `integrate (<expr>, <x>, <a>, <b>)'.  `ldefint' sempre usa o mesmo
 
5890
     método para avaliar a integral definida, enquanto `integrate' pode
 
5891
     utilizar várias heurísticas e pode reconhecer alguns casos
 
5892
     especiais.
 
5893
 
 
5894
 
 
5895
 -- Função: potential (<givengradient>)
 
5896
     O cálculo faz uso da variável global `potentialzeroloc[0]' que
 
5897
     deve ser `nonlist' ou da forma
 
5898
 
 
5899
          [indeterminatej=expressãoj, indeterminatek=expressãok, ...]
 
5900
 
 
5901
     O formador sendo equivalente para a expressão nonlist para todos
 
5902
     os lados direitos-manuseados mais tarde.  Os lados direitos
 
5903
     indicados são usados como o limite inferior de integração.  O
 
5904
     sucesso das integrações pode depender de seus valores e de sua
 
5905
     ordem.  `potentialzeroloc' é inicialmente escolhido para 0.
 
5906
 
 
5907
 
 
5908
 -- Função: qq
 
5909
     O pacote `qq' (que pode ser carregado com `load ("qq")') contém
 
5910
     uma função `quanc8' que pode pegar ou 3 ou 4 arguments.  A versão
 
5911
     de 3 argumentos calcula a integral da função especificada como
 
5912
     primeiro argumento sobre o intervalo de lo a hi como em `quanc8
 
5913
     ('função, lo, hi)'.  o nome da função pode receber apóstrofo.  A
 
5914
     versão de 4 argumentos calculará a integral da função ou expressão
 
5915
     (primeiro argumento) em relação à variável (segundo argumento) no
 
5916
     intervalo de `lo' a `hi' como em `quanc8(<f(x) or expressão in x>,
 
5917
     x, lo, hi)'.  O método usado é o da quadratura dos currais de
 
5918
     Newton, e a rotina é adaptativa.  Isso irá dessa forma gastar
 
5919
     tempo dividindo o intervalo somente quando necessário para
 
5920
     completar as condições de erro especificadas pelas variáveis
 
5921
     `quanc8_relerr' (valor padrão=1.0e-4) e `quanc8_abserr' (valor
 
5922
     padrão=1.0e-8) que dão o teste de erro relativo:
 
5923
 
 
5924
          |integral(função) - valor calculado| < quanc8_relerr*|integral(função)|
 
5925
 
 
5926
     e o teste de erro absoluto:
 
5927
 
 
5928
          |integral(função) - valor calculado| < quanc8_abserr
 
5929
 
 
5930
     `printfile ("qq.usg")' yields additional informação.
 
5931
 
 
5932
 
 
5933
 -- Função: quanc8 (<expr>, <a>, <b>)
 
5934
     Um integrador adaptativo.  Demonstração e arquivos de utilização
 
5935
     são fornecidos.  O método é para usar a regra da quadratura dos
 
5936
     currais de Newton, daí o nome da função `quanc8', disponível em
 
5937
     versões de 3 ou 4 argumentos.  Verificação de erro absoluto e erro
 
5938
     relativo são usadas.  Para usar isso faça `load ("qq")'.  Veja
 
5939
     também `qq'.
 
5940
 
 
5941
 
 
5942
 -- Função: residue (<expr>, <z>, <z_0>)
 
5943
     Calcula o resíduo no plano complexo da expressão <expr> quando a
 
5944
     variável <z> assumes o valor <z_0>.  O resíduo é o coeficiente de
 
5945
     `(<z> - <z_0>)^(-1)' nas séries de Laurent para <expr>.
 
5946
 
 
5947
          (%i1) residue (s/(s**2+a**2), s, a*%i);
 
5948
                                          1
 
5949
          (%o1)                           -
 
5950
                                          2
 
5951
          (%i2) residue (sin(a*x)/x**4, x, 0);
 
5952
                                           3
 
5953
                                          a
 
5954
          (%o2)                         - --
 
5955
                                          6
 
5956
 
 
5957
 
 
5958
 -- Função: risch (<expr>, <x>)
 
5959
     Integra <expr> em relação a <x> usando um caso transcendental do
 
5960
     algorítmo de Risch.  (O caso algébrico do algorítmo de Risch foi
 
5961
     implementado.)  Isso atualmente manuseia os casos de exponenciais
 
5962
     aninhadas e logarítmos que a parte principal de `integrate' não
 
5963
     pode fazer.  `integrate' irá aplicar automaticamente `risch' se
 
5964
     dados esses casos.
 
5965
 
 
5966
     `erfflag', se `false', previne `risch' da introdução da função
 
5967
     `erf' na resposta se não for achado nenhum no integrando para
 
5968
     começar.
 
5969
 
 
5970
          (%i1) risch (x^2*erf(x), x);
 
5971
                                                                  2
 
5972
                       3                      2                - x
 
5973
                  %pi x  erf(x) + (sqrt(%pi) x  + sqrt(%pi)) %e
 
5974
          (%o1)   -------------------------------------------------
 
5975
                                        3 %pi
 
5976
          (%i2) diff(%, x), ratsimp;
 
5977
                                       2
 
5978
          (%o2)                       x  erf(x)
 
5979
 
 
5980
 
 
5981
 -- Função: romberg (<expr>, <x>, <a>, <b>)
 
5982
 -- Função: romberg (<expr>, <a>, <b>)
 
5983
     Integração de Romberg.  Existem dois caminhos para usar essa
 
5984
     função.  O primeiro é um caminho ineficiente como a versão de
 
5985
     integral definida de `integrate': `romberg (<integrando>,
 
5986
     <variável of integração>, <lower limit>, <upper limit>)'.
 
5987
 
 
5988
     Exemplos:
 
5989
 
 
5990
          (%i1) showtime: true$
 
5991
          (%i2) romberg (sin(y), y, 0, %pi);
 
5992
          Evaluação took 0.00 seconds (0.01 elapsed) using 25.293 KB.
 
5993
          (%o2)                   2.000000016288042
 
5994
          (%i3) 1/((x-1)^2+1/100) + 1/((x-2)^2+1/1000) + 1/((x-3)^2+1/200)$
 
5995
          (%i4) f(x) := ''%$
 
5996
          (%i5) rombergtol: 1e-6$
 
5997
          (%i6) rombergit: 15$
 
5998
          (%i7) romberg (f(x), x, -5, 5);
 
5999
          Evaluação took 11.97 seconds (12.21 elapsed) using 12.423 MB.
 
6000
          (%o7)                   173.6730736617464
 
6001
 
 
6002
     O segundo é um caminho eficiente que é usado como segue:
 
6003
 
 
6004
          romberg (<função name>, <lower limit>, <upper limit>);
 
6005
 
 
6006
     Continuando o exemplo acima, temos:
 
6007
          (%i8) f(x) := (mode_declare ([função(f), x], float), ''(%th(5)))$
 
6008
          (%i9) translate(f);
 
6009
          (%o9)                          [f]
 
6010
          (%i10) romberg (f, -5, 5);
 
6011
          Evaluação took 3.51 seconds (3.86 elapsed) using 6.641 MB.
 
6012
          (%o10)                  173.6730736617464
 
6013
 
 
6014
     O primeiro argumento deve ser uma função trauzida ou compilada.
 
6015
     (Se for compilada isso deve ser declarado para retorno a
 
6016
     `flonum'.)  Se o primeiro argumento não for já traduzido,
 
6017
     `romberg' não tentará traduzí-lo mas resultará um erro.
 
6018
 
 
6019
     A precisão da integração é governada pelas variáveis globais
 
6020
     `rombergtol' (valor padrão 1.E-4) e `rombergit' (valor padrão 11).
 
6021
     `romberg' retornará um resultado se a diferença relativa em
 
6022
     sucessivas aproximações for menor que `rombergtol'.  Isso tentará
 
6023
     dividir ao meio o tamanho do passo `rombergit' vezes antes que
 
6024
     isso seja abandonado.  O número de iterações e avaliações da
 
6025
     função que `romberg' fará é governado por `rombergabs' e
 
6026
     `rombergmin'.
 
6027
 
 
6028
     `romberg' pode ser chamada recursivamente e dessa forma pode fazer
 
6029
     integrais duplas e triplas.
 
6030
 
 
6031
     Exemplo:
 
6032
          (%i1) assume (x > 0)$
 
6033
          (%i2) integrate (integrate (x*y/(x+y), y, 0, x/2), x, 1, 3)$
 
6034
          (%i3) radcan (%);
 
6035
                              26 log(3) - 26 log(2) - 13
 
6036
          (%o3)             - --------------------------
 
6037
                                          3
 
6038
          (%i4) %,numer;
 
6039
          (%o4)                   .8193023963959073
 
6040
          (%i5) define_variable (x, 0.0, float, "Global variável in função F")$
 
6041
          (%i6) f(y) := (mode_declare (y, float), x*y/(x+y))$
 
6042
          (%i7) g(x) := romberg ('f, 0, x/2)$
 
6043
          (%i8) romberg (g, 1, 3);
 
6044
          (%o8)                   .8193022864324522
 
6045
 
 
6046
     A vantagem com esse caminho é que a função `f' pode ser usada para
 
6047
     outros propósitos, como imprimir gráficos.  A desvantagem é que
 
6048
     você tem que inventar um nome para ambas a função `f' e sua
 
6049
     variável independente `x'.  Ou, sem a variável global:
 
6050
 
 
6051
          (%i1) g_1(x) := (mode_declare (x, float), romberg (x*y/(x+y), y, 0, x/2))$
 
6052
          (%i2) romberg (g_1, 1, 3);
 
6053
          (%o2)                   .8193022864324522
 
6054
 
 
6055
     A vantagem aqui é que o código é menor.
 
6056
 
 
6057
          (%i3) q (a, b) := romberg (romberg (x*y/(x+y), y, 0, x/2), x, a, b)$
 
6058
          (%i4) q (1, 3);
 
6059
          (%o4)                   .8193022864324522
 
6060
 
 
6061
     Isso é sempre o caminho mais curto, e as variáveis não precisam
 
6062
     ser declaradas porque elas estão no contexto de `romberg'.  O uso
 
6063
     de `romberg' para integrais multiplas pode ter grandes
 
6064
     desvantagens, apesar disso.  O amontoado de cálculos extras
 
6065
     necessários por causa da informação geométrica descartada durante
 
6066
     o processo pela expressão de integrais multiplas por esse caminho
 
6067
     pode ser incrível.  O usuário deverá ter certeza de entender e
 
6068
     usar os comutadores `rombergtol' e `rombergit'.
 
6069
 
 
6070
 
 
6071
 -- Variável de opção: rombergabs
 
6072
     Valor padrão: 0.0
 
6073
 
 
6074
     Assumindo que estimativas sucessivas produzidas por `romberg' são
 
6075
     `y[0]', `y[1]', `y[2]', etc., então `romberg' retornará após `n'
 
6076
     iterações se (grasseiramente falando)
 
6077
 
 
6078
           (abs(y[n]-y[n-1]) <= rombergabs ou
 
6079
           abs(y[n]-y[n-1])/(if y[n]=0.0 then 1.0 else y[n]) <= rombergtol)
 
6080
 
 
6081
     for `true'.  (A condição sobre o número de iterações dadas por
 
6082
     `rombergmin' deve também ser satisfeita.)  Dessa forma se
 
6083
     `rombergabs' é 0.0 (o padrão) você apenas pega o teste de erro
 
6084
     relativo.  A utilidade de uma variável adicional vem quando você
 
6085
     executar uma integral, quando a contribuição dominante vem de uma
 
6086
     pequena região.  Então você pode fazer a integral sobre uma pequena
 
6087
     região dominante primeiro, usando a verificação relativa de
 
6088
     precisão, seguida pela integral sobre o restante da região usando
 
6089
     a verificação absoluta de erro.
 
6090
 
 
6091
     Exemplo:  Suponha que você quer calcular
 
6092
 
 
6093
          'integrate (exp(-x), x, 0, 50)
 
6094
 
 
6095
     (numericamente) com uma precisão relativa de 1 parte em 10000000.
 
6096
     Defina a função.  `n' é o contador, então nós podemos ver quantas
 
6097
     avaliações de função foram necessárias.  Primeiro de tudo tente
 
6098
     fazer a integral completa de uma só vez.
 
6099
 
 
6100
          (%i1) f(x) := (mode_declare (n, integer, x, float), n:n+1, exp(-x))$
 
6101
          (%i2) translate(f)$
 
6102
          Warning-> n é an undefined global variable.
 
6103
          (%i3) block ([rombergtol: 1.e-6, romberabs: 0.0], n:0, romberg (f, 0, 50));
 
6104
          (%o3)                   1.000000000488271
 
6105
          (%i4) n;
 
6106
          (%o4)                          257
 
6107
 
 
6108
     Que aproximadamente precisou de 257 avaliações de função .   Agora
 
6109
     faça a integral inteligentemente, primeiro fazendo
 
6110
     `'integrate (exp(-x), x, 0, 10)' e então escolhendo `rombergabs'
 
6111
     para 1.E-6 vezes (nessa      integral parcial).  Isso
 
6112
     aproximdamente pega somente 130 avaliações de função.
 
6113
 
 
6114
          (%i5) block ([rombergtol: 1.e-6, rombergabs:0.0, sum:0.0],
 
6115
            n: 0, sum: romberg (f, 0, 10), rombergabs: sum*rombergtol, rombergtol:0.0,
 
6116
                sum + romberg (f, 10, 50));
 
6117
          (%o5)                   1.000000001234793
 
6118
          (%i6) n;
 
6119
          (%o6)                          130
 
6120
 
 
6121
     Então se `f(x)' onde a função pegou um longo tempo de computação, o
 
6122
     segundo método fez a mesma tarefa 2 vezes mais rápido.
 
6123
 
 
6124
 
 
6125
 -- Variável de opção: rombergit
 
6126
     Valor padrão: 11
 
6127
 
 
6128
     A precisão do comando `romberg' de integração é governada pelas
 
6129
     variáveis globais `rombergtol' e `rombergit'.  `romberg' retornará
 
6130
     um resultado se a diferença relativa em sucessivas approximações é
 
6131
     menor que `rombergtol'.  Isso tentará dividir ao meio o tamanho do
 
6132
     passoe `rombergit' vezes antes disso ser abandonado.
 
6133
 
 
6134
 
 
6135
 -- Variável de opção: rombergmin
 
6136
     Valor padrão: 0
 
6137
 
 
6138
     `rombergmin' governa o número mínimo de avaliações de função que
 
6139
     `romberg' fará.  `romberg' avaliará seu primeiro argumento pelo
 
6140
     menos `2^(rombergmin+2)+1' vezes.  Isso é útil para integrar
 
6141
     funções oscilatórias, onde o teste normal de convergência pode
 
6142
     lgumas vezes inadequadamente passar.
 
6143
 
 
6144
 
 
6145
 -- Variável de opção: rombergtol
 
6146
     Valor padrão: 1e-4
 
6147
 
 
6148
     A precisão do comando de integração de `romberg' é governada pelas
 
6149
     variáveis globais `rombergtol' e `rombergit'.  `romberg' retornará
 
6150
     um resultado se a difereça relativa em sucessivas aproximações é
 
6151
     menor que `rombergtol'.  Isso tentará dividir ao meio o tamanho do
 
6152
     passo `rombergit' vezes antes disso ser abandonado.
 
6153
 
 
6154
 
 
6155
 -- Função: tldefint (<expr>, <x>, <a>, <b>)
 
6156
     Equivalente a `ldefint' com `tlimswitch' escolhido para `true'.
 
6157
 
 
6158
 
 
6159
 
 
6160
File: maxima.info,  Node: Introdução a QUADPACK,  Next: Definições para QUADPACK,  Prev: Definições para Integração,  Up: Integração
 
6161
 
 
6162
20.3 Introdução a QUADPACK
 
6163
==========================
 
6164
 
 
6165
QUADPACK é uma coleção de funções para aálculo numérico de integrais
 
6166
definidas unidimensionais.  O pacote QUADPACK resultou da junção de um
 
6167
projeto de R. Piessens (1), E. de Doncker (2), C. Ueberhuber (3), e D.
 
6168
Kahaner (4).
 
6169
 
 
6170
   A biblioteca QUADPACK inclída no Maxima é uma tradução automática
 
6171
(feita através do programa `f2cl') do código fonte em de QUADPACK como
 
6172
aparece na SLATEC Common Mathematical Library, Versão 4.1 (5).  A
 
6173
biblioteca Fortran SLATEC é datada de Julho de 1993, mas as funções
 
6174
QUADPACK foram escritas alguns anos antes.  Existe outra versão de
 
6175
QUADPACK em Netlib (6); não está claro no que aquela versão difere da
 
6176
versão existente em SLATEC.
 
6177
 
 
6178
   As funções QUADPACK incluídas no Maxima são toda automáticas, no
 
6179
sentido de que essas funções tentam calcular um resultado para uma
 
6180
precisão específica, requerendo um número não especificado de
 
6181
avaliações de função.  A tradução do Lisp do Maxima da iblioteca
 
6182
QUADPACK também inclui algumas funçòes não automáticas, mas elas não
 
6183
são expostas a nível de Maxima.
 
6184
 
 
6185
   Informação adicionalsobre a bilioteca QUADPACK pode ser encontrada
 
6186
no livro do QUADPACK (7).
 
6187
 
 
6188
20.3.1 Overview
 
6189
---------------
 
6190
 
 
6191
`quad_qag'
 
6192
     Integração de uma função genérica sobre um intervalo finito.
 
6193
     `quad_qag' implementa um integrador adaptativo globalmente simples
 
6194
     usando a estratégia de Aind (Piessens, 1973).  O chamador pode
 
6195
     escolher entre 6 pares de formulas da quadratura de Gauss-Kronrod
 
6196
     para a componente de avaliação da regra.  As regras de alto grau
 
6197
     são adequadas para integrandos fortemente oscilantes.
 
6198
 
 
6199
`quad_qags'
 
6200
     Integração de uma função genérica sob um intervalo finito.
 
6201
     `quad_qags' implementa subdivisão de intervalos globalmente
 
6202
     adaptativos com extrapolação (de Doncker, 1978) por meio do
 
6203
     algorítmo de Epsilon (Wynn, 1956).
 
6204
 
 
6205
`quad_qagi'
 
6206
     Integração de uma função genérica  sobre um intervalo finito ou
 
6207
     semi-finito.  O intervalo é mapeado sobre um intervalo finito e
 
6208
     então a mesma estratégia de `quad_qags' é aplicada.
 
6209
 
 
6210
`quad_qawo'
 
6211
     Integração de cos(omega x) f(x) ou sin(omega x) f(x) sobre um
 
6212
     intervalo finito, onde omega é uma constante.  A componente de
 
6213
     avaliação da regra é baseada na técnica modificada de
 
6214
     Clenshaw-Curtis.  `quad_qawo' aplica subdivisão adaptativa com
 
6215
     extrapolação, similar a `quad_qags'.
 
6216
 
 
6217
`quad_qawf'
 
6218
     Calcula uma transformação de cosseno de Fourier ou de um seno de
 
6219
     Fourier sobre um intervalo semi-finito.  O mesmo aproxima como
 
6220
     `quad_qawo' aplicado sobre intervalos finitos sucessivos, e
 
6221
     aceleração de convergência por meio d algorítimo de Epsilon (Wynn,
 
6222
     1956) aplicado a séries de contribuições de integrais.
 
6223
 
 
6224
`quad_qaws'
 
6225
     Integraçào de w(x) f(x) sobre um intervalo finito [a, b], onde w é
 
6226
     uma função da forma (x - a)^alpha (b - x)^beta v(x) e v(x) é 1 ou
 
6227
     log(x - a) ou log(b - x) ou log(x - a) log(b - x), e alpha > -1 e
 
6228
     beta > -1.  Auma estratégia de subdivisão adaptativa é aplicada,
 
6229
     com integração modificada de Clenshaw-Curtis sobre os
 
6230
     subintervalos que possuem a ou b.
 
6231
 
 
6232
`quad_qawc'
 
6233
     Calcula o valor principal de Cauchy de f(x)/(x - c) sobre um
 
6234
     intervalo finito (a, b) e um c especificado.  A estratégia é
 
6235
     globalmente adaptativa, e a integração modificada de
 
6236
     Clenshaw-Curtis é usada sobre subamplitudes que possuírem o ponto
 
6237
     x = c.
 
6238
 
 
6239
   ---------- Footnotes ----------
 
6240
 
 
6241
   (1) Applied Mathematics and Programming Division, K.U. Leuven
 
6242
 
 
6243
   (2) Applied Mathematics and Programming Division, K.U. Leuven
 
6244
 
 
6245
   (3) Institut für Mathematik, T.U. Wien
 
6246
 
 
6247
   (4) National Bureau of Standards, Washington, D.C., U.S.A
 
6248
 
 
6249
   (5) http://www.netlib.org/slatec
 
6250
 
 
6251
   (6) http://www.netlib.org/quadpack
 
6252
 
 
6253
   (7) R. Piessens, E. de Doncker-Kapenga, C.W. Uberhuber, e D.K.
 
6254
Kahaner.  QUADPACK: A Subroutine Package for Automatic Integration.
 
6255
Berlin: Springer-Verlag, 1983, ISBN 0387125531.
 
6256
 
 
6257
 
 
6258
File: maxima.info,  Node: Definições para QUADPACK,  Prev: Introdução a QUADPACK,  Up: Integração
 
6259
 
 
6260
20.4 Definições para QUADPACK
 
6261
=============================
 
6262
 
 
6263
 -- Função: quad_qag (<f(x)>, <x>, <a>, <b>, <chave>, <epsrel>,
 
6264
          <limite>)
 
6265
 -- Função: quad_qag (<f>, <x>, <a>, <b>, <chave>, <epsrel>, <limite>)
 
6266
     Integração de uma função genérica sobre um intervalo finito.
 
6267
     `quad_qag' implementa um integrador adaptativo globalmente simples
 
6268
     usando a estratégia de Aind (Piessens, 1973).  O chamador pode
 
6269
     escolher entre 6 pares de fórmulas da quadratura de Gauss-Kronrod
 
6270
     para a componente de avaliação da regra.  As regras de alto nível
 
6271
     são adequadas para integrandos fortemente oscilatórios.
 
6272
 
 
6273
     `quad_qag' calcula a integral
 
6274
 
 
6275
     integrate (f(x), x, a, b)
 
6276
 
 
6277
     A função a ser integrada é <f(x)>, com variável dependente <x>, e
 
6278
     a função é para ser integrada entre os limites <a> e <b>.  <chave>
 
6279
     é o integrador a ser usado e pode ser um inteiro entre 1 e 6,
 
6280
     inclusive.  O valor de <chave> seleciona a ordem da regra de
 
6281
     integração de Gauss-Kronrod.  Regra de alta ordem são adequadas
 
6282
     para integrandos fortemente oscilatórios.
 
6283
 
 
6284
     O integrando pode ser especidficado como o nome de uma função
 
6285
     Maxima ou uma função Lisp ou um operador, uma expressão lambda do
 
6286
     Maxima, ou uma expressão geral do Maxima.
 
6287
 
 
6288
     A integração numérica é concluída adaptativamente pela subdivisão a
 
6289
     região de integração até que a precisão desejada for completada.
 
6290
 
 
6291
     Os argumentos opcionais <epsrel> e <limite> são o erro relativo
 
6292
     desejado e o número máximo de subintervalos respectivamente.
 
6293
     <epsrel> padrão em 1e-8 e <limite> é 200.
 
6294
 
 
6295
     `quad_qag' retorna uma lista de quatro elementos:
 
6296
 
 
6297
        * uma aproximação para a integral,
 
6298
 
 
6299
        * o erro absoluto estimado da aproximação,
 
6300
 
 
6301
        * o número de avaliações do integrando,
 
6302
 
 
6303
        * um código de erro.
 
6304
 
 
6305
     O código de erro (quarto elemento do valor de retorno) pode ter os
 
6306
     valores:
 
6307
 
 
6308
    `0'
 
6309
          se nenhum problema for encontrado;
 
6310
 
 
6311
    `1'
 
6312
          se muitos subintervalos foram concluídos;
 
6313
 
 
6314
    `2'
 
6315
          se erro excessivo é detectado;
 
6316
 
 
6317
    `3'
 
6318
          se ocorre comportamento extremamente ruim do integrando;
 
6319
 
 
6320
    `6'
 
6321
          se a entrada é inválida.
 
6322
 
 
6323
 
 
6324
     Exemplos:
 
6325
 
 
6326
          (%i1) quad_qag (x^(1/2)*log(1/x), x, 0, 1, 3);
 
6327
          (%o1)    [.4444444444492108, 3.1700968502883E-9, 961, 0]
 
6328
          (%i2) integrate (x^(1/2)*log(1/x), x, 0, 1);
 
6329
                                          4
 
6330
          (%o2)                           -
 
6331
                                          9
 
6332
 
 
6333
 -- Função: quad_qags (<f(x)>, <x>, <a>, <b>, <epsrel>, <limite>)
 
6334
 -- Função: quad_qags (<f>, <x>, <a>, <b>, <epsrel>, <limite>)
 
6335
     Integração de uma função geral sobre um intervalo finito.
 
6336
     `quad_qags' implementa subdivisão de intervalo globalmente
 
6337
     adaptativa com extrapolação (de Doncker, 1978) através do
 
6338
     algorítmo de (Wynn, 1956).
 
6339
 
 
6340
     `quad_qags' computes the integral
 
6341
 
 
6342
     integrate (f(x), x, a, b)
 
6343
 
 
6344
     A função a ser integrada é <f(x)>, com variável dependente <x>, e
 
6345
     a função é para ser integrada entre os limites <a> e <b>.
 
6346
 
 
6347
     O integrando pode ser especidficado como o nome de uma função
 
6348
     Maxima ou uma função Lisp ou um operador, uma expressão lambda do
 
6349
     Maxima, ou uma expressão geral do Maxima.
 
6350
 
 
6351
     Os argumentos opcionais <epsrel> e <limite> são o erro relativo
 
6352
     desejado e o número máximo de subintervalos, respectivamente.
 
6353
     <epsrel> padrão em 1e-8 e <limite> é 200.
 
6354
 
 
6355
     `quad_qags' retorna uma lista de quatro elementos:
 
6356
 
 
6357
        * uma aproximação para a integral,
 
6358
 
 
6359
        * o erro absoluto estimado da aproximação,
 
6360
 
 
6361
        * o número de avaliações do integrando,
 
6362
 
 
6363
        * um código de erro.
 
6364
 
 
6365
     O código de erro (quarto elemento do valor de retorno) pode ter os
 
6366
     valores:
 
6367
 
 
6368
    `0'
 
6369
          nenhum problema foi encontrado;
 
6370
 
 
6371
    `1'
 
6372
          muitos subintervalos foram concluídos;
 
6373
 
 
6374
    `2'
 
6375
          erro excessivo é detectado;
 
6376
 
 
6377
    `3'
 
6378
          ocorreu comportamento excessivamente ruim do integrando;
 
6379
 
 
6380
    `4'
 
6381
          falhou para convergência
 
6382
 
 
6383
    `5'
 
6384
          integral é provavelmente divergente ou lentamente convergente
 
6385
 
 
6386
    `6'
 
6387
          se a entrada é inválida.
 
6388
 
 
6389
     Exemplos:
 
6390
 
 
6391
          (%i1) quad_qags (x^(1/2)*log(1/x), x, 0 ,1);
 
6392
          (%o1)   [.4444444444444448, 1.11022302462516E-15, 315, 0]
 
6393
 
 
6394
     Note que `quad_qags' é mais preciso e eficiente que `quad_qag'
 
6395
     para esse integrando.
 
6396
 
 
6397
 
 
6398
 -- Função: quad_qagi (<f(x)>, <x>, <a>, <inftype>, <epsrel>, <limite>)
 
6399
 -- Função: quad_qagi (<f>, <x>, <a>, <inftype>, <epsrel>, <limite>)
 
6400
     Integração de uma função genérica sobre um intervalo finito ou
 
6401
     semi-finito.  O intervalo é mapeado sobre um intervalo finito e
 
6402
     então a mesma estratégia que em `quad_qags' é aplicada.
 
6403
 
 
6404
     `quad_qagi' avalia uma das seguintes integrais
 
6405
 
 
6406
     integrate (f(x), x, minf, inf)
 
6407
 
 
6408
     integrate (f(x), x, minf, a)
 
6409
 
 
6410
     integrate (f(x), x, a, minf, inf)
 
6411
 
 
6412
     usando a rotina Quadpack QAGI.  A função a ser integrada é <f(x)>,
 
6413
     com variável dependente <x>, e a função é para ser integrada sobre
 
6414
     um intervalo infinito.
 
6415
 
 
6416
     O integrando pode ser especidficado como o nome de uma função
 
6417
     Maxima ou uma função Lisp ou um operador, uma expressão lambda do
 
6418
     Maxima, ou uma expressão geral do Maxima.
 
6419
 
 
6420
     O parâmetro <inftype> determina o intervalo de integração como
 
6421
     segue:
 
6422
 
 
6423
    `inf'
 
6424
          O intervalo vai de <a> ao infinito positivo.
 
6425
 
 
6426
    `minf'
 
6427
          O intervalo vai do infinito negativo até <a>.
 
6428
 
 
6429
    `both'
 
6430
          O intervalo corresponde a toda reta real.
 
6431
 
 
6432
     Os argumentos opcionais <epsrel> e <limite> são o erro relativo
 
6433
     desejado e o número maximo de subintervalos, respectivamente.
 
6434
     <epsrel> padrão para 1e-8 e <limite> é 200.
 
6435
 
 
6436
     `quad_qagi' retorna uma lista de quatro elementos:
 
6437
 
 
6438
        * uma aproximação para a integral,
 
6439
 
 
6440
        * o erro absoluto estimado da aproximação,
 
6441
 
 
6442
        * o número de avaliações do integrando,
 
6443
 
 
6444
        * um código de erro.
 
6445
 
 
6446
     O código de erro (quarto elemento do valor de retorno) pode ter os
 
6447
     valores:
 
6448
 
 
6449
    `0'
 
6450
          nenhum problema foi encontrado;
 
6451
 
 
6452
    `1'
 
6453
          muitos subintervalos foram concluídos;
 
6454
 
 
6455
    `2'
 
6456
          erro excessivo é detectado;
 
6457
 
 
6458
    `3'
 
6459
          ocorreu comportamento excessivamente ruim do integrando;
 
6460
 
 
6461
    `4'
 
6462
          falhou para convergência;
 
6463
 
 
6464
    `5'
 
6465
          integral é provavelmente divergente ou lentamente convergente;
 
6466
 
 
6467
    `6'
 
6468
          se a entrada for inválida.
 
6469
 
 
6470
 
 
6471
     Exemplos:
 
6472
 
 
6473
          (%i1) quad_qagi (x^2*exp(-4*x), x, 0, inf);
 
6474
          (%o1)        [0.03125, 2.95916102995002E-11, 105, 0]
 
6475
          (%i2) integrate (x^2*exp(-4*x), x, 0, inf);
 
6476
                                         1
 
6477
          (%o2)                          --
 
6478
                                         32
 
6479
 
 
6480
 
 
6481
 -- Função: quad_qawc (<f(x)>, <x>, <c>, <a>, <b>, <epsrel>, <limite>)
 
6482
 -- Função: quad_qawc (<f>, <x>, <c>, <a>, <b>, <epsrel>, <limite>)
 
6483
     Calcula o valor principal de Cauchy de f(x)/(x - c) over a finite
 
6484
     interval.  A estratégia é globalmente adaptativa, e a integração de
 
6485
     Clenshaw-Curtis modificada é usada sobre as subamplitudes que
 
6486
     possuírem o ponto x = c.
 
6487
 
 
6488
     `quad_qawc' calcula o valor principal de Cauchy de
 
6489
 
 
6490
     integrate (f(x)/(x - c), x, a, b)
 
6491
 
 
6492
     usando a rotina Quadpack QAWC.  A função a ser integrada é
 
6493
     `<f(x)>/(<x> - <c>)', com variável dependente <x>, e a função é
 
6494
     para ser integrada sobre o intervalo que vai de <a> até <b>.
 
6495
 
 
6496
     O integrando pode ser especidficado como o nome de uma função
 
6497
     Maxima ou uma função Lisp ou um operador, uma expressão lambda do
 
6498
     Maxima, ou uma expressão geral do Maxima.
 
6499
 
 
6500
     Os argumentos opcionais <epsrel> e <limite> são o erro relativo
 
6501
     desejado e o máximo número de subintervalos, respectivamente.
 
6502
     <epsrel> padrão para 1e-8 e <limite> é 200.
 
6503
 
 
6504
     `quad_qawc' retorna uma lista de quatro elementos:
 
6505
 
 
6506
        * uma aproximação para a integral,
 
6507
 
 
6508
        * o erro absoluto estimado da aproximação,
 
6509
 
 
6510
        * o número de avaliações do integrando,
 
6511
 
 
6512
        * um código de erro.
 
6513
 
 
6514
     O código de erro (quarto elemento do valoor de retorno) pode ter
 
6515
     os valores:
 
6516
 
 
6517
    `0'
 
6518
          nenhum problema foi encontrado;
 
6519
 
 
6520
    `1'
 
6521
          muitos subintervalos foram concluídos;
 
6522
 
 
6523
    `2'
 
6524
          erro excessivo é detectado;
 
6525
 
 
6526
    `3'
 
6527
          ocorreu comportamento excessivamente ruim do integrando;
 
6528
 
 
6529
    `6'
 
6530
          se a entrada é inválida.
 
6531
 
 
6532
 
 
6533
     Exemplos:
 
6534
 
 
6535
          (%i1) quad_qawc (2^(-5)*((x-1)^2+4^(-5))^(-1), x, 2, 0, 5);
 
6536
          (%o1)    [- 3.130120337415925, 1.306830140249558E-8, 495, 0]
 
6537
          (%i2) integrate (2^(-alpha)*(((x-1)^2 + 4^(-alpha))*(x-2))^(-1), x, 0, 5);
 
6538
          Principal Value
 
6539
                                 alpha
 
6540
                  alpha       9 4                 9
 
6541
                 4      log(------------- + -------------)
 
6542
                                alpha           alpha
 
6543
                            64 4      + 4   64 4      + 4
 
6544
          (%o2) (-----------------------------------------
 
6545
                                  alpha
 
6546
                               2 4      + 2
 
6547
 
 
6548
                   3 alpha                       3 alpha
 
6549
                   -------                       -------
 
6550
                      2            alpha/2          2          alpha/2
 
6551
                2 4        atan(4 4       )   2 4        atan(4       )   alpha
 
6552
              - --------------------------- - -------------------------)/2
 
6553
                          alpha                        alpha
 
6554
                       2 4      + 2                 2 4      + 2
 
6555
          (%i3) ev (%, alpha=5, numer);
 
6556
          (%o3)                    - 3.130120337415917
 
6557
 
 
6558
 
 
6559
 -- Função: quad_qawf (<f(x)>, <x>, <a>, <omega>, <trig>, <epsabs>,
 
6560
          <limit>, <maxp1>, <limlst>)
 
6561
 -- Função: quad_qawf (<f>, <x>, <a>, <omega>, <trig>, <epsabs>,
 
6562
          <limit>, <maxp1>, <limlst>)
 
6563
     Calcula uma transformação de cosseno de Fourier ou de um seno de
 
6564
     Fourier sobre um intervalo semi-finito.  usando a função QAWF do
 
6565
     pacote Quadpack.  A mesma aproxima como em `quad_qawo' quando
 
6566
     aplicada sobre intervalos finitos sucessivos, e aceleração de
 
6567
     convergência por meio d algorítimo de Epsilon (Wynn, 1956)
 
6568
     aplicado a séries de contribuições de integrais.
 
6569
 
 
6570
     `quad_qawf' calcula a integral
 
6571
 
 
6572
     integrate (f(x)*w(x), x, a, inf)
 
6573
 
 
6574
     A função peso w é selecionada por <trig>:
 
6575
 
 
6576
    `cos'
 
6577
          w(x) = cos (omega x)
 
6578
 
 
6579
    `sin'
 
6580
          w(x) = sin (omega x)
 
6581
 
 
6582
     O integrando pode ser especidficado como o nome de uma função
 
6583
     Maxima ou uma função Lisp ou um operador, uma expressão lambda do
 
6584
     Maxima, ou uma expressão geral do Maxima.
 
6585
 
 
6586
     Os argumentos opcionais são:
 
6587
 
 
6588
    <epsabs>
 
6589
          Erro absoluto de aproximação desejado.  Padrão é 1d-10.
 
6590
 
 
6591
    <limit>
 
6592
          Tamanho de array interno de trabalho.  (<limit> - <limlst>)/2
 
6593
          é o maximo número de subintervalos para usar.  O Padrão é 200.
 
6594
 
 
6595
    <maxp1>
 
6596
          O número máximo dos momentos de Chebyshev.  Deve ser maior
 
6597
          que 0.  O padrão é 100.
 
6598
 
 
6599
    <limlst>
 
6600
          Limite superior sobre número de ciclos.  Deve ser maior ou
 
6601
          igual a 3.  O padrão é 10.
 
6602
 
 
6603
     <epsabs> e <limit> são o erro relativo desejado e o número maximo
 
6604
     de subintervalos, respectivamente.  <epsrel> padrão para 1e-8 e
 
6605
     <limit> é 200.
 
6606
 
 
6607
     `quad_qawf' retorna uma lista de quatro elementos:
 
6608
 
 
6609
        * uma aproximação para a integral,
 
6610
 
 
6611
        * o erro absoluto estimado da aproximação,
 
6612
 
 
6613
        * o número de avaliações do integrando,
 
6614
 
 
6615
        * um código de erro.
 
6616
 
 
6617
     O código de erro (quarto elemento do valor de retorno) pode ter os
 
6618
     valores:
 
6619
 
 
6620
    `0'
 
6621
          nenhum problema foi encontrado;
 
6622
 
 
6623
    `1'
 
6624
          muitos subintervalos foram concluídos;
 
6625
 
 
6626
    `2'
 
6627
          erro excessivo é detectado;
 
6628
 
 
6629
    `3'
 
6630
          ocorreu um comportamento excessivamente ruim do integrando;
 
6631
 
 
6632
    `6'
 
6633
          se a entrada é invalida.
 
6634
 
 
6635
 
 
6636
     Exemplos:
 
6637
 
 
6638
          (%i1) quad_qawf (exp(-x^2), x, 0, 1, 'cos);
 
6639
          (%o1)   [.6901942235215714, 2.84846300257552E-11, 215, 0]
 
6640
          (%i2) integrate (exp(-x^2)*cos(x), x, 0, inf);
 
6641
                                    - 1/4
 
6642
                                  %e      sqrt(%pi)
 
6643
          (%o2)                   -----------------
 
6644
                                          2
 
6645
          (%i3) ev (%, numer);
 
6646
          (%o3)                   .6901942235215714
 
6647
 
 
6648
 
 
6649
 -- Função: quad_qawo (<f(x)>, <x>, <a>, <b>, <omega>, <trig>,
 
6650
          <epsabs>, <limite>, <maxp1>, <limlst>)
 
6651
 -- Função: quad_qawo (<f>, <x>, <a>, <b>, <omega>, <trig>, <epsabs>,
 
6652
          <limite>, <maxp1>, <limlst>)
 
6653
     Integração de cos(omega x) f(x) ou sin(omega x) f(x) sobre um
 
6654
     intervalo finito, onde omega é uma constante.  A componente de
 
6655
     avaliação da regra é baseada na técnica modificada de
 
6656
     Clenshaw-Curtis.  `quad_qawo' aplica subdivisão adaptativa com
 
6657
     extrapolação, similar a `quad_qags'.
 
6658
 
 
6659
     `quad_qawo' calcula a integral usando a rotina Quadpack QAWO:
 
6660
 
 
6661
     integrate (f(x)*w(x), x, a, b)
 
6662
 
 
6663
     A função peso w é selecionada por <trig>:
 
6664
 
 
6665
    `cos'
 
6666
          w(x) = cos (omega x)
 
6667
 
 
6668
    `sin'
 
6669
          w(x) = sin (omega x)
 
6670
 
 
6671
     O integrando pode ser especidficado como o nome de uma função
 
6672
     Maxima ou uma função Lisp ou um operador, uma expressão lambda do
 
6673
     Maxima, ou uma expressão geral do Maxima.
 
6674
 
 
6675
     Os argumentos opcionais são:
 
6676
 
 
6677
    <epsabs>
 
6678
          Erro absoluto desejado de aproximação.  O Padrão é 1d-10.
 
6679
 
 
6680
    <limite>
 
6681
          Tamanho do array interno de trabalho.  (<limite> -
 
6682
          <limlst>)/2 é o número máximo de subintervalos a serem
 
6683
          usados.  Default é 200.
 
6684
 
 
6685
    <maxp1>
 
6686
          Número máximo dos momentos de Chebyshev.  Deve ser maior que
 
6687
          0.  O padrão é 100.
 
6688
 
 
6689
    <limlst>
 
6690
          Limite superior sobre o número de ciclos.  Deve ser maior que
 
6691
          ou igual a 3.  O padrão é 10.
 
6692
 
 
6693
     <epsabs> e <limite> são o erro relativo desejado e o número máximo
 
6694
     de subintervalos, respectivamente.  <epsrel> o padrão é 1e-8 e
 
6695
     <limite> é 200.
 
6696
 
 
6697
     `quad_qawo' retorna uma lista de quatro elementos:
 
6698
 
 
6699
        * uma aproximação para a integral,
 
6700
 
 
6701
        * o erro absoluto estimado da aproximação,
 
6702
 
 
6703
        * o número de avaliações do integrando,
 
6704
 
 
6705
        * um código de erro.
 
6706
 
 
6707
     O código de erro (quarto elemento do valor de retorno) pode ter os
 
6708
     valores:
 
6709
 
 
6710
    `0'
 
6711
          nenhum problema foi encontrado;
 
6712
 
 
6713
    `1'
 
6714
          muitos subintervalos foram concluídos;
 
6715
 
 
6716
    `2'
 
6717
          erro excessivo é detectado;
 
6718
 
 
6719
    `3'
 
6720
          comportamento extremamente ruim do integrando;
 
6721
 
 
6722
    `6'
 
6723
          se a entrada é inválida.
 
6724
 
 
6725
 
 
6726
     Exemplos:
 
6727
 
 
6728
          (%i1) quad_qawo (x^(-1/2)*exp(-2^(-2)*x), x, 1d-8, 20*2^2, 1, cos);
 
6729
          (%o1)     [1.376043389877692, 4.72710759424899E-11, 765, 0]
 
6730
          (%i2) rectform (integrate (x^(-1/2)*exp(-2^(-alpha)*x) * cos(x), x, 0, inf));
 
6731
                             alpha/2 - 1/2            2 alpha
 
6732
                  sqrt(%pi) 2              sqrt(sqrt(2        + 1) + 1)
 
6733
          (%o2)   -----------------------------------------------------
 
6734
                                         2 alpha
 
6735
                                   sqrt(2        + 1)
 
6736
          (%i3) ev (%, alpha=2, numer);
 
6737
          (%o3)                     1.376043390090716
 
6738
 
 
6739
 
 
6740
 -- Função: quad_qaws (<f(x)>, <x>, <a>, <b>, <alpha>, <beta>, <wfun>,
 
6741
          <epsabs>, <limite>)
 
6742
 -- Função: quad_qaws (<f>, <x>, <a>, <b>, <alpha>, <beta>, <wfun>,
 
6743
          <epsabs>, <limite>)
 
6744
     Integração de w(x) f(x) sobre um intervalo finito, onde w(x) é uma
 
6745
     certa função algébrica ou logarítmica.  Uma estratégia de
 
6746
     subdivisão globalmente adaptativa é aplicada, com integração
 
6747
     modificada de Clenshaw-Curtis sobre os subintervalos que possuírem
 
6748
     os pontos finais dos intervalos de integração.
 
6749
 
 
6750
     `quad_qaws' calcula a integral usando a rotina Quadpack QAWS:
 
6751
 
 
6752
     integrate (f(x)*w(x), x, a, b)
 
6753
 
 
6754
     A função peso w é selecionada por <wfun>:
 
6755
 
 
6756
    `1'
 
6757
          w(x) = (x - a)^alpha (b - x)^beta
 
6758
 
 
6759
    `2'
 
6760
          w(x) = (x - a)^alpha (b - x)^beta log(x - a)
 
6761
 
 
6762
    `3'
 
6763
          w(x) = (x - a)^alpha (b - x)^beta log(b - x)
 
6764
 
 
6765
    `4'
 
6766
          w(x) = (x - a)^alpha (b - x)^beta log(x - a) log(b - x)
 
6767
 
 
6768
     O integrando pode ser especidficado como o nome de uma função
 
6769
     Maxima ou uma função Lisp ou um operador, uma expressão lambda do
 
6770
     Maxima, ou uma expressão geral do Maxima.
 
6771
 
 
6772
     O argumentos opcionais são:
 
6773
 
 
6774
    <epsabs>
 
6775
          Erro absoluto desejado de aproximação.  O padrão é 1d-10.
 
6776
 
 
6777
    <limite>
 
6778
          Tamanho do array interno de trabalho.  (<limite> -
 
6779
          <limlst>)/2 é o número máximo de subintervalos para usar.  O
 
6780
          padrão é 200.
 
6781
 
 
6782
     <epsabs> e <limit> são o erro relativo desejado e o número máximo
 
6783
     de subintervalos, respectivamente.  <epsrel> o padrão é 1e-8 e
 
6784
     <limite> é 200.
 
6785
 
 
6786
     `quad_qaws' retorna uma lista de quatro elementos:
 
6787
 
 
6788
        * uma aproximação para a integral,
 
6789
 
 
6790
        * o erro absoluto estimado da aproximação,
 
6791
 
 
6792
        * o número de avaliações do integrando,
 
6793
 
 
6794
        * um código de erro.
 
6795
 
 
6796
     O código de erro (quarto elemento do valor de retorno) pode ter os
 
6797
     valores:
 
6798
 
 
6799
    `0'
 
6800
          nenhum problema foi encontrado;
 
6801
 
 
6802
    `1'
 
6803
          muitos subintervalos foram concluídos;
 
6804
 
 
6805
    `2'
 
6806
          erro excessivo é detectado;
 
6807
 
 
6808
    `3'
 
6809
          ocorreu um comportamento excessivamente ruim do integrando;
 
6810
 
 
6811
    `6'
 
6812
          se a entrada é invalida.
 
6813
 
 
6814
 
 
6815
     Exemplos:
 
6816
 
 
6817
          (%i1) quad_qaws (1/(x+1+2^(-4)), x, -1, 1, -0.5, -0.5, 1);
 
6818
          (%o1)     [8.750097361672832, 1.24321522715422E-10, 170, 0]
 
6819
          (%i2) integrate ((1-x*x)^(-1/2)/(x+1+2^(-alpha)), x, -1, 1);
 
6820
                 alpha
 
6821
          Is  4 2      - 1  positive, negative, or zero?
 
6822
 
 
6823
          pos;
 
6824
                                    alpha         alpha
 
6825
                             2 %pi 2      sqrt(2 2      + 1)
 
6826
          (%o2)              -------------------------------
 
6827
                                         alpha
 
6828
                                      4 2      + 2
 
6829
          (%i3) ev (%, alpha=4, numer);
 
6830
          (%o3)                     8.750097361672829
 
6831
 
 
6832
 
 
6833
 
 
6834
File: maxima.info,  Node: Equações,  Next: Equações Diferenciais,  Prev: Integração,  Up: Top
 
6835
 
 
6836
21 Equações
 
6837
***********
 
6838
 
 
6839
* Menu:
 
6840
 
 
6841
* Definições para Equações::
 
6842
 
 
6843
 
 
6844
 
 
6845
Local Variables:
 
6846
coding: iso-8859-1
 
6847
End: