Error function

From testwiki
Jump to navigation Jump to search

Template:Short description Template:Use dmy dates Template:Distinguish In mathematics, the error function (also called the Gauss error function), often denoted by 𝐞𝐫𝐟, is the functionTemplate:Sfnp erf⁡(z)=2Ο€βˆ«0zeβˆ’t2dt. Template:Infobox mathematical function

The integral here is a complex contour integral which is path-independent because exp⁡(βˆ’t2) is holomorphic on the whole complex plane β„‚. In many applications, the function argument is a real number, in which case the function value is also real.

In some older texts,Template:Sfnp the error function is defined without the factor of 2/Ο€. This nonelementary integral is a sigmoid function that occurs often in probability, statistics, and partial differential equations.

In statistics, for non-negative real values of X, the error function has the following interpretation: for a real random variable Y that is normally distributed with mean 0 and standard deviation 1/2, erf⁡(x) is the probability that Y falls in the range [βˆ’x,x].

Two closely related functions are the complementary error function

erfc⁡(z)=1βˆ’erf⁡(z)

and the imaginary error function

erfi⁡(z)=βˆ’ierf⁡(iz),

where i is the imaginary unit.

Name

The name "error function" and its abbreviation erf were proposed by J. W. L. Glaisher in 1871 on account of its connection with "the theory of probability, and notably the theory of errors".Template:Sfnp The complementary error function was also discussed by Glaisher in a separate publication in the same year.Template:Sfnp For the "law of facility" of errors whose density is given by

f(x)=(cΟ€)1/2eβˆ’cx2

(the normal distribution), Glaisher calculates the probability of an error lying between p and q as

(cΟ€)12∫pqeβˆ’cx2dx=12(erf⁡(qc)βˆ’erf⁡(pc)).

Applications

When the results of a series of measurements are described by a normal distribution with standard deviation Οƒ and expected value zero, then

erf⁡(aΟƒ2)

is the probability that the error of a single measurement lies between βˆ’a and a. This is useful, for example, in determining the bit error rate of a digital communication system.

The error and complementary error functions occur, for example, in solutions of the heat equation when boundary conditions are given by the Heaviside step function.

The error function and its approximations can be used to estimate results that hold with high probability or with low probability. Given a normally distributed random variable X with mean ΞΌ and standard deviation Οƒ and a constant L>ΞΌ, it can be shown (via integration by substitution) that

Pr⁡[X≀L]=12+12erf⁡(Lβˆ’ΞΌ2Οƒ)β‰ˆAexp⁡(βˆ’B(Lβˆ’ΞΌΟƒ)2)

where A and B are certain numeric constants. If L is sufficiently far from the mean, specifically, ΞΌβˆ’Lβ‰₯Οƒlog⁡(k), then

Pr⁡[X≀L]≀Aexp⁡(βˆ’Blog⁡(k))=AkB

and so the probability goes to 0 as kβ†’βˆž.

The probability for X being in the interval [La,Lb] can be derived as Pr⁡[La≀X≀Lb]=∫LaLb12πσexp⁡(βˆ’(xβˆ’ΞΌ)22Οƒ2)dx=12(erf⁡(Lbβˆ’ΞΌ2Οƒ)βˆ’erf⁡(Laβˆ’ΞΌ2Οƒ)).

Properties

Template:Multiple image

The error function is an odd function. This directly results from the fact that the integrand eβˆ’t2 is an even function (since the antiderivative of an even function which is zero at the origin is an odd function, and vice versa).

Since the error function is an entire function which maps real numbers to real numbers, for any complex number z,

erf⁡(zΒ―)=erf⁡(z)β€Ύ

where zΒ― denotes the complex conjugate of z.

The error function at ∞ is exactly 1 (see Gaussian integral). At the real axis, erf⁡(z) approaches 1 at zβ†’βˆž and βˆ’1 at zβ†’βˆ’βˆž. At the imaginary axis, it tends to Β±i∞.

Taylor series

