Table of contents
誤差関数 (error function)
ここでは、プラズマ物理や統計で頻繁に現れる、誤差関数についてまとめています。
定義
誤差関数は、積分を用いて次のように定義されます。
\[\mathrm{erf} (x) \equiv \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt \tag{1}\]この関数は
\[\mathrm{erf} (\infty) = \frac{2}{\sqrt{\pi}} \underbrace{\int_0^\infty e^{-t^2} dt}_{ガウス積分の半分} = 1 \tag{2}\]のように、規格化されています。 また相補的な誤差関数 (complementary error function) として
\[\mathrm{erfc} (x) \equiv 1 - \mathrm{erf} (x) = \frac{2}{\sqrt{\pi}} \int_0^\infty e^{-t^2} dt - \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt = \frac{2}{\sqrt{\pi}} \int_x^\infty e^{-t^2} dt \tag{3}\]も定義されます。
基本的な性質
\[\mathrm{erf} (-x) = \frac{2}{\sqrt{\pi}} \int_0^{-x} e^{-t^2} dt \underbrace{=}_{t \rightarrow -t} \frac{2}{\sqrt{\pi}} \int_0^{x} e^{-t^2} (-dt) = - \mathrm{erf} (x) \tag{4}\]のように、誤差関数は奇関数であることがわかります。
誤差関数の導関数は、その定義から
です。 導関数が \(- \infty < x< \infty\) で常に正であることから、\(\mathrm{erf} (x)\) は単調増加関数であることもわかります。
逆に、誤差関数を積分したものは
のように計算できます。
erf, erfc をグラフに描画すると、次のようになります。

級数展開
erf の \(x \ll 1\) での振る舞いを調べるために、erf をテイラー展開してみましょう。 そのために、まずは \(e^{-t^2}\) を展開したものを考えます。
\[e^{-t^2} = \sum_{n=0}^\infty \frac{(-1)^n t^{2n}}{n!} \tag{7}\]そして
\[\int_0^x t^{2n} dt = \frac{x^{2n+1}}{2n+1} \tag{8}\]より、erf は
\[\mathrm{erf} (x) = \frac{2}{x} \sum_{n=0}^\infty \frac{(-1)^n x^{2n+1}}{n! (2n+1)} = \frac{2}{x} \left( x - \frac{x^3}{3} + \frac{x^5}{10} - \frac{x^7}{42} + \cdots \right) \tag{9}\]のように表現することができます。
同様に、\(x \gg 1\) についても考えてみましょう。 この場合は、erfc について調べるのが便利です。 (3) 式の積分部分は、\(e^{-t^2} = - \frac{1}{2t} \frac{d}{dt} e^{-t^2}\) であることを用いて
のように書き直すことができます。 さらに
\[\begin{align} \int_x^\infty \frac{e^{-t^2}}{t^2} dt &= \int_x^\infty \left( - \frac{1}{2t^3} \frac{d}{dt} e^{-t^2} \right) dt \underbrace{=}_{部分積分} \left[ - \frac{e^{-t^2}}{2t^3} \right]_x^\infty - \int_x^\infty \frac{3 e^{-t^2}}{2 t^4} dt \notag \\ &= \frac{e^{-x^2}}{2 x^3} - \frac{3}{2} \int_x^\infty \frac{e^{-t^2}}{t^4} dt \tag{11} \end{align}\]のように、部分積分を繰り返します。 これにより
\[\mathrm{erfc} (x) = \frac{e^{-x^2}}{\sqrt{\pi} x} \left( 1 - \frac{1}{2x^2} + \frac{3}{4x^4} - \frac{15}{8x^6} + \cdots \right) = \frac{e^{-x^2}}{\sqrt{\pi} x} \sum_{n=0}^\infty (-1)^n \frac{(2n-1)!!}{(2x^2)^n} \tag{12}\]を得ます。 (12) 式の先頭に出てきた \(\frac{e^{-x^2}}{\sqrt{\pi} x}\) は、ガウス分布の裾の確率を表すものとして、あらゆる場面で出てきます。
スケール化された相補誤差関数 (scaled complementary error function)
(12) 式において、先頭に出てきた \(e^{-x^2}\) は \(x\) が少し大きくなっただけで急激に小さな値となるため、数値計算で用いると容易にアンダーフローを起こします。 そこで、実際に計算する場合には、次のスケールかされた相補誤差関数を用います。
\[\mathrm{erfcx} (x) \equiv e^{x^2} \mathrm{erfc} (x) \tag{13}\]その定義から
\[\mathrm{erfcx} (0) = \mathrm{erfc} (0) = 1 \tag{14}\]であり、(12) 式から単調減少関数であることもわかります。 また、(13) 式のように定義しておけば、(12) 式から\(x \rightarrow \infty\) で
\[\mathrm{erfcs} (x) \ \longrightarrow \ \frac{1}{\sqrt{\pi} x} \tag{15}\]に漸近することがわかります。 実際に etfcx を描画すると、次のようになります。

