誤差関数erf(x)・相補誤差関数erfc(x)を安定計算
実数xを入力し、誤差関数erf(x)と相補誤差関数erfc(x)を、−26から26の有界な二重精度範囲で同時計算します。
計算結果
- 誤差関数 erf(x)
- —
- 相補誤差関数 erfc(x)
- —
使い方
- 評価したい実数xを−26から26の範囲で入力します。
- 計算を実行し、erf(x)とerfc(x)を別々の結果欄で確認します。
- 必要に応じて両者の和が丸め誤差の範囲で1になることや、符号反転時の対称性を検算します。
計算式・考え方
erf(x)=2/√π∫₀ˣexp(−t²)dt、erfc(x)=2/√π∫ₓ∞exp(−t²)dt=1−erf(x)です。標準正規CDFをΦとするとerf(x)=2Φ(x√2)−1、erfc(x)=2SF(x√2)ですが、本実装は小さいxの減算桁落ちと正の大きなxの上側確率消失を避けるため、共有の専用erf・erfc named functionを直接評価します。
注意事項
- x=0では積分区間の長さが0なのでerf(0)=0、erfc(0)=1です。これは実装の中心境界であり、非常に小さいxでもerfが単純なCDF差の丸めで0へ消えないことを確認する基準になります。xが0付近ではerf(x)≈2x/√πとなるため、符号と大きさを素早く検算できます。
- erfは奇関数でerf(−x)=−erf(x)、erfcはerfc(−x)=2−erfc(x)です。正負の入力で結果を比較すると、引数の符号や相補値の取り違えを発見できます。erfcの値域は実数上で0から2であり、負のxに対して1を超える値が出ても異常ではありません。
- 正の大きなxではerf(x)は二重精度で1へ丸められる一方、erfc(x)はまだ小さな正値を持つことがあります。たとえばx=8付近のerfcは約10の−29乗です。1−erf(x)を後から引くと0になるため、裾確率や符号誤り率では最初からerfc結果欄を使ってください。
- 入力上限を|x|≤26へ固定しました。これは任意精度ページの再現ではなく、IEEE 754 binary64で専用erfcの正の裾を有限かつ有意な範囲として扱うためです。上限付近ではerfや負側erfcが1または2へ丸められる場合があり、表示桁を増やしても失われた差は復元できません。
- erfとerfcは同じ情報を相補的に表しますが、数値計算では用途が違います。中央付近や符号を含む量にはerf、正側の小さい残差にはerfcが適しています。二つの値を同時表示することで、毎回1から引き直さず、安定な側をそのまま後続式へ転記できます。
- 定義はNIST Digital Library of Mathematical Functions(DLMF)の§7.2 Error Functionsと§7.17 Inverse Error Functionsを2026年7月13日に確認しました。erf(x)=2/√π∫[0,x]exp(−t²)dt、erfc(x)=2/√π∫[x,∞]exp(−t²)dt=1−erf(x)という実数主枝です。
- 標準正規分布との関係はNIST DLMF §7.1のP(z)=Φ(z)=erfc(−z/√2)/2と、SciPy公式ドキュメントのscipy.special.ndtr、erf、erfc、erfinv、erfcinvを2026年7月13日に照合しました。本文のΦは平均0・標準偏差1の標準正規分布の下側累積確率を表します。
- 実装は共有のCephes型erf/erfc有理評価と、標準正規分位点を用いる逆関数を直接呼びます。erfを2Φ(x√2)−1の減算だけで評価するとxが0に近いとき有効桁を失うため、前向き計算では専用erfを使い、正の大きなxの小さい相補値は専用erfcで直接求めます。
- 対象は実数引数の二重精度計算です。複素誤差関数、虚数誤差関数erfi、Faddeeva関数、スケーリング相補誤差関数erfcxは扱いません。高精度桁数を選ぶ機能もなく、結果欄は最大15桁を目安に表示します。任意精度が必要なら専用の多倍長ライブラリを使ってください。
- 入力は有限の十進数へ限定し、対応範囲外を無限大や巨大な代替値へ置き換えません。逆関数では数学的な端点が無限大になるため、有限scalarというページ契約に合わせて端点を拒否します。入力制約に違反した場合は結果を丸めて続行せず、該当欄へエラーを表示してfail-closedで停止します。
- 計算式はschema v3の宣言的ASTにあるコード所有のnamed functionだけです。文字列を実行するevalやnew Functionを使わず、外部API、CDN、fetch、XHR、WebSocketにも接続しません。入力値と計算結果は利用者の端末内だけで処理され、サーバーや第三者へ送信・保存されません。
- 誤差関数は正規分布、拡散方程式、熱伝導、信号処理などに現れますが、このページは式の数値値だけを返します。物質定数、境界条件、単位、測定誤差、モデル妥当性は入力に含めません。工学設計や安全判定へ使う場合は、元の式の無次元化と採用規格を別に検証してください。
- 別ソフトと照合するときは、erfとerfcのどちらか、引数に√2の倍率があるか、下側確率と上側確率のどちらかを確認してください。標準正規CDF Φ(x)はerf(x)そのものではなく、Φ(x)=(1+erf(x/√2))/2です。似た記号でも尺度が違えば同じ入力値に対する結果は一致しません。
- 実数の二重精度による特殊関数値です。複素数、任意精度、個別の工学モデル判定は扱いません。
よくある質問
erf(x)とerfc(x)の和は必ず1ですか?
数学的には1です。二重精度の丸めにより最終桁に差が出る場合があります。
負のxでerfcが1より大きいのは誤りですか?
誤りではありません。erfc(−x)=2−erfc(x)なので実数上の値域は0から2です。
なぜerfcを1−erfで計算しないのですか?
正の大きなxでは小さい差が丸めで0になるため、専用の相補評価を使います。
複素数の誤差関数も計算できますか?
できません。このページは有限の実数入力と実数結果だけを扱います。
入力した実数は利用者の端末内だけで計算されます。外部へ送信・保存せず、氏名、測定対象、設計情報などの個人情報・機密情報を入力する欄もありません。