The error function is an entire function; it has no singularities (except at infinity) and its Taylor expansion always converges. For x≫1, however, cancellation of leading terms makes the Taylor expansion impractical.

The defining integral cannot be evaluated in closed form in terms of elementary functions (see Liouville's theorem), but by expanding the integrand eβˆ’z2 into its Maclaurin series, integrating term by term,Template:Sfnp and using the fact that erf⁡(0)=0, one obtains the error function's Maclaurin series as: erf⁡(z)=2Ο€βˆ‘n=0∞(βˆ’1)nz2n+1n!(2n+1)=2Ο€(zβˆ’z33+z510βˆ’z742+z9216βˆ’β‹―) which holds for every complex number z. The denominator terms form sequence A007680 in the OEIS. This is a special case of Kummer's function:

erf⁡(z)=2zΟ€1F1(12,32,βˆ’z2).

For iterative calculation of the above series, the following alternative formulation may be useful: erf⁡(z)=2Ο€βˆ‘n=0∞(z∏k=1nβˆ’(2kβˆ’1)z2k(2k+1))=2Ο€βˆ‘n=0∞z2n+1∏k=1nβˆ’z2k, because

βˆ’(2kβˆ’1)z2k(2k+1)

expresses the multiplier to turn the k-th term into the (k+1)-th term (considering z as the first term).

The imaginary error function has a similar Maclaurin series: erfi⁡(z)=2Ο€βˆ‘n=0∞z2n+1n!(2n+1)=2Ο€(z+z33+z510+z742+z9216+β‹―) which holds for every complex number z.

Derivative and integral

The derivative of the error function follows immediately from its definition: ddzerf⁡(z)=2Ο€eβˆ’z2. From this, the derivative of the imaginary error function is also immediate: ddzerfi⁡(z)=2Ο€ez2.Higher order derivatives are given by erf(k)(z)=2(βˆ’1)kβˆ’1π𝐻kβˆ’1(z)eβˆ’z2=2Ο€dkβˆ’1dzkβˆ’1(eβˆ’z2), where the Hk are the physicists' Hermite polynomials.[1]

An antiderivative of the error function, obtainable by integration by parts, is ∫erf⁡(z)dz=zerf⁡(z)+eβˆ’z2Ο€+C. An antiderivative of the imaginary error function, also obtainable by integration by parts, is ∫erfi⁡(z)dz=zerfi⁡(z)βˆ’ez2Ο€+C.

BΓΌrmann series

An expansion which converges more rapidly for all real values of x than a Taylor expansionTemplate:Sfnp is obtained by using BΓΌrmann's theorem:[2] erf⁡(x)=2Ο€sgn⁡(x)β‹…1βˆ’eβˆ’x2(1βˆ’112(1βˆ’eβˆ’x2)βˆ’7480(1βˆ’eβˆ’x2)2βˆ’5896(1βˆ’eβˆ’x2)3βˆ’β‹―)=2Ο€sgn⁡(x)β‹…1βˆ’eβˆ’x2(Ο€2+βˆ‘k=1∞ckeβˆ’kx2) where sgn is the sign function. By keeping only the first two coefficients and choosing c1=31/200 and c2=βˆ’341/8000, the resulting approximation shows its largest relative error at x=Β±1.40587, where it is less than 0.0034361: erf⁡(x)β‰ˆ2Ο€sgn⁡(x)β‹…1βˆ’eβˆ’x2(Ο€2+31200eβˆ’x2βˆ’3418000eβˆ’2x2).

Inverse functions

Inverse error function

Given a complex number z, there is not a unique complex number w satisfying erf⁡(w)=z, so a true inverse function would be multivalued. However, for βˆ’1<x<1, there is a unique real number denoted erfβˆ’1(x) satisfying

erf⁡(erfβˆ’1(x))=x.

The inverse error function is usually defined with domain (βˆ’1,1), and it is restricted to this domain in many computer algebra systems. However, it can be extended to the disk |z|<1 of the complex plane, using the Maclaurin series[3] erfβˆ’1(z)=βˆ‘k=0∞ck2k+1(Ο€2z)2k+1, where c0=1 and ck=βˆ‘m=0kβˆ’1cmckβˆ’1βˆ’m(m+1)(2m+1)={1,1,76,12790,43692520,3480716200,…}.

So we have the series expansion (common factors have been canceled from numerators and denominators):

erfβˆ’1(z)=Ο€2(z+Ο€12z3+7Ο€2480z5+127Ο€340320z7+4369Ο€45806080z9+34807Ο€5182476800z11+β‹―).

(After cancellation the numerator and denominator values in Template:Oeis and Template:Oeis respectively; without cancellation the numerator terms are values in Template:Oeis.) The error function's value at ±∞ is equal to ±1.

For |z|<1, we have erf⁡(erfβˆ’1(z))=z.

The inverse complementary error function is defined as erfcβˆ’1(1βˆ’z)=erfβˆ’1(z). For real x, there is a unique real number erfiβˆ’1(x) satisfying erfi⁡(erfiβˆ’1(x))=x. The inverse imaginary error function is defined as erfiβˆ’1(x).[4]

For any real x, Newton's method can be used to compute erfiβˆ’1(x), and for βˆ’1≀x≀1, the following Maclaurin series converges:

erfiβˆ’1(z)=βˆ‘k=0∞(βˆ’1)kck2k+1(Ο€2z)2k+1,

where ck is defined as above.

Asymptotic expansion

A useful asymptotic expansion of the complementary error function (and therefore also of the error function) for large real x is erfc⁡(x)=eβˆ’x2xΟ€(1+βˆ‘n=1∞(βˆ’1)n1β‹…3β‹…5β‹―(2nβˆ’1)(2x2)n)=eβˆ’x2xΟ€βˆ‘n=0∞(βˆ’1)n(2nβˆ’1)!!(2x2)n, where (2nβˆ’1)!! is the double factorial of 2nβˆ’1, i.e. the product of all odd numbers up to 2nβˆ’1. This series diverges for every finite x, and its meaning as asymptotic expansion is that for any integer Nβ‰₯1 one has

erfc⁡(x)=eβˆ’x2xΟ€βˆ‘n=0Nβˆ’1(βˆ’1)n(2nβˆ’1)!!(2x2)n+RN(x),

where the remainder is

RN(x):=(βˆ’1)N(2Nβˆ’1)!!Ο€β‹…2Nβˆ’1∫x∞tβˆ’2Neβˆ’t2dt,

which follows easily by induction, writing

eβˆ’t2=βˆ’12tddteβˆ’t2

and integrating by parts. The asymptotic behavior of the remainder term is

RN(x)=O(xβˆ’(1+2N)eβˆ’x2)

as xβ†’βˆž. This can be found by

RN(x)∝∫x∞tβˆ’2Neβˆ’t2dt=eβˆ’x2∫0∞(t+x)βˆ’2Neβˆ’t2βˆ’2txdt≀eβˆ’x2∫0∞xβˆ’2Neβˆ’2txdt∝xβˆ’(1+2N)eβˆ’x2.

For large enough values of x, only the first few terms of this asymptotic expansion are needed to obtain a good approximation of erfc⁡(x) (while for not too large values of x, the above Taylor expansion at 0 provides a very fast convergence).

Continued fraction expansion

A continued fraction expansion of the complementary error function was found by Laplace:Template:SfnpTemplate:Sfnp erfc⁡(z)=zΟ€eβˆ’z21z2+a11+a2z2+a31+β‹― where am=m2.

Factorial series

The inverse factorial series

erfc⁡(z)=eβˆ’z2Ο€zβˆ‘n=0∞(βˆ’1)nQn(z2+1)(n)=eβˆ’z2Ο€z[1βˆ’121(z2+1)+141(z2+1)(z2+2)βˆ’β‹―]

converges for Re⁡(z2)>0. Here

Qn=1Ο€βˆ«0βˆžΟ„(Ο„βˆ’1)β‹―(Ο„βˆ’n+1)Ο„βˆ’12eβˆ’Ο„dΟ„=βˆ‘k=0ns(n,k)(12)(k)=βˆ‘k=0ns(n,k)(2kβˆ’1)!!2k

where z(n) denotes the rising factorial, and s(n,k) denotes a signed Stirling number of the first kind.[5]Template:Sfnp The Taylor series can be written in terms of the double factorial:

erf⁡(z)=2Ο€βˆ‘n=0∞(βˆ’2)n(2nβˆ’1)!!(2n+1)!z2n+1.

Bounds and numerical approximations

Approximation with elementary functions

Abramowitz and Stegun give several approximations of varying accuracy (equations 7.1.25–28) from C. Hastings, Jr.[6]. This allows one to choose the fastest approximation suitable for a given application. In order of increasing accuracy, they are: erf⁡(x)β‰ˆ1βˆ’1(1+a1x+a2x2+a3x3+a4x4)4,xβ‰₯0 (maximum error: Template:Val) Template:Pb where Template:Math, Template:Math, Template:Math, Template:Math

erf⁡(x)β‰ˆ1βˆ’(a1t+a2t2+a3t3)eβˆ’x2,t=11+px,xβ‰₯0 (maximum error: Template:Val) Template:Pb where Template:Math, Template:Math, Template:Math, Template:Math

erf⁡(x)β‰ˆ1βˆ’1(1+a1x+a2x2+β‹―+a6x6)16,xβ‰₯0 (maximum error: Template:Val) Template:Pb where Template:Math, Template:Math, Template:Math, Template:Math, Template:Math, Template:Math

erf⁡(x)β‰ˆ1βˆ’(a1t+a2t2+β‹―+a5t5)eβˆ’x2,t=11+px (maximum error: Template:Val) Template:Pb where Template:Math, Template:Math, Template:Math, Template:Math, Template:Math, Template:Math Template:Pb

One can improve the accuracy of the Hastings approximation by extending it with three extra parameters, erf⁡(x)β‰ˆ1βˆ’(a1t+a2t2+β‹―+a5t5+a6t6+a7t7)eβˆ’x2,t=11+p1x+p2x2 where p1 = 0.406742016006509, p2 = 0.0072279182302319, a1 = 0.316879890481381, a2 = -0.138329314150635, a3 = 1.08680830347054, a4 = -1.11694155120396, a5 = 1.20644903073232, a6 = -0.393127715207728, a7 = 0.0382613542530727. The maximum error of this approximation is about Template:Val. The parameters are obtained by fitting the extended approximation to the accurate values of the error function using the following Python code. Template:Collapse top

import numpy as np
from math import erf, exp, sqrt
from scipy.optimize import least_squares

#
# Extended A&S approximation:
# erf(x) β‰ˆ 1 βˆ’ t * exp(βˆ’x^2) * (a1 + a2*t + a3*t^2 + ... + a7*t^6)
# where now
#      t = 1 / (1 + p1*x + p2*x^2)
# We fit parameters p1, p2, a1..a7 over x in [0, 10].
#


def approx_erf(params, x):
    p1 = params[0]
    p2 = params[1]
    a = params[2:]

    t = 1.0 / (1.0 + p1 * x + p2 * x * x)

    poly = np.zeros_like(x)
    tt = np.ones_like(x)  # t^0

    # polynomial: a1*t^0 + a2*t^1 + ... + a7*t^6
    for ak in a:
        poly += ak * tt
        tt *= t

    return 1.0 - t * np.exp(-x * x) * poly


def residuals(params, xs, ys):
    return approx_erf(params, xs) - ys


#
# Prepare data for fitting
#

N = 300
xmin = 0
xmax = 10
xs = np.linspace(xmin, xmax, N)
ys = np.array([erf(x) for x in xs], dtype=float)

#
# Initial guess for parameters
# Start from original A&S values and extend them conservatively
#

p1_0 = 0.3275911  # original A&S p
p2_0 = 0.0  # new denominator parameter

# original A&S 5 coefficients, add two => 7 in total
a0 = [
    0.254829592,
    -0.284496736,
    1.421413741,
    -1.453152027,
    1.061405429,
    0.0,  # new term
    0.0,  # another new term
]

params0 = np.array([p1_0, p2_0] + a0, dtype=float)

#
# Fit using nonlinear least squares (Levenberg–Marquardt)
#

result = least_squares(
    residuals, params0, args=(xs, ys), xtol=1e-14, ftol=1e-14, gtol=1e-14, max_nfev=5000
)

params = result.x
p1_fit = params[0]
p2_fit = params[1]
a_fit = params[2:]

#
# Print fitted parameters
#

print("\nFitted parameters:")
print(f"p1 = {p1_fit:.15g},")
print(f"p2 = {p2_fit:.15g},")
for i, ai in enumerate(a_fit, 1):
    print(f"a{i} = {ai:.15g},")

#
# Evaluate approximation error
#

approx_vals = approx_erf(params, xs)
abs_err = np.abs(approx_vals - ys)

print(f"\nMaximum absolute error on [{xmin},{xmax}]:", np.max(abs_err))
print("RMS error:", np.sqrt(np.mean(abs_err**2)))
print("Done.")

Template:Collapse bottom


All of these approximations are valid for Template:Math. To use these approximations for negative Template:Mvar, use the fact that Template:Math is an odd function, so Template:Math.


Exponential bounds and a pure exponential approximation for the complementary error function are given by[7] erfc⁡(x)≀12eβˆ’2x2+12eβˆ’x2≀eβˆ’x2,x>0erfc⁡(x)β‰ˆ16eβˆ’x2+12eβˆ’43x2,x>0.

The above have been generalized to sums of Template:Mvar exponentials[8] with increasing accuracy in terms of Template:Mvar so that Template:Math can be accurately approximated or bounded by Template:Math, where Q~(x)=βˆ‘n=1Naneβˆ’bnx2. In particular, there is a systematic methodology to solve the numerical coefficients Template:Math that yield a minimax approximation or bound for the closely related Q-function: Template:Math, Template:Math, or Template:Math for Template:Math. The coefficients Template:Math for many variations of the exponential approximations and bounds up to Template:Math have been released to open access as a comprehensive dataset.[9]


A tight approximation of the complementary error function for Template:Math is given by Karagiannidis & Lioumpas (2007),[10] who showed for the appropriate choice of parameters Template:Math that erfc⁡(x)β‰ˆ(1βˆ’eβˆ’Ax)eβˆ’x2BΟ€x. They determined Template:Math, which gave a good approximationTemplate:Which? for all Template:Math. Alternative coefficients are also available for tailoring accuracy for a specific application or transforming the expression into a tight bound.[11]

A single-term lower bound is[12] erfc⁡(x)β‰₯2eΟ€Ξ²βˆ’1Ξ²eβˆ’Ξ²x2,xβ‰₯0,Ξ²>1, where the parameter Template:Mvar can be picked to minimize error on the desired interval of approximation.

Another approximation is given by Sergei Winitzki using his "global PadΓ© approximations":[13][14]Template:Rp erf⁡(x)β‰ˆsgn⁡xβ‹…1βˆ’exp⁡(βˆ’x24Ο€+ax21+ax2) where a=8(Ο€βˆ’3)3Ο€(4βˆ’Ο€)β‰ˆ0.140012. This is designed to be very accurate in the neighborhoods of 0 and infinity, and the relative error is less than 0.00035 for all real Template:Mvar. Using the alternate value Template:Math reduces the maximum relative error to about 0.00013.[15] Template:Pb

The extended "global Pade" approximation, erf⁡(x)β‰ˆsgn⁡xβ‹…1βˆ’exp⁡(βˆ’x24+0.880877880079853x2+0.144026670907584x4+0.0077581300270021x6Ο€+0.786235558186528x2+0.128368576906837x4+0.00773380006014367x6), provides a maximum error of about Template:Val, as demonstrated by the following Python script. Template:Collapse top

import numpy,math
from scipy.optimize import least_squares

# approximation to erf(x)

def approx_erf(p,x):
	frac=(4+p[0]*x**2+p[1]*x**4+p[2]*x**6)/(
		math.pi+p[3]*x**2+p[4]*x**4+p[5]*x**6)
	return numpy.sign(x)*numpy.sqrt(
		1-numpy.exp(-x*x*frac))

def residuals(params, xs, ys):
    return approx_erf(params, xs) - ys

# data for fitting

N = 200
xmin = 0
xmax = 9
xs = numpy.linspace(xmin, xmax, N)
ys = numpy.array([math.erf(x) for x in xs], dtype=float)
params0 = numpy.array([0.9,0.1,0.008,0.8,0.1,0.008], dtype=float)

# fitting

result = least_squares(
    residuals, params0, args=(xs, ys),
	xtol=1e-14, ftol=1e-14, gtol=1e-14, max_nfev=5000
)
params = result.x

# print out fitted parameters

print("\nFitted parameters:")
for i, pi in enumerate(params, 0):
    print(f"p{i} = {pi:.15g},")

# evaluate approximation error

approx_vals = approx_erf(params, xs)
abs_err = numpy.abs(approx_vals - ys)

print(f"\nMaximum absolute error on [{xmin},{xmax}]:", numpy.max(abs_err))
print("RMS error:", numpy.sqrt(numpy.mean(abs_err**2)))
print("Done.")

Template:Collapse bottom

Winitzki's approximation can be inverted to obtain an approximation for the inverse error function: erfβˆ’1(x)β‰ˆsgn⁡xβ‹…(2Ο€a+ln⁡(1βˆ’x2)2)2βˆ’ln⁡(1βˆ’x2)aβˆ’(2Ο€a+ln⁡(1βˆ’x2)2).

An approximation with a maximal error of Template:Val for any real argument is:[16] erf⁡(x)={1βˆ’Ο„,xβ‰₯0Ο„βˆ’1,x<0Ο„=tβ‹…exp⁡(βˆ’x2βˆ’1.26551223+1.00002368t+0.37409196t2+0.09678418t3βˆ’0.18628806t4+0.27886807t5βˆ’1.13520398t6+1.48851587t7βˆ’0.82215223t8+0.17087277t9)t=11+12|x|

An approximation of erfc with a maximum relative error less than 2βˆ’53 (β‰ˆ1.1Γ—10βˆ’16) in absolute value is:[17] for Template:Nowrap erfc⁡(x)=(0.56418958354775629x+2.06955023132914151)(x2+2.71078540045147805x+5.80755613130301624x2+3.47954057099518960x+12.06166887286239555)(x2+3.47469513777439592x+12.07402036406381411x2+3.72068443960225092x+8.44319781003968454)(x2+4.00561509202259545x+9.30596659485887898x2+3.90225704029924078x+6.36161630953880464)(x2+5.16722705817812584x+9.12661617673673262x2+4.03296893109262491x+5.13578530585681539)(x2+5.95908795446633271x+9.19435612886969243x2+4.11240942957450885x+4.48640329523408675)eβˆ’x2 and for x<0 erfc⁡(x)=2βˆ’erfc⁡(βˆ’x)

A simple approximation for real-valued arguments can be done through hyperbolic functions: erf⁡(x)β‰ˆz(x)=tanh⁡(2Ο€(x+11123x3)) which keeps the absolute difference Template:Nowrap

Since the error function and the Gaussian Q-function are closely related through the identity erfc⁡(x)=2Q(2x) or equivalently Q(x)=12erfc⁡(x2), bounds developed for the Q-function can be adapted to approximate the complementary error function. A pair of tight lower and upper bounds on the Gaussian Q-function for positive arguments x∈[0,∞) was introduced by Abreu (2012)[18] based on a simple algebraic expression with only two exponential terms: xβ‰₯012erfc⁡(x2)β‰₯112eβˆ’x2+12Ο€(x+1)eβˆ’x2/2≀150eβˆ’x2+12(x+1)eβˆ’x2/2125eβˆ’2x2+1x+1eβˆ’x2β‰₯erfc⁡(x)β‰₯16eβˆ’2x2+122Ο€(x+1)eβˆ’x2

These bounds stem from a unified form QB(x;a,b)=exp⁡(βˆ’x2)a+exp⁡(βˆ’x2/2)b(x+1), where the parameters a and b are selected to ensure the bounding properties: for the lower bound, aL=12 and bL=2Ο€, and for the upper bound, aU=50 and bU=2. These expressions maintain simplicity and tightness, providing a practical trade-off between accuracy and ease of computation. They are particularly valuable in theoretical contexts, such as communication theory over fading channels, where both functions frequently appear. Additionally, the original Q-function bounds can be extended to Qn(x) for positive integers n via the binomial theorem, suggesting potential adaptability for powers of erfc⁡(x), though this is less commonly required in error function applications.

Table of values

Template:Further

Template:Math Template:Math Template:Math
0 Template:Val Template:Val
0.02 Template:Val Template:Val
0.04 Template:Val Template:Val
0.06 Template:Val Template:Val
0.08 Template:Val Template:Val
0.1 Template:Val Template:Val
0.2 Template:Val Template:Val
0.3 Template:Val Template:Val
0.4 Template:Val Template:Val
0.5 Template:Val Template:Val
0.6 Template:Val Template:Val
0.7 Template:Val Template:Val
0.8 Template:Val Template:Val
0.9 Template:Val Template:Val
1 Template:Val Template:Val
1.1 Template:Val Template:Val
1.2 Template:Val Template:Val
1.3 Template:Val Template:Val
1.4 Template:Val Template:Val
1.5 Template:Val Template:Val
1.6 Template:Val Template:Val
1.7 Template:Val Template:Val
1.8 Template:Val Template:Val
1.9 Template:Val Template:Val
2 Template:Val Template:Val
2.1 Template:Val Template:Val
2.2 Template:Val Template:Val
2.3 Template:Val Template:Val
2.4 Template:Val Template:Val
2.5 Template:Val Template:Val
3 Template:Val Template:Val
3.5 Template:Val Template:Val

Complementary error function

Plot of the error function erf(z) in the complex plane from Template:Nobr to Template:Nobr

The complementary error function, denoted Template:Math, is defined as erfc⁡(x)=1βˆ’erf⁡(x)=2Ο€βˆ«x∞eβˆ’t2dt=eβˆ’x2erfcx⁡(x), which also defines Template:Math, the scaled complementary error function[19] (which can be used instead of Template:Math to avoid arithmetic underflow[19][20]). Another form of Template:Math for Template:Math is known as Craig's formula, after its discoverer:[21] erfc⁡(x∣xβ‰₯0)=2Ο€βˆ«0Ο€2exp⁡(βˆ’x2sin2ΞΈ)dΞΈ. This expression is valid only for positive values of Template:Mvar, but can be used in conjunction with Template:Math to obtain Template:Math for negative values. This form is advantageous in that the range of integration is fixed and finite. An extension of this expression for the Template:Math of the sum of two non-negative variables is[22] erfc⁡(x+y∣x,yβ‰₯0)=2Ο€βˆ«0Ο€2exp⁡(βˆ’x2sin2ΞΈβˆ’y2cos2ΞΈ)dΞΈ.

Imaginary error function

Plot of the imaginary error function erfi(z) in the complex plane from Template:Nobr to Template:Nobr

The imaginary error function, denoted Template:Math, is defined as erfi⁡(x)=βˆ’ierf⁡(ix)=2Ο€βˆ«0xet2dt=2Ο€ex2D(x), where Template:Math is the Dawson function (which can be used instead of Template:Math to avoid arithmetic overflow[19]).

Despite the name "imaginary error function", Template:Math is real when Template:Mvar is real.

When the error function is evaluated for arbitrary complex arguments Template:Mvar, the resulting complex error function is usually discussed in scaled form as the Faddeeva function: w(z)=eβˆ’z2erfc⁡(βˆ’iz)=erfcx⁡(βˆ’iz).

Cumulative distribution function

The normal cumulative distribution function plotted in the complex plane

The error function is essentially identical to the standard normal cumulative distribution function, denoted Template:Math, also named Template:Math by some software languagesTemplate:Citation needed, as they differ only by scaling and translation. Indeed, Ξ¦(x)=12Ο€βˆ«βˆ’βˆžxeβˆ’t22dt=12(1+erf⁡(x2))=12erfc⁡(βˆ’x2) or rearranged for Template:Math and Template:Math: erf⁡(x)=2Ξ¦(x2)βˆ’1erfc⁡(x)=2Ξ¦(βˆ’x2)=2(1βˆ’Ξ¦(x2)).

Consequently, the error function is also closely related to the Q-function, which is the tail probability of the standard normal distribution. The Q-function can be expressed in terms of the error function as Q(x)=12βˆ’12erf⁡(x2)=12erfc⁡(x2).

The inverse of Template:Math is known as the normal quantile function, or probit function and may be expressed in terms of the inverse error function as probit⁡(p)=Ξ¦βˆ’1(p)=2erfβˆ’1(2pβˆ’1)=βˆ’2erfcβˆ’1(2p).

The standard normal cdf is used more often in probability and statistics, and the error function is used more often in other branches of mathematics.

The error function is a special case of the Mittag-Leffler function, and can also be expressed as a confluent hypergeometric function (Kummer's function): erf⁡(x)=2xΟ€M(12,32,βˆ’x2).

It has a simple expression in terms of the Fresnel integral.Template:Elucidate

In terms of the regularized gamma function Template:Mvar and the incomplete gamma function, erf⁡(x)=sgn⁡(x)β‹…P(12,x2)=sgn⁡(x)πγ(12,x2).Template:Math is the sign function.

Iterated integrals of the complementary error function

The iterated integrals of the complementary error function are defined by[23] inerfc⁡(z)=∫z∞inβˆ’1erfc⁡(ΞΆ)dΞΆi0erfc⁡(z)=erfc⁡(z)i1erfc⁡(z)=ierfc⁡(z)=1Ο€eβˆ’z2βˆ’zerfc⁡(z)i2erfc⁡(z)=14(erfc⁡(z)βˆ’2zierfc⁡(z))

The general recurrence formula is 2nβ‹…inerfc⁡(z)=inβˆ’2erfc⁡(z)βˆ’2zβ‹…inβˆ’1erfc⁡(z)

They have the power series inerfc⁡(z)=βˆ‘j=0∞(βˆ’z)j2nβˆ’jj!Ξ“(1+nβˆ’j2), from which follow the symmetry properties i2merfc⁡(βˆ’z)=βˆ’i2merfc⁡(z)+βˆ‘q=0mz2q22(mβˆ’q)βˆ’1(2q)!(mβˆ’q)! and i2m+1erfc⁡(βˆ’z)=i2m+1erfc⁡(z)+βˆ‘q=0mz2q+122(mβˆ’q)βˆ’1(2q+1)!(mβˆ’q)!.

Implementations

As real function of a real argument

As complex function of a complex argument

  • libcerf, numeric C library for complex error functions, provides the complex functions cerf, cerfc, cerfcx and the real functions erfi, erfcx with approximately 13–14 digits precision, based on the Faddeeva function as implemented in the MIT Faddeeva Package

Notes

Template:Reflist

References

Further reading

Template:Nonelementary Integral Template:Authority control