当前位置:文档之家› 题目蒙特卡洛算法的设计和实现

题目蒙特卡洛算法的设计和实现

题目:蒙特卡洛算法的设计和实现班别:12accp2班组员姓名:蔡添来杨善挺时间:2013.6.28应用数学二期末考核项目设计说明书项目名称:蒙特卡洛算法的设计和实现人员情况(注:写上组员的姓名、学号)蔡添来-010*******杨善挺-010*******人员分工情况(注:写上每个组员完成那个部分的详细情况)N-S图和代码蔡添来负责编写,杨善挺参与讨论,杨善挺负责写摘要问题分析、问题总结以及饼状图的代码编写及处理等等,主要结果及其分析讨论部分由蔡添来写,该部分一些问题杨善挺参与讨论。

蒙特卡洛算法的设计和实现摘要(注:请写上你对本项目题目的基本认识和介绍,解决该问题用的的方法和算法的基本思想和原理,以及本问题的主要结论及对结论的简单总结和分析)本文根据蒙特卡洛算法以实验为基础阐述其算法的设计思路和实现过程,可以通过反复多次的实验,利用数学的的N-S算法,以及MATLAB编程等,并联系实际生活情况,分析蒙特卡洛算法给现实世界带来的各种好处,并提出合理的的建议。

针对本项目问题,首先从抽奖的本质出发,分析该问题到底能让哪方获益,估算抽奖者得到各种结果的概率,以及设奖者受益情况。

首先从硬币的分值来分析,列出抽取10枚硬币的总和,再计算每种情况出现的概率,再给予一定的奖罚,这样才能即吸引抽奖者,又可以让设奖者盈利,让抽奖者的损失尽可能少。

既可以达到娱乐的效果,又可以得到大家都认可。

最后总结蒙特卡洛算法在数学方面的运用以及对现代社会的经济等方面的推动作用,并给出一些建议。

关键词:模拟概率大量统计蒙特•卡罗的背景介绍和发展(注:请介绍你对本项目的背景和发展历史等相关内容)蒙特•卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。

蒙特卡洛算法对于本身就具有随机性质的问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。

即要将不具有随机性质的问题转化为随机性质的问题。

蒙特卡罗方法的验证需要次数较多的实验和多次的验证。

实验越接近理想状态,所得到的实验结果才越精确。

所谓理想的实验次数,就是实验次数尽可能的多和用同样的验证方法验证多次,并取他们的平均值,以便减少误差。

而且蒙特卡罗方法每次得到的结果具有随机性,因此,现实生活中该算法又可以为人们的生活娱乐带来乐趣,又可以为商家带来赚钱对的好机会。

当实验对象是某种随机事件出现的概率时,或者是某个随机变量的期望值时,可以进行反复“实验”,以这种事件出现的频率估计这一随机事件的概率,并计算全部概率的均值,或者得到这个随机变量的某些数字特征,并将其作为问题的解。

以便减少实验误差。

对于本项目的实验对象,利用蒙特卡罗方法以同样的方法反复实验,方便快捷可以得到我们想要的结果,,这是典型的蒙特卡罗方法的运用,而近代也有不少科学家解决同样的问题。

例如:1777年,法国数学家布丰(Georges Louis Leclere de Buffon,1707—1788)提出用投针实验的方法求圆周率π。

而这被认为是蒙特卡罗方法的起源。

利用蒙特.卡罗方法对该抽签将活动模拟问题分析和数学模型(注:请介绍你对本项目的解决方法的思路和方法,要求:必须具有对问题解决方法的数学模型(数学模型:数学表达式或算法)的介绍和为什么使用该模型?若问题能求出理论解,在此地方必须给出理论解)利用N-S图分析思路,再利用MATLAB程序代码运行得到具体结果,结合高中数学的组合运算,因涉及概率等等问题,以及局限于我们的知识,我们只有利用高中的组合运算和大学一年级的N-S图来分析问题,并且利用这几个经典的数学方法,我们可以轻松的解决这个抽奖问题。

利用以上数学模型的组合知识分析得到理论值为:100元的概率为2/184756=1/92378,不奖不罚的概率32850/184756 约为 0.1778,得10元的概率为200/184756约为 1.0825e-005,罚一元的概率为151704/184756约为0.821。

奖金的期望约为:-0.8092元。

