誤差関数 (Error Function)
誤差関数は、
数学におけるシグモイド形状の
特殊関数であり、
確率論、
統計学、物質科学、
偏微分方程式など、広範な分野で重要な役割を果たします。ガウスの誤差関数とも呼ばれます。
誤差関数は、一般に `erf(x)` と表記され、以下の積分で
定義されます。
math
\operatorname{erf}(x) = \frac{2}{\sqrt{\pi}} \int_{0}^{x} e^{-t^2} dt
また、
相補誤差関数 (complementary error function) は `erfc(x)` と表記され、誤差関数を用いて以下のように
定義されます。
math
\operatorname{erfc}(x) = 1 - \operatorname{erf}(x)
スケーリング相補誤差関数 (scaled complementary error function) `erfcx(x)` も
定義され、アンダーフローを避けるために `erfc(x)` の代わりに用いられます。
複素誤差関数 (complex error function) は `w(x)` と表記され、次のように
定義されます(Faddeeva関数とも呼ばれます)。
特性
奇関数: 誤差関数は奇関数であり、`erf(-z) = -erf(z)` が成り立ちます。
複素共役: 任意の
複素数 `z` について、`erf(z) = erf(z)` が成り立ちます。ここで `z` は `z` の
複素共役を表します。
漸近挙動: 実軸上では、`z → ∞` で `erf(z)` は 1 に漸近し、`z → -∞` で -1 に漸近します。虚軸上では、`±i∞` となります。
誤差関数は
整関数であり、
特異点を持ちません。
テイラー展開は常に収束し、以下のようになります。
math
\operatorname{erf}(z) = \frac{2}{\sqrt{\pi}} \sum_{n=0}^{\infty} \frac{(-1)^n z^{2n+1}}{n! (2n+1)} = \frac{2}{\sqrt{\pi}} \left(z - \frac{z^3}{3} + \frac{z^5}{10} - \frac{z^7}{42} + \cdots\right)
この
級数は、反復的に
計算することで効率的に求めることができます。
逆関数
逆誤差関数は、次の
級数で表されます。
応用
確率論・統計学:
正規分布に従う
測定値の誤差範囲の
確率を求める際に用いられます。
熱方程式: 境界条件が階段関数で与えられた熱方程式の解として現れます。
エバルトの方法: クーロン力などの長距離相互作用を短距離成分と長距離成分に分割する際に用いられます。
相補誤差関数の大きな `x` についての
漸近展開は以下のようになります。
math
\operatorname{erfc}(x) \sim \frac{e^{-x^2}}{x\sqrt{\pi}} \left[1 + \sum_{n=1}^{\infty} (-1)^n \frac{1 \cdot 3 \cdot 5 \cdots (2n-1)}{(2x^2)^n} \right]
この
級数は発散しますが、最初の数項で良い
近似が得られます。
関連する関数
正規分布の累積分布関数 (CDF): 誤差関数と密接な関係があり、スケールと解釈が異なるだけです。
Q関数:
正規分布におけるテール
確率を表し、誤差関数を用いて
表現できます。
ミッタク=レフラー関数: 誤差関数はミッタク=レフラー関数の特殊ケースです。
フレネル積分: 誤差関数を使った
表現が可能です。
一般化された誤差関数
より一般化された誤差関数も存在し、`n` の値によって異なる関数が得られます。
実装
多くのプログラミング言語で、誤差関数を
計算するための関数が提供されています。
C言語: C99規格で `
` ヘッダファイルに `erf(double x)` および `erfc(double x)` 関数が宣言されています。
C++: C++11規格で `` ヘッダファイルに `erf` および `erfc` が宣言されており、`double`、`float`、`long double` 型がオーバーロードされています。
FORTRAN: GFortran が `ERF(X)` と倍精度の `DERF(X)` を提供しています。
数表
誤差関数の値は、数表としてまとめられていることもあります。
まとめ
誤差関数は、数学、物理学、工学など、様々な分野で応用される重要な特殊関数です。その定義、特性、級数展開、関連関数を理解することで、より高度な問題解決に役立てることができます。