Generalized functions¶
Sage implements several generalized functions (also known as distributions) such as Dirac delta, Heaviside step functions. These generalized functions can be manipulated within Sage like any other symbolic functions.
AUTHORS:
Golam Mortuza Hossain (2009-06-26): initial version
EXAMPLES:
Dirac delta function:
sage: dirac_delta(x) # needs sage.symbolic
dirac_delta(x)
>>> from sage.all import *
>>> dirac_delta(x) # needs sage.symbolic
dirac_delta(x)
dirac_delta(x) # needs sage.symbolic
Heaviside step function:
sage: heaviside(x) # needs sage.symbolic
heaviside(x)
>>> from sage.all import *
>>> heaviside(x) # needs sage.symbolic
heaviside(x)
heaviside(x) # needs sage.symbolic
Unit step function:
sage: unit_step(x) # needs sage.symbolic
unit_step(x)
>>> from sage.all import *
>>> unit_step(x) # needs sage.symbolic
unit_step(x)
unit_step(x) # needs sage.symbolic
Signum (sgn) function:
sage: sgn(x) # needs sage.symbolic
sgn(x)
>>> from sage.all import *
>>> sgn(x) # needs sage.symbolic
sgn(x)
sgn(x) # needs sage.symbolic
Kronecker delta function:
sage: m, n = var('m,n') # needs sage.symbolic
sage: kronecker_delta(m, n) # needs sage.symbolic
kronecker_delta(m, n)
>>> from sage.all import *
>>> m, n = var('m,n') # needs sage.symbolic
>>> kronecker_delta(m, n) # needs sage.symbolic
kronecker_delta(m, n)
m, n = var('m,n') # needs sage.symbolic kronecker_delta(m, n) # needs sage.symbolic
- class sage.functions.generalized.FunctionDiracDelta[source]¶
Bases:
BuiltinFunction
The Dirac delta (generalized) function, \(\delta(x)\) (
dirac_delta(x)
).INPUT:
x
– a real number or a symbolic expression
DEFINITION:
Dirac delta function \(\delta(x)\), is defined in Sage as:
\(\delta(x) = 0\) for real \(x \ne 0\) and \(\int_{-\infty}^{\infty} \delta(x) dx = 1\)
Its alternate definition with respect to an arbitrary test function \(f(x)\) is
\(\int_{-\infty}^{\infty} f(x) \delta(x-a) dx = f(a)\)
EXAMPLES:
sage: # needs sage.symbolic sage: dirac_delta(1) 0 sage: dirac_delta(0) dirac_delta(0) sage: dirac_delta(x) dirac_delta(x) sage: integrate(dirac_delta(x), x, -1, 1, algorithm='sympy') # needs sympy 1
>>> from sage.all import * >>> # needs sage.symbolic >>> dirac_delta(Integer(1)) 0 >>> dirac_delta(Integer(0)) dirac_delta(0) >>> dirac_delta(x) dirac_delta(x) >>> integrate(dirac_delta(x), x, -Integer(1), Integer(1), algorithm='sympy') # needs sympy 1
# needs sage.symbolic dirac_delta(1) dirac_delta(0) dirac_delta(x) integrate(dirac_delta(x), x, -1, 1, algorithm='sympy') # needs sympy
REFERENCES:
- class sage.functions.generalized.FunctionHeaviside[source]¶
Bases:
GinacFunction
The Heaviside step function, \(H(x)\) (
heaviside(x)
).INPUT:
x
– a real number or a symbolic expression
DEFINITION:
The Heaviside step function, \(H(x)\) is defined in Sage as:
\(H(x) = 0\) for \(x < 0\) and \(H(x) = 1\) for \(x > 0\)
See also
EXAMPLES:
sage: # needs sage.symbolic sage: heaviside(-1) 0 sage: heaviside(1) 1 sage: heaviside(0) heaviside(0) sage: heaviside(x) heaviside(x) sage: heaviside(-1/2) # needs sage.symbolic 0 sage: heaviside(exp(-1000000000000000000000)) # needs sage.symbolic 1
>>> from sage.all import * >>> # needs sage.symbolic >>> heaviside(-Integer(1)) 0 >>> heaviside(Integer(1)) 1 >>> heaviside(Integer(0)) heaviside(0) >>> heaviside(x) heaviside(x) >>> heaviside(-Integer(1)/Integer(2)) # needs sage.symbolic 0 >>> heaviside(exp(-Integer(1000000000000000000000))) # needs sage.symbolic 1
# needs sage.symbolic heaviside(-1) heaviside(1) heaviside(0) heaviside(x) heaviside(-1/2) # needs sage.symbolic heaviside(exp(-1000000000000000000000)) # needs sage.symbolic
REFERENCES:
- class sage.functions.generalized.FunctionKroneckerDelta[source]¶
Bases:
BuiltinFunction
The Kronecker delta function \(\delta_{m,n}\) (
kronecker_delta(m, n)
).INPUT:
m
– a number or a symbolic expressionn
– a number or a symbolic expression
DEFINITION:
Kronecker delta function \(\delta_{m,n}\) is defined as:
\(\delta_{m,n} = 0\) for \(m \ne n\) and \(\delta_{m,n} = 1\) for \(m = n\)
EXAMPLES:
sage: kronecker_delta(1, 2) # needs sage.rings.complex_interval_field 0 sage: kronecker_delta(1, 1) # needs sage.rings.complex_interval_field 1 sage: m, n = var('m,n') # needs sage.symbolic sage: kronecker_delta(m, n) # needs sage.symbolic kronecker_delta(m, n)
>>> from sage.all import * >>> kronecker_delta(Integer(1), Integer(2)) # needs sage.rings.complex_interval_field 0 >>> kronecker_delta(Integer(1), Integer(1)) # needs sage.rings.complex_interval_field 1 >>> m, n = var('m,n') # needs sage.symbolic >>> kronecker_delta(m, n) # needs sage.symbolic kronecker_delta(m, n)
kronecker_delta(1, 2) # needs sage.rings.complex_interval_field kronecker_delta(1, 1) # needs sage.rings.complex_interval_field m, n = var('m,n') # needs sage.symbolic kronecker_delta(m, n) # needs sage.symbolic
REFERENCES:
- class sage.functions.generalized.FunctionSignum[source]¶
Bases:
BuiltinFunction
The signum or sgn function \(\mathrm{sgn}(x)\) (
sgn(x)
).INPUT:
x
– a real number or a symbolic expression
DEFINITION:
The sgn function, \(\mathrm{sgn}(x)\) is defined as:
\(\mathrm{sgn}(x) = 1\) for \(x > 0\), \(\mathrm{sgn}(x) = 0\) for \(x = 0\) and \(\mathrm{sgn}(x) = -1\) for \(x < 0\)
EXAMPLES:
sage: sgn(-1) -1 sage: sgn(1) 1 sage: sgn(0) 0 sage: sgn(x) # needs sage.symbolic sgn(x)
>>> from sage.all import * >>> sgn(-Integer(1)) -1 >>> sgn(Integer(1)) 1 >>> sgn(Integer(0)) 0 >>> sgn(x) # needs sage.symbolic sgn(x)
sgn(-1) sgn(1) sgn(0) sgn(x) # needs sage.symbolic
We can also use
sign
:sage: sign(1) 1 sage: sign(0) 0 sage: a = AA(-5).nth_root(7) # needs sage.rings.number_field sage: sign(a) # needs sage.rings.number_field -1
>>> from sage.all import * >>> sign(Integer(1)) 1 >>> sign(Integer(0)) 0 >>> a = AA(-Integer(5)).nth_root(Integer(7)) # needs sage.rings.number_field >>> sign(a) # needs sage.rings.number_field -1
sign(1) sign(0) a = AA(-5).nth_root(7) # needs sage.rings.number_field sign(a) # needs sage.rings.number_field
REFERENCES:
- class sage.functions.generalized.FunctionUnitStep[source]¶
Bases:
GinacFunction
The unit step function, \(\mathrm{u}(x)\) (
unit_step(x)
).INPUT:
x
– a real number or a symbolic expression
DEFINITION:
The unit step function, \(\mathrm{u}(x)\) is defined in Sage as:
\(\mathrm{u}(x) = 0\) for \(x < 0\) and \(\mathrm{u}(x) = 1\) for \(x \geq 0\)
See also
EXAMPLES:
sage: # needs sage.symbolic sage: unit_step(-1) 0 sage: unit_step(1) 1 sage: unit_step(0) 1 sage: unit_step(x) unit_step(x) sage: unit_step(-exp(-10000000000000000000)) 0
>>> from sage.all import * >>> # needs sage.symbolic >>> unit_step(-Integer(1)) 0 >>> unit_step(Integer(1)) 1 >>> unit_step(Integer(0)) 1 >>> unit_step(x) unit_step(x) >>> unit_step(-exp(-Integer(10000000000000000000))) 0
# needs sage.symbolic unit_step(-1) unit_step(1) unit_step(0) unit_step(x) unit_step(-exp(-10000000000000000000))