メインコンテンツへスキップ
CalcMax

誤差関数計算

範囲:-6〜6

計算結果

0.842701

erf(x)

erfc(x)
0.157299

誤差関数計算は、同じ入力に対してerf(x)とその補関数erfc(x)を返すので、2つの読み値はつねに足すと1になります。誤差関数は釣鐘型の曲線をゼロからxまで積分したもので、ガウス分布を測るあらゆる場面に出てくるのはそのためです。erf(1)は0.842701で、erfc(1)は0.157299なので、相補誤差関数は1から1つ目の読み値を引いたものにすぎません。このページは級数の定義から値を計算します。書かれている言語に誤差関数が組み込まれていないからで、負の入力も正の入力と同じように受け付けます。入力は±6までに限られます。曲線がそれより先で見分けるものを何も残さなくなる点です。

よく引かれる値での誤差関数とその補関数

xerf(x)の値erfc(x)の値
001
0.250.2763260.7236736
0.50.52050.4795001
0.750.7111560.2888444
10.8427010.1572992
1.50.9661050.03389485
20.9953220.004677735
2.50.9995930.000406952
30.9999780.0000220905

どの行も最後の2列をまたいで足すと1になり、それが補関数の定義であり、ここにある数を確かめるいちばん速い方法です。表の上半分は補関数が薄くなっていくところです。x = 2ではまだ4桁ありますが、x = 3まで来ると何かが現れる前にゼロが小数5桁続きます。真ん中の列を上から読むと曲線が平らになっていくのが見えます。0から0.5までの段で範囲の半分を覆い、2より先はすべて残りの0.5パーセントです。小数点はすべてふつうのピリオドです。表のセルは地域ごとに書き分けないからです。

公式

erf x = (2 ÷ √π) ∫₀ˣ e^(−t²) dt erfc x = 1 − erf x

x
測られる値で、単位のないただの数です。負でもよく、その場合の誤差関数は奇関数なので正の答えの符号を変えたものを返します。erf(−1)は−0.842701です。実用的な範囲は−6から6までで、その外では曲線が完全に平らになり、倍精度では値と1とを見分けられません。
e^(−t²)
ガウスの釣鐘、つまり積分される曲線です。この形が誤差関数を重要なものにします。2つの値のあいだでこの曲線が囲む面積が確率なので、同じ積分が正規分布のあらゆる問いに現れ、このページの自然な相棒が正規分布計算になるのです。
√π
積分の前にある規格化の因子で、およそ1.772454です。これがないと曲線全体の積分が1ではなく√πになり、誤差関数は−1から1まで走りません。ここでは変数ではなく定数です。変数に見えるので、そう言っておく価値があります。
erf x
誤差関数そのもので、小数6桁まで印字します。−1から1まで走り、原点でゼロを横切り、x = 1で0.842701に達します。この値は確率ではなく本物の面積です。確率にするには1を足して2で割ります。標準正規分布関数はそうやってこれから組み立てられます。
erfc x
相補誤差関数で、1からerfを引いたもの、大きな負の入力では1から始まりゼロに向かって落ちていきます。桁の幅が途方もなく広いので指数表記で報告します。2つ目の測定というより、同じものを反対の端から読んだもので、erfcは裾の面積です。xがゼロから遠いとき、欲しいのはまさにその裾です。

必要な答えが、書かれたままの誤差関数またはその補関数であるときに使います。本当に欲しいのが正規変数が与えられた値を下回る確率であるなら、正規分布計算が平均と標準偏差を受け取ってその確率を直接返します。同じ数に短い道でたどり着くやり方です。誤差関数はその下にある原始関数で、このページはその原始関数そのものを読み取る場所です。

