Merge branch 'master' into bug-4403-remove-polyfill
[maxima.git] / doc / info / es / romberg.texi
blob1769af7686e6fff8814eb6a33302bd5c68d80a5e
1 @c English version: 2008-03-28
2 @menu
3 * Funciones y variables para romberg::
4 @end menu
6 @node Funciones y variables para romberg, , Top, Top
7 @section Funciones y variables para romberg
9 @deffn {Función} romberg (@var{expr}, @var{x}, @var{a}, @var{b})
10 @deffnx {Función} romberg (@var{F}, @var{a}, @var{b})
12 Integra numéricamente por el método de Romberg.
14 La llamada @code{romberg(@var{expr}, @var{x}, @var{a}, @var{b})}
15 devuelve una estimación de la integral @code{integrate(@var{expr}, @var{x}, @var{a}, @var{b})}.
16 El argumento @var{expr} debe ser una expresión reducible a un valor decimal
17 en coma flotante cuando @var{x} es a su vez un número decimal.
19 La llamada @code{romberg(@var{F}, @var{a}, @var{b})} devuelve una estimación
20 de la integral @code{integrate(@var{F}(x), x, @var{a}, @var{b})}, siendo
21 @code{x} el único argumento de @var{F}. El argumento @var{F} debe ser 
22 una función en Lisp o en Maxima que devuelva un valor decimal
23 en coma flotante cuando @var{x} es a su vez un número decimal; @var{F}
24 puede ser el nombre de una función de Maxima traducida o compilada.
26 La exactitud de @code{romberg} se controla con las variables globales 
27 @code{rombergabs} y @code{rombergtol}. La función @code{romberg}
28 termina con éxito su cálculo cuando la diferencia absoluta entre
29 sucesivas aproximaciones es menor que @code{rombergabs},
30 o cuando la diferencia relativa de sucesivas aproximaciones es menor que
31 @code{rombergtol}. Así, cuando @code{rombergabs} vale 0.0
32 (su valor por defecto) sólo tiene efecto el test del error relativo basado
33 en @code{romberg}.
35 La función @code{romberg} reduce a mitades sucesivas la amplitud del paso un máximo de
36 @code{rombergit} veces antes de abandonar el cómputo; el número máximo de 
37 evaluaciones del integrando es, por consiguiente, igual a @code{2^rombergit}.
38 De no satisfacerse el criterio de error establecido por @code{rombergabs} y
39 @code{rombergtol},  @code{romberg} devuelve un mensaje de error.
40 La función @code{romberg} hace siempre al menos @code{rombergmin}
41 iteraciones; se trata de una heurística para evitar
42 la finalización prematura cuando el integrando oscila mucho.
44 La función @code{romberg} evalúa el integrando repetidamente tras asignarle
45 a la variable de integración un valor específico. Este criterio
46 permite anidar llamadas a @code{romberg} para calcular integrales múltiples.
47 Sin embargo, los errores de cálculo no tienen en cuenta los errores de 
48 las integraciones anidadas, por lo que tales errores pueden subestimarse.
49 Por otro lado, métodos especialmente desarrollados para integraciones
50 múltiples pueden dar la misma exactitud con menos evaluaciones
51 del integrando.
53 Para hacer uso de esta función ejecútese primero @code{load("romberg")}.
55 Véase también @code{QUADPACK}, un conjunto de funciones para 
56 integración numérica.
58 Ejemplos:
60 Una integración unidimensional.
61 @c ===beg===
62 @c load ("romberg");
63 @c f(x) := 1/((x - 1)^2 + 1/100) + 1/((x - 2)^2 + 1/1000)
64 @c             + 1/((x - 3)^2 + 1/200);
65 @c rombergtol : 1e-6;
66 @c rombergit : 15;
67 @c estimate : romberg (f(x), x, -5, 5);
68 @c exact : integrate (f(x), x, -5, 5);
69 @c abs (estimate - exact) / exact, numer;
70 @c ===end===
72 @example
73 (%i1) load ("romberg");
74 (%o1)    /usr/share/maxima/5.11.0/share/numeric/romberg.lisp
75 (%i2) f(x) := 1/((x - 1)^2 + 1/100) + 1/((x - 2)^2 + 1/1000)
76                 + 1/((x - 3)^2 + 1/200);
77                     1                 1                1
78 (%o2) f(x) := -------------- + --------------- + --------------
79                      2    1           2    1            2    1
80               (x - 1)  + ---   (x - 2)  + ----   (x - 3)  + ---
81                          100              1000              200
82 (%i3) rombergtol : 1e-6;
83 (%o3)                 9.9999999999999995E-7
84 (%i4) rombergit : 15;
85 (%o4)                          15
86 (%i5) estimate : romberg (f(x), x, -5, 5);
87 (%o5)                   173.6730736617464
88 (%i6) exact : integrate (f(x), x, -5, 5);
89 (%o6) 10 sqrt(10) atan(70 sqrt(10))
90  + 10 sqrt(10) atan(30 sqrt(10)) + 10 sqrt(2) atan(80 sqrt(2))
91  + 10 sqrt(2) atan(20 sqrt(2)) + 10 atan(60) + 10 atan(40)
92 (%i7) abs (estimate - exact) / exact, numer;
93 (%o7)                7.5527060865060088E-11
94 @end example
96 Una integración bidimensional, implementada mediante llamadas anidadas a @code{romberg}.
97 @c ===beg===
98 @c load ("romberg");
99 @c g(x, y) := x*y / (x + y);
100 @c rombergtol : 1e-6;
101 @c estimate : romberg (romberg (g(x, y), y, 0, x/2), x, 1, 3);
102 @c assume (x > 0);
103 @c integrate (integrate (g(x, y), y, 0, x/2), x, 1, 3);
104 @c exact : radcan (%);
105 @c abs (estimate - exact) / exact, numer;
106 @c ===end===
108 @example
109 (%i1) load ("romberg");
110 (%o1)    /usr/share/maxima/5.11.0/share/numeric/romberg.lisp
111 (%i2) g(x, y) := x*y / (x + y);
112                                     x y
113 (%o2)                   g(x, y) := -----
114                                    x + y
115 (%i3) rombergtol : 1e-6;
116 (%o3)                 9.9999999999999995E-7
117 (%i4) estimate : romberg (romberg (g(x, y), y, 0, x/2), x, 1, 3);
118 (%o4)                   0.81930239628356
119 (%i5) assume (x > 0);
120 (%o5)                        [x > 0]
121 (%i6) integrate (integrate (g(x, y), y, 0, x/2), x, 1, 3);
122                                           3
123                                     2 log(-) - 1
124                     9                     2        9
125 (%o6)       - 9 log(-) + 9 log(3) + ------------ + -
126                     2                    6         2
127 (%i7) exact : radcan (%);
128                     26 log(3) - 26 log(2) - 13
129 (%o7)             - --------------------------
130                                 3
131 (%i8) abs (estimate - exact) / exact, numer;
132 (%o8)                1.3711979871851024E-10
133 @end example
135 @end deffn
137 @defvr {Variable opcional} rombergabs
138 Valor por defecto: 0.0
140 La exactitud de @code{romberg} se controla con las variables globales 
141 @code{rombergabs} y @code{rombergtol}. La función @code{romberg}
142 termina con éxito su cálculo cuando la diferencia absoluta entre
143 sucesivas aproximaciones es menor que @code{rombergabs},
144 o cuando la diferencia relativa de sucesivas aproximaciones es menor que
145 @code{rombergtol}. Así, cuando @code{rombergabs} vale 0.0
146 (su valor por defecto) sólo tiene efecto el test del error relativo basado
147 en @code{romberg}.
149 Véanse también @code{rombergit} y @code{rombergmin}.
151 @end defvr
153 @defvr {Variable opcional} rombergit
154 Valor por defecto: 11
156 La función @code{romberg} reduce a mitades sucesivas la amplitud del paso un máximo de
157 @code{rombergit} veces antes de abandonar el cómputo; el número máximo de 
158 evaluaciones del integrando es, por consiguiente, igual a @code{2^rombergit}.
159 La función @code{romberg} hace siempre al menos @code{rombergmin}
160 iteraciones; se trata de una heurística para evitar
161 la finalización prematura cuando el integrando oscila mucho.
164 Véanse también @code{rombergabs} y @code{rombergtol}.
166 @end defvr
168 @defvr {Variable opcional} rombergmin
169 Valor por defecto: 0
171 La función @code{romberg} hace siempre al menos @code{rombergmin}
172 iteraciones; se trata de una heurística para evitar
173 la finalización prematura cuando el integrando oscila mucho.
175 Véanse también @code{rombergit}, @code{rombergabs} y @code{rombergtol}.
177 @end defvr
179 @defvr {Variable opcional} rombergtol
180 Valor por defecto: 1e-4
182 La exactitud de @code{romberg} se controla con las variables globales 
183 @code{rombergabs} y @code{rombergtol}. La función @code{romberg}
184 termina con éxito su cálculo cuando la diferencia absoluta entre
185 sucesivas aproximaciones es menor que @code{rombergabs},
186 o cuando la diferencia relativa de sucesivas aproximaciones es menor que
187 @code{rombergtol}. Así, cuando @code{rombergabs} vale 0.0
188 (su valor por defecto) sólo tiene efecto el test del error relativo basado
189 en @code{romberg}.
191 Véanse también @code{rombergit} y @code{rombergmin}.
193 @end defvr