誤差関数 (ごさかんすう、英 : error function )は、数学 におけるシグモイド 形状の特殊関数 (非初等関数 )の一種で、確率論 、統計学 、物質科学 、偏微分方程式 などで使われる。ガウスの誤差関数 とも。定義 は以下の通り。
erf
(
x
)
=
2
π
∫
0
x
e
−
t
2
d
t
{\displaystyle \operatorname {erf} \left(x\right)={\frac {2}{\sqrt {\pi }}}\int _{0}^{x}e^{-t^{2}}\,dt}
誤差関数のグラフ 相補誤差関数のグラフ
相補誤差関数 (英 : complementary error function ) は erfc と表記 され、誤差関数 を使って以下のように定義 される。
erfc
(
x
)
=
1
−
erf
(
x
)
=
2
π
∫
x
∞
e
−
t
2
d
t
=
e
−
x
2
erfcx
(
x
)
{\displaystyle {\begin{aligned}\operatorname {erfc} (x)&=1-\operatorname {erf} (x)\\&={\frac {2}{\sqrt {\pi }}}\int _{x}^{\infty }e^{-t^{2}}\,dt=e^{-x^{2}}\operatorname {erfcx} (x)\end{aligned}}}
スケーリング相補誤差関数 (英 : scaled complementary error function )[1] erfcx も定義 される
(アンダーフロー [1] [2] を避けるために、 erfc の代わりに用いる)。
複素誤差関数 (英 : complex error function ) は
w
(
x
)
{\displaystyle w\left(x\right)}
と表記 され、やはり誤差関数 を使って次のように定義 される(Faddeeva関数 とも呼ぶ)。
w
(
x
)
=
e
−
x
2
e
r
f
c
(
−
i
x
)
{\displaystyle w\left(x\right)=e^{-x^{2}}{\mathrm {erfc} }(-ix)\,\!}
図2. 被積分関数 exp(−z 2 ) を複素z -平面でプロットした図
図3. erf(z ) を複素z -平面でプロットした図
誤差関数 は奇関数 である。
任意の複素数
z
{\displaystyle z}
について、
erf
(
−
z
)
=
−
erf
(
z
)
{\displaystyle \operatorname {erf} (-z)=-\operatorname {erf} (z)}
また、次が成り立つ。
erf
(
z
∗
)
=
erf
(
z
)
∗
{\displaystyle \operatorname {erf} (z^{*})=\operatorname {erf} (z)^{*}}
ここで
z
∗
{\displaystyle z^{*}}
は
z
{\displaystyle z}
の複素共役 である。
被積分関数
f
=
exp
(
−
z
2
)
{\displaystyle f=\exp \left(-z^{2}\right)}
と
f
=
erf
(
−
z
)
{\displaystyle f=\operatorname {erf} \left(-z\right)}
を複素
z
-
{\displaystyle z\operatorname {-} }
平面にプロットしたものを図2と図3に示す。
虚部
f
=
Im
(
f
)
=
0
{\displaystyle f=\operatorname {Im} \left(f\right)=0}
となる点を結んだ線を太い緑色の線で表している。
f
=
Im
(
f
)
{\displaystyle f=\operatorname {Im} \left(f\right)}
が負の整数 となる点 を結んだ線 を太い赤色の線で表し 、正の整数 となる点を結んだ線を太い青色の線で表している。
f
=
Im
(
f
)
{\displaystyle f=\operatorname {Im} \left(f\right)}
が整数 と整数の中間の一定値 になる点を結んだ線を細い緑色の線で表し、実部
f
=
Re
(
f
)
=
0
{\displaystyle f=\operatorname {Re} \left(f\right)=0}
が一定値になる点を結んだ線は、正 の場合は青い細い線、負 の場合は赤い細い線で表している。
実軸では、
z
→
∞
{\displaystyle z\to \infty }
で
f
=
erf
(
z
)
{\displaystyle f=\operatorname {erf} \left(z\right)}
は単位元 (1)に漸近し、
z
→
−
∞
{\displaystyle z\to -\infty }
で単位元(-1)に漸近する。虚軸では、
±
i
∞
{\displaystyle \pm {\rm {i}}\infty }
となる。
テイラー級数
誤差関数 は整関数 である。(無限大以外で)特異点 を持たず、テイラー展開 は常に収束 する。
定義 にある積分 は初等関数 を使った閉形式では評価できないが、被積分 関数
exp
(
−
z
2
)
{\displaystyle \exp(-z^{2})}
を対応するテイラー級数 に展開して、項 単位 で積分すると、誤差関数 のテイラー級数が以下のように得られる。
erf
(
z
)
=
2
π
∑
n
=
0
∞
(
−
1
)
n
z
2
n
+
1
n
!
(
2
n
+
1
)
=
2
π
(
z
−
z
3
3
+
z
5
10
−
z
7
42
+
z
9
216
−
⋯
)
{\displaystyle \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}}+{\frac {z^{9}}{216}}-\ \cdots \right)}
これは全ての複素数
z
{\displaystyle z}
について成り立つ。[3]
これを反復 的に計算 するには、以下のように定式化するのが扱い易い。
erf
(
z
)
=
2
π
∑
n
=
0
∞
(
z
∏
k
=
1
n
−
(
2
k
−
1
)
z
2
k
(
2
k
+
1
)
)
=
2
π
∑
n
=
0
∞
z
2
n
+
1
∏
k
=
1
n
−
z
2
k
{\displaystyle \operatorname {erf} (z)={\frac {2}{\sqrt {\pi }}}\sum _{n=0}^{\infty }\left(z\prod _{k=1}^{n}{\frac {-(2k-1)z^{2}}{k(2k+1)}}\right)={\frac {2}{\sqrt {\pi }}}\sum _{n=0}^{\infty }{\frac {z}{2n+1}}\prod _{k=1}^{n}{\frac {-z^{2}}{k}}}
−
(
2
k
−
1
)
z
2
k
(
2
k
+
1
)
{\displaystyle {\frac {-(2k-1)z^{2}}{k(2k+1)}}}
は
k
{\displaystyle k}
番目の項から
k
+
1
{\displaystyle k+1}
番目の項 を得る係数 を表し ている。
f
=
erf
(
z
)
{\displaystyle f=\operatorname {erf} \left(z\right)}
や
f
=
erfc
(
z
)
{\displaystyle f=\operatorname {erfc} \left(z\right)}
と
f
=
exp
(
−
z
2
)
{\displaystyle f=\exp \left(-z^{2}\right)}
を比較 するには、次の級数 が利用できる。
e
z
2
erf
(
z
)
=
2
π
∑
n
=
0
∞
2
n
z
2
n
+
1
(
2
n
+
1
)
!
!
=
∑
n
=
0
∞
z
2
n
+
1
Γ
(
n
+
3
2
)
{\displaystyle e^{z^{2}}\operatorname {erf} (z)={\frac {2}{\sqrt {\pi }}}\sum _{n=0}^{\infty }{\frac {2^{n}z^{2n+1}}{(2n+1)!!}}=\sum _{n=0}^{\infty }{\frac {z^{2n+1}}{\Gamma (n+{\frac {3}{2}})}}}
∞
{\displaystyle \infty }
において誤差関数 は正確に1になる(ガウス積分 を参照)。
誤差関数 の導関数 は定義 から即座に求められる。
d
d
z
e
r
f
(
z
)
=
2
π
e
−
z
2
{\displaystyle {\frac {\rm {d}}{{\rm {d}}z}}\,\mathrm {erf} (z)={\frac {2}{\sqrt {\pi }}}\,e^{-z^{2}}}
誤差関数 の不定積分 は次のようになる。
z
erf
(
z
)
+
e
−
z
2
π
{\displaystyle z\,\operatorname {erf} (z)+{\frac {e^{-z^{2}}}{\sqrt {\pi }}}}
逆関数
逆誤差関数 は次のような級数 となる。
erf
−
1
(
z
)
=
∑
k
=
0
∞
c
k
2
k
+
1
(
π
2
z
)
2
k
+
1
{\displaystyle \operatorname {erf} ^{-1}\left(z\right)=\sum _{k=0}^{\infty }{\frac {c_{k}}{2k+1}}\left({\frac {\sqrt {\pi }}{2}}z\right)^{2k+1}\,\!}
ここで、
c
0
=
1
{\displaystyle c_{0}=1}
であり、
c
k
=
∑
m
=
0
k
−
1
c
m
c
k
−
1
−
m
(
m
+
1
)
(
2
m
+
1
)
=
{
1
,
1
,
7
6
,
127
90
,
…
}
{\displaystyle c_{k}=\sum _{m=0}^{k-1}{\frac {c_{m}c_{k-1-m}}{(m+1)(2m+1)}}=\left\{1,1,{\frac {7}{6}},{\frac {127}{90}},\ldots \right\}}
となる。従って、次のような級数の展開が得られる(分子 と分母 に共通して出現する係数 は省いてある)。[4] [5]
erf
−
1
(
z
)
=
1
2
π
(
z
+
π
12
z
3
+
7
π
2
480
z
5
+
127
π
3
40320
z
7
+
4369
π
4
5806080
z
9
+
34807
π
5
182476800
z
11
+
⋯
)
{\displaystyle \operatorname {erf} ^{-1}(z)={\frac {1}{2}}{\sqrt {\pi }}\left(z+{\frac {\pi }{12}}z^{3}+{\frac {7\pi ^{2}}{480}}z^{5}+{\frac {127\pi ^{3}}{40320}}z^{7}+{\frac {4369\pi ^{4}}{5806080}}z^{9}+{\frac {34807\pi ^{5}}{182476800}}z^{11}+\cdots \right)\,\!}
なお、誤差関数 の正 と負の無限大 での値 はそれぞれ正と負の
1
{\displaystyle 1}
となる。
誤差関数 は正規分布 の累積分布関数(CDF)
Φ
{\displaystyle \Phi }
と基本的には同じであり、単にスケールと解釈が異なるだけである。実際、標準正規分布について次の関係が成り立つ。
Φ
(
x
)
=
1
2
[
1
+
erf
(
x
2
)
]
=
1
2
erfc
(
−
x
2
)
{\displaystyle \Phi \left(x\right)={\frac {1}{2}}\left[1+{\mbox{erf}}\left({\frac {x}{\sqrt {2}}}\right)\right]={\frac {1}{2}}\,{\mbox{erfc}}\left(-{\frac {x}{\sqrt {2}}}\right)}
また、
erf
{\displaystyle \operatorname {erf} }
および
erfc
{\displaystyle \operatorname {erfc} }
について変形すると次のようになる。
e
r
f
(
x
)
=
2
Φ
(
x
2
)
−
1
e
r
f
c
(
x
)
=
2
[
1
−
Φ
(
x
2
)
]
{\displaystyle {\begin{aligned}\mathrm {erf} \left(x\right)&=2\Phi \left(x{\sqrt {2}}\right)-1\\\mathrm {erfc} \left(x\right)&=2\left[1-\Phi \left(x{\sqrt {2}}\right)\right]\end{aligned}}}
従って、誤差関数 は、正規分布 におけるテール確率 であるQ関数 とも密接に関連する。Q関数は誤差関数 を使って次のように表現 できる。
Q
(
x
)
=
1
2
−
1
2
erf
(
x
2
)
{\displaystyle Q\left(x\right)={\frac {1}{2}}-{\frac {1}{2}}\operatorname {erf} {\Bigl (}{\frac {x}{\sqrt {2}}}{\Bigr )}}
Φ
{\displaystyle \Phi \,}
の逆関数 は標準分位関数 またはプロビット関数 として知られており、逆誤差関数 を使って次のように表現できる。
probit
(
p
)
=
Φ
−
1
(
p
)
=
2
erf
−
1
(
2
p
−
1
)
=
−
2
erfc
−
1
(
2
p
)
{\displaystyle \operatorname {probit} (p)=\Phi ^{-1}(p)={\sqrt {2}}\,\operatorname {erf} ^{-1}(2p-1)=-{\sqrt {2}}\,\operatorname {erfc} ^{-1}(2p)}
確率論 や統計学 では標準正規分布の累積分布関数の方がよく使われ、誤差関数 は他の数学の分野で使われる傾向がある。
誤差関数 はミッタク=レフラー関数 の特殊ケースであり、合流型超幾何微分方程式 としても以下のように表現できる。
e
r
f
(
x
)
=
2
x
π
1
F
1
(
1
2
,
3
2
,
−
x
2
)
{\displaystyle \mathrm {erf} \left(x\right)={\frac {2x}{\sqrt {\pi }}}\,_{1}F_{1}\left({\frac {1}{2}},{\frac {3}{2}},-x^{2}\right)}
フレネル積分 を使った単純な表現法もある。正規化ガンマ関数
P
{\displaystyle P}
と不完全ガンマ関数 を使うと、次のように表せる。
erf
(
x
)
=
sgn
(
x
)
P
(
1
2
,
x
2
)
=
sgn
(
x
)
π
γ
(
1
2
,
x
2
)
{\displaystyle \operatorname {erf} \left(x\right)=\operatorname {sgn} \left(x\right)P\left({\frac {1}{2}},x^{2}\right)={\operatorname {sgn} \left(x\right) \over {\sqrt {\pi }}}\gamma \left({\frac {1}{2}},x^{2}\right)}
sgn
(
x
)
{\displaystyle \operatorname {sgn} \left(x\right)\ }
は符号関数 である。
相補誤差関数の累次積分
相補誤差関数 の累次積分 は次のように定義 される。
i
n
erfc
(
z
)
=
∫
z
∞
i
n
−
1
erfc
(
ζ
)
d
ζ
{\displaystyle \mathrm {i} ^{n}\operatorname {erfc} \,(z)=\int _{z}^{\infty }\mathrm {i} ^{n-1}\operatorname {erfc} \,(\zeta )\;\mathrm {d} \zeta \,}
これらには次のような冪級数 がある。
i
n
erfc
(
z
)
=
∑
j
=
0
∞
(
−
z
)
j
2
n
−
j
j
!
Γ
(
1
+
n
−
j
2
)
{\displaystyle \mathrm {i} ^{n}\operatorname {erfc} \,(z)=\sum _{j=0}^{\infty }{\frac {(-z)^{j}}{2^{n-j}j!\Gamma \left(1+{\frac {n-j}{2}}\right)}}\,}
ここから次のような対称性 が得られる。
i
2
m
erfc
(
−
z
)
=
−
i
2
m
erfc
(
z
)
+
∑
q
=
0
m
z
2
q
2
2
(
m
−
q
)
−
1
(
2
q
)
!
(
m
−
q
)
!
{\displaystyle \mathrm {i} ^{2m}\operatorname {erfc} (-z)=-\mathrm {i} ^{2m}\operatorname {erfc} \,(z)+\sum _{q=0}^{m}{\frac {z^{2q}}{2^{2(m-q)-1}(2q)!(m-q)!}}}
および、
i
2
m
+
1
erfc
(
−
z
)
=
i
2
m
+
1
erfc
(
z
)
+
∑
q
=
0
m
z
2
q
+
1
2
2
(
m
−
q
)
−
1
(
2
q
+
1
)
!
(
m
−
q
)
!
{\displaystyle \mathrm {i} ^{2m+1}\operatorname {erfc} (-z)=\mathrm {i} ^{2m+1}\operatorname {erfc} \,(z)+\sum _{q=0}^{m}{\frac {z^{2q+1}}{2^{2(m-q)-1}(2q+1)!(m-q)!}}\,}
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 を一般的な性能のコンピュータ で実行した場合に数分かかる。
FORTRAN では、例えば、GFortran がERF(X)
と倍精度のDERF(X)
を提供している。
SageMath に拠る[6]
さらに見る x, erf(x) ...
x
erf(x)
erfc(x)
x
erf(x)
erfc(x)
0.00
0.000000 000 000 000 00
1.000000 000 000 000 0
1.30
0.934007 944 940 652 44
0.065992 055 059 347 563
0.05
0.056371 977 797 016 624
0.943628 022 202 983 38
1.40
0.952285 119 762 648 81
0.047714 880 237 351 189
0.10
0.112462 916 018 284 89
0.887537 083 981 715 11
1.50
0.966105 146 475 310 73
0.033894 853 524 689 273
0.15
0.167995 971 427 363 49
0.832004 028 572 636 51
1.60
0.976348 383 344 644 01
0.023651 616 655 355 992
0.20
0.222702 589 210 478 45
0.777297 410 789 521 55
1.70
0.983790 458 590 774 56
0.016209 541 409 225 436
0.25
0.276326 390 168 236 93
0.723673 609 831 763 07
1.80
0.989090 501 635 730 71
0.010909 498 364 269 286
0.30
0.328626 759 459 127 43
0.671373 240 540 872 57
1.90
0.992790 429 235 257 47
0.007209 570 764 742 530 1
0.35
0.379382 053 562 310 32
0.620617 946 437 689 68
2.00
0.995322 265 018 952 73
0.004677 734 981 047 265 8
0.40
0.428392 355 046 668 45
0.571607 644 953 331 54
2.10
0.997020 533 343 667 01
0.002979 466 656 332 985 5
0.45
0.475481 719 786 923 68
0.524518 280 213 076 32
2.20
0.998137 153 702 018 11
0.001862 846 297 981 891 4
0.50
0.520499 877 813 046 54
0.479500 122 186 953 46
2.30
0.998856 823 402 643 35
0.001143 176 597 356 651 5
0.55
0.563323 366 325 108 96
0.436676 633 674 891 04
2.40
0.999311 486 103 354 92
0.000688 513 896 645 078 57
0.60
0.603856 090 847 925 92
0.396143 909 152 074 08
2.50
0.999593 047 982 555 04
0.000406 952 017 444 958 94
0.65
0.642029 327 355 671 84
0.357970 672 644 328 16
2.60
0.999763 965 583 470 65
0.000236 034 416 529 349 20
0.70
0.677801 193 837 418 47
0.322198 806 162 581 53
2.70
0.999865 667 260 059 48
0.000134 332 739 940 524 33
0.75
0.711155 633 653 515 13
0.288844 366 346 484 87
2.80
0.999924 986 805 334 54
0.000075 013 194 665 459 024
0.80
0.742100 964 707 660 49
0.257899 035 292 339 51
2.90
0.999958 902 121 900 54
0.000041 097 878 099 458 836
0.85
0.770668 057 608 352 53
0.229331 942 391 647 47
3.0
0.999977 909 503 001 41
0.000022 090 496 998 585 441
0.90
0.796908 212 422 832 13
0.203091 787 577 167 87
3.10
0.999988 351 342 632 80
0.000011 648 657 367 199 596
0.95
0.820890 807 273 277 94
0.179109 192 726 722 06
3.20
0.999993 974 238 848 24
6.025761 151 762 095 0 × 10−6
1.00
0.842700 792 949 714 87
0.157299 207 050 285 13
3.30
0.999996 942 290 203 56
3.057709 796 438 161 5 × 10−6
1.10
0.880205 069 574 081 70
0.119794 930 425 918 30
3.40
0.999998 478 006 637 14
1.521993 362 862 285 4 × 10−6
1.20
0.910313 978 229 635 38
0.089686 021 770 364 620
3.50
0.999999 256 901 627 66
7.430983 723 414 127 5 × 10−7
閉じる
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).
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).
約分後の分子/分母の係数はOEIS の A092676/A132467 と同じで、約分していない分子は A002067 となる。