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 之间,但是 Matlab 给了我 Inf 因为分母基本上变成 0 而分子是 10^-23。

有什么建议可以让公式为所有输入提供实数吗?

4

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 回答