资源描述
统计实验报告
班级 统计1002
姓名 张宇
学号 28
日期2012.4。17
实验名称 用统计科学方法算,的近似值
问题背景描述
蒙特卡罗(Monte Carlo)法
蒙特卡罗(Monte Carlo)方法,或称计算机随机模拟方法,又称统计试验方法或随机模拟。所谓模拟就是把某一现实的或抽象的系统的部分状态或特征,用另一个系统(称为模型)来代替或模仿.在模型上作实验称为模拟实验,所构造的模型为模拟模型.
蒙特卡罗方法本质上是一种基于“随机数”的计算方法。这一方法源于美国在第二次世界大战时研制原子弹的“曼哈顿计划"。该计划的主持人之一、数学家冯·诺伊曼和乌拉姆将这一秘密工作用驰名世界的赌城-摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩,其实他们的具体工作是对裂变物质的中子随机扩散进行模拟。
Monte Carlo方法的基本思想是将各种随机事件的概率特征(概率分布、数学期望)与随机事件的模拟联系起来,用试验的方法确定事件的概率与数学期望,因而,Monte Carlo方法的突出特点是概率模型的解是由试验得到,而不是计算出来的。这很早以前就被人们所发现和利用.早在17世纪,人们就知道用事件发生的“频率”来决定事件的“概率”。19世纪人们用投针试验的方法来决定圆周率π。上个世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。
此外,模拟任何一个实际过程,Monte Carlo方法都需要用到大量的随机数,计算量很大、人工计算是不可能的,只能在计算机上实现。
实验目的
用统计科学方法求,的近似值并得以推广。
实验原理与统计模型
来源乌拉姆和冯·诺伊曼核试验模拟,几何概率
实验所用软件及版本 R version 2。14。1
主要内容(要点)
、
(1)构造问题的概率模型
对随机性的问题,如中子碰撞、粒子扩散运动等,主要是描述和模拟运动,概率过程,建立概率模型或判别式。
对确定性的问题,如确定π值,计算定积分,则需将问题转化为随机性的问题,例如图2。2(a)计算连续函数g(x)在区间[a,b] 的定积分,则是c(b-a)的有界区域内产生若干随机焦,并计数满足不等式的点数,从而构成了问题的概率模型。
(2) 从己知概率分布抽样
实验过程况录(含基本步骤、主要程序清单及异常情况记录等)
一. 求
考虑然后等概率地产生n个随机点(xi,yi),i=1,2,…,n,即xi是(1,2)上均匀分布的随机数,yi是(0,1)上均匀分布的随机数。设n个点中有k个点落在下图阴影区域内,即有k个点(xi,yi)满足yi*2*(xi)^0。5<1.则当,有如下关系
P=k/n=阴影部分面积/1=-1
因此的估计值=k/n+1
下面编写的模拟程序(程序名:MC1.R)
> MC1〈-function(n){
+ k<-0;x<- runif(n,1,2);y〈-runif(n)
+ for (i in 1:n){
+ if (2*x[i]^0.5*y[i]<1)
+ k〈- k+1
+ }
+ k/n+1
+ }
> MC1(100000)
[1] 1.41463
二. 求
考虑然后等概率地产生n个随机点(xi,yi),i=1,2,…,n,即xi是(1,3)上均匀分布的随机数,yi是(0,1)上均匀分布的随机数。设n个点中有k个点落在下图阴影区域内,即有k个点(xi,yi)满足yi*2*(xi)^0。5<1。则当,有如下关系
P=k/n=阴影部分面积/2=(-1)/2
因此的估计值=2k/n+1
下面编写的模拟程序(程序名:MC2。R)
〉 MC2〈-function(n){
+ k<—0;x〈— runif(n,1,3);y〈-runif(n)
+ for (i in 1:n){
+ if (2*x[i]^0。5*y[i]〈1)
+ k〈- k+1
+ }
+ 2*k/n+1
+ }
〉 MC2(100000)
[1] 1。73326
异常情况记录
括号用错,应该是[],而不是()。
实验结果报告与实验总结
根号2的近似值是1.4141,根号3的近似值是1.7316对于不同的n,n越大,数的精确度越高。
思考与深入
一.考虑就可求得根号x,比如说求根号2,根号5,根号7,比如求根号m。等概率地产生n个随机点(xi,yi),i=1,2,…,n,即xi是(1,m)上均匀分布的随机数,yi是(0,1)上均匀分布的随机数。设n个点中有k个点落在下图阴影区域内,即有k个点(xi,yi)满足yi*2*(xi)^0.5<1。则当,有如下关系
P=k/n=阴影部分面积/m=(根号m—1)/(m—1)
因此根号m的估计值=(m—1)k/n+1
MC1<-function(n){
k<—0;x〈- runif(n,1,m);y<-runif(n)
for (i in 1:n){
if (2*x[i]^0。5*y[i]<1)
k〈— k+1
}
(m-1)k/n+1
}
评价
展开阅读全文