我想在Matlab中实现概率测度的密度。对于我定义density
作为功能句柄使得一些函数f(给定为一个功能句柄)在区间[A,B]可以通过Matlab中的狄拉克概率测度
syms x
int(f(x)*density(x),x,a,b)
来计算的积分当谈到狄拉克量度问题是
int(dirac(x),x,0,b)
为所有b> 0提供值1/2而不是1。然而,如果I型
int(dirac(x),x,a,b)
其中< 0且b> 0,返回值是1,因为它应该的。出于这个原因,乘以2将不够,因为我希望我的密度对所有间隔[a,b]有效。我还不想在集成之前区分不同的情况,以便代码对于大量密度类型保持有效。
有人知道如何在Matlab中实现狄拉克概率测量(定义为here)吗?
狄拉克分布的所有权重集中在'0'。所以我不确定如何在积分下限恰好为0时定义积分。你不能用'-inf'作为较低的积分限制吗?或者可能使用一个限制:'limit(int(dirac(x),x,a,b),a,0,'left')'does give'1' –
@Luis Mendo在我的问题中,我指定了集成被关闭。因此,dirac的积分可以很好地定义(只有当0被包含在intervall中时才计数)。极限解决方案很好,但由于我想计算不同密度的积分,我不想总是计算极限(如果没有人提出更好的方案,我可能会采用这种解决方案)。 –
让我略微撤退并采取不同的方法。 int(delta,0,b)没有唯一的,可接受的定义。这里的问题并不在于你得到了“错误的”答案,因为你希望以某种方式对δ函数施加不同的约定而不是由Matlab提供的。 (他们的选择是可以防御的,但并不是唯一的。)例如,如果你在Wolfram Alpha中评估它,它会给你theta(0) - 这不是特别定义的。这里theta是Heaviside函数。如果你想在这里施加你自己的约定,实现你自己的delta函数。 – Brick