2017-02-09 19 views
0

私は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」に集中しています。だから、低い積分限界が正確に '0'であるときに積分をどのように定義するかはわかりません。低い積分限界として '-inf'を使用できませんか?私は統合のintervallを指定 'リミット(int型(ディラック(x)は、X、a、b)は、0、 '左')'私の質問には '1' –

+0

@Luis Mendoを与えるん:または多分制限を使用閉鎖される。したがって、diracの積分は、ウェル定義である(それは、0がインターバル内に含まれている場合のみカウントする)。限界の解はいいですが、異なる密度の積分を計算したいので、常に限界を計算したくありません(私はおそらく、誰も良い方がいなければこのソリューションを採用するでしょう)。 –

+1

少し後退して別のアプローチをとってみましょう。 int(delta、0、b)のためのユニークで受け入れられた定義はありません。ここでの問題は、デルタ関数がMatlabによって提供されたものよりも何らかの形で異なるコンベンションを課したいという誤った答えを得ているということではありません。 Wolfram Alphaでこれを評価すると、それはあなたにシータ(0)を与えます。これは特に何も定義されていません。ここで、シータはヘビサイド関数です。ここで独自の規約を適用する場合は、独自のデルタ関数を実装してください。 – Brick

答えて

1

int(delta、0、b)に固有の定義はありません。ここでの問題は、デルタ関数がMatlabによって提供されたものよりも何らかの形で異なるコンベンションを課したいという誤った答えを得ているということではありません。 Wolfram Alphaでこれを評価すると、それはあなたにシータ(0)を与えます。これは特に何も定義されていません。ここで、シータはヘビサイド関数です。独自の規約を適用する場合は、独自のデルタ関数を実装します。

EDIT

私はあなたが、私はこの答えを書いていた一方で、そう....ディラック測度やディラックのデルタ関数は、関数がすべてではないことに注意してください、質問にコメントを書いて見ます。あなたが持っている問題は、以下で説明する内容と合わせて、本質的に機能ではないものに機能的なフォームを与えることに関連しています。あなたがしていることは、Matlabのフレームワークでは明確に定義されていません。コンテキスト内の規則についてのポイントを置くためにEDIT

OF

END、デルタ関数は、異なる特性によって定義することができます。 1つは bであるときint(delta(x)f(x)、a、b)= f(0)です。これはあなたが望む積分について何も教えてくれません。あなたがMatlabから得ているように、おそらく答えにつながる別のものは、それを限界として定義することです。デルタ(x)f(x)、a、b)という規則を使用する場合は、1(ただし、唯一の選択肢ではありません)は、分散が0になるときのゼロ平均ガウスの限界です。

== 0 < bであれば、= f(0)になりますが、これはおそらく大した問題にはなりませんが、あなたが「正しい」以上の選択をした規約や 「間違った」回答あなたがMatlabから得たものまで。

x = 0の階段関数(Heaviside関数)についても同様の選択肢があります。 (a)未定義、(b)-1、(c)+1、(d)1/2の規則があります。いずれも「間違っている」 HeavisideはDiracの積分であるため、おそらくDirac関数の選択に相当します。

+0

これは私の質問に対する回答ではありません(最後の行にあります)。確率尺度のディラックメジャーは一意的に定義されています([here](https://en.wikipedia.org/wiki/Dirac_measure))。もっと正確にするために質問を編集しました。 –

+1

@ Vincent.W。私はもう一度試してみる。あなたが参照する定義は、関数の定義をまったく提供しません。それは* something * mathematicalのユニークな定義ですが、何かは関数ではありません。 Matlabのフレームワークには関数が必要です。あなたが望むものは存在しません。 – Brick

+2

@ Vincent.W。たぶん私は次のようにBrickのコメントを言い換えることができます:あなたが望むものは、ディラックの測度に関して不可欠です。 Matlabはルベーグの尺度のみを考慮する。 Lebesgue measureに対するDiracのデルタの積分は、(関数だけでなく)分布を考慮しない限り存在しません。だから、ディストリビューションや任意の尺度のいずれかを扱うことができなければならないでしょう。そのうちのどれも、既製のMatlab関数では可能ではないでしょう –