
matlab算标准正态分布函数,1-normcdf(9.4683,0,1)的值为0,不知是否是精度不够?请教能否算出值?
2个回答
展开全部
应该不是精度不够,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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正态分布的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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询