蒙特卡罗算法实验报告.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《蒙特卡罗算法实验报告.docx》由会员分享,可在线阅读,更多相关《蒙特卡罗算法实验报告.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、多核软件设计试验指导蒙特卡洛算法求项目开发者:开发时间:版本号:、问题描述蒙特卡洛算法可理解为通过大量试验,模拟实际行为,来收集统计数据。本例中,算法随机产生一系 列点,模拟这些点落在如下图所示的正方形区域内的状况。其几何解释如下图1如图1所示,正方形边长为1,左下顶点与原点重合,两边分别与x, y轴重合。曲线为1/4圆弧,圆12 _ 1心位于原点,与正方形左下定点重合,半径为1。正方形面积S = l ,圆弧内面积S2= Z 勿 =。 算法模拟大量点随机落在此正方形区域内,落在圆弧内的点的数量(由)与点的总数(m)的比例与面积 成正比关系。即-3 (1)几2 S? 兀由此可得4722兀=(2)
2、因此,只要计算出落在圆弧内的点的数量在点总数中所占的比例,就能求出的值。由图1可知,全部点均落在正方形范围内,因此点的x坐标满意又,当点落在圆弧范围 内,则点的二维坐标关系满意*2+W1。检验每一个点是否满意此关系即可判定改点是否落在 圆弧内。二、串行算法描述本项目中使用了标准c语言库中的产生随机数函数。该函数原型为:int rand( void );此函数产生随机数列,每次调用时均返回0到RAND.MAX之间的一个整数。void srand( unsigned int seed );此函数为rand ()函数所生成的伪随机数序列设置起始点,使之产生不同的伪随机数。算法:产生2n个随机数据,范
3、围0, 1,对每个数据点计算其坐标是否满意1+丁1,统计满意此关系count的点的数量count,则4 4M示例见附件Serial, c三、并行算法3.1并行算法描述算法步骤:1、确定需要产生的点的个数n,参加运行的处理器数m;2、对每一个处理器,生成两个随机数x, y,范围0, 1;3、推断两个随机数x, y是否满意12+2工1;4、若满意,则变量COUNT汁+;5、重复步骤2-4,直至每个处理器均生成n/m个随机点;6、收集COUNT的值,并累加至变量COUNT中,此即为随机点落在圆弧内的数量;7、通过(2)式计算乃的值。3.2 并行算法的一个例子在这个试验中,采纳Linux操作系统pth
4、read接口来实现程序的并行化。这些接口函数和数据类型都在 头文件vpthread.h中声明。由于pthread并没有包含在C的标准库中,编译的时候需要加上-Ipthread选项,使程序链接到libpthread,才能编译胜利。例子程序参见附件Parallels。3.3 并行算法正确性证明本并行算法只是简洁的把独立的任务进行分派,经多次试验测试,结果正确。四、试验结果硬件平台:惠普刀片集群编译器:gcc&g+操作系统:Linux测试数据集合:由随机数函数产生的数据集合4.1 算法运行时间表1N (千万)串行算法运行时间(秒)并行算法运行时间(秒)加速比10.8140.9590.84882.51
5、.6182.6730.605354.0245.7160.70397.56.0697.3760.8228108.08910.0010.808812.510.10512.2270.82641512.11514.8420.816217.514.11919.5220.72322016.12122.0330.73163024.18332.5920.74194032.25941.5420.77655040.72649.7250.8109注:N:算法生成随机点的个数算法运行时间为某一次运行时间,非多次运行之平均时间4.2 算法计算量时间比、加速比并行、串行算法运算量时间比、加速比如下图所示运算量时间比450
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蒙特卡罗 算法 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内