Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / pt / romberg.texi
blob29249cf4f9b449d408a105fa9dcd0f033f1615be
1 @c /romberg.texi/1.1/Mon Jan  8 01:45:16 2007//
2 @menu
3 * Definições para romberg::
4 @end menu
6 @node Definições para romberg, , Top, Top
7 @section Definições para romberg
9 @deffn {Função} romberg (@var{expr}, @var{x}, @var{a}, @var{b})
10 @deffnx {Função} romberg (@var{F}, @var{a}, @var{b})
12 Calcula uma integração numérica pelo método de Romberg.
14 @code{romberg(@var{expr}, @var{x}, @var{a}, @var{b})}
15 retorna uma estimativa da integral @code{integrate(@var{expr}, @var{x}, @var{a}, @var{b})}.
16 @var{expr} deve ser uma expressão que avalie para um valor em ponto flutuante
17 quando @var{x} estiver associado a um valor em ponto flutuante.
19 @code{romberg(@var{F}, @var{a}, @var{b})}
20 retorna uma estimativa da integral @code{integrate(@var{F}(x), x, @var{a}, @var{b})}
21 onde @code{x} representa o não nomeado, isolado argumeno de @var{F};
22 o actual argumento não é chamado @code{x}.
23 @var{F} deve ser uma função do Maxima ou do Lisp que retorne um valor em ponto flutuante
24 quando o argumento for um número em ponto flutuante.
25 @var{F} pode nomear uma função traduzida ou compilada do Maxima.
27 A precisão de @code{romberg} é governada pelas variáveis globais
28 @code{rombergabs} e @code{rombergtol}.
29 @code{romberg} termina com sucesso quando
30 a diferença absoluta entre duas aproximações sucessivas for menor que @code{rombergabs},
31 ou a diferença relativa em aproximações sucessivas for menor que @code{rombergtol}.
32 Dessa forma quando @code{rombergabs} for 0.0 (o padrão)
33 somente o erro relativo tem algum efeito sobre @code{romberg}.
35 @code{romberg} divide ao meio o tamanho do passo no máximo @code{rombergit} vezes antes de interromper;
36 o número máximo de avaliações de função é portanto @code{2^rombergit}.
37 Se o critério de erro estabelecido por @code{rombergabs} e por @code{rombergtol}
38 não for satisfeito, @code{romberg} mostra uma mensagem de erro.
39 @code{romberg} sempre faz ao menos @code{rombergmin} iterações;
40 isso é uma intenção eurísstica de previnir encerramentos espúrios quando o integrando for oscilatório.
42 @code{romberg} repetidamente avalia o integrando após associar a variável
43 de integração a um valor específico (e não antes).
44 Essa política de avaliação torna possível aninhar chamadas a @code{romberg},
45 para calcular integrais multidimensionais.
46 Todavia, os cálculos de erro não tomam os erros de integrações aninhadas
47 em consideração, então erros podem ser subestimados.
48 Também, métodos imaginados especialmente para problemas multidimensionais podem retornar
49 a mesma precisão com poucas avaliações de função.
51 @code{load("romberg")} torna essa função disponível para uso.
53 Veja também @code{QUADPACK}, uma colecção de funções de integração numérica.
55 Exemplos:
57 Uma integração unidimensonal.
58 @c ===beg===
59 @c load ("romberg");
60 @c f(x) := 1/((x - 1)^2 + 1/100) + 1/((x - 2)^2 + 1/1000) + 1/((x - 3)^2 + 1/200);
61 @c rombergtol : 1e-6;
62 @c rombergit : 15;
63 @c estimate : romberg (f(x), x, -5, 5);
64 @c exact : integrate (f(x), x, -5, 5);
65 @c abs (estimate - exact) / exact, numer;
66 @c ===end===
68 @example
69 (%i1) load ("romberg");
70 (%o1)    /usr/share/maxima/5.11.0/share/numeric/romberg.lisp
71 (%i2) f(x) := 1/((x - 1)^2 + 1/100) + 1/((x - 2)^2 + 1/1000) + 1/((x - 3)^2 + 1/200);
72                     1                 1                1
73 (%o2) f(x) := -------------- + --------------- + --------------
74                      2    1           2    1            2    1
75               (x - 1)  + ---   (x - 2)  + ----   (x - 3)  + ---
76                          100              1000              200
77 (%i3) rombergtol : 1e-6;
78 (%o3)                 9.9999999999999995E-7
79 (%i4) rombergit : 15;
80 (%o4)                          15
81 (%i5) estimate : romberg (f(x), x, -5, 5);
82 (%o5)                   173.6730736617464
83 (%i6) exact : integrate (f(x), x, -5, 5);
84 (%o6) 10 sqrt(10) atan(70 sqrt(10))
85  + 10 sqrt(10) atan(30 sqrt(10)) + 10 sqrt(2) atan(80 sqrt(2))
86  + 10 sqrt(2) atan(20 sqrt(2)) + 10 atan(60) + 10 atan(40)
87 (%i7) abs (estimate - exact) / exact, numer;
88 (%o7)                7.5527060865060088E-11
89 @end example
91 Uma integração bidimensional, implementada com chamadas aninhadas a @code{romberg}.
92 @c ===beg===
93 @c load ("romberg");
94 @c g(x, y) := x*y / (x + y);
95 @c rombergtol : 1e-6;
96 @c estimate : romberg (romberg (g(x, y), y, 0, x/2), x, 1, 3);
97 @c assume (x > 0);
98 @c integrate (integrate (g(x, y), y, 0, x/2), x, 1, 3);
99 @c exact : radcan (%);
100 @c abs (estimate - exact) / exact, numer;
101 @c ===end===
103 @example
104 (%i1) load ("romberg");
105 (%o1)    /usr/share/maxima/5.11.0/share/numeric/romberg.lisp
106 (%i2) g(x, y) := x*y / (x + y);
107                                     x y
108 (%o2)                   g(x, y) := -----
109                                    x + y
110 (%i3) rombergtol : 1e-6;
111 (%o3)                 9.9999999999999995E-7
112 (%i4) estimate : romberg (romberg (g(x, y), y, 0, x/2), x, 1, 3);
113 (%o4)                   0.81930239628356
114 (%i5) assume (x > 0);
115 (%o5)                        [x > 0]
116 (%i6) integrate (integrate (g(x, y), y, 0, x/2), x, 1, 3);
117                                           3
118                                     2 log(-) - 1
119                     9                     2        9
120 (%o6)       - 9 log(-) + 9 log(3) + ------------ + -
121                     2                    6         2
122 (%i7) exact : radcan (%);
123                     26 log(3) - 26 log(2) - 13
124 (%o7)             - --------------------------
125                                 3
126 (%i8) abs (estimate - exact) / exact, numer;
127 (%o8)                1.3711979871851024E-10
128 @end example
130 @end deffn
132 @defvr {Variável de opção} rombergabs
133 Valor por omissão: 0.0
135 A precisão de @code{romberg} é governada pelas variávies globais
136 @code{rombergabs} e @code{rombergtol}.
137 @code{romberg} termina com sucesso quando
138 a diferença absoluta entre duas aproximações sucessivas for menor que @code{rombergabs},
139 ou a diferença relativa em aproximações sucessivas for menor que @code{rombergtol}.
140 Dessa forma quando @code{rombergabs} for 0.0 (o padrão)
141 somente o erro relativo tem algum efeito sobre @code{romberg}.
143 Veja também @code{rombergit} e @code{rombergmin}.
145 @end defvr
147 @defvr {Variável de opção} rombergit
148 Valor por omissão: 11
150 @code{romberg} divide ao meio o tamanho do passo no máximo @code{rombergit} vezes antes de interromper;
151 o número máximo de avaliações de função é portanto @code{2^rombergit}.
152 Se o critério de erro estabelecido por @code{rombergabs} e por @code{rombergtol}
153 não for satisfeito, @code{romberg} mostra uma mensagem de erro.
154 @code{romberg} sempre faz ao menos @code{rombergmin} iterações;
155 isso é uma intenção eurísstica de previnir encerramentos espúrios quando o integrando for oscilatório.
157 Veja também @code{rombergabs} e @code{rombergtol}.
159 @end defvr
161 @defvr {Variável de opção} rombergmin
162 Valor por omissão: 0
164 @code{romberg} sempre faz ao menos @code{rombergmin} iterações;
165 isso é uma intenção eurísstica para prevenir terminações espúrias quando o integrando for.
167 Veja também @code{rombergit}, @code{rombergabs}, e @code{rombergtol}.
169 @end defvr
171 @defvr {Variável de opção} rombergtol
172 Valor por omissão: 1e-4
174 A precisão de @code{romberg} é governada pelas variáveis globais
175 @code{rombergabs} e @code{rombergtol}.
176 @code{romberg} termina com sucesso quando
177 a diferença absoluta entre duas aproximações sucessivas for menor que @code{rombergabs},
178 ou a diferença relativa em aproximações sucessivas for menor que @code{rombergtol}.
179 Dessa forma quando @code{rombergabs} for 0.0 (o padrão)
180 somente o erro relativo tem algum efeito sobre @code{romberg}.
182 Veja também @code{rombergit} e @code{rombergmin}.
184 @end defvr