虚部誤差関数・ドーソン関数
虚部誤差関数 erfi を、次のように定義します。
\[\mathrm{erfi} (x) \equiv -i \mathrm{erf} (ix) = - \frac{2i}{\sqrt{\pi}} \int_0^{ix} e^{-t^2} dt \underbrace{=}_{t \rightarrow it} - \frac{2i}{\sqrt{\pi}} \int_0^{x} e^{t^2} (i dt) = \frac{2}{\sqrt{\pi}} \int_0^x e^{t^2} dt \tag{16}\]となります。 グラフは、次のようになります。

この erfi を用いることで、次のドーソン関数 (Dawson’s function) \(F(x)\) を
\[F(x) \equiv e^{-x^2} \int_0^x e^{t^2} dt = \frac{\sqrt{\pi}}{2} e^{-x^2} \mathrm{erfi} (x) \tag{17}\]のように書き換えることができます。 ドーソン関数は、次のような関数です。

ファデーエワ関数
また、スケール化された複素相補誤差関数を
\[w(z) \equiv e^{-z^2} \mathrm{erfc} (-iz) \tag{18}\]のように定義することもできます。 これはファデーエワ関数 (Faddeeva function) と呼ばれます。 ファデーエワ関数は、複素数値を持つ関数です。 実軸上での実部・虚部の値を次に示します。

複素数平面上でのファデーエワ関数の絶対値は、次のようになります。

\(e^{-z^2}\) から、\(\mathrm{Im}(z) < 0\) の部分では急激にその大きさが増大します。
\(z = x \ (x \in \mathbb{R})\) の場合、ファデーエワ関数は
となります。 また、ファデーエワ関数において
\[\begin{align} &w(z) + w(-z) = e^{-z^2} \{ \mathrm{erfc} (-iz) + \mathrm{erfc} (iz) \} = e^{-z^2} \{ 2 - \underbrace{\mathrm{erf} (-iz)}_{(2)} - \mathrm{erf} (iz) \} = 2 e^{-z^2} \notag \\ &\Longrightarrow \ w(-z) = 2 e^{-z^2} - w(z) \tag{20} \end{align}\]が成り立ちます。
もう一つ、\(w(-\bar{z})\) について関係式を導出してみましょう。 \(w(z)\) は
のように書き直すことができます。 (12) 式より、erfc に \(e^{x^2}\) をかけた erfcx を級数展開したとき、その各項の係数は常に実数です。 よって \(\mathrm{erfcx} (u) = \sum_n a_n u^n\) のように書くことにしましょう (\(a_n\) は実数)。 すると
\[\mathrm{erfcx} (\bar{u}) = \sum_n a_n \bar{u}^n = \sum_n \overline{a_n} \overline{u^n} = \overline{\sum_n a_n u^n} \underbrace{=}_{(13)} \overline{\mathrm{erfcx} (u)} \tag{22}\]のようになることから
\[w(-\bar{z}) = e^{-\bar{z}^2} \mathrm{erfc} (i\bar{z}) \underbrace{=}_{z = iu} e^{\bar{u}^2} \mathrm{erfc} (\bar{u}) \underbrace{=}_{(13)} \mathrm{erfcx} (\bar{u}) = \overline{\mathrm{erfcx} (u)} = \overline{w(z)} \tag{23}\]が成り立つことがわかります。
参考文献
[1] 特殊関数グラフィックスライブラリー, 誤差関数
[2] Wolfram MathWorld, Erf
[3] Wolfram MathWorld, Dawson’s Integral