この計算ツールでできること
このツールは、関数 \(f(x)\) をマイナス無限大からプラス無限大まで、実数直線全体にわたって定積分し、その値を数値的に求めます。用いるのは二重指数関数型(DE)数値積分で、tanh-sinh公式の系列、あるいは高橋-森法とも呼ばれる手法です。DE積分は滑らかな被積分関数に対する汎用的な数値積分のなかでも屈指の効率を誇り、収束が驚くほど速いのが特徴です。正しく求まる桁数が、標本点の数にほぼ比例して増えていきます。
使い方
f(x) の数式を、変数 x、演算子 + - * / ^、括弧、そして exp、log/ln、sin、cos、tan、sqrt、abs、atan といった標準的な関数を使って入力します。次に、求める有効桁数(6〜50)を選びます。桁数を増やすほど刻み幅は細かくなり、打ち切り範囲も広がります。被積分関数は実数直線上で解析的であり、x が大きくなるにつれて減衰する必要があります。減衰せずに周期的に振動するような関数は扱えません。
計算式の解説
DE法では変数変換 \(x = \sinh\!\left(\tfrac{\pi}{2}\sinh t\right)\) を用います。その導関数は \(\varphi'(t) = \tfrac{\pi}{2}\cosh t\,\cosh\!\left(\tfrac{\pi}{2}\sinh t\right)\) です。置換後、積分は t に関する \(f(\varphi(t))\,\varphi'(t)\) の積分に変わります。\(\varphi'(t)\) は |t| が大きくなると二重指数関数的に減衰するため、一様な刻み幅 h の単純な台形則 $$I \approx h \cdot \sum f(\varphi(kh))\,\varphi'(kh)$$ がきわめて高精度になります。本計算では、まず粗い刻み幅から始め、節点を再利用しながら h を順次半分にしていき、連続する2つの推定値が指定した許容誤差以内で一致するまで反復します。
$$\int_{-\infty}^{\infty} f(x)\,dx \;\approx\; h\sum_{k=-N}^{N} f\!\left(x_k\right)\, w_k$$ $$\begin{gathered} \int_{-\infty}^{\infty} f(x)\,dx \;\approx\; h\sum_{k=-N}^{N} f\!\left(x_k\right)\, w_k \\[1.5em] \text{where}\quad \left\{ \begin{aligned} x_k &= \sinh\!\left(\tfrac{\pi}{2}\sinh(kh)\right) \\ w_k &= \tfrac{\pi}{2}\cosh(kh)\,\cosh\!\left(\tfrac{\pi}{2}\sinh(kh)\right) \\ h,N &= \text{chosen for } \text{digits} \text{ precision} \end{aligned} \right. \end{gathered}$$
計算例
\(f(x) = \dfrac{1}{1+x^2}\) の場合、厳密な積分値はマイナス無限大からプラス無限大までの \([\arctan x]\) $$= \pi \approx 3.14159265358979$$ です。刻み幅0.5、節点 \(k = -8..8\) という粗いDE和でも、すでに約3.15という値が得られます。刻み幅を細かくしていくと、\(\pi\) のフル精度の値へ収束します。同様に \(\exp(-x^2)\) は \(\sqrt{\pi} \approx 1.77245385090552\) を返します。
よくある質問
「収束しませんでした」と表示されるのはなぜ? 多くの場合、積分が発散している(被積分関数が減衰しない。例:\(f = 1\))か、関数が周期的・振動的であることが原因です。DE積分は、非周期的で端点において解析的な被積分関数を前提としています。
どの精度を選べばよい? 15桁は倍精度に相当し、標準的な選択肢としておすすめです。倍精度がサポートできる範囲をはるかに超える桁数を要求しても、結果の精度は向上しません。
特異性をもつ関数も積分できる? 端点近傍の節点はほぼゼロの重みになるため、端点での挙動には強い手法です。ただし、実軸上の内部に極があると計算は破綻します。