Fortran Coder

标题: 如何求解标准正态分布函数? [打印本页]

作者: cdf5041353    时间: 2015-7-9 17:20
标题: 如何求解标准正态分布函数?
已知具体数值,想求对应的标准正态分布函数值Φ(*),是通过MKL实现嘛,改如何实现,求指点,谢谢!
作者: fcode    时间: 2015-7-9 17:35
http://fcode.cn/code_prof-33-1.html
这是你想要的吗?
作者: cdf5041353    时间: 2015-7-9 17:55
感谢您的链接!链接内容是已知均值和方差生成相应的正态分布数据,而我想实现的是计算Φ(x),Φ(x)定义为服从标准正态分布的随机变量X的分布函数,其值为对f(x)关于x积分,从-∞积到x.从f(x)图像上看,Φ(x)的值相当于f(x)曲线以下,x轴曲线以上,区域为(-∞,x)这段的面积。
基于您的链接,通过编程应该可以实现计算Φ(x),但我不晓得MKL里是不是有与之对应的函数,类似在excel里用normsdist(x)。

标准正态分布函数.jpg (16.73 KB, 下载次数: 330)

标准正态分布函数

标准正态分布函数

作者: fcode    时间: 2015-7-10 09:23
这是一个简单的函数,没必要用到 MKL

但由于 Φ(x) 是一个超越函数,所以数值计算上只能用级数求和来达到。可以从 x 反向求和,一直到足够精度为止(不可能到负无穷)
作者: cdf5041353    时间: 2015-7-10 11:39
感谢版主指点,我尝试去做一下
作者: li913    时间: 2015-7-10 13:13
本帖最后由 li913 于 2015-7-10 13:18 编辑

ivf自带有个erf函数,变换后可以用于求标准正态分布函数。
[Fortran] 纯文本查看 复制代码
program test
real(kind=8) a,x
x=1.0d20
a= 0.5*erf(sqrt(2.0)*x) + 0.5
print*,a

x=0.0d20
a= 0.5*erf(sqrt(2.0)*x) + 0.5
print*,a

x=-1.0d20
a= 0.5*erf(sqrt(2.0)*x) + 0.5
print*,a
end

求标准正态分布函数.jpg (616.44 KB, 下载次数: 309)

求标准正态分布函数.jpg

作者: cdf5041353    时间: 2015-7-10 18:34
感谢!我学习一下~




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2