1 @c /Integration.texi/1.30/Mon Jan 8 04:17:39 2007/-ko/
3 * Introdução a Integração::
4 * Definições para Integração::
5 * Introdução a QUADPACK::
6 * Definições para QUADPACK::
9 @node Introdução a Integração, Definições para Integração, Integração, Integração
10 @section Introdução a Integração
12 Maxima tem muitas rotinas para realizar integração. A
13 função @code{integrate} faz uso de muitas dessas. Exite
14 também o pacote @code{antid}, que manuseia uma função
15 não especificada (e suas derivadas, certamente). Para usos numericos,
16 existe um conjunto de integradores adaptativos de QUADPACK, a saber
17 @code{quad_qag}, @code{quad_qags}, etc., os quais são descritos sob o
18 tópico @code{QUADPACK}. Funções hipergeométricas
19 estão sendo trabalhadas, veja @code{specint} para detalhes.
20 Geralmente falando, Maxima somente calcula integrais que sejam
21 integráveis em termos de "funções elementares"
22 (funções racionais, trigonometricas, logarítmicas,
23 exponenciais, radicais, etc.) e umas poucas extensões
24 (função de erro, dilogaritmo). Nã consegue calcular
25 integrais em termos de funções desconhecidas tais como
26 @code{g(x)} e @code{h(x)}.
28 @c end concepts Integration
29 @node Definições para Integração, Introdução a QUADPACK, Introdução a Integração, Integração
30 @section Definições para Integração
32 @deffn {Função} changevar (@var{expr}, @var{f(x,y)}, @var{y}, @var{x})
33 Faz a mudança de variável dada por @code{@var{f(x,y)} =
34 0} em todos os integrais que existam em @var{expr} com
35 integração em relação a @var{x}. A nova
38 @c HMM, THIS EXAMPLE YIELDS A CORRECT BUT SLIGHTLY STRANGE RESULT...
41 (%i2) 'integrate (%e**sqrt(a*y), y, 0, 4);
49 (%i3) changevar (%, y-z^2/a, z, y);
57 (%o3) - ----------------------------
61 Uma expressão contendo uma forma substantiva, tais como as
62 instâncias de @code{'integrate} acima, pode ser avaliada por @code{ev}
63 com o sinalizador @code{nouns}. Por exemplo, a expressão retornada
64 por @code{changevar} acima pode ser avaliada por @code{ev (%o3, nouns)}.
66 @code{changevar} pode também ser usada para alterações
67 nos índices de uma soma ou de um produto. No entanto, é
68 de salientar que quando seja feita uma alteração a uma
69 soma ou produto, essa mudança deverá ser apenas uma
70 deslocação do índice, nomeadamente,
71 @code{i = j+ ...}, e não uma função de grau superior.
75 (%i4) sum (a[i]*x^(i-2), i, 0, inf);
83 (%i5) changevar (%, i-2-n, n, i);
95 @c THIS ITEM IS A MESS, BUT DON'T BOTHER TO CLEAN IT UP:
96 @c THE GAUSS-KRONROD FUNCTIONS (QUADPACK) MAKE THIS OBSOLETE
97 @deffn {Função} dblint (@var{f}, @var{r}, @var{s}, @var{a}, @var{b})
98 Esta é uma rotina de integral duplo que foi escrita na linguagem de
99 alto nível do Maxima sendo logo traduzida e compilada para
100 linguagem de máquina. Use @code{load ("dblint")} para poder usar este
101 pacote. Esta função usa o método da regra de Simpson
102 em ambas as direções x e y para calcular
112 A função @var{f} deve ser uma função
113 traduzida ou compilada de duas variáveis, e @var{r} e @var{s} devem
114 cada uma ser uma função traduzida ou compilada de uma
115 variável, enquanto @var{a} e @var{b} devem ser números em ponto
116 flutuante. A rotina tem duas variáveis globais que determinam o
117 número de divisões dos intervalos x e y: @code{dblint_x} e
118 @code{dblint_y}, ambas as quais são inicialmente 10, e podem ser
119 alteradas independentemente para outros valores inteiros (existem
120 @code{2*dblint_x+1} pontos calculados na direção x , e
121 @code{2*dblint_y+1} na direção y). A rotina subdivide o
122 eixo X e então para cada valor de X primeiro calcula @code{@var{r}(x)}
123 e @code{@var{s}(x)}; então o eixo Y entre @code{@var{r}(x)} e
124 @code{@var{s}(x)} é subdividido e o integral ao longo do eixo Y é
125 executado usando a regra de Simpson; então o integral ao longo do eixo
126 X é concluído usando a regra de Simpson com os valores
127 da função sendo os integrais em Y. Esse procedimento
128 pode ser numericamente instável por várias razões, mas
129 razoávelmente rápido: evite usar este progrma sobre
130 funções altamente oscilatórias e
131 funções com singularidades (pólos ou pontos de
132 ramificação na região). Os integrais em Y dependem de
133 quanto fragmentados @code{@var{r}(x)} e @code{@var{s}(x)} sejam; assim,
134 se a distância @code{@var{s}(x) - @var{r}(x)} variar rapidamente com
135 X, nesse ponto podrão surgir erros substanciais provenientes de
136 truncação com saltos de diferentes tamanhos nos vários
137 integrais Y. Pode incrementar-se @code{dblint_x} e @code{dblint_y} numa
138 tentativa para melhorar a convergência da região, com um aumento no
139 tempo de computação. Os valores da
140 função não são guardados, portanto se a
141 função desperdiçr muito tempo, terá de
142 esperar pela re-computação cada vez que mudar qualquer
143 coisa (pedimos desculpa por esse facto). É necessário que as
144 funções @var{f}, @var{r}, e @var{s} sejam ainda
145 traduzidas ou compiladas previamente chamando @code{dblint}. Isso
146 resultará em ordens de magnitude de melhoramentos de velocidade sobre
147 o código interpretado em muitos casos!
149 @code{demo (dblint)} executa uma demonstração de @code{dblint} aplicado a um problema exemplo.
150 @c demo (dblint_1) FAILS WITH Could not find `fltdfnk.mc' -- DON'T BOTHER TO MENTION IT. !!!
151 @c @code{demo (dblint_1)} executa outra demonstração.
155 @deffn {Função} defint (@var{expr}, @var{x}, @var{a}, @var{b})
156 Tenta calcular um integral definido.
157 @code{defint} é chamada por @code{integrate} quando limites de integração são especificados,
158 i.e., quando @code{integrate} é chamado como @code{integrate (@var{expr}, @var{x}, @var{a}, @var{b})}.
159 Dessa forma do ponto de vista do utilizador, isso é suficiente para chamar @code{integrate}.
160 @c SHOULD WE BOTHER TO DOCUMENT defint ??? NO FUNCTIONALITY HERE THAT IS NOT ALREADY PRESENT IN integrate !!!
162 @code{defint} retorna uma expressão simbólica,
163 e executa um dos dois: ou calcula o integral ou a forma substantiva do integral.
164 Veja @code{quad_qag} e funções rellacionadas para aproximação numérica de integrais definidos.
168 @c NEEDS EXPANSION AND EXAMPLES
169 @deffn {Função} erf (@var{x})
170 Representa a função de erro, cuja derivada é:
171 @code{2*exp(-x^2)/sqrt(%pi)}.
175 @defvr {Variável de opção} erfflag
176 Valor por omissão: @code{true}
178 Quando @code{erfflag} é @code{false}, previne @code{risch} da introdução da
179 função @code{erf} na resposta se não houver nenhum no integrando para
185 @deffn {Função} ilt (@var{expr}, @var{t}, @var{s})
186 Calcula a transformação inversa de Laplace de @var{expr} em
187 relação a @var{t} e parâmetro @var{s}. @var{expr} deve ser uma razão de
188 polinómios cujo denominador tem somente factores lineares e quadráticos.
189 Usando a funções @code{laplace} e @code{ilt} juntas com as funções @code{solve} ou
190 @code{linsolve} o utilizador pode resolver uma diferencial simples ou
191 uma equação integral de convolução ou um conjunto delas.
194 (%i1) 'integrate (sinh(a*x)*f(t-x), x, 0, t) + b*f(t) = t**2;
198 (%o1) I f(t - x) sinh(a x) dx + b f(t) = t
202 (%i2) laplace (%, t, s);
203 a laplace(f(t), t, s) 2
204 (%o2) b laplace(f(t), t, s) + --------------------- = --
207 (%i3) linsolve ([%], ['laplace(f(t), t, s)]);
210 (%o3) [laplace(f(t), t, s) = --------------------]
213 (%i4) ilt (rhs (first (%)), s, t);
214 Is a b (a b - 1) positive, negative, or zero?
217 sqrt(a b (a b - 1)) t
218 2 cosh(---------------------) 2
220 (%o4) - ----------------------------- + -------
232 @deffn {Função} integrate (@var{expr}, @var{x})
233 @deffnx {Função} integrate (@var{expr}, @var{x}, @var{a}, @var{b})
234 Tenta símbolicamente calcular o integral de @var{expr} em relação a @var{x}.
235 @code{integrate (@var{expr}, @var{x})} é um integral indefinido,
236 enquanto @code{integrate (@var{expr}, @var{x}, @var{a}, @var{b})} é um integral definido,
237 com limites de integração @var{a} e @var{b}.
238 Os limites não poderam conter @var{x}, embora @code{integrate} não imponha essa restrição.
239 @var{a} não precisa ser menor que @var{b}.
240 Se @var{b} é igual a @var{a}, @code{integrate} retorna zero.
242 Veja @code{quad_qag} e funções relacionadas para aproximação numérica de integrais definidos.
243 Veja @code{residue} para computação de resíduos (integração complexa).
244 Veja @code{antid} para uma forma alternativa de calcular integrais indefinidos.
246 O integral (uma expressão livre de @code{integrate}) é calculado se
247 @code{integrate} for bem sucedido.
248 De outra forma o valor de retorno é
249 a forma substantiva do integral (o operador com apóstrofo @code{'integrate})
250 ou uma expressão contendo uma ou mais formas substantivas.
251 A forma substantiva de @code{integrate} é apresentada com um símbolo de integração.
253 Em algumas circunstâncias isso é útil para construir uma forma substantiva manualmente,
254 colocando em @code{integrate} um apóstrofo, e.g., @code{'integrate (@var{expr}, @var{x})}.
255 Por exemplo, o integral pode depender de alguns parâmetos que não estão ainda calculados.
256 A forma substantiva pode ser aplicada a seus argumentos por @code{ev (@var{i}, nouns)}
257 onde @var{i} é a forma substantiva de interesse.
259 @c BEGIN EXPOSITION ON HEURISTICS
260 @code{integrate} calcula integrais definidos separadamente dos
261 indefinidos, e utiliza uma gama de heurísticas para
262 simplificar cada caso. Casos especiais de integrais definidos incluem
263 limites de integração iguais a zero ou infinito
264 (@code{inf} ou @code{minf}), funções trigonométricas
265 com limites de integração iguais a zero e @code{%pi} ou
266 @code{2 %pi}, funções racionais, integrais relacionados
267 com as definições das funções
268 @code{beta} e @code{psi}, e alguns integrais logarítmicos e
269 trigonométricos. O processamento de funções racionais
270 pode incluir cálculo de resíduos. Se um caso especial
271 aplicável não for encontrado, será feita uma tentativa para calcular o
272 integral indefinido e avaliá-lo nos limites de
273 integração. Isso pode incluir o cálculo de um limite
274 nos casos em que um dos limites do integral for para infinito ou menos
275 infinito; veja também @code{ldefint}.
277 Casos especiais de integrais indefinidos incluem funções
278 trigonométricas, exponenciais e funções logarítmicas,
279 e funções racionais. @code{integrate} pode também
280 fazer uso de uma pequena tabela de integais elementares.
282 @code{integrate} pode realizar uma mudança de variável
283 se o integrando tiver a forma @code{f(g(x)) * diff(g(x), x)}.
284 @code{integrate} tenta achar uma subexpressão @code{g(x)} de forma que
285 a derivada de @code{g(x)} divida o integrando. Essa busca pode fazer
286 uso de derivadas definidas pela função @code{gradef}.
287 Veja também @code{changevar} e @code{antid}.
289 Se nenhum dos procedimentos heurísticos conseguir calcular
290 o integral indefinido, o algoritmo de Risch é executado. O sinalizador
291 @code{risch} pode ser utilizado como um parâmetro para @code{ev}, ou
292 na linha de comando, nomeadamente, @code{ev (integrate (@var{expr},
293 @var{x}), risch)} ou @code{integrate (@var{expr}, @var{x}), risch}. Se
294 @code{risch} estiver presente, @code{integrate} chamará a
295 função @code{risch} sem tentar heurísticas
296 primeiro. Veja também @code{risch}.
297 @c END EXPOSITION ON HEURISTICS
299 @code{integrate} trabalha somente com relações funcionais representadas explicitamente com a notação @code{f(x)}.
300 @code{integrate} não respeita dependências implicitas estabelecidas pela função @code{depends}.
301 @code{integrate} pode necessitar conhecer alguma propriedade de um parâmetro no integrando.
302 @code{integrate} irá primeiro consultar a base de dados do @code{assume},
303 e , se a variável de interesse não está lá,
304 @code{integrate} perguntará ao utilizador.
305 Dependendo da pergunta,
306 respostas adequadas são @code{yes;} ou @code{no;},
307 ou @code{pos;}, @code{zero;}, ou @code{neg;}.
309 @code{integrate} não é, por padrão, declarada ser linear. Veja @code{declare} e @code{linear}.
311 @code{integrate} tenta integração por partes somente em uns poucos casos especiais.
317 Integrais definidos e indefinidos elementares.
320 (%i1) integrate (sin(x)^3, x);
323 (%o1) ------- - cos(x)
325 (%i2) integrate (x/ sqrt (b^2 - x^2), x);
328 (%i3) integrate (cos(x)^2 * exp(x), x, 0, %pi);
333 (%i4) integrate (x^2 * exp(-x^2), x, minf, inf);
340 Uso de @code{assume} e dúvida interativa.
343 (%i1) assume (a > 1)$
344 (%i2) integrate (x**a/(x+1)**(5/2), x, 0, inf);
346 Is ------- an integer?
350 Is 2 a - 3 positive, negative, or zero?
354 (%o2) beta(a + 1, - - a)
359 Mudança de variável. Existem duas mudanças de variável nesse exemplo:
360 uma usando a derivada estabelecida por @code{gradef},
361 e uma usando a derivação @code{diff(r(x))} de uma função não especificada @code{r(x)}.
364 (%i3) gradef (q(x), sin(x**2));
366 (%i4) diff (log (q (r (x))), x);
368 (-- (r(x))) sin(r (x))
370 (%o4) ----------------------
372 (%i5) integrate (%, x);
377 O resultado contém a forma substantiva @code{'integrate}. Neste
378 exemplo, Maxima pode extrair um factor do denominador de uma
379 função racional, mas não pode factorizar o restante ou
380 de outra forma achar o seu integral. @code{grind} mostra a forma
381 substantiva @code{'integrate} no resultado. Veja também
382 @code{integrate_use_rootsof} para mais informaçes sobre
383 integrais de funções racionais.
386 (%i1) expand ((x-4) * (x^3+2*x+1));
388 (%o1) x - 4 x + 2 x - 7 x - 4
389 (%i2) integrate (1/%, x);
394 log(x - 4) / x + 2 x + 1
395 (%o2) ---------- - ------------------
398 log(x-4)/73-('integrate((x^2+4*x+18)/(x^3+2*x+1),x))/73$
402 Definindo uma função em termos de um integral. O corpo
403 de uma função não é avaliado quando a
404 função é definida. Dessa forma o corpo de @code{f_1}
405 nesse exemplo contém a forma substantiva de @code{integrate}. O
406 operador de doi apóstrofos seguidos @code{'@w{}'} faz com que o
407 integral seja avaliado, e o resultado se transforme-se no corpo de
411 (%i1) f_1 (a) := integrate (x^3, x, 1, a);
413 (%o1) f_1(a) := integrate(x , x, 1, a)
414 (%i2) ev (f_1 (7), nouns);
416 (%i3) /* Note parentheses around integrate(...) here */
417 f_2 (a) := ''(integrate (x^3, x, 1, a));
420 (%o3) f_2(a) := -- - -
429 @defvr {Variável de sistema} integration_constant_counter
432 @c WHEN DOES integrationconstant1 SHOW UP IN THE OUTPUT OF integrate ???
433 @c integrate (a, x) YIELDS "a x", NOT "a x + integrationconstant1" !!!
434 @code{integration_constant_counter} é um contador que é actualizado
435 a cada vez que uma constante de integração (nomeada pelo
436 Maxima, por exemplo, @code{integrationconstant1}) é introduzida numa
437 expressão obtida após a integração indefinida de uma
442 @defvr {Variável de opção} integrate_use_rootsof
443 Valor por omissão: @code{false}
445 Quando @code{integrate_use_rootsof} é @code{true} e o denominador de
446 uma função racional não pode ser factorizado, @code{integrate} retorna o integral
447 em uma forma que é uma soma sobre as raízes (não conhecidas ainda) do denominador.
449 Por exemplo, com @code{integrate_use_rootsof} escolhido para
450 @code{false}, @code{integrate} retorna um integral não resolvido de
451 uma função racional na forma substantiva:
454 (%i1) integrate_use_rootsof: false$
455 (%i2) integrate (1/(1+x+x^5), x);
458 I ------------ dx 2 x + 1
459 ] 3 2 2 5 atan(-------)
460 / x - x + 1 log(x + x + 1) sqrt(3)
461 (%o2) ----------------- - --------------- + ---------------
465 Agora vamos escolher o sinalizador para ser true e a parte não
466 resolvida do integral será escrito como uma soma sobre as
467 raízes do denominador da função racional:
470 (%i3) integrate_use_rootsof: true$
471 (%i4) integrate (1/(1+x+x^5), x);
473 \ (%r4 - 4 %r4 + 5) log(x - %r4)
474 > -------------------------------
478 %r4 in rootsof(%r4 - %r4 + 1, %r4)
479 (%o4) ----------------------------------------------------------
484 log(x + x + 1) sqrt(3)
485 - --------------- + ---------------
489 Alternativamente o utilizador pode calcular as raízes do denominador separadamente,
490 e então expressar o integrando em termos dessas raízes,
491 e.g., @code{1/((x - a)*(x - b)*(x - c))} ou @code{1/((x^2 - (a+b)*x + a*b)*(x - c))}
492 se o denominador for um polinómio cúbico.
493 Algumas vezes isso ajudará Maxima a obter resultados mais úteis.
498 @deffn {Função} ldefint (@var{expr}, @var{x}, @var{a}, @var{b})
499 Tenta calcular o integral definido de @var{expr} pelo uso de
500 @code{limit} para avaliar o integral indefinido @var{expr} em relação a @var{x}
501 no limite superior @var{b} e no limite inferior @var{a}.
502 Se isso falha para calcular o integral definido,
503 @code{ldefint} retorna uma expressão contendo limites como formas substantivas.
505 @code{ldefint} não é chamada por @code{integrate},
506 então executando @code{ldefint (@var{expr}, @var{x}, @var{a}, @var{b})} pode retornar um resultado diferente de
507 @code{integrate (@var{expr}, @var{x}, @var{a}, @var{b})}.
508 @code{ldefint} sempre usa o mesmo método para avaliar o integral definido,
509 enquanto @code{integrate} pode utilizar várias heurísticas e pode reconhecer alguns casos especiais.
513 @c UMM, IS THERE SOME TEXT MISSING HERE ???
514 @c WHAT IS THIS ABOUT EXACTLY ??
515 @deffn {Função} potential (@var{givengradient})
516 O cálculo faz uso da variável global @code{potentialzeroloc[0]}
517 que deve ser @code{nonlist} ou da forma
520 [indeterminatej=expressãoj, indeterminatek=expressãok, ...]
524 formador sendo equivalente para a expressão nonlist para todos os lados
525 direitos-manuseados mais tarde. Os lados direitos indicados são usados como o
526 limite inferior de integração. O sucesso das integrações pode
527 depender de seus valores e de sua ordem. @code{potentialzeroloc} é inicialmente escolhido
532 @deffn {Função} residue (@var{expr}, @var{z}, @var{z_0})
533 Calcula o resíduo no plano complexo da
534 expressão @var{expr} quando a variável @var{z} assumes o valor @var{z_0}. O
535 resíduo é o coeficiente de @code{(@var{z} - @var{z_0})^(-1)} nas séries de Laurent
539 (%i1) residue (s/(s**2+a**2), s, a*%i);
543 (%i2) residue (sin(a*x)/x**4, x, 0);
552 @deffn {Função} risch (@var{expr}, @var{x})
553 Integra @var{expr} em relação a @var{x} usando um
554 caso transcendental do algoritmo de Risch. (O caso algébrico do
555 algoritmo de Risch foi implementado.) Isso actualmente
556 manuseia os casos de exponenciais aninhadas e logaritmos que a parte
557 principal de @code{integrate} não pode fazer. @code{integrate} irá aplicar automaticamente @code{risch}
558 se dados esses casos.
560 @code{erfflag}, se @code{false}, previne @code{risch} da introdução da função
561 @code{erf} na resposta se não for achado nenhum no integrando para
565 (%i1) risch (x^2*erf(x), x);
568 %pi x erf(x) + (sqrt(%pi) x + sqrt(%pi)) %e
569 (%o1) -------------------------------------------------
571 (%i2) diff(%, x), ratsimp;
578 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
579 @deffn {Função} tldefint (@var{expr}, @var{x}, @var{a}, @var{b})
580 Equivalente a @code{ldefint} com @code{tlimswitch} escolhido para @code{true}.
586 @node Introdução a QUADPACK, Definições para QUADPACK, Definições para Integração, Integração
587 @section Introdução a QUADPACK
590 @c FOLLOWING TEXT ADAPTED WITH HEAVY MODIFICATION FROM http://www.netlib.org/slatec/src/qpdoc.f
592 QUADPACK é uma colecção de funções para
593 aálculo numérico de integrais definidos unidimensionais. O pacote
594 QUADPACK resultou da junção de um projeto de R. Piessens
595 @footnote{Applied Mathematics and Programming Division, K.U. Leuven},
596 E. de Doncker @footnote{Applied Mathematics and Programming Division,
597 K.U. Leuven}, C. Ueberhuber @footnote{Institut fur Mathematik,
598 T.U. Wien}, e D. Kahaner @footnote{National Bureau of Standards,
599 Washington, D.C., U.S.A}.
601 A biblioteca QUADPACK inclída no Maxima é uma
602 tradução automática (feita através do programa
603 @code{f2cl}) do código fonte em de QUADPACK como aparece na SLATEC
604 Common Mathematical Library, Versão 4.1
605 @footnote{http://www.netlib.org/slatec}. A biblioteca Fortran SLATEC
606 é datada de Julho de 1993, mas as funções QUADPACK
607 foram escritas alguns anos antes. Existe outra versão de QUADPACK em
608 Netlib @footnote{http://www.netlib.org/quadpack}; não está claro no
609 que aquela versão difere da versão existente em SLATEC.
611 As funções QUADPACK incluídas no Maxima são toda automáticas,
612 no sentido de que essas funções tentam calcular um resultado para uma precisão específica,
613 requerendo um número não especificado de avaliações de função.
614 A tradução do Lisp do Maxima da iblioteca QUADPACK também inclui algumas funç@~es não automáticas,
615 mas elas não são expostas a nível de Maxima.
617 Informação adicionalsobre a bilioteca QUADPACK pode ser encontrada no livro do QUADPACK
618 @footnote{R. Piessens, E. de Doncker-Kapenga, C.W. Uberhuber, e D.K. Kahaner.
619 @i{QUADPACK: A Subroutine Package for Automatic Integration.}
620 Berlin: Springer-Verlag, 1983, ISBN 0387125531.}.
626 Integração de uma função genérica sobre um intervalo finito.
627 @code{quad_qag} implementa um integrador adaptativo globalmente simples usando a estratégia de Aind (Piessens, 1973).
628 O chamador pode escolher entre 6 pares de formulas da quadratura de
629 Gauss-Kronrod para a componente de avaliação da regra.
630 As regras de alto grau são adequadas para integrandos fortemente oscilantes.
633 Integração de uma função genérica sob um intervalo finito.
634 @code{quad_qags} implementa subdivisão de intervalos globalmente adaptativos com extrapolação
635 (de Doncker, 1978) por meio do algoritmo de Epsilon (Wynn, 1956).
638 Integração de uma função genérica sobre um intervalo finito ou semi-finito.
639 O intervalo é mapeado sobre um intervalo finito e
640 então a mesma estratégia de @code{quad_qags} é aplicada.
643 Integração de @math{cos(omega x) f(x)} ou @math{sin(omega x) f(x)} sobre um intervalo finito,
644 onde @math{omega} é uma constante.
645 A componente de avaliação da regra é baseada na técnica modificada de Clenshaw-Curtis.
646 @code{quad_qawo} aplica subdivisão adaptativa com extrapolação, similar a @code{quad_qags}.
649 Calcula uma transformação de co-seno de Fourier ou de um seno de Fourier sobre um intervalo semi-finito.
650 O mesmo aproxima como @code{quad_qawo} aplicado sobre intervalos finitos sucessivos,
651 e aceleração de convergência por meio d algorítimo de Epsilon (Wynn, 1956)
652 aplicado a séries de contribuições de integrais.
655 Integraçào de @math{w(x) f(x)} sobre um intervalo finito @math{[a, b]},
656 onde @math{w} é uma função da forma @math{(x - a)^alpha (b - x)^beta v(x)}
657 e @math{v(x)} é 1 ou @math{log(x - a)} ou @math{log(b - x)} ou @math{log(x - a) log(b - x)},
658 e @math{alpha > -1} e @math{beta > -1}.
659 Auma estratégia de subdivisão adaptativa é aplicada,
660 com integração modificada de Clenshaw-Curtis sobre os subintervalos que possuem @math{a} ou @math{b}.
663 Calcula o valor principal de Cauchy de @math{f(x)/(x - c)} sobre um intervalo finito @math{(a, b)}
664 e um @math{c} especificado.
665 A estratégia é globalmente adaptativa, e a integração
666 modificada de Clenshaw-Curtis é usada sobre subamplitudes
667 que possuírem o ponto @math{x = c}.
670 @node Definições para QUADPACK, , Introdução a QUADPACK, Integração
671 @section Definições para QUADPACK
673 @c THERE ARE OPTIONAL ARGUMENTS WHICH MAKES LISTING THE VARIANTS A LITTLE TEDIOUS
674 @c NEED A MORE CONVENIENT (AND NONAMBIGUOUS) NOTATION FOR OPTIONAL ARGUMENTS
675 @deffn {Função} quad_qag (@var{f(x)}, @var{x}, @var{a}, @var{b}, @var{chave}, @var{epsrel}, @var{limite})
676 @deffnx {Função} quad_qag (@var{f}, @var{x}, @var{a}, @var{b}, @var{chave}, @var{epsrel}, @var{limite})
678 Integração de uma função genérica sobre um intervalo finito.
679 @code{quad_qag} implementa um integrador adaptativo globalmente simples usando a estratégia de Aind (Piessens, 1973).
680 O chamador pode escolher entre 6 pares de fórmulas da quadratura de
681 Gauss-Kronrod para a componente de avaliação da regra.
682 As regras de alto nível são adequadas para integrandos fortemente oscilatórios.
684 @code{quad_qag} calcula o integral
687 @math{integrate (f(x), x, a, b)}
690 @math{integrate (f(x), x, a, b)}
693 $$\int_a^b {f(x) dx}$$
696 A função a ser integrada é @var{f(x)}, com variável
697 dependente @var{x}, e a função é para ser integrada entre os
698 limites @var{a} e @var{b}. @var{chave} é o integrador a ser usado
699 e pode ser um inteiro entre 1 e 6, inclusive. O valor de
700 @var{chave} selecciona a ordem da regra de integração de Gauss-Kronrod.
701 Regra de alta ordem são adequadas para integrandos fortemente oscilatórios.
703 O integrando pode ser especidficado como o nome de uma função Maxima ou uma função Lisp ou um operador,
704 uma expressão lambda do Maxima, ou uma expressão geral do Maxima.
706 A integração numérica é concluída adaptativamente pela subdivisão a
707 região de integração até que a precisão desejada for
710 Os argumentos opcionais @var{epsrel} e @var{limite} são o erro relativo
711 desejado e o número máximo de subintervalos respectivamente.
712 @var{epsrel} padrão em 1e-8 e @var{limite} é 200.
714 @code{quad_qag} retorna uma lista de quatro elementos:
718 uma aproximação para o integral,
720 o erro absoluto estimado da aproximação,
722 o número de avaliações do integrando,
727 O código de erro (quarto elemento do valor de retorno) pode ter os valores:
731 se nenhum problema foi encontrado;
733 se foram utilizados muitos subintervalos;
735 se for detectato um erro de arredondamento excessivo;
737 se o integrando se comportar muito mal;
739 se a entrada não for válida.
743 @c NEED CROSS REFS HERE -- EITHER CROSS REF A QUADPACK OVERVIEW, OR CROSS REF EACH OF THE quad_* FUNCTIONS
748 (%i1) quad_qag (x^(1/2)*log(1/x), x, 0, 1, 3);
749 (%o1) [.4444444444492108, 3.1700968502883E-9, 961, 0]
750 (%i2) integrate (x^(1/2)*log(1/x), x, 0, 1);
757 @c THERE ARE OPTIONAL ARGUMENTS WHICH MAKES LISTING THE VARIANTS A LITTLE TEDIOUS
758 @c NEED A MORE CONVENIENT (AND NONAMBIGUOUS) NOTATION FOR OPTIONAL ARGUMENTS
759 @deffn {Função} quad_qags (@var{f(x)}, @var{x}, @var{a}, @var{b}, @var{epsrel}, @var{limite})
760 @deffnx {Função} quad_qags (@var{f}, @var{x}, @var{a}, @var{b}, @var{epsrel}, @var{limite})
762 Integração de uma função geral sobre um intervalo finito.
763 @code{quad_qags} implementa subdivisão de intervalo globalmente adaptativa com extrapolação
764 (de Doncker, 1978) através do algoritmo de (Wynn, 1956).
766 @code{quad_qags} calcula o integral
769 @math{integrate (f(x), x, a, b)}
772 @math{integrate (f(x), x, a, b)}
775 $$\int_a^b {f(x) dx}$$
778 A função a ser integrada é @var{f(x)}, com
779 variável dependente @var{x}, e a função é para ser integrada
780 entre os limites @var{a} e @var{b}.
782 O integrando pode ser especidficado como o nome de uma função Maxima ou uma função Lisp ou um operador,
783 uma expressão lambda do Maxima, ou uma expressão geral do Maxima.
785 Os argumentos opcionais @var{epsrel} e @var{limite} são o erro relativo
786 desejado e o número máximo de subintervalos, respectivamente.
787 @var{epsrel} padrão em 1e-8 e @var{limite} é 200.
789 @code{quad_qags} retorna uma lista de quatro elementos:
793 uma aproximação para o integral,
795 o erro absoluto estimado da aproximação,
797 o número de avaliações do integrando,
802 O código de erro (quarto elemento do valor de retorno) pode ter os valores:
806 nenhum problema foi encontrado;
808 foram utilizados muitos subintervalos;
810 foi detectato um erro de arredondamento excessivo;
812 o integrando comporta-se muito mal;
814 não houve convergência
816 o integral provavelmente é divergente, o converge lentamente
818 a entrada não foi válida.
821 @c NEED CROSS REFS HERE -- EITHER CROSS REF A QUADPACK OVERVIEW, OR CROSS REF EACH OF THE quad_* FUNCTIONS
826 (%i1) quad_qags (x^(1/2)*log(1/x), x, 0 ,1);
827 (%o1) [.4444444444444448, 1.11022302462516E-15, 315, 0]
830 Note que @code{quad_qags} é mais preciso e eficiente que @code{quad_qag} para esse integrando.
834 @c THERE ARE OPTIONAL ARGUMENTS WHICH MAKES LISTING THE VARIANTS A LITTLE TEDIOUS
835 @c NEED A MORE CONVENIENT (AND NONAMBIGUOUS) NOTATION FOR OPTIONAL ARGUMENTS
836 @deffn {Função} quad_qagi (@var{f(x)}, @var{x}, @var{a}, @var{inftype}, @var{epsrel}, @var{limite})
837 @deffnx {Função} quad_qagi (@var{f}, @var{x}, @var{a}, @var{inftype}, @var{epsrel}, @var{limite})
839 Integração de uma função genérica sobre um intervalo finito ou semi-finito.
840 O intervalo é mapeado sobre um intervalo finito e
841 então a mesma estratégia que em @code{quad_qags} é aplicada.
843 @code{quad_qagi} avalia um dos seguintes integrais
846 @math{integrate (f(x), x, minf, inf)}
849 @math{integrate (f(x), x, minf, inf)}
852 $$\int_a^\infty {f(x) dx}$$
856 @math{integrate (f(x), x, minf, a)}
859 @math{integrate (f(x), x, minf, a)}
862 $$\int_\infty^a {f(x) dx}$$
866 @math{integrate (f(x), x, a, minf, inf)}
869 @math{integrate (f(x), x, a, minf, inf)}
872 $$\int_{-\infty}^\infty {f(x) dx}$$
875 usando a rotina Quadpack QAGI. A função a ser integrada é
876 @var{f(x)}, com variável dependente @var{x}, e a função é para
877 ser integrada sobre um intervalo infinito.
879 O integrando pode ser especidficado como o nome de uma função Maxima ou uma função Lisp ou um operador,
880 uma expressão lambda do Maxima, ou uma expressão geral do Maxima.
882 O parâmetro @var{inftype} determina o intervalo de integração como segue:
886 O intervalo vai de @var{a} ao infinito positivo.
888 O intervalo vai do infinito negativo até @var{a}.
890 O intervalo corresponde a toda reta real.
893 Os argumentos opcionais @var{epsrel} e @var{limite} são o erro relativo
894 desejado e o número maximo de subintervalos, respectivamente.
895 @var{epsrel} padrão para 1e-8 e @var{limite} é 200.
897 @code{quad_qagi} retorna uma lista de quatro elementos:
901 uma aproximação para o integral,
903 o erro absoluto estimado da aproximação,
905 o número de avaliações do integrando,
910 O código de erro (quarto elemento do valor de retorno) pode ter os valores:
914 nenhum problema foi encontrado;
916 foram utilizados muitos subintervalos;
918 foi detectato um erro de arredondamento excessivo;
920 o integrando comporta-se muito mal;
922 não houve convergência
924 o integral provavelmente é divergente, o converge lentamente
926 a entrada não foi válida.
930 @c NEED CROSS REFS HERE -- EITHER CROSS REF A QUADPACK OVERVIEW, OR CROSS REF EACH OF THE quad_* FUNCTIONS
935 (%i1) quad_qagi (x^2*exp(-4*x), x, 0, inf);
936 (%o1) [0.03125, 2.95916102995002E-11, 105, 0]
937 (%i2) integrate (x^2*exp(-4*x), x, 0, inf);
945 @c THERE ARE OPTIONAL ARGUMENTS WHICH MAKES LISTING THE VARIANTS A LITTLE TEDIOUS
946 @c NEED A MORE CONVENIENT (AND NONAMBIGUOUS) NOTATION FOR OPTIONAL ARGUMENTS
947 @deffn {Função} quad_qawc (@var{f(x)}, @var{x}, @var{c}, @var{a}, @var{b}, @var{epsrel}, @var{limite})
948 @deffnx {Função} quad_qawc (@var{f}, @var{x}, @var{c}, @var{a}, @var{b}, @var{epsrel}, @var{limite})
950 Calcula o valor principal de Cauchy de @math{f(x)/(x - c)} over a finite interval.
951 A estratégia é globalmente adaptativa, e a integração de
952 Clenshaw-Curtis modificada é usada sobre as subamplitudes
953 que possuírem o ponto @math{x = c}.
955 @code{quad_qawc} calcula o valor principal de Cauchy de
958 @math{integrate (f(x)/(x - c), x, a, b)}
961 @math{integrate (f(x)/(x - c), x, a, b)}
964 $$\int_{a}^{b}{{{f\left(x\right)}\over{x-c}}\>dx}$$
967 usando a rotina Quadpack QAWC. A função a ser integrada é
968 @code{@var{f(x)}/(@var{x} - @var{c})}, com variável dependente @var{x}, e a função
969 é para ser integrada sobre o intervalo que vai de @var{a} até @var{b}.
971 O integrando pode ser especidficado como o nome de uma função Maxima ou uma função Lisp ou um operador,
972 uma expressão lambda do Maxima, ou uma expressão geral do Maxima.
974 Os argumentos opcionais @var{epsrel} e @var{limite} são o erro relativo
975 desejado e o máximo número de subintervalos, respectivamente.
976 @var{epsrel} padrão para 1e-8 e @var{limite} é 200.
978 @code{quad_qawc} retorna uma lista de quatro elementos:
982 uma aproximação para o integral,
984 o erro absoluto estimado da aproximação,
986 o número de avaliações do integrando,
991 O código de erro (quarto elemento do valoor de retorno) pode ter os valores:
995 nenhum problema foi encontrado;
997 foram utilizados muitos subintervalos;
999 foi detectato um erro de arredondamento excessivo;
1001 o integrando comporta-se muito mal;
1003 a entrada não foi válida.
1010 (%i1) quad_qawc (2^(-5)*((x-1)^2+4^(-5))^(-1), x, 2, 0, 5);
1011 (%o1) [- 3.130120337415925, 1.306830140249558E-8, 495, 0]
1012 (%i2) integrate (2^(-alpha)*(((x-1)^2 + 4^(-alpha))*(x-2))^(-1), x, 0, 5);
1016 4 log(------------- + -------------)
1019 (%o2) (-----------------------------------------
1026 2 4 atan(4 4 ) 2 4 atan(4 ) alpha
1027 - --------------------------- - -------------------------)/2
1030 (%i3) ev (%, alpha=5, numer);
1031 (%o3) - 3.130120337415917
1036 @c THERE ARE OPTIONAL ARGUMENTS WHICH MAKES LISTING THE VARIANTS A LITTLE TEDIOUS
1037 @c NEED A MORE CONVENIENT (AND NONAMBIGUOUS) NOTATION FOR OPTIONAL ARGUMENTS
1038 @deffn {Função} quad_qawf (@var{f(x)}, @var{x}, @var{a}, @var{omega}, @var{trig}, @var{epsabs}, @var{limit}, @var{maxp1}, @var{limlst})
1039 @deffnx {Função} quad_qawf (@var{f}, @var{x}, @var{a}, @var{omega}, @var{trig}, @var{epsabs}, @var{limit}, @var{maxp1}, @var{limlst})
1041 Calcula uma transformação de co-seno de Fourier ou de um seno de Fourier sobre um intervalo semi-finito.
1042 usando a função QAWF do pacote Quadpack.
1043 A mesma aproxima como em @code{quad_qawo} quando aplicada sobre intervalos finitos sucessivos,
1044 e aceleração de convergência por meio d algorítimo de Epsilon (Wynn, 1956)
1045 aplicado a séries de contribuições de integrais.
1047 @code{quad_qawf} calcula o integral
1050 @math{integrate (f(x)*w(x), x, a, inf)}
1053 @math{integrate (f(x)*w(x), x, a, inf)}
1056 $$\int_a^\infty f(x) w(x) dx$$
1059 A função peso @math{w} é seleccionada por @var{trig}:
1063 @math{w(x) = cos (omega x)}
1065 @math{w(x) = sin (omega x)}
1068 O integrando pode ser especidficado como o nome de uma função Maxima ou uma função Lisp ou um operador,
1069 uma expressão lambda do Maxima, ou uma expressão geral do Maxima.
1071 Os argumentos opcionais são:
1075 Erro absoluto de aproximação desejado. Padrão é 1d-10.
1077 Tamanho de array interno de trabalho. (@var{limit} - @var{limlst})/2 é o
1078 maximo número de subintervalos para usar. O Padrão é 200.
1080 O número máximo dos momentos de Chebyshev. Deve ser maior que 0. O padrão
1083 Limite superior sobre número de ciclos. Deve ser maior ou igual a
1087 @c MERGE THESE LINES INTO PRECEDING TABLE
1088 @var{epsabs} e @var{limit} são o erro relativo
1089 desejado e o número maximo de subintervalos, respectivamente.
1090 @var{epsrel} padrão para 1e-8 e @var{limit} é 200.
1092 @code{quad_qawf} retorna uma lista de quatro elementos:
1096 uma aproximação para o integral,
1098 o erro absoluto estimado da aproximação,
1100 o número de avaliações do integrando,
1105 O código de erro (quarto elemento do valor de retorno) pode ter os valores:
1109 nenhum problema foi encontrado;
1111 foram utilizados muitos subintervalos;
1113 foi detectato um erro de arredondamento excessivo;
1115 o integrando comporta-se muito mal;
1117 a entrada não foi válida.
1124 (%i1) quad_qawf (exp(-x^2), x, 0, 1, 'cos);
1125 (%o1) [.6901942235215714, 2.84846300257552E-11, 215, 0]
1126 (%i2) integrate (exp(-x^2)*cos(x), x, 0, inf);
1129 (%o2) -----------------
1131 (%i3) ev (%, numer);
1132 (%o3) .6901942235215714
1137 @c THERE ARE OPTIONAL ARGUMENTS WHICH MAKES LISTING THE VARIANTS A LITTLE TEDIOUS
1138 @c NEED A MORE CONVENIENT (AND NONAMBIGUOUS) NOTATION FOR OPTIONAL ARGUMENTS
1139 @deffn {Função} quad_qawo (@var{f(x)}, @var{x}, @var{a}, @var{b}, @var{omega}, @var{trig}, @var{epsabs}, @var{limite}, @var{maxp1}, @var{limlst})
1140 @deffnx {Função} quad_qawo (@var{f}, @var{x}, @var{a}, @var{b}, @var{omega}, @var{trig}, @var{epsabs}, @var{limite}, @var{maxp1}, @var{limlst})
1142 Integração de @math{cos(omega x) f(x)} ou @math{sin(omega x) f(x)} sobre um intervalo finito,
1143 onde @math{omega} é uma constante.
1144 A componente de avaliação da regra é baseada na técnica modificada de Clenshaw-Curtis.
1145 @code{quad_qawo} aplica subdivisão adaptativa com extrapolação, similar a @code{quad_qags}.
1147 @code{quad_qawo} calcula o integral usando a rotina
1151 @math{integrate (f(x)*w(x), x, a, b)}
1154 @math{integrate (f(x)*w(x), x, a, b)}
1157 $$\int_a^b f(x) w(x) dx$$
1161 A função peso @math{w} é seleccionada por @var{trig}:
1165 @math{w(x) = cos (omega x)}
1167 @math{w(x) = sin (omega x)}
1170 O integrando pode ser especidficado como o nome de uma função Maxima ou uma função Lisp ou um operador,
1171 uma expressão lambda do Maxima, ou uma expressão geral do Maxima.
1173 Os argumentos opcionais são:
1177 Erro absoluto desejado de aproximação. O Padrão é 1d-10.
1179 Tamanho do array interno de trabalho. (@var{limite} - @var{limlst})/2 é o
1180 número máximo de subintervalos a serem usados. Default é 200.
1182 Número máximo dos momentos de Chebyshev. Deve ser maior que 0. O padrão
1185 Limite superior sobre o número de ciclos. Deve ser maior que ou igual a
1189 @c MERGE THESE LINES INTO PRECEDING TABLE
1190 @var{epsabs} e @var{limite} são o erro relativo
1191 desejado e o número máximo de subintervalos, respectivamente.
1192 @var{epsrel} o padrão é 1e-8 e @var{limite} é 200.
1194 @code{quad_qawo} retorna uma lista de quatro elementos:
1198 uma aproximação para o integral,
1200 o erro absoluto estimado da aproximação,
1202 o número de avaliações do integrando,
1207 O código de erro (quarto elemento do valor de retorno) pode ter os valores:
1211 nenhum problema foi encontrado;
1213 foram utilizados muitos subintervalos;
1215 foi detectato um erro de arredondamento excessivo;
1217 o integrando comporta-se muito mal;
1219 a entrada não foi válida.
1226 (%i1) quad_qawo (x^(-1/2)*exp(-2^(-2)*x), x, 1d-8, 20*2^2, 1, cos);
1227 (%o1) [1.376043389877692, 4.72710759424899E-11, 765, 0]
1228 (%i2) rectform (integrate (x^(-1/2)*exp(-2^(-alpha)*x) * cos(x), x, 0, inf));
1229 alpha/2 - 1/2 2 alpha
1230 sqrt(%pi) 2 sqrt(sqrt(2 + 1) + 1)
1231 (%o2) -----------------------------------------------------
1234 (%i3) ev (%, alpha=2, numer);
1235 (%o3) 1.376043390090716
1240 @c THERE ARE OPTIONAL ARGUMENTS WHICH MAKES LISTING THE VARIANTS A LITTLE TEDIOUS
1241 @c NEED A MORE CONVENIENT (AND NONAMBIGUOUS) NOTATION FOR OPTIONAL ARGUMENTS
1242 @deffn {Função} quad_qaws (@var{f(x)}, @var{x}, @var{a}, @var{b}, @var{alpha}, @var{beta}, @var{wfun}, @var{epsabs}, @var{limite})
1243 @deffnx {Função} quad_qaws (@var{f}, @var{x}, @var{a}, @var{b}, @var{alpha}, @var{beta}, @var{wfun}, @var{epsabs}, @var{limite})
1245 Integração de @math{w(x) f(x)} sobre um intervalo finito,
1246 onde @math{w(x)} é uma certa função algébrica ou logarítmica.
1247 Uma estratégia de subdivisão globalmente adaptativa é aplicada,
1248 com integração modificada de Clenshaw-Curtis sobre os subintervalos que possuírem os pontos finais
1249 dos intervalos de integração.
1251 @code{quad_qaws} calcula o integral usando a rotina
1255 @math{integrate (f(x)*w(x), x, a, b)}
1258 @math{integrate (f(x)*w(x), x, a, b)}
1261 $$\int_a^b f(x) w(x) dx$$
1264 A função peso @math{w} é seleccionada por @var{wfun}:
1268 @math{w(x) = (x - a)^alpha (b - x)^beta}
1270 @math{w(x) = (x - a)^alpha (b - x)^beta log(x - a)}
1272 @math{w(x) = (x - a)^alpha (b - x)^beta log(b - x)}
1274 @math{w(x) = (x - a)^alpha (b - x)^beta log(x - a) log(b - x)}
1277 O integrando pode ser especificado como o nome de uma função Maxima ou uma função Lisp ou um operador,
1278 uma expressão lambda do Maxima, ou uma expressão geral do Maxima.
1280 O argumentos opcionais são:
1284 Erro absoluto desejado de aproximação. O padrão é 1d-10.
1286 Tamanho do array interno de trabalho. (@var{limite} - @var{limlst})/2 é o
1287 número máximo de subintervalos para usar. O padrão é 200.
1290 @c MERGE THESE LINES INTO PRECEDING TABLE
1291 @var{epsabs} e @var{limit} são o erro relativo
1292 desejado e o número máximo de subintervalos, respectivamente.
1293 @var{epsrel} o padrão é 1e-8 e @var{limite} é 200.
1295 @code{quad_qaws} retorna uma lista de quatro elementos:
1299 uma aproximação para o integral,
1301 o erro absoluto estimado da aproximação,
1303 o número de avaliações do integrando,
1308 O código de erro (quarto elemento do valor de retorno) pode ter os valores:
1312 nenhum problema foi encontrado;
1314 foram utilizados muitos subintervalos;
1316 foi detectato um erro de arredondamento excessivo;
1318 o integrando comporta-se muito mal;
1320 a entrada não foi válida.
1327 (%i1) quad_qaws (1/(x+1+2^(-4)), x, -1, 1, -0.5, -0.5, 1);
1328 (%o1) [8.750097361672832, 1.24321522715422E-10, 170, 0]
1329 (%i2) integrate ((1-x*x)^(-1/2)/(x+1+2^(-alpha)), x, -1, 1);
1331 Is 4 2 - 1 positive, negative, or zero?
1335 2 %pi 2 sqrt(2 2 + 1)
1336 (%o2) -------------------------------
1339 (%i3) ev (%, alpha=4, numer);
1340 (%o3) 8.750097361672829