2026a
# dirac
狄拉克-德尔塔函数
函数库: TySymbolicMath
# 语法
d = dirac(x)
d = dirac(n,x)
# 说明
d = dirac(x) 表示 x 的狄拉克-德尔塔函数。示例
d = dirac(n,x) 表示狄拉克-德尔塔函数在 x 处的 n 阶导数。示例
# 示例
处理包含狄拉克和单位阶跃函数的表达式
计算含有狄拉克-德尔塔函数和单位阶跃函数的表达式的微分与积分。
计算单位阶跃函数的第一和第二阶导数,其结果为狄拉克-德尔塔函数及其一阶导数。
using TySymbolicMath
@variables x
dx = Differential(x)
expand_derivatives(dx(heaviside(x)))
ans = TySymbolicMath.dirac(0, x)
expand_derivatives((dx*dx)(heaviside(x)))
ans = TySymbolicMath.dirac(1, x)
计算包含狄拉克-德尔塔函数的正弦函数的积分。
@variables a
int(dirac(x-a)*sin(x),x,-Inf,Inf)
ans = sin(a)
计算矩阵的狄拉克-德尔塔函数
计算 x 的狄拉克德尔塔函数及其前三阶导数。
使用向量 n = [0,1,2,3] 来指定导数的阶数,使用点运算符以对输入维度进行自动广播。
using TySymbolicMath
@variables x
n = [0,1,2,3]
d = dirac.(n,x)
d = 4-element Vector{Num}:
TySymbolicMath.dirac(0, x)
TySymbolicMath.dirac(1, x)
TySymbolicMath.dirac(2, x)
TySymbolicMath.dirac(3, x)
将 x 替换为 0:
substitute.(d,Ref(x=>0))
ans = 4-element Vector{Num}:
Inf
-Inf
Inf
-Inf
绘制狄拉克-德尔塔函数
你可以使用 fplot 在默认区间 [-5,5] 上绘制狄拉克-德尔塔函数。但是 dirac(x) 在 x 等于 0 时返回 Inf,而 fplot 不会绘制无穷大。
定义符号变量 x 然后使用 fplot 绘制符号表达式 dirac(x)。
using TySymbolicMath
using TyPlot
@variables x
fplot(dirac(x))
为了处理在 x 等于 0 时出现的无穷大,我们使用数值而非符号值。将等于 Inf 的值设为 1 然后使用 stem 绘制狄拉克-德尔塔函数。
x = -1:0.1:1
y = dirac.(x)
idx = y.==Inf
y[idx] .= 1
stem(x,value.(y))

# 输入参数
x - 输入数
输入,指定为数。
n - 微分的阶数非负数
微分的阶数,指定为非负数。
# 更多
狄拉克-德尔塔函数
狄拉克-德尔塔函数,
这是对狄拉克-德尔塔函数的启发式定义。更详细的定义需要涉及到分布或测度论的相关知识。
对于任何光滑函数 f 与实数 a,狄拉克-德尔塔函数有以下性质: