我想在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