首页/文章/ 详情

Matlab实现大数定理的应用

3年前浏览2217

  image.png

 过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334 

QQ图片20210424105303.png

    Monte Carlo 方法在数值计算中具有广泛的应用,甚至在非晶的结构的模拟过程中也引入了Monte Carlo 方法,本期过冷水就和大家分享一下Monte Carlo算法。

    求解定积分:

图片

    在被积函数f(x)相当复杂时,就只能采取数值积分的求法。并不是所有的复杂的定积分问题的数值解都可以用决定论算法求解。这个时候就可以用Monte Carlo 方法:在(a,b)区域内均匀随机抽样得到N个点x1、x2、x3、...、xN;求这些点上被积函数的值f(x1)、f(x2)、f(x3)......f(xN)、f(x1)、于是f(x)在[a,b]区域的平均值:

图片

于是定积分:

图片

    上述过过程实际展现了求平均数的两种不同表述方法。两个公式自然而然就联系起来了,用一个公式计算另一个公式的相关参数。这个过程你都感觉不到统计力学的身影,这就是Monte Carlo的另一种思想。

    过冷水之前以为的Monte Carlo算法是通过随机撒点求所求区域占规则形状的面积比值然后用规则面积*比值即为所求面积面积。我们来实战演示一下两种思路求积分的具体过程。

图片

图片

Monte Carlo方法一:概率求积分

warning off
feature jit off
n=100000;
x=1 7*rand(1,n);y0=5.*rand(1,n);
y=(x.^4.*exp(x))./(exp(x)-1).^2;
points=find(y0<=y);
k=length(points);
S=7*5*(k/n)
S = 23.2418

Monte Carlo方法二:大数定理求积分

warning off
feature jit off
n=100000;
x=1 7*rand(1,n);y0=5.*rand(1,n);
y=(x.^4.*exp(x))./(exp(x)-1).^2;
I=7*sum(y)/n
I =
   23.2552

符号积分法:

warning off
feature jit off
syms x
f=(x.^4.*exp(x))./(exp(x)-1).^2;
y=double((int(f,1,8)))
y =
   23.2667

    可以看出三种方法计算的积分值相近,这也说明了Monte Carlo的两种不同计算路径得到的计算值都是可信的。学习的越是深入才能更加清晰的感受到自己所了解的知识的浅薄程度,如果有人问我如何衡量Monte Carlo方法的计算精度,昨天的我会说用平方来比较啊!今天的我就不会这么说,我会给你普及置信区间的概念。和你聊置信水平。这就是日日学习,日日精进。今天学一点Monte Carlo,明天学一点正态分布的评估方法,菲尔兹将指日可待

图片

        过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。

精品回顾

 matlab绘制农夫过河动态图

分子动力学的原子空间运动轨迹演示编程

过冷水带你用matlab制作演示动画

python批量移动文件&重命名代码分享

过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享

image.png

理论科普代码&命令MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-05-05
最近编辑:3年前
过冷水
博士 | 讲师 讨论号:927550334
获赞 361粉丝 184文章 107课程 11
点赞
收藏
作者推荐

¥5 5.0
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