計算例

  1. 最初に出会う値:x = 1

    1. 級数をx = 1で評価する。数十項で収束する
    2. erf(1)は0.842701になる
    3. 補関数は1からそれを引いたもの:1 - 0.842701 = 0.157299
    4. 2つの読み値を足すと1.000000になる。このページのどの行でも走らせる価値のある検算

    2つの読み値が足すと1になるのは丸めの偶然ではなく、相補という言葉の定義そのものです。面積として読めば、釣鐘曲線の下はすべて中心から1単位以内か、その外側かのどちらかだと言っています。この行は、1標準偏差以内がおよそ68パーセントというおなじみの数字にいちばん直接つながる行でもあります。

  2. 裾が薄くなりはじめる2

    1. erf(2)は0.995322で、曲線はほぼ登りきっている
    2. 補関数は1 - 0.995322 = 0.0046777で、0.5パーセントを下回った
    3. 指数表記ではこの裾は4.677735 × 10⁻³と書かれる
    4. 2つの読み値はやはり1になり、補関数は有効数字4桁まで残っている

    注目すべきは誤差関数ではなく補関数の精度です。1に非常に近い数を1から引くと先頭の桁が失われ、この行までで補関数はすでにその大半を失っています。このページが補関数を小数の桁数ではなく独自の有効桁の扱いで指数表記として報告するのはそのためです。

  3. 補関数が尽きはじめる4

    1. erf(4)の真の値は1からおよそ1.54 × 10⁻⁸を引いたもの
    2. 倍精度では1と見分けが付かないので、誤差関数の列はちょうど1を印字する
    3. 補関数は1 - erfとして計算され、1.541726 × 10⁻⁸を返す
    4. 精度が失われるのはこの引き算のところで、答えに残る良い桁はわずかしかない

    これがこのページの正直な限界で、入力範囲が6で止まる理由です。ここでの補関数は小数8桁まで一致する2つの数の差なので、打ち消し合いのあとに残るわずかな部分です。真の値は1.5417 × 10⁻⁸で、その先頭の数桁が信用できます。x = 6まで来ると2つの倍精度数は等しくなり、引き算は真の値がおよそ2 × 10⁻¹⁷のところでちょうどゼロを返します。

適用限界

入力は±6までに限られます。性能上の限界ではなく精度上の限界です。その先では誤差関数が1に近づきすぎて、倍精度がその差を表せなくなるので、ページは雑音を印字することになります。範囲内にも知っておく価値のある限界があります。補関数は引き算で求められ、xがおよそ4.5を超えるとその引き算が有効数字の大半を打ち消すため、そこでのerfcの値は良い桁をわずかしか持ちません。それはここでは直していませんし、直すにはこの実装の修正ではなく補関数の2つ目の実装が要ります。誤差関数そのものは、範囲全体で最後の1、2単位以内の精度です。返るのは2つの値だけです。標準正規分布関数は出力に含まれません。同じ情報を別の道から取り出したものであり、正規分布計算は平均と標準偏差を手がかりに確率として報告するからです。このページに単位は一切関与しません。入力は純粋な数です。値はこのページのために書かれた級数から計算しており、言語が備えていないのでプラットフォームのライブラリからは取っていません。

よくある質問

誤差関数は何に使うのか
ガウス曲線のうち、中心からある点までのあいだにどれだけ入っているかを測るもので、標準正規分布における確率と同じものです。x = 1での値は0.842701で、1を足して2で割ると0.921351、標準正規変数が平均の両側1標準偏差以内に入る確率になります。
erfcとは何で、erfとどう関係するのか
相補誤差関数で、1から誤差関数を引いたものと定義されるので、このページの2つの読み値はつねに足すとちょうど1になります。後付けではなく独立した関数として存在するのは、大きな入力で欲しくなるのがこちらだからです。x = 4では誤差関数は1に平らになっており、情報をまだ運んでいるのは補関数だけです。
6より大きな値を入れられないのはなぜか
6を超えると測るものが何も残らないからです。x = 6の真の値は1からおよそ2 × 10⁻¹⁷を引いたもので、倍精度はそれを1と見分けられないので、誤差関数の列は1を、補関数はちょうどゼロを印字することになります。この限界は何が表現できるかについての話で、計算がどれだけ大変かではありません。そこでも級数は200項ほどで収束します。
大きな入力で補関数の精度が落ちるのはなぜか
引き算で求めているからです。誤差関数が0.99999999999846256のとき、それを1から引くと有効数字がわずかしか残らず、その手前はすべて打ち消しの雑音です。x = 5での真の補関数は1.5374598 × 10⁻¹²で、このページは1.5364 × 10⁻¹²を返します。誤差関数そのものはこの影響を受けず、主結果がそちらになっている理由もそこにあります。
ここで正規分布の確率は求められるのか
直接には求められず、このページは意図的にそれを用意していません。標準正規分布関数は誤差関数に1を足して2で割れば組み立てられますが、正規分布計算は値だけでなく平均と標準偏差も受け取って確率を直接報告します。その問いには、標準化された数よりもそちらのほうが良い答えです。

参考文献

関連する計算ツール