sas课程论文(免费)

更新时间:2023-06-11 16:58:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

武汉大学学习sas之后写的课程论文。。。。。

第一个问题:

浦丰投针方法计算圆周率 :平面上画有间隔为d(d>0)的等距平行线,向平面任意投掷一枚长为l(l<d)的针,求针与任一平行线相交的概率。

解:以x表示针的中点与最近一条平行线的距离,又以φ表示针与此直线间的交角,见图1。易知样本空间Ω满足

0≤x≤d/2,0≤φ≤∏

由这两式可以确定x — φ平面上的一个矩形Ω,这就是样本空间,其面积为SΩ=d∏/2。这时为了针与平行线相交(记为事件A),其充要条件是

x≤

l

sin 2

由这个不等式表示的区域是图2 中的体阴影区域

图1 蒲丰投针问题 图2 浦丰投针问题中的Ω和A

由于针是向这个平面任意投掷的,所以由等可能性知这是一个几何概率问题。由此得

p(A) S

A

l

sin d 2l dd∏∏2

如果l,d为已知,则以∏的值代入上式即可计算得p(A)之值。反之,如果已知p(A)的值,则也可以利用上式去求∏,而关于p(A)的值,可以从试验中获得的频率去近似它:即投针N次,其中针与平行线相交n次,则频率

n

可作为p(A)的估计值,于是由 N

n2l

≈p(A)=

Ndπ

2lN

dn

可得

π≈

这是一个颇为奇妙的方法:只要设计一个随机试验,使用过事件的概率与某个未知数有关,然后通过重复试验,以频率估计概率,即可求得未知数的近似解。一般来说,试验次数越多,则求得的近似解就越精确。随着电子计算机的出现,我们便可以利用计算机来大量地模拟所设计的随机试验。

武汉大学学习sas之后写的课程论文。。。。。

以下我们利用sas处理这一问题: 下表是从网上搜集的一组数据:

设针长为l,则求∏的近似式可化为:

π≈

在SAS程序编辑窗口输入如下程序:

data pufeng;

2MN

K

input M N K; /*M为l/d的值,N为投针次数,K为相交次数*/ pi=2*M*N/K; /*求圆周率pi*/

wc=abs(3.14159-pi);/*计算所求结果与标准圆周率的误差*/ cards;

0.8 5000 2532 0.6 3204 1219 1.0 600 383 0.75 1030 489 0.83 3408 1801 0.54 2520 859 run;

proc print; run;

运行之后得到如下结果:

我们还可以利用sas的interactive data analysis画出以误差为纵坐标,以投针次数为横坐标的分析图如下:

武汉大学学习sas之后写的课程论文。。。。。

由此可见,概率论的方法有一定的随机性,在一定的范围之内,误差并非随着试验次数的增加而减小。但是,理论上,我们知道:随着试验次数的增加,误差可以达到任意小。

第二个问题:

用蒙特卡洛方法计算定积分:设0≤f(x)≤1,求f(x)在区间[0,1]上的积分值:

J f(x)dx

1

设(X,Y)服从正方形{0≤x≤1,0≤y≤1}上的均匀分布,则可知X服从[0,1]上的均匀分布,Y也服从[0,1]上的均匀分布,且X与Y独立。又记事件

A {Y f(X)}

则A的概率为

p P(Y f(x))

1

00

f(x)

dydx f(x)dx J

1

即定积分的值J就是事件A的概率p。由伯努利大 数定律,我们可以用重复试验中A出现的频率作为 p的估计值。这种求定积分的方法也称为随机投点 法,即将(X,Y)看成是向正方形

{0 x 1,0 y 1}内的随机投点,用随机点落在

区域{y f(x)}中的频率作为定积分的近似值。 图1 随机投点法

下面用蒙特卡洛方法,来得到A出现的频率:

(1)先用计算机产生(0,1)上均匀分布的2n个随机数:xi,yi,i=1,2,…,n,这里n

武汉大学学习sas之后写的课程论文。。。。。

可以很大,譬如n=10000,甚至n=100000。

(2)对n对数据(xi,y),i=1,2,…,n,记录满足如下不等式

i

y

的次数,这就是事件A发生的频数

i

f(xi)

n

。由此可得事件A发生的频率

n

n

,则J

n

n

以下我们用sas

计算

e

1

x

2

/2

,其精确值为0.341344。

在sas中运行如下程序:

data mtcl; N=0;

do i=1 to 100000;

x=uniform(1); /*产生随机数*/

y=uniform(1); /*产生随机数*/

if y<=exp(-x**2/2)/sqrt(6.28318530717959) then N=N+1; /*统计满足(2)中不等式的次数*/ J=N/100000; output; end; run;

程序运行之后得到一个数据集Work.Mtcl。从中我们可以看出随着i的增加,积分值J越来越接近精确值。由于数据集过长,只将最后一部分写在下边:

武汉大学学习sas之后写的课程论文。。。。。

另外,对于一般区间[a,b]上的定积分

J' g(x)dx

a

b

作线性变换y (x a)/(b a),即可化为[0,1]区间上的积分。进一步若c g(x) d,可令

则0 f(y) 1。此时有

J' g(x)dx S0 f(y)dy c(b a)

a

b1

其中

S

=(b a)(d c)。这说明以上用蒙特卡洛方法计算定积分方法带有普遍意义。

本文来源:https://www.bwwdw.com/article/psw1.html

Top