誤差関数(ごさかんすう、英: error function)は、数学におけるシグモイド形状の特殊関数(非初等関数)の一種で、確率論、統計学、物質科学、偏微分方程式などで使われる。ガウスの誤差関数とも。定義は以下の通り。
相補誤差関数 (英: complementary error function) は erfc と表記され、誤差関数を使って以下のように定義される。
スケーリング相補誤差関数(英: scaled complementary error function)[1] erfcxも定義される (アンダーフロー[1][2]を避けるために、 erfc の代わりに用いる)。
複素誤差関数 (英: complex error function) はと表記され、やはり誤差関数を使って次のように定義される(Faddeeva関数とも呼ぶ)。
特性
誤差関数は奇関数である。
任意の複素数について、
また、次が成り立つ。
ここではの複素共役である。
被積分関数とを複素平面にプロットしたものを図2と図3に示す。
虚部となる点を結んだ線を太い緑色の線で表している。が負の整数となる点を結んだ線を太い赤色の線で表し、正の整数となる点を結んだ線を太い青色の線で表している。
が整数と整数の中間の一定値になる点を結んだ線を細い緑色の線で表し、実部が一定値になる点を結んだ線は、正の場合は青い細い線、負の場合は赤い細い線で表している。
実軸では、では単位元(1)に漸近し、で単位元(-1)に漸近する。虚軸では、 となる。
テイラー級数
誤差関数は整関数である。(無限大以外で)特異点を持たず、テイラー展開は常に収束する。
定義にある積分は初等関数を使った閉形式では評価できないが、被積分関数 を対応するテイラー級数に展開して、項単位で積分すると、誤差関数のテイラー級数が以下のように得られる。
これを反復的に計算するには、以下のように定式化するのが扱い易い。
において誤差関数は正確に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
が宣言されている。double
、float
およびlong double
型がオーバーロードされている。
複素数を扱える誤差関数の実装は少ない。例えば、図2のようなグラフの描画は、Mathematicaを一般的な性能のコンピュータで実行した場合に数分かかる。
数表
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 |
関連項目
脚注・出典
参考文献
外部リンク
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.