蒙特卡罗算法
2022/1/15 14:03:52
本文主要是介绍蒙特卡罗算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
含义
蒙特卡罗算法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数来解决很多计算问题的方法。
引例
举个栗子,现在有这么一个问题:给定曲线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、在粒子运输问题中,计算结果与系统大小有关
巩固
比如现在有这么一个例子:计算其中D为y= x – 2与y2 = x 所围D的边界曲线交点为:(–1,1),(4,2),被积函数在求积区域内的最大值为16。积分值是三维体积,该三维图形位于立方体区域内,立方体区域的体积为192。(0≤ x ≤4,–1≤ y ≤2,0 ≤ 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
方法很简单,希望以上的内容对你有所帮助,感谢观看!
这篇关于蒙特卡罗算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)