コンテンツにスキップ

誤差関数

出典: フリー百科事典『ウィキペディア(Wikipedia)』
誤差関数のグラフ
相補誤差関数のグラフ

誤差関数(ごさかんすう、: error function)は、数学におけるシグモイド形状の特殊関数(非初等関数)の一種で、確率論統計学物質科学偏微分方程式などで使われる。ガウスの誤差関数とも。定義は以下の通り。

相補誤差関数 (: complementary error function) は erfc表記され、誤差関数を使って以下のように定義される。

スケーリング相補誤差関数(: scaled complementary error function)[1] erfcx定義される (アンダーフロー[1][2]を避けるために、 erfc の代わりに用いる)。

複素誤差関数 (: complex error function) は表記され、やはり誤差関数を使って次のように定義される(Faddeeva関数とも呼ぶ)。

特性

[編集]
図2. 被積分関数 exp(−z2) を複素z-平面でプロットした図
図3. erf(z) を複素z-平面でプロットした図

誤差関数奇関数である。

任意の複素数について、

また、次が成り立つ。

ここで複素共役である。

被積分関数を複素平面にプロットしたものを図2と図3に示す。

虚部となる点を結んだ線を太い緑色の線で表している。負の整数となるを結んだを太い赤色の線で表し正の整数となる点を結んだ線を太い青色の線で表している。

整数と整数の中間の一定になる点を結んだ線を細い緑色の線で表し、実部が一定値になる点を結んだ線は、の場合は青い細い線、の場合は赤い細い線で表している。

実軸では、単位元(1)に漸近し、で単位元(-1)に漸近する。虚軸では、 となる。

テイラー級数

[編集]

誤差関数整関数である。(無限大以外で)特異点を持たず、テイラー展開は常に収束する。

定義にある積分初等関数を使った閉形式では評価できないが、被積分関数 を対応するテイラー級数に展開して、単位で積分すると、誤差関数のテイラー級数が以下のように得られる。

これは全ての複素数について成り立つ。[3]

これを反復的に計算するには、以下のように定式化するのが扱い易い。

番目の項から番目のを得る係数表している。

比較するには、次の級数が利用できる。

において誤差関数は正確に1になる(ガウス積分を参照)。

誤差関数導関数定義から即座に求められる。

誤差関数不定積分は次のようになる。

逆関数

[編集]

逆誤差関数は次のような級数となる。

ここで、であり、

となる。従って、次のような級数の展開が得られる(分子分母に共通して出現する係数は省いてある)。[4][5]

なお、誤差関数と負の無限大でのはそれぞれ正と負のとなる。

応用

[編集]

一連の何らかの測定正規分布になっていて、標準偏差期待値の場合、1つの測定値の誤差がの間になる確率である。これは、例えば、デジタル通信システムでの符号誤り率の特定などに使える。

誤差関数相補誤差関数は例えば、境界条件ヘヴィサイドの階段関数で与えたときの熱方程式に出現する。

で、の増加に伴ってはそれぞれ急速に1, 0 に近づくため、クーロン力などの長距離相互作用を短距離成分と長距離成分に分けるのに用いられる(エバルトの方法)。

漸近展開

[編集]

相補誤差関数(および誤差関数)の大きなについての漸近展開は次のようになる。

この級数有限なについては発散する。しかし、最初の方の幾つかのだけでのよい近似が得られ、テイラー展開よりも収束が早い。

初等関数による近似

[編集]

次のような近似がある。

ここで、

このような近似(曲線あてはめ)は、実軸付近の誤差関数の値について、少なくとも十進で1桁の精度はある。


関連する関数

[編集]

誤差関数正規分布累積分布関数(CDF)と基本的には同じであり、単にスケールと解釈が異なるだけである。実際、標準正規分布について次の関係が成り立つ。

また、およびについて変形すると次のようになる。

従って、誤差関数は、正規分布におけるテール確率であるQ関数とも密接に関連する。Q関数は誤差関数を使って次のように表現できる。

逆関数標準分位関数またはプロビット関数として知られており、逆誤差関数を使って次のように表現できる。

確率論統計学では標準正規分布の累積分布関数の方がよく使われ、誤差関数は他の数学の分野で使われる傾向がある。

誤差関数ミッタク=レフラー関数の特殊ケースであり、合流型超幾何微分方程式としても以下のように表現できる。

フレネル積分を使った単純な表現法もある。正規化ガンマ関数不完全ガンマ関数を使うと、次のように表せる。

符号関数である。

一般化された誤差関数

[編集]
一般化された誤差関数のグラフ:
灰色:
赤:
緑:
青:
金:

書籍によっては、より一般化した関数を論じている場合もある。

例えば、

  • 原点を通る直線 となる。
  • 誤差関数である。

