Fortran Coder

查看: 9340|回复: 6
打印 上一主题 下一主题

[通用算法] 如何求解标准正态分布函数?

[复制链接]

15

帖子

5

主题

0

精华

入门

F 币
100 元
贡献
50 点
跳转到指定楼层
楼主
发表于 2015-7-9 17:20:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
已知具体数值,想求对应的标准正态分布函数值Φ(*),是通过MKL实现嘛,改如何实现,求指点,谢谢!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2015-7-9 17:35:37 | 只看该作者
http://fcode.cn/code_prof-33-1.html
这是你想要的吗?

15

帖子

5

主题

0

精华

入门

F 币
100 元
贡献
50 点
板凳
 楼主| 发表于 2015-7-9 17:55:03 | 只看该作者
感谢您的链接!链接内容是已知均值和方差生成相应的正态分布数据,而我想实现的是计算Φ(x),Φ(x)定义为服从标准正态分布的随机变量X的分布函数,其值为对f(x)关于x积分,从-∞积到x.从f(x)图像上看,Φ(x)的值相当于f(x)曲线以下,x轴曲线以上,区域为(-∞,x)这段的面积。
基于您的链接,通过编程应该可以实现计算Φ(x),但我不晓得MKL里是不是有与之对应的函数,类似在excel里用normsdist(x)。

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

标准正态分布函数

标准正态分布函数

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2015-7-10 09:23:45 | 只看该作者
这是一个简单的函数,没必要用到 MKL

但由于 Φ(x) 是一个超越函数,所以数值计算上只能用级数求和来达到。可以从 x 反向求和,一直到足够精度为止(不可能到负无穷)

15

帖子

5

主题

0

精华

入门

F 币
100 元
贡献
50 点
5#
 楼主| 发表于 2015-7-10 11:39:08 | 只看该作者
感谢版主指点,我尝试去做一下

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
6#
发表于 2015-7-10 13:13:46 | 只看该作者
本帖最后由 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, 下载次数: 333)

求标准正态分布函数.jpg

评分

参与人数 1F 币 +15 贡献 +15 收起 理由
fcode + 15 + 15 赞一个!

查看全部评分

15

帖子

5

主题

0

精华

入门

F 币
100 元
贡献
50 点
7#
 楼主| 发表于 2015-7-10 18:34:38 | 只看该作者
感谢!我学习一下~
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-23 04:02

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表