我正在尝试在Matlab中编程形式的条件期望:
E [x | A< = x< = B]其中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。
制定公式的任何建议都会为所有输入提供实数?
答案 0 :(得分:1)
一种方法是自己进行数值积分:
x = linspace(A,B,1000);
trapz(x,x.*normpdf(x,u,s)) / trapz(x,normpdf(x,u,s))
使用您的示例值,这给出10.0981,并且它非常快