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 - 微分的阶数
非负数

微分的阶数,指定为非负数。

# 更多

狄拉克-德尔塔函数

狄拉克-德尔塔函数,,对于所有 值为 0,对于 x = 0,值为无穷大。狄拉克-德尔塔函数满足等式:

这是对狄拉克-德尔塔函数的启发式定义。更详细的定义需要涉及到分布或测度论的相关知识。

对于任何光滑函数 f 与实数 a,狄拉克-德尔塔函数有以下性质:

# 另请参阅

heaviside | kroneckerDelta