【发布时间】:2017-02-09 16:46:58
【问题描述】:
我想在 Matlab 中实现概率测量的密度。为此,我将density 定义为函数句柄,以便可以通过
syms x
int(f(x)*density(x),x,a,b)
当谈到狄拉克度量时,问题在于
int(dirac(x),x,0,b)
为所有 b>0 提供值 1/2 而不是 1。但是,如果我输入
int(dirac(x),x,a,b)
其中 a0 返回值应为 1。出于这个原因,乘以 2 是不够的,因为我希望我的密度对所有区间 [a,b] 都有效。我也不想在集成之前区分案例,以便代码对大量密度保持有效。
有人知道我如何在 Matlab 中实现狄拉克概率测度(定义为 here)吗?
【问题讨论】:
-
Dirac 分布的所有权重都集中在
0。因此,当积分下限恰好是0时,我不确定如何定义积分。您不能使用例如-inf作为集成下限吗?或者也许使用一个限制:limit(int(dirac(x),x,a,b),a,0,'left')确实给了1 -
@Luis Mendo 在我的问题中,我指定了要关闭的积分区间。因此,狄拉克的积分将是很好定义的(仅当区间中包含 0 时才计算在内)。极限解决方案很好,但是因为我想计算不同密度的积分,所以我不想总是计算极限(如果没有人想出更好的解决方案,我可能会采用这个解决方案)。
-
让我稍微退后一步,采取不同的方法。 int(delta, 0, b) 没有唯一的、公认的定义。这里的问题不是你得到了“错误”的答案,因为你想以某种方式对 delta 函数强加一个不同的约定,而不是 Matlab 提供的。 (他们的选择是有根据的,但不是唯一的。)例如,如果您在 Wolfram Alpha 中对此进行评估,它将给您 theta(0) - 它没有被特别定义为任何东西。这里 theta 是 Heaviside 函数。如果你想在这里强加你自己的约定,实现你自己的 delta 函数。
-
@Brick 为了获得帮助(建立我自己的增量概率密度),我提出了这个问题。但是,我可能不够精确,因为我的意思是给定 here 的定义。
标签: matlab symbolic-math calculus probability-density