ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

蒙特卡罗算法

2022-01-15 14:00:37  阅读:136  来源: 互联网

标签:豆子 蒙特卡罗 曲线 算法 区域 flag1 data


目录

含义

蒙特卡罗算法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数来解决很多计算问题的方法。

引例

举个栗子,现在有这么一个问题:给定曲线y =2 – x2 和曲线y3 = x2曲线的交点为P1( – 1,1 )、P2( 1,1 )曲线围成平面有限区域,请计算区域面积。

这个时候,你所想的方法是什么呢?

或许你想到的是微积分,但在这里我想告诉你一种概率论的思想,用蒙特卡罗方法来解决这种问题

我们可以知道,两条曲线所包围的区域是处在一个平面上的,该平面的面积为2,定义域x的取值是(-1,1),y的取值是(0,2)

现在我们可以假设一种场景,向这个平面撒足够多的豆子,豆子落在这个平面内的每一个位置的概率都相等,豆子落在曲线包围的区域内我们记为S1,落在外面则记为S2,在豆子数量足够多的时候,就会有如下的情况,如图所示:

 

 代码实现(MATLAB)

%蒙特卡罗算法
clear all
clc

P = rand(10000,2);
x1 = 2*P(:,1) - 1;
y1 = 2*P(:,2);
flag1 = find(y1<=2-x1.^2 & y1.^3>=x1.^2);
M1 = length(flag1);
S = 4*M1/10000;
figure(1)
plot(x1(flag1),y1(flag1),'r')

代码实现起来其实非常简单,这种思想相对比较容易,最后所得出的结果也比较精确。

 

算法优缺点

优点:

1、能够比较逼真地描述具有随机性质的事物的特点及物理实验过程

2、受几何条件限制小

3、收敛速度与时间的维度无关

4、具有同时计算多个方案与多个未知量的能力

5、误差容易确定

6、程序简单,易于实现

缺点:

1、收敛速度慢

2、误差具有概率性

3、在粒子运输问题中,计算结果与系统大小有关

巩固

比如现在有这么一个例子:计算\iint_{D}^{}xy^{2}dxdy其中Dy= x – 2y2 = x 所围D的边界曲线交点为(–11)(42)被积函数在求积区域内的最大值为16。积分值是三维体积,该三维图形位于立方体区域内,立方体区域的体积为192。(0≤ x ≤4–1≤ y ≤20 ≤ z ≤16)

 代码实现:

clear all
clc

data=rand(10000,3);
x=4*data(:,1);
y=-1+3*data(:,2);
z=16*data(:,3);
II=find(x>=y.^2&x<=y+2&z<=x.*(y.^2));
M=length(II);
V=192*M/10000

方法很简单,希望以上的内容对你有所帮助,感谢观看!

标签:豆子,蒙特卡罗,曲线,算法,区域,flag1,data
来源: https://blog.csdn.net/qq_55041016/article/details/122508745

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有