私はMatlabで確率尺度の密度を実装したいと考えています。そのために私はそれがディラック測度になると間隔に(関数ハンドルとして指定された)いくつかの関数fの積分は[B]Matlabのディラック確率尺度
syms x
int(f(x)*density(x),x,a,b)
によって計算することができるような関数ハンドルとしてdensity
を定義します問題は、すべてのb> 0に対して1の代わりに1の代わりに1/2の値を返します。
int(dirac(x),x,0,b)
しかし、私はそれがあるべきよう< 0及びb> 0戻り値が1である
int(dirac(x),x,a,b)
入力します。このため、すべての区間[a、b]で密度を有効にしたいので、2を掛けるだけでは十分ではありません。私はまた、統合する前に明確なケースを望んでいないので、コードは大きな密度のクラスに対して有効なままです。
MatlabでDirac確率尺度(hereと定義されている)を実装する方法を知っていますか?
ディラック分布はすべて重量が「0」に集中しています。だから、低い積分限界が正確に '0'であるときに積分をどのように定義するかはわかりません。低い積分限界として '-inf'を使用できませんか?私は統合のintervallを指定 'リミット(int型(ディラック(x)は、X、a、b)は、0、 '左')'私の質問には '1' –
@Luis Mendoを与えるん:または多分制限を使用閉鎖される。したがって、diracの積分は、ウェル定義である(それは、0がインターバル内に含まれている場合のみカウントする)。限界の解はいいですが、異なる密度の積分を計算したいので、常に限界を計算したくありません(私はおそらく、誰も良い方がいなければこのソリューションを採用するでしょう)。 –
少し後退して別のアプローチをとってみましょう。 int(delta、0、b)のためのユニークで受け入れられた定義はありません。ここでの問題は、デルタ関数がMatlabによって提供されたものよりも何らかの形で異なるコンベンションを課したいという誤った答えを得ているということではありません。 Wolfram Alphaでこれを評価すると、それはあなたにシータ(0)を与えます。これは特に何も定義されていません。ここで、シータはヘビサイド関数です。ここで独自の規約を適用する場合は、独自のデルタ関数を実装してください。 – Brick