matlab算标准正态分布函数,1-normcdf(9.4683,0,1)的值为0,不知是否是精度不够?请教能否算出值?

如题所述

第1个回答  2013-07-26
应该不是精度不够,14位的精度概率还是显示1,x=9.4683时的概率非常接近1追问

请问如何调整这个精度啊,求精解,试了很多办法不行啊,因为求的就是这个接近于0的数。

追答

试了挺多次的:
10^302-10^301*normcdf(9.4683,0,1)
ans =
9.000000000000001e+301

不知道这是否能够说明normcdf(9.4683,0,1)=0.9999999(9的个数为10^301+15)。如果是,1-normcdf(9.4683,0,1)的值为0.000……1(小数点后0的个数为10^301+14)

第2个回答  2013-07-26
正态分布的3σ准则知道吗,相差3σ概率已经约等于99.9%了,而你的是9σ,基本上就是1了。追问

知道呀,但是求的就是 那个十分接近的数,求教精解。

追答

要精确值就只能用符号计算了。
matlab R2008b以前的版本可以使用以下任一命令调用maple内核计算

maple('mu:=0:sigma:=1:f:=exp( -(x-mu)^2/2/sigma^2 ) / sqrt(2*Pi*sigma^2):evalf(1-int(f,x=-infinity..9.4683),100)')%100位有效位数

maple('with(stats):f:=statevalf[cdf,normald[0,1]]:evalf(1-f(9.4683),100);')%100位有效位数

也可以用符号计算
f=sym('1/2-1/2*erf(1/2*2^(1/2)*9.4683)');
vpa(f,100)%100位有效位数

ans =

.14221746383027611959520771603353297278262496587630880991009368213600466113411554e-20

可以看到小数点后的前20位都是0

本回答被提问者采纳

matlab算标准正态分布函数,1-normcdf(9.4683,0,1)的值为0,不知是否是...
应该不是精度不够,14位的精度概率还是显示1,x=9.4683时的概率非常接近1

相似回答