2017-02-09 50 views
0

我想在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'。所以我不確定如何在積分下限恰好爲0時定義積分。你不能用'-inf'作爲較低的積分限制嗎?或者可能使用一個限制:'limit(int(dirac(x),x,a,b),a,0,'left')'does give'1' –

+0

@Luis Mendo在我的問題中,我指定了集成被關閉。因此,dirac的積分可以很好地定義(只有當0被包含在intervall中時才計數)。極限解決方案很好,但由於我想計算不同密度的積分,我不想總是計算極限(如果沒有人提出更好的方案,我可能會採用這種解決方案)。 –

+1

讓我略微撤退並採取不同的方法。 int(delta,0,b)沒有唯一的,可接受的定義。這裏的問題並不在於你得到了「錯誤的」答案,因爲你希望以某種方式對δ函數施加不同的約定而不是由Matlab提供的。 (他們的選擇是可以防禦的,但並不是唯一的。)例如,如果你在Wolfram Alpha中評估它,它會給你theta(0) - 這不是特別定義的。這裏theta是Heaviside函數。如果你想在這裏施加你自己的約定,實現你自己的delta函數。 – Brick

回答

1

int(delta,0,b)沒有唯一的,可接受的定義。這裏的問題並不在於你得到了「錯誤的」答案,因爲你希望以某種方式對δ函數施加不同的約定而不是由Matlab提供的。 (他們的選擇是可以防禦的,但並不是唯一的。)例如,如果你在Wolfram Alpha中評估它,它會給你theta(0) - 這不是特別定義的。這裏theta是Heaviside函數。如果你想強加你自己的約定,實現你自己的delta函數。

編輯

我看你寫的關於這個問題的評論,而我在寫這個答案,所以....記住,狄拉克措施或狄拉克函數不是一個函數在所有。您遇到的問題以及下面所述的問題都涉及嘗試將功能表單賦予某種本質上不是功能的東西。你正在做的事情在Matlab中沒有很好的定義。 EDIT

作者

END爲了把有關在上下文約定點,增量功能可以通過不同的屬性來定義。一個是int(delta(x)f(x),a,b)= f(0),當b爲0時。這並沒有告訴你任何關於你想要的積分。另一個可能會導致從Matlab獲得答案的另一個問題是將其定義爲極限。一個(但不是唯一的選擇)是當方差變爲0時零均值高斯的極限。

如果你想使用一個約定int(delta(x)f(x),a,b) = f(0)當一個< = 0 < b,這可能不會給你帶來太多麻煩,但是請記住,這是一個你選擇的不僅僅是「正確」或者「錯誤」答案相關的約定到你從Matlab獲得的東西。

如相關說明,在x = 0時對階躍函數(Heaviside函數)也有類似的選擇。 (a)未定義,(b)-1,(c)+1和(d)1/2的約定。沒有一個是「錯誤的」。這大概對應於Dirac函數的選擇,因爲Heaviside(大致)是Dirac的積分。

+0

這不是我的問題(它代表最後一行)的答案。用概率度量的dirac度量是唯一定義的([here](https://en.wikipedia.org/wiki/Dirac_measure))。我編輯了我的問題,使其更加精確。 –

+1

@ Vincent.W。我再試一次,然後我出去了。您所引用的定義根本不提供函數的定義。它是* something *數學的唯一定義,但某件事不是函數。 Matlab中的框架需要一個函數。你想要的東西不存在。 – Brick

+2

@ Vincent.W。也許我可以用下面的語句來重新說明布魯克的評論:你想要的是與狄拉克測量相關的積分。 Matlab只考慮Lebesgue測度。除非考慮分佈(而不僅僅是函數),否則狄拉克三角洲相對於勒貝格測度的積分不存在。所以你必須能夠處理分佈或任意度量,這些現成的Matlab函數都不可能實現這些。 –