首页 > 编程知识 正文

蒙特卡洛随机模拟matlab,图论算法及其matlab实现

时间:2023-05-05 16:38:20 阅读:47893 作者:4126

解决问题的蒙特卡罗算法,即随机采样法,又称计算机随机模拟方法,来源于世界著名的赌博城市——Monte Carlo,算法由此得名。

这是一种基于概率论的计算方法。 也就是说,用随机数或伪随机数计算是比较困难的问题。 设计概率问题后,结果将近似而不是精确值,使用的样本(统计点数)越多,结果越准确。 例如,不规则图形的面积问题等。

二基本原理我们在面积计算问题上对蒙特卡罗算法的实现步骤说明如下。

1 .绘制图像需要计算图像的基本形状。 在此y1=3x; 以y2=8-x为例,将绘制如下图像。

2 .确定边界通常为矩形,矩形必须完全包含所要求的图像。

如上图所示,由于图像交点为(2,6 ),所以如红框所示,确定边界为(0,0 )、8,0 )、8,6 )、0,6 )

3 )随机统计(矩形)边界范围内随机发生的点,统计掉在所求图像上的点。 使用的函数是unifrnd函数。 在这个例子中,以10^7(7次方在保证运行速度的情况下,几乎可以满足精度)为例。

4 .用确定面积的比率法求面积。 即,图像上落下点:全部范围内的点=求出的图像面积:矩形的边界面积。

即,所有图像I的面积=矩形的边界面积*图像上的点/全部范围内的点。

三相关知识本例中使用的unifrnd函数的相关知识。

R = unifrnd(A,B,M,N,...) or R = unifrnd(A,B,[M,N,...])

也就是说,生成m*n阶[a,b]均匀分布u(a,b )的随机数矩阵: unifrnd (a ) a,b,m,n )

如y=(0,8,[1,10000000]),即产生1*10000000阶位于(0,8)之间的数。

四码实现%绘图函数图像x=0:0.25:10; y1=3*x; y2=8-x; plot(x,y1,x,y2 ) axis([010010]; legend(y1=3x )、(y2=8-x ); title ('蒙特卡罗算法); 文本) 2、6、'交点'; grid on%表示随机点x=unifr nd (0,8,[ 1,1000000 ] ); y=unifr nd (0,6,[ 1,1000000 ]; %统计所要求图形中点Frequency=sum(y3*xx=2) sum ) y8-xx2 ); %计算面积area=6*8*frequency/10^7; 五结果测试从函数图像可以看出,求得的区域面积为: 24个单位。

算法的执行结果如下。

由结果可知,每次执行算法时结果不同,是由于概率统计特性。 但是,都稳定在24左右,这和理论值相同。

上述例子以规则图形为例,但对于不规则图像,本算法同样适用,更方便。

今天的共享到此为止。 如果有不足,欢迎评论指导。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。