This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


The Dirac delta distribution

MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.


dirac(x, n)


dirac(x) represents the Dirac delta distribution.

dirac(x, n) represents the n-th derivative of the delta distribution.

The calls dirac(x, 0) and dirac(x) are equivalent.

If the argument x represents a non-zero number, then 0 is returned. If x is a non-real number of domain type DOM_COMPLEX, then undefined is returned. For all other arguments, a symbolic function call is returned.

dirac does not have a predefined value at the origin. Use

unprotect(dirac): dirac(0) := myValue:


dirac(float(0)) := myFloatValue: protect(dirac):

to assign a value (e.g., infinity).

For univariate linear expressions, the simplification rule

is implemented for real numerical values a.

The integration function int treats dirac as the usual delta distribution. Cf. Example 3.

Environment Interactions

dirac reacts to properties of identifiers.


Example 1

dirac returns 0 for arguments representing non-zero real numbers:

dirac(-3), dirac(3/2), dirac(2.1, 1), 
dirac(3*PI), dirac(sqrt(3), 3)

Arguments of domain type DOM_COMPLEX yield undefined:

dirac(1 + I), dirac(2/3 + 7*I), dirac(0.1*I, 1), dirac(ln(-5))

A symbolic call is returned for other arguments:

dirac(0), dirac(x), dirac(x + I, 2), dirac(x, n)

dirac(2*x - 1, n)

A natural value for dirac(0) is infinity:

unprotect(dirac): dirac(0) := infinity: dirac(0)

delete dirac(0): protect(dirac): dirac(0)

Example 2

dirac reacts to assumptions set by assume:

assume(x < 0): dirac(x)

assume(x, Type::Real): assume(x <> 0, _and): dirac(x)


Example 3

The symbolic integration function int treats dirac as the delta distribution:

int(f(x)*dirac(x - y^2), x = -infinity..infinity)

int(int(f(x, y)*dirac(x - y^2), x = -infinity..infinity),
    y = -1..1)

The indefinite integral of dirac involves the sign function:

int(f(x)*dirac(x), x), int(f(x)*dirac(x, 1), x)

int can handle the distribution only if the argument of dirac is linear in the integration variable:

int(f(x)*dirac(2*x - 3), x = -10..10),
int(f(x)*dirac(x^2), x = -10..10)

Also note that dirac should not be used for numerical integration, since the numerical algorithm will typically fail to detect the delta peak:

numeric::int(dirac(x - 3), x = -10..10)



An arithmetical expression


An arithmetical expression representing a nonnegative integer

Return Values

Arithmetical expression.

Overloaded By


See Also

MuPAD Functions

Was this topic helpful?