我们利用蒙特.卡罗的思想利用编写的MATLAB代码在MATLAB中进行大量的模拟抽奖,在进行统计得到的结果与理论值是否拟合利用蒙特.卡罗方法对该抽签将活动模拟的算法实现和代码(注:请介绍你对本项目的算法和MATLAB程序代码。

要求:算法必须用伪代码或N-S图表示,代码必须附上完整代码,如果具有图片的话,必须使用PS等作图软件制作的图,不能是QQ截图。

)N-S图:h=55?或h=95?Yes NOh=70或h=75?或h=80?No yesn1=n1+1 n2=n2+1 n3=n3+1 n4=n4+1p1=n1/n, p2=n2/n,p3=n3/n,p4=n4/n,E=p1*100+p2*10+p3*0+p4*(-1)输出p1,p2,p3,p4,En是进行模拟的次数,p1为奖金为100元的概率,p2为奖金为10元的概率,p3为奖金为不奖不罚的概率,p4为奖金为罚1元的概率,n1—n4分别代表进行n次模拟出现奖100元、奖10元、不奖不罚、罚一元的次数;Q是装签的数组,E是获得奖金的期望,h是抽到10枚签的总分值。

代码:n=10000; %%执行n次n1=0;n2=0;n3=0;n4=0;%% h 为抽签分值的总数for i=1:nh=0;Q=[10 10 10 10 10 10 10 10 10 10 5 5 5 5 5 5 5 5 5 5]; %%模拟装10枚%%分值为10的签和10枚分值为5的签的签简for j=1:10m=randint(1,1,[1,20-j+1]); %%执行随机抽签k=Q(m);Q(m)=[]; %%删除已抽的签h=h+k; %%累加得到10次硬币的总和endif h==50|h==100n1=n1+1; %%n1为执行n次中出现中100块的次数elseif h==55|h==95n2=n2+1; %%n2为执行n次中出现中10块的次数elseif h==70|h==75|h==80n4=n4+1; %%%n3为执行n次中出现没有中也不用赔即0元的情况elseif h==65|h==60|h==85|h==90n3=n3+1; %%n4为执行n次中出现罚1元的情况endendp1=n1/n %%n1为执行n次中出现中100块的概率p2=n2/n %%n2为执行n次中出现中10块的概率p3=n3/n %%%n3为执行n次中出现没有中也不用赔即0元的概率p4=n4/n %%n4为执行n次中出现罚1元的概率E=100*p1+p2*10-p4 %%抽奖者进行该游戏n次得到的奖金的均值即数学期望。

利用蒙特.卡罗方法对该抽签将活动模拟的主要结果及其分析讨论(注:请列出该项目的主要结果或你制作的软件界面图,如结果较多请以表格或图的形式体现,并对结果进行相关的分析说明,要求:能让不懂数学的人也能看懂你的结论和分析。

如有可能的话,能否提供问题的另一种解决方法或对问题进行一些条件的修改该如何解决?)利用蒙特.卡罗理论思想,对该抽签将活动模拟N次,进行结果统计,求出其中不同奖的概率,以及均值,而得到的是实际值.在理论上中奖的机率可以通过数学知识求得一个固定值,抽到的可能组合总数共有:=184756种组合得:100元的组合:只有2种组合,要么全是10的签的一种,要么只有5的签一种,概率为2/184756=1/92378得10元的:有9条签是10一条签为5的组合有100种,9条签是5一条签为10的组合共100种,即概率为200/184756约为1.0825e-005不奖不罚:有8条10的签与2条5的签为2025种、8条5的签与2条10的签2025种、有7条10的签与3条5的签14400种、有3条10的签与7条5的签14400种,概率为32850/184756 约为 0.1778。

罚一元的:有5条10的签与5条5的签63504种、有6条10的签与4条5的签44100种、有4条10的签与6条5的签44100种,其概率为151704/184756约为0.821。

其均值为:E=100*(2/184756)+10*(200/184756)+0*(32850/184756)-1*(151704/184756)约为-0.8092元。

而利用蒙特卡洛算法,进行大量的模拟抽签抽奖,可以得到与理论值接近的数据,模拟的次数越多,得到的结果越接近理论结果的固定值,误差越小,并且最终结果越趋于理论值。

根据问题分析和分析讨论得到如下结果:x=[(32850/184756) (200/184756) (151704/184756) (2/184756) ];subplot(1,2,1),pie(x,[0 1 0 1]),legend({'不罚不奖','得10元','罚一元','得100元'});对本学期课程的总结和建议总结:MATLAB这门课程让我们认识了计算机数学的另一面异样的精彩,它与java等编程有很多不同的地方,但也有极为相似的地方,因为MATLAB课程具有数学的元素,我们可以用它生成各种多维数组,可以用它运算微积分等等。

学习它能让自己的思想进入到数字的王国,再加上计算机特殊的功能,只要我们输入正确的代码,我们可以得到美丽的图像,以及我们可以进行各种数学统计,便于我们对各种问题的详细分析或研究。

建议:学习MATLAB应该要让我们多练习,同时也要让大家一起分析各种问题。

多利用学习到的数学知识来解决现实生活的问题。

我们既要学会学习,也应该争取学到知识,学生与学生之间,学生与老师之间也应该多交流,应该经常在一起讨论问题,才能让大家进步,才能营造学习气氛。

相关主题