0

私はMatlabで次の形式の条件付き期待値をプログラムしようとしています:

E[x|A<=x<=B] where X~N(u,s^2) (申し訳ありませんが、ここでの数学編集は私が慣れているものではないようです)

Matlab で、次のコードを作成しました。

Y=u+s*(normpdf(A,u,s)-normpdf(B,u,s))/(normcdf(B,u,s)-normcdf(A,u,s))

問題は、A と B の値が大きくなると壊れることです。たとえば、u=0、s=1、A=10、B=11 とします。単純な論理では、答えは 10 から 11 の間である必要がありますが、分子が 10^-23 で分母が基本的に 0 になるため、Matlab は Inf を返します。

式がすべての入力に対して実数を与えるようにするための提案はありますか?

4

1 に答える 1

1

1 つの方法は、数値積分を自分で行うことです。

x = linspace(A,B,1000);
trapz(x,x.*normpdf(x,u,s)) / trapz(x,normpdf(x,u,s))

あなたの例の値では、これは10.0981になり、かなり高速です

于 2013-07-18T07:20:01.160 に答える