2 * Functions and Variables for romberg::
5 @node Functions and Variables for romberg, , Top, Top
6 @section Functions and Variables for romberg
8 @deffn {関数} romberg (@var{expr}, @var{x}, @var{a}, @var{b})
9 @deffnx {関数} romberg (@var{F}, @var{a}, @var{b})
11 Romberg法による数値積分を計算します。
13 @code{romberg(@var{expr}, @var{x}, @var{a}, @var{b})}は
14 積分@code{integrate(@var{expr}, @var{x}, @var{a}, @var{b})}の概算を返します。
17 @var{x}が浮動小数点値にバインドされた時
21 @code{romberg(@var{F}, @var{a}, @var{b})}は
22 積分@code{integrate(@var{F}(x), x, @var{a}, @var{b})}の概算を返します。
23 ここで、@code{x}は@var{F}の名付けられない唯一の引数を表します;
24 実際の引数は@code{x}と名付けられません。
27 MaximaかLispの関数でなければいけません。
28 @var{F}は翻訳またはコンパイルされたMaxima関数を指定することができます。
31 グローバル変数@code{rombergabs}と@code{rombergtol}によって決定されます。
33 連続する近似の間の絶対差が@code{rombergabs}よりも小さい時か、
34 連続する近似に関する相対差が@code{rombergtol}よりも小さい時、
37 @code{rombergabs}が0.0 (デフォルト)の時、
38 相対誤差テストだけが@code{romberg}に効果を持ちます。
41 あきらめる前に、せいぜい@code{rombergit}回、ステップサイズを半分にします;
42 それゆえ、関数評価の最大回数は@code{2^rombergit}です。
44 @code{rombergabs}や@code{rombergtol}によって確立される誤差基準が満たされないなら、
45 @code{romberg}はエラーメッセージを印字します。
46 @code{romberg}はいつも、少なくとも@code{rombergmin}回の繰り返しを行います;
47 これは、被積分関数が振動的な時、見せかけの終了を防ぐつもりの発見的方法です。
50 積分変数を特定の値にバインド(する前ではなく)した後、
52 この評価ポリシーは、多次元積分を計算するための
53 @code{romberg}の入れ子のコールを可能にします。
55 入れ子の積分の誤差を考慮しないので、エラーは過小評価されるかもしれません。
56 また、多次元問題のために特別に工夫された方法はより少ない関数評価で同じ精度をもたらす可能性があります。
58 @code{load("romberg")}はこの関数をロードします。
60 @code{QUADPACK}、数値積分関数のコレクションも参照してください。
67 @c f(x) := 1/((x - 1)^2 + 1/100) + 1/((x - 2)^2 + 1/1000)
68 @c + 1/((x - 3)^2 + 1/200);
71 @c estimate : romberg (f(x), x, -5, 5);
72 @c exact : integrate (f(x), x, -5, 5);
73 @c abs (estimate - exact) / exact, numer;
77 (%i1) load ("romberg");
78 (%o1) /usr/share/maxima/5.11.0/share/numeric/romberg.lisp
79 (%i2) f(x) := 1/((x - 1)^2 + 1/100) + 1/((x - 2)^2 + 1/1000)
80 + 1/((x - 3)^2 + 1/200);
82 (%o2) f(x) := -------------- + --------------- + --------------
84 (x - 1) + --- (x - 2) + ---- (x - 3) + ---
86 (%i3) rombergtol : 1e-6;
87 (%o3) 9.9999999999999995E-7
90 (%i5) estimate : romberg (f(x), x, -5, 5);
91 (%o5) 173.6730736617464
92 (%i6) exact : integrate (f(x), x, -5, 5);
93 (%o6) 10 sqrt(10) atan(70 sqrt(10))
94 + 10 sqrt(10) atan(30 sqrt(10)) + 10 sqrt(2) atan(80 sqrt(2))
95 + 10 sqrt(2) atan(20 sqrt(2)) + 10 atan(60) + 10 atan(40)
96 (%i7) abs (estimate - exact) / exact, numer;
97 (%o7) 7.5527060865060088E-11
100 @code{romberg}の入れ子のコールで実装された
104 @c g(x, y) := x*y / (x + y);
105 @c rombergtol : 1e-6;
106 @c estimate : romberg (romberg (g(x, y), y, 0, x/2), x, 1, 3);
108 @c integrate (integrate (g(x, y), y, 0, x/2), x, 1, 3);
109 @c exact : radcan (%);
110 @c abs (estimate - exact) / exact, numer;
114 (%i1) load ("romberg");
115 (%o1) /usr/share/maxima/5.11.0/share/numeric/romberg.lisp
116 (%i2) g(x, y) := x*y / (x + y);
118 (%o2) g(x, y) := -----
120 (%i3) rombergtol : 1e-6;
121 (%o3) 9.9999999999999995E-7
122 (%i4) estimate : romberg (romberg (g(x, y), y, 0, x/2), x, 1, 3);
123 (%o4) 0.81930239628356
124 (%i5) assume (x > 0);
126 (%i6) integrate (integrate (g(x, y), y, 0, x/2), x, 1, 3);
130 (%o6) - 9 log(-) + 9 log(3) + ------------ + -
132 (%i7) exact : radcan (%);
133 26 log(3) - 26 log(2) - 13
134 (%o7) - --------------------------
136 (%i8) abs (estimate - exact) / exact, numer;
137 (%o8) 1.3711979871851024E-10
141 @category{Package romberg}
142 @category{Numerical methods}
147 @defvr {オプション変数} rombergabs
151 グローバル変数@code{rombergabs}と@code{rombergtol}で決定されます。
153 連続する近似の間の絶対差が@code{rombergabs}よりも小さい時か、
154 連続する近似に関する相対差が@code{rombergtol}よりも小さい時、
157 @code{rombergabs}が0.0 (デフォルト)の時、
158 相対誤差テストだけが@code{romberg}に効果を持ちます。
160 @code{rombergit}と@code{rombergmin}も参照してください。
163 @category{Package romberg}
168 @defvr {オプション変数} rombergit
172 あきらめる前に、せいぜい@code{rombergit}回、ステップサイズを半分にします;
173 それゆえ、関数評価の最大回数は@code{2^rombergit}です。
174 @code{romberg}はいつも、少なくとも@code{rombergmin}回の繰り返しを行います;
175 これは、被積分関数が振動的な時、見せかけの終了を防ぐつもりの発見的方法です。
177 @code{rombergabs}と@code{rombergtol}も参照してください。
180 @category{Package romberg}
185 @defvr {オプション変数} rombergmin
188 @code{romberg}はいつも、少なくとも@code{rombergmin}回の繰り返しを行います;
189 これは、被積分関数が振動的な時、見せかけの終了を防ぐつもりの発見的方法です。
191 @code{rombergit}, @code{rombergabs}, @code{rombergtol}も参照してください。
194 @category{Package romberg}
199 @defvr {オプション変数} rombergtol
203 グローバル変数@code{rombergabs}と@code{rombergtol}によって決定されます。
205 連続する近似の間の絶対差が@code{rombergabs}よりも小さい時か、
206 連続する近似に関する相対差が@code{rombergtol}よりも小さい時、
209 @code{rombergabs}が0.0 (デフォルト)の時、
210 相対誤差テストだけが@code{romberg}に効果を持ちます。
212 @code{rombergit}と@code{rombergmin}も参照してください。
215 @category{Package romberg}