割ると、奇数についてのは互いに似たようなものになる(完全に一致する事は無い)。 同様に、偶数についてので割ると互いに似たものになる(完全に一致する事は無い)。 での全ての一般化された誤差関数のときのグラフは互いに似ている。

これらの一般化された誤差関数x > 0 の場合にガンマ関数不完全ガンマ関数を使って次のように表せる。

従って、誤差関数は不完全ガンマ関数を使って次のように表せる。

相補誤差関数の累次積分

[編集]

相補誤差関数累次積分は次のように定義される。

これらには次のような冪級数がある。

ここから次のような対称性が得られる。

および、

実装

[編集]

C言語の場合、C99ヘッダファイル<math.h>double erf(double x)およびdouble erfc(double x)という関数が宣言されている。 {erff(), erfcf()}という関数ペアはfloat型のを扱い、{erfl(), erfcl()}という関数ペアはlong double型の値を扱う。 C++でも、C++11<cmath>ヘッダファイルerfおよびerfcが宣言されている。doublefloatおよびlong double型がオーバーロードされている。

複素数を扱える誤差関数の実装は少ない。例えば、図2のようなグラフの描画は、Mathematicaを一般的な性能のコンピュータで実行した場合に数分かかる。

FORTRANでは、例えば、GFortranERF(X)と倍精度のDERF(X)を提供している。

数表

[編集]

SageMathに拠る[6]

x erf(x) erfc(x) x erf(x) erfc(x)
0.00 0.00000000000000000 1.0000000000000000 1.30 0.93400794494065244 0.065992055059347563
0.05 0.056371977797016624 0.94362802220298338 1.40 0.95228511976264881 0.047714880237351189
0.10 0.11246291601828489 0.88753708398171511 1.50 0.96610514647531073 0.033894853524689273
0.15 0.16799597142736349 0.83200402857263651 1.60 0.97634838334464401 0.023651616655355992
0.20 0.22270258921047845 0.77729741078952155 1.70 0.98379045859077456 0.016209541409225436
0.25 0.27632639016823693 0.72367360983176307 1.80 0.98909050163573071 0.010909498364269286
0.30 0.32862675945912743 0.67137324054087257 1.90 0.99279042923525747 0.0072095707647425301
0.35 0.37938205356231032 0.62061794643768968 2.00 0.99532226501895273 0.0046777349810472658
0.40 0.42839235504666845 0.57160764495333154 2.10 0.99702053334366701 0.0029794666563329855
0.45 0.47548171978692368 0.52451828021307632 2.20 0.99813715370201811 0.0018628462979818914
0.50 0.52049987781304654 0.47950012218695346 2.30 0.99885682340264335 0.0011431765973566515
0.55 0.56332336632510896 0.43667663367489104 2.40 0.99931148610335492 0.00068851389664507857
0.60 0.60385609084792592 0.39614390915207408 2.50 0.99959304798255504 0.00040695201744495894
0.65 0.64202932735567184 0.35797067264432816 2.60 0.99976396558347065 0.00023603441652934920
0.70 0.67780119383741847 0.32219880616258153 2.70 0.99986566726005948 0.00013433273994052433
0.75 0.71115563365351513 0.28884436634648487 2.80 0.99992498680533454 0.000075013194665459024
0.80 0.74210096470766049 0.25789903529233951 2.90 0.99995890212190054 0.000041097878099458836
0.85 0.77066805760835253 0.22933194239164747 3.0 0.99997790950300141 0.000022090496998585441
0.90 0.79690821242283213 0.20309178757716787 3.10 0.99998835134263280 0.000011648657367199596
0.95 0.82089080727327794 0.17910919272672206 3.20 0.99999397423884824 6.0257611517620950×10−6
1.00 0.84270079294971487 0.15729920705028513 3.30 0.99999694229020356 3.0577097964381615×10−6
1.10 0.88020506957408170 0.11979493042591830 3.40 0.99999847800663714 1.5219933628622854×10−6
1.20 0.91031397822963538 0.089686021770364620 3.50 0.99999925690162766 7.4309837234141275×10−7

関連項目

[編集]

脚注・出典

[編集]
  1. ^ a b W. J. Cody, "Algorithm 715: SPECFUN—A portable FORTRAN package of special function routines and test drivers," ACM Trans. Math. Soft. 19, pp. 22–32 (1993).
  2. '^ M. R. Zaghloul, "On the calculation of the Voigt line profile: a single proper integral with a damped sine integrand," Monthly Notices of the Royal Astronomical Society 375, pp. 1043–1048 (2007).
  3. ^ 分母OEISにある A007680の数列である。
  4. ^ InverseErf functions.wolfram.com
  5. ^ 約分後の分子/分母の係数はOEISの A092676/A132467 と同じで、約分していない分子は A002067 となる。
  6. ^ [1]

参考文献

[編集]

外部リンク

[編集]