文档库 最新最全的文档下载
当前位置:文档库 › 清华数学实验复习试题八(蒙特卡罗方法-龙格-库塔方法)

清华数学实验复习试题八(蒙特卡罗方法-龙格-库塔方法)

清华数学实验复习试题八(蒙特卡罗方法-龙格-库塔方法)
清华数学实验复习试题八(蒙特卡罗方法-龙格-库塔方法)

清华数学实验复习试题八(蒙特卡罗方法-龙格-库塔方法)

考试课程数学实验2005.6.15下午

班级姓名学号得分

[说明]

(1)第一、二、三题的答案直接填在试题纸上;(2)第四题将数学模型、简要解题过程和结果写在试题纸上;卷面空间不够时,请写在背面;(3)除非特别说明,所有计算结果小数点后保留4位数字。

(4)考试时间为120分钟。

一、(10分)某厂生产A、B两种产品,1千克原料在甲类设备上用12小时可生产3件A,可获净利润64元;在乙类设备上用8小时可生产4件B,可获净利润54元。该厂每天可获得55千克原料,每天总的劳动时间为480小时,且甲类设备每天至多能生产80件A。试为该厂制订生产计划使每天的净利润最大。

1)以生产A、B产品所用原料的数量x1、x2(千克)作为决策变量,建立的数学规划模型是:

决策变量:

生产A原料x1;生产B原料x2

目标函数:

y=64*x1+54*x2

约束条件:

x1+x2 ≤55

12*x1+8*x2≤480

3*x1≤80

x1,x2≥0

基本模型:

max(y)= 64*x1+54*x2

s.t. x1+x2 ≤55

12*x1+8*x2≤480

3*x1≤80

x1,x2≥0

c=[64 54];

A1=[ 1 1 ;

12 8 ;

3 0];

b1=[55;480;80];

v1=[0 0];

[x,z,ef,out,lag]=linprog(-c,A1,b1,[],[],v

1)

lag.ineqlin

输出结果:

x =10.000000004005848

44.999999993870908

z =-3.069999999925403e+003

ans =

33.999999998919357

2.500000000140441

0.000000000278405

2)每天的最大净利润是___3070__元。若要求工人加班以增加劳动时间,则加班费最多

为每小时__2.5__元。若A获利增加到26元/件,应否改变生产计划?____不变___

c=[78 54];

A1=[ 1 1 ;

12 8 ;

3 0];

b1=[55;480;80];

v1=[0 0];

[x,z,ef,out,lag]=linprog(-c,A1,b1,[],[],v 1)

x = 9.999999999999400 45.000000000000625

z =-3.209999999999987e+003

二、(10分) 已知常微分方程组初值问题

221

'''()0,

4

x y xy x y ++-=

()2,2

y π

=

2'().2y ππ

=-

试用数值方法求()6

y π

=__ 1.73205____(保留小数点后5位数字)。你用的MATLAB 命令是______ ode45(@ff, ts,y0)______,其精度为____四阶__。

%待解常微分方程组函数M 文件源程序:

function dy=ff (x,y) dy=[y(2);-y(2)./x-y(1)*(x.^2-0.25)/(x.^2)];

%应用欧拉方法和龙格-库塔方法求解该常微分方程:

ts=pi/2:- pi/12:pi/6; !!!!步长必须是可

以整除步长区间长度的数 y0=[2,-2/pi];

[x,y]=ode45(@ff, ts,y0); %龙格-库塔方法求数值解 [x, y(:,1)] 输出结果:

0.523598775598299 1.732050795523993 三、 (10分) 已知线性代数方程组Ax =b , 其中

5701322625131121023A -??

??

-?

?=??--????

, ???

??

???????=4321x x x x x ,

6347b ??????

=??????

,

若方程组右端项有小扰动]1.0,0,0,0['=b δ,试根据误差

估计式估计1

1

x x δ≤

___0.0743___(x x δ,分别表示原问题的解和右端项小扰动后对应的解的变化量);若取初值]0,0,0,0[)

0('=x ,则用高斯-赛德尔迭代法求解Ax =b 时,=)

5(x _(1.7160, 0.3926, -0.1306, 0.1381)_;对本题而言,此迭代方法是否收敛___是__,原因是__谱半径ρ(B)=0.397<1__。

线性代数方程组解的误差分析:

1

()x b b

A A cond A x b b

δδδ-≤??=?

故其误差上限为:

A=[5 -7 0 1 ;-3 22 6 2 ;5 -1 31 -1 ;2 1 0 23]; b=[6 3 4 7]; db=[0 0 0 0.1];

d=cond(A,1)*norm(db,1)/norm(b,1) 输出结果:

d =0.074339065208930

A=[5 -7 0 1 ;-3 22 6 2 ;5 -1 31 -1 ;2 1 0 23];

D=diag(diag(A)); %从稀疏矩阵A 中提取D

L=-tril(A,-1); %从稀疏矩阵A 中提取L

U=-triu(A,1); %从稀疏矩阵A 中提取U b=[6 3 4

7]';

%设定方程组右端项向量

x=

zeros(4,1);

%设定方程组初始向量

m= inv(D-L)*U;

n=

inv(D-L)*b;

%高斯-赛德尔迭代法

for j2=1:5

y=m*(x(:,j2));

for i=1:4

x(i,j2+1)=y(i,:)+n(i,:);

end

end

t2=x(:,end) %输出迭代法最终结果

j2

输出结果:

t2 =

1.715972347226445

0.392646824062879

-0.130571*********

0.138061238325401

判敛:

lamda=eig(inv(D-L)*U)

pubanjing=max(abs(lamda))

输出结果:

pubanjing =0.396832340862002

四、(20分)炮弹射击的目标为一椭圆形区域,在X方向半轴长110m,Y方向半轴长90m.当瞄准目标的中心发射炮弹时,在众多随机因素的影响下,弹着点服从以目标中心为均值的二维正态分布,设弹着点偏差的均方差在X方向和Y方向分别为70m和50m。今测得一组弹着点的横纵坐标如下:

X -6.3 -71

.6 65.

6

-79

.2

-49

.7

-81

.9

74.

6

-47

.6

-120

.8

56.

9

Y28. 9 1.6 61.

7

-68 -41

.3

-30

.5

87 17.

3

-17.

8

1.2

X 100 .9 47 9.7 -60

.1

-52

.7

86 80.

6

-42

.6

56.4 15.

2

Y -12. 6 39.

1

85 32.

7

28.

1

-9.

3

-4.

5

5.1 -32 -9.

5

1)根据这组数据对X方向和Y方向的均值和均方差进行假设检验(设显著性水平为0.05)。均值假设检验:

H0:μ=0;H1:μ≠0;

x=[-6.3 -71.6 65.6 -79.2 -49.7 -81.9 74.9 -47.6 -120.8 56.9 100.9 47 9.7 -60.1 -52.7 86 80.6 -42.6 56.4 15.2];

y=[28.9 1.6 61.7 -68 -41.3 -30.5 87 17.3 -17.8 1.2 -12.6 39.1 85 32.7 28.1 -9.3 -4.5 5.1 -32 -9.5];

h1=ztest(x,0,70)

h2=ztest(y,0,50)

输出结果:

h1 =0

h2 =0

方差假设检验:

H0:σ2=σ02;H1:σ2≠σ02;

x=[-6.3 -71.6 65.6 -79.2 -49.7 -81.9 74.9 -47.6 -120.8 56.9 100.9 47 9.7 -60.1 -52.7 86 80.6 -42.6 56.4 15.2];

y=[28.9 1.6 61.7 -68 -41.3 -30.5 87 17.3 -17.8 1.2 -12.6 39.1 85 32.7 28.1 -9.3 -4.5 5.1 -32 -9.5]; function [h]=ktest(x,s0,alpha,tail)

n=length(x);

k=(n-1)*var(x)/(s0^2)

%χ2分布检验方差

if tail==0

k1=chi2inv(alpha/2,n-1)

k2=chi2inv(1-alpha/2,n-1)

if k>=k1&k<=k2

h=0;

else

h=1;

end

end

if tail==1

k0=chi2inv(1-alpha,n-1)

if k<=k0

h=0;

else

h=1;

end

end

if tail==-1

k0=chi2inv(alpha,n-1)

if k>=k0

h=0;

else

h=1;

end

h1=ktest(x,70,0.05,0)

h2=ktest(y,50,0.05,0)

输出结果:

h1 =0

h2 =0

2)根据这组数据给出随机变量X和Y相关系数的一个点估计。

相关系数点估计:

x=[-6.3 -71.6 65.6 -79.2 -49.7 -81.9 74.9 -47.6 -120.8 56.9 100.9 47 9.7 -60.1 -52.7 86 80.6 -42.6 56.4 15.2];

y=[28.9 1.6 61.7 -68 -41.3 -30.5 87 17.3 -17.8 1.2

-12.6 39.1 85 32.7 28.1 -9.3 -4.5 5.1 -32 -9.5]; r=corrcoef(x,y) 输出结果:

r= 0.313412305102197 3) 用蒙特卡罗方法求炮弹落在椭圆形区域内的概率(取10000个数据点;请附程序)。

2222221(,)22(1)21x x y x x y

x xy x p x y r r r σσσσπσσ??????

=

--+????--????????

%炮弹命中椭圆形区域概率源程序:

a=110; b=90; sx=70; sy=50; r=0.3134123; z=0; n=10000;

x=unifrnd(-a,a,1,n); y=unifrnd(-b,b,1,n); for i=1:n

if (x(i)^2)/(a^2)+y(i)^2/(b^2)<=1

u=exp(-0.5/(1-r^2)*(x(i)^2/sx^2-2*r*x(i)*y(i)/(sx*sy)+y(i)^2/sy^2)); z=z+u;

end

end

P=4*a*b*z/(2*pi*sx*sy*sqrt(1-r^2)*n)

输出结果:

P =

0.761272218724379

考试课程数学实验2005.6.15下午

班级学号姓名得分

[说明]

(1)第一、二、三题的答案直接填在试题纸上;(2)第四题将数学模型、简要解题过程和结果写在试题纸上;卷面空间不够时,请写在背面;(3)除非特别说明,所有计算结果小数点后保留4位数字。

(4)考试时间为120分钟。

一、(10分)某厂生产A、B两种产品,1千克原料在甲类设备上用12小时可生产3件A,可获净利润64元;在乙类设备上用8小时可生产

4件B ,可获净利润56元。该厂每天可获得55千克原料,每天总的劳动时间为480小时,且甲类设备每天至多能生产80件A 。试为该厂制订生产计划使每天的净利润最大。

1) 以生产A 、B 产品所用原料的数量x 1、x 2(千克)作为决策变量,建立的数学规划模型是:

2) 每月的最大净利润是_____________元。若要求工人加班以增加劳动时间,则加班费最多 为每小时__________元。若A 获利增加到27元/件,应否改变生产计划?_____________ 二、(10分) 已知常微分方程组初值问题

2212

'''()0,()2,'()422x y xy x y y y πππ

++-===-

用数值方

()8

y π

=

_______________________(保留小数点后5位数字)。你用的MATLAB 命令是__________________________________________,其精度为_____________。

三、(10分) 已知线性代数方程组Ax =b , 其中

5701322625131121023A -????

-?

?=??--????

, ???

??

?

??????=4321x x x x x , 8325b ??

????

=??????

,

若方程组右端项有小扰动]1.0,0,0,0['=b δ,试根据误差

估计式估计1

1

x x δ≤

_____________ (x x δ,分别表示原问题的解和右端项小扰动后对应的解的变化

量);若取初值]0,0,0,0[)0('

=

x,则用高斯-赛德尔迭代法求解Ax=b时,=)5(x______________________________________ ______;对本题而言,此迭代方法是否收敛_________________,原因是__________________________________。

四、(20分)炮弹射击的目标为一椭圆形区域,在X方向半轴长100m,Y方向半轴长80m.当瞄准目标的中心发射炮弹时,在众多随机因素的影响下,弹着点服从以目标中心为均值的二维正态分布,设弹着点偏差的均方差在X方向和Y方向分别为70m和50m。今测得一组弹着点的横纵坐标如下:

X -6.3 -71

.6 65.

6

-79

.2

-49

.7

-81

.9

74.

6

-47

.6

-100

.8

56.

9

Y28. 9 1.6 61.

7

-68 -41

.3

-30

.5

87 17.

3

-17.

8

1.2

X 100 .9 47 9.7 -60

.1

-52

.7

86 80.

6

-42

.6

56.4 15.

2

Y -12. 6 39.

1

85 32.

7

28.

1

-9.

3

-4.

5

5.1 -32 -9.

5

1)根据这组数据对X方向和Y方向的均值和均方差进行假设检验(设显著性水平为0.05)。2)根据这组数据给出随机变量X和Y相关系

数的一个点估计。

3)用蒙特卡罗方法求炮弹落在椭圆形区域内的概率(取10000个数据点;请附程序)。

考试课程数学实验参考答案与评分标准2005.6.15

A卷(班级-姓名-学号-得分)

一、1)

12

12

12

1

12

max6454

128480

55

..

380

,0

x x

x x

x x

s t

x

x x

+

+≤

+≤

≥(如果进一步要求3x1

和4x2为非负整数,不扣分)

2)3070元,2.5元;不变

二、1.73203(或1.73205), ode23(或ode45),3级2阶(或5级4阶)

(不写3级(或5级)不扣分;个别同学可能用其他命令,则结果相应略有变化)

三、0.0743, [1.7160, 0.3926, -0.1306, 0.1381]’, 收敛,谱半径为0.3968<1

(不写出谱半径的具体数值不扣分,但写错要扣分)

四、1)对均值做的假设为

1:0,:0H u H u =≠(X,Y 方向相同) X,Y 方向均接受H 0

对X 方向的方差做的假设为 H 0: 2x

σ=4900, H 0: ≠2x

σ4900(如果做单侧检验,可不扣分) 接受H 0

对Y 方向的方差做的假设为 H 0: 2y σ=2500, H 0: ≠2y

σ2500(如果做单侧检验,可不扣分)接受H 0

2) 相关系数的点估计为0.313 (用r=corrcoef(x,y)命令)

3)大约0.76,结果具有随机性 [附]主要程序示例: %1)~2)

x=[-6.3 -71.6 65.6 -79.2 -49.7 -81.9 74.6 -47.6 -120.8(%B-100.8) 56.9 100.9 47 9.7 -60.1 -52.7 86 80.6 -42.6 56.4 15.2]; h1=ztest(x,0,70), %x 方向均值检验

y=[28.9 1.6 61.7 -68 -41.3 -30.5 87 17.3 -17.8 1.2 -12.6 39.1 85 32.7 28.1 -9.3 -4.5 5.1 -32 -9.5];

h2=ztest(y,0,50), %Y方向均值检验

r=corrcoef(x,y) %相关系数的点估计pause

n=20;

alpha=0.05;

sx2=var(x),sx0=70;

chi2=(n-1)*sx2/(sx0^2)

chi2alpha=chi2inv(1-alpha,n-1)

if chi2<=chi2alpha H0=0

else H0=1

end

sy2=var(y),sy0=50;

chi2=(n-1)*sy2/(sy0^2)

chi2alpha=chi2inv(1-alpha,n-1)

if chi2<=chi2alpha H0=0

else H0=1

end

%3)

a=0.7;b=0.5;m=0;z=0;

p=0.313;c=1.1;d=0.9;%A

% p=0.311;c=1; d=0.8; %B

n=10000;

for i=1:n

x=2*rand(1,2)-1;

y=0;

if x(1)^2+x(2)^2<=1

y=exp(-0.5/(1-p*p)*(c^2*x(1)^2/a^2+d^2*x( 2)^2/b^2-2*p*c*d*x(1)*x(2)/a/b));

z=z+y;

m=m+1;

end

end

P=4*c*d*z/2/pi/a/b/sqrt(1-p*p)/n,m

B卷(班级-学号-姓名)

一、1)

12

12

12

1

12

max6456

128480

55

..

380

,0

x x

x x

x x

s t

x

x x

+

+≤

+≤

≥2)3160元;2元;不

二、1.53077 (或 1.53073), 龙格-库塔方法ode23(或ode45),3级2阶(或5级4阶)

三、0.0826, [2.3416,0.5359,-0.2961,-0.0095]’, 收敛, 谱半径为0.3968<1

四、1)同A卷。2)0.311; 3) 大约0.69,结果具有随机性

评分标准:

一、1)5分(每个式子一分),2)前两空每空2分,最后一空1分。

二、第一空6分,后两空每空2分。

三、第一空3分,中间一空5分,最后两空每空

1分。

四、1)8分(4个检验每个2分);2)2分;

3)10分(看程序及结果分析:积分表达式2分,程序5分,结果3分)

考试课程 数学实验 参考答案与评分标准 2005.6.15

A 卷(班级-姓名-学号-得分)

一、1) 12121211

2

max

645412848055..

380

,0x x x x x x s t x x x ++≤+≤≤≥ (如果进一步要求3x 1

和4x 2为非负整数,不扣分) 2)3070元,2.5元;不变

二、1.73203(或1.73205), ode23(或ode45),3级2阶(或5级4阶)

(不写3级(或5级)不扣分;个别同学可能用其他命令,则结果相应略有变化)

三、0.0743, [1.7160, 0.3926, -0.1306, 0.1381]’, 收敛,谱半径为0.3968<1

(不写出谱半径的具体数值不扣分,但写错要扣分)

四、1)对均值做的假设为

1

:0,:0H u H u =≠(X,Y 方向相同) X,Y 方向均接受H 0

对X 方向的方差做的假设为

H0: 2xσ=4900, H0: ≠2xσ4900(如果做单侧检验,可不扣分)接受H0

对Y方向的方差做的假设为

H0: 2yσ=2500, H0: ≠2yσ2500(如果做单侧检验,可不扣分)接受H0

2)相关系数的点估计为0.313(用r=corrcoef(x,y)命令)

3)大约0.76,结果具有随机性

[附]主要程序示例:

%1)~2)

x=[-6.3 -71.6 65.6 -79.2 -49.7 -81.9 74.6 -47.6 -120.8(%B-100.8) 56.9 100.9 47 9.7 -60.1 -52.7 86 80.6 -42.6 56.4 15.2];

h1=ztest(x,0,70), %x方向均值检验

y=[28.9 1.6 61.7 -68 -41.3 -30.5 87 17.3 -17.8 1.2 -12.6 39.1 85 32.7 28.1 -9.3 -4.5 5.1 -32 -9.5];

h2=ztest(y,0,50), %Y方向均值检验

r=corrcoef(x,y) %相关系数的点估计pause

n=20;

alpha=0.05;

sx2=var(x),sx0=70;

chi2=(n-1)*sx2/(sx0^2)

chi2alpha=chi2inv(1-alpha,n-1)

if chi2<=chi2alpha H0=0

else H0=1

end

蒙特卡洛(Monte Carlo)模拟法

当科学家们使用计算机来试图预测复杂的趋势和事件时, 他们通常应用一类需要长串的随机数的复杂计算。设计这种用来预测复杂趋势和事件的数字模型越来越依赖于一种称为蒙特卡罗模似的统计手段, 而这种模拟进一步又要取决于可靠的无穷尽的随机数目来源。 蒙特卡罗模拟因摩纳哥著名的赌场而得名。它能够帮助人们从数学上表述物理、化学、工程、经济学以及环境动力学中一些非常复杂的相互作用。数学家们称这种表述为“模式”, 而当一种模式足够精确时, 他能产生与实际操作中对同一条件相同的反应。但蒙特卡罗模拟有一个危险的缺陷: 如果必须输入一个模式中的随机数并不像设想的那样是随机数, 而却构成一些微妙的非随机模式, 那么整个的模拟(及其预测结果)都可能是错的。 最近, 由美国佐治亚大学的费伦博格博士作出的一分报告证明了最普遍用以产生随机数串 的计算机程序中有5个在用于一个简单的模拟磁性晶体中原子行为的数学模型时出现错误。科学家们发现, 出现这些错误的根源在于这5个程序产生的数串其实并不随机, 它们实际上隐藏了一些相互关系和样式, 这一点只是在这种微小的非随机性歪曲了晶体模型的已知特 性时才表露出来。贝尔实验室的里德博士告诫人们记住伟大的诺伊曼的忠告:“任何人如果相信计算机能够产生出真正的随机的数序组都是疯子。” 蒙特卡罗方法(MC) 蒙特卡罗(Monte Carlo)方法: 蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在本世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。这也是我们采用该方法的原因。 蒙特卡罗方法的基本原理及思想如下: 当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。 蒙特卡罗解题三个主要步骤: 构造或描述概率过程: 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。 实现从已知概率分布抽样: 构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样

大学数学实验之蒙特卡洛方法

《数学实验》报告 班级:序号:: 1.问题描述 I、用蒙特卡罗方法计算以下函数在区间上的积分,并改变随机点数 目观察对结果的影响。 (1)y=1/(1+x), 0==0,x1+2x2+2x3<=72,10< =x2<=20,x1-x2=10; (3)f(x,y)=(X.^2+2*(Y.^2)+X.*Y).*exp(-X.^2-Y.^2), abs(x)<1.5,abs(y)<1.5; 2.问题分析与实验过程 I、(1)使用均值估计法 程序: function p=shell1(a,b,n) z=0; x=unifrnd(a,b,1,n); for i=1:n u=(x(i)+1)^(-1); z=z+u; end p=(b-a)*z/n; 运行结果:p=shell1(0,1,1000) p =

0.6975 >> p=shell1(0,1,10000) p = 0.6922 >> p=shell1(0,1,100) p = 0.7001 >> p=shell1(0,1,500) p = 0.6890 结果分析:改变了四次随机点数,结果都趋近于0.69,说明积分值约等于0.69,但是点数越多,值越接近。 I、(2)使用均值估计法 程序: function p=shell2(a,b,n) z=0; x=unifrnd(a,b,1,n); for i=1:n u=(exp(3*x(i)))*sin(2*x(i)); z=z+u; end p=(b-a)*z/n; 运行结果: >> p=shell2(0,2,1000) p = -24.4911 >> p=shell2(0,2,100) p = -43.8720 >> p=shell2(0,2,10000) p = -30.8699 >> p=shell2(0,2,500) p = -23.2955 >> p=shell2(0,2,100000) p =

蒙特卡洛方法

蒙特卡洛方法 1、蒙特卡洛方法的由来 蒙特卡罗分析法(Monte Carlo method),又称为统计模拟法,是一种采用随机抽样(Random Sampling)统计来估算结果的计算方法。由于计算结果的精确度很大程度上取决于抽取样本的数量,一般需要大量的样本数据,因此在没有计算机的时代并没有受到重视。 第二次世界大战时期,美国曼哈顿原子弹计划的主要科学家之一,匈牙利美藉数学家约翰·冯·诺伊曼(现代电子计算机创始人之一)在研究物质裂变时中子扩散的实验中采用了随机抽样统计的手法,因为当时随机数的想法来自掷色子及轮盘等赌博用具,因此他采用摩洛哥著名赌城蒙特卡罗来命名这种计算方法,为这种算法增加了一层神秘色彩。 蒙特卡罗方法提出的初衷是用于物理数值模拟问题, 后来随着计算机的快速发展, 这一方法很快在函数值极小化、计算几何、组合计数等方面得到应用, 于是它作为一种独立的方法被提出来, 并发展成为一门新兴的计算科学, 属于计算数学的一个分支。如今MC方法已是求解科学、工程和科学技术领域大量应用问题的常用数值方法。 2、蒙特卡洛方法的核心—随机数 蒙特卡洛方法的基本理论就是通过对大量的随机数样本进行统计分析,从而得到我们所需要的变量。因此蒙特卡洛方法的核心就是随机数,只有样本中的随机数具有随机性,所得到的变量值才具有可信性和科学性。

在连续型随机变量的分布中, 最基本的分布是[0, 1]区间上的均匀分布, 也称单位均匀分布。由该分布抽取的简单子样ξ1,ξ2ξ3……称为随机数序列, 其中每一个体称为随机数, 有时称为标准随机数或真随机数, 独立性和均匀性是其必备的两个特点。真随机数是数学上的抽象, 真随机数序列是不可预计的, 因而也不可能重复产生两个相同的真随机数序列。真随机数只能用某些随机物理过程来产生, 如放射性衰变、电子设备的热噪音、宇宙射线的触发时间等。 实际使用的随机数通常都是采用某些数学公式产生的,称为伪随机数。真随机数只是一种数学的理想化概念,实际中我们所接触到的和使用的都是伪随机数。要把伪随机数当成真随机数来使用, 必须要通过随机数的一系列的统计检验。 无论伪随机数用什么方法产生,它的局限性都在于这些随机数总是一个有限长的循环集合, 而且序列偏差的上确界达到最大值。所以若能产生低偏差的确定性序列是很有用的,产生的序列应该具有这样的性质, 即任意长的子序列都能均匀地填充函数空间。 人们已经产生了若干种满足这个要求的序列,如Halton序列、Faure序列、Sobol序列和Niederreiter序列等。称这些序列为拟随机数序列。伪随机序列是为了模拟随机性, 而拟随机序列更致力于均匀性。 3、蒙特卡洛方法的原理 当问题可以抽象为某个确定的数学问题时,应当首先建立一个恰当的概率模型,即确定某个随机事件A或随机变量X,使得待求的解等

浅析蒙特卡洛方法原理及应用

浅析蒙特卡洛方法原理及应用 于希明 (英才学院1236103班测控技术与仪器专业6120110304) 摘要:本文概述了蒙特卡洛方法产生的历史及基本原理,介绍了蒙特卡洛方法的最初应用——蒲丰投针问题求圆周率,并介绍了蒙特卡洛方法在数学及生活中的一些简单应用,最后总结了蒙特卡洛方法的特点。 关键词:蒙特卡洛方法蒲丰投针生活应用 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。它是以概率统计理论为基础, 依据大数定律( 样本均值代替总体均值) , 利用电子计算机数字模拟技术, 解决一些很难直接用数学运算求解或用其他方法不能解决的复杂问题的一种近似计算法。蒙特卡洛方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。 一、蒙特卡洛方法的产生及原理 蒙特卡洛方法于20世纪40年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”计划的成员S.M.乌拉姆和J.冯·诺伊曼首先提出。数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩。在这之前,蒙特卡洛方法就已经存在。1777年,法国数学家蒲丰(Georges Louis Leclere de Buffon,1707—1788)提出用投针实验的方法求圆周率π。这被认为是蒙特卡洛方法的起源。 其基本原理如下:由概率定义知,某事件的概率可以用大量试验中该事件发生的频率来估算,当样本容量足够大时,可以认为该事件的发生频率即为其概率。因此,可以先对影响其可靠度的随机变量进行大量的随机抽样,然后把这些抽样值一组一组地代入功能函数式,确定结构是否失效,最后从中求得结构的失效概率。蒙特卡洛法正是基于此思路进行分析的。 设有统计独立的随机变量Xi(i=1,2,3,…,k),其对应的概率密度函数分别为fx1,fx2,…,fxk,功能函数式为Z=g(x1,x2,…,xk)。首先根据各随机变量的相应分布,产生N组随机数x1,x2,…,xk值,计算功能函数值Zi=g(x1,x2,…,xk)(i=1,2,…,N),若其中有L组随机数对应的功能函数值Zi≤0,则当N→∞时,根据伯努利大数定理及正态随机变量的特性有:结构失效概率,可靠指标。 二、蒲丰投针问题 作为蒙特卡洛方法的最初应用, 是解决蒲丰投针问题。1777 年, 法国数学家蒲丰提出利用投针实验求解圆周率的问题。设平面上等距离( 如为2a) 画有一些平行线, 将一根长度为2l( l< a) 的针任意投掷到平面上, 针与任一平行线相交的频率为p 。针的位置可以用针的中心坐标x 和针与平行线的夹角θ来决定。任意方向投针, 便意味着x与θ可以任意取一值, 只是0≤x ≤a, 0≤θ≤π。那么, 投针与任意平行线相交的条件为x ≤ l sinθ。相交频率p 便可用下式求

蒙特卡罗方法简介

第三章蒙特卡罗方法简介 3.1 Monte Carlo方法简介 Monte Carlo方法是诺斯阿拉莫斯实验室在总结其二战期间工作(曼哈顿计划)的基础上提出来的。Monte Carlo的发明,主要归功于Enrico Fermi、Von Neumann和Stanislaw Ulam等。自二战以来,Monte Carlo方法由于其在解决粒子输运问题上特有的优势而得到了迅速发展,并在核物理、辐射物理、数学、电子学等方面得到了广泛的应用。Monte Carlo的基本思想就是基于随机数选择的统计抽样,这和赌博中掷色子很类似,故取名Monte Carlo。 Monte Carlo方法非常适于解决复杂的三维问题,对于不能用确定性方法解决的问题尤其有用,可以用来模拟核子与物质的相互作用。在粒子输运中,Monte Carlo技术就是跟踪来自源的每个粒子,从粒子产生开始,直到其消亡(吸收或逃逸等)。在跟踪过程中,利用有关传输数据经随机抽样来决定粒子每一步的结果[6]。 3.2 Monte Carlo发展历程 MCNP程序全名为Monte Carlo Neutron and Photon Transport Code (蒙特卡罗中子-光子输运程序)。Monte Carlo模拟程序是在1940年美国实施“发展核武器计划”时,由洛斯阿拉莫斯实验室(LANL)提出的,为其所投入的研究、发展、程序编写及参数制作超过了500人年。1950年Monte Carlo方法的机器语言出现, 1963年通用性的Monte Carlo方法语言推出,在此基础上,20世纪70年代中期由中子程序和光子程序合并,形成了最初的MCNP程序。自那时起,每2—3年MCNP更新一次, 版本不断发展,功能不断增加,适应面也越来越广。已知的MCNP程序研制版本的更新时间表如下:MCNP-3:1983年写成,为标准的FORTRAN-77版本,截面采用ENDF /B2III。 MCNP-3A:1986年写成,加进了多种标准源,截面采用ENDF /B2I V[20]。

蒙特卡洛模拟方法作业及答案(附程序)

蒙特卡洛习题 1.利用蒙特卡洛计算数值积分 () ()() 1280ln 1tan x x x xe dx +++? clear all ;clc;close all ; n=1000; count=0; x=0:0.01:1; y=log((1+x).^2+(tan(x).^8)+x.*exp(x)); plot(x,y,'linewidth',2) hold on for i=1:n x1=rand; y1=rand*y(end); plot(x1,y1,'g*') pause(0.01) if y1

2.分别用理论计算和计算机模拟计算,求连续掷两颗骰子,点数之和大于6且第一次掷出的点数大于第二次掷出点数的概率。 clear all;clc;close all; count=0; n=100000; for i=1:n x=floor(rand*6+1); y=ceil(rand*6); if x+y>6&&x>y count=count+1; end end P=count/n 3.

clear all;clc;close all; count=0; n=2000; ezplot('x^2/9+y^2/36=1'); hold on ezplot('x^2/36+y^2=1'); hold on ezplot('(x-2)^2+(y+1)^2=9') for i=1:n x=rand*12-6; y=rand*12-6; plot(x,y,'gh','linewidth',2) pause(0.01) if x^2/9+y^2/36<1&&x^2/36+y^2<1&&(x-2)^2+(y+1)^2<9

蒙特卡罗也称统计模拟方法

蒙特卡罗也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特·罗方法正是以概率为基础的方法。与它对应的是确定性算法。 蒙特卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。 基本思想 当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。有一个例子可以使你比较直观地了解蒙特卡罗方法:假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如,积分)的复杂程度是成正比的。蒙特卡罗方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。 工作过程 在解决实际问题的时候应用蒙特卡罗方法主要有两部分工作: 用蒙特卡罗方法模拟某一过程时,需要产生各种概率分布的随机变量。 用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。 计算步骤 使用蒙特卡罗方法进行分子模拟计算是按照以下步骤进行的: ① 使用随机数发生器产生一个随机的分子构型。 ②对此分子构型的其中粒子坐标做无规则的改变,产生一个新的分子构型。 ③计算新的分子构型的能量。 ④比较新的分子构型于改变前的分子构型的能量变化,判断是否接受该构型。 若新的分子构型能量低于原分子构型的能量,则接受新的构型,使用这个构型重复再做下一次迭代。 若新的分子构型能量高于原分子构型的能量,则计算玻尔兹曼常数,同时产生一个随机数。

蒙特卡罗方法地解地的题目过程可以归结为三个主要步骤

蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。 蒙特卡罗方法解题过程的三个主要步骤: (1)构造或描述概率过程 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。 (2)实现从已知概率分布抽样 构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。 (3)建立各种估计量

大学数学实验之蒙特卡洛方法

《数学实验》报告 班级:序号:姓名: 1.问题描述 I、用蒙特卡罗方法计算以下函数在区间上的积分,并改变随机点数 目观察对结果的影响。 (1)y=1/(1+x), 0==0,x1+2x2+2x3<=72,10< =x2<=20,x1-x2=10; (3) f(x,y)=(X.^2+2*(Y.^2)+X.*Y).*exp(-X.^2-Y.^2), abs(x)<1.5,abs(y)<1.5; 2.问题分析与实验过程 I、(1)使用均值估计法 程序: function p=shell1(a,b,n) z=0; x=unifrnd(a,b,1,n); fori=1:n u=(x(i)+1)^(-1); z=z+u; end p=(b-a)*z/n; 运行结果:p=shell1(0,1,1000) p =

0.6975 >> p=shell1(0,1,10000) p = 0.6922 >> p=shell1(0,1,100) p = 0.7001 >> p=shell1(0,1,500) p = 0.6890 结果分析:改变了四次随机点数,结果都趋近于0.69,说明积分值约等于 0.69,但是点数越多,值越接近。 I、(2)使用均值估计法 程序: function p=shell2(a,b,n) z=0; x=unifrnd(a,b,1,n); fori=1:n u=(exp(3*x(i)))*sin(2*x(i)); z=z+u; end p=(b-a)*z/n; 运行结果: >> p=shell2(0,2,1000) p = -24.4911 >> p=shell2(0,2,100) p = -43.8720 >> p=shell2(0,2,10000) p = -30.8699 >> p=shell2(0,2,500) p = -23.2955 >> p=shell2(0,2,100000) p =

蒙特卡罗(Monte Carlo)方法简介

蒙特卡罗(Monte Carlo)方法简介

蒙特卡罗(Monte Carlo)方法简介 蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法。 一起源 这一方法源于美国在第二次世界大战进研制原子弹的"曼哈顿计划"。Monte Carlo方法创始人主要是这四位:Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann(学计算机的肯定都认识这个牛人吧)和Nicholas Metropolis。 Stanislaw Marcin Ulam是波兰裔美籍数学家,早年是研究拓扑的,后因参与曼哈顿工程,兴趣遂转向应用数学,他首先提出用Monte Carlo方法解决计算数学中的一些问题,然后又将其应用到解决链式反应的理论中去,可以说是MC方法的奠基人;Enrico Fermi是个物理大牛,理论和实验同时都是大牛,这在物理界很少见,在“物理大牛的八卦”那篇文章里提到这个人很多次,对于这么牛的人只能是英年早逝了(别说我嘴损啊,上帝都嫉妒!);John von Neumann可以说是计算机界的牛顿吧,太牛了,结果和Fermi一样,被上帝嫉妒了;Nicholas Metropolis,希腊裔美籍数学家,物理学家,计算机科学家,这个人对Monte Carlo方法做的贡献相当大,正式由于他提出的一种什么算法(名字忘了),才使得Monte Carlo方法能够得到如此广泛的应用,这人现在还活着,与前几位牛人不同,Metropolis很专一,他一生主要的贡献就是Monte Carlo方法。 蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特?罗方法正是以概率为基础的方法。与它对应的是确定性算法。 二解决问题的基本思路 Monte Carlo方法的基本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的"频率"来决定事件的"概率"。19世纪人们用投针试验的方法来决定圆周率π。本世纪40年代电子计算机的出现,特

蒙特卡罗方法及应用实验讲义2016

蒙特卡罗方法及应用 实验讲义 东华理工大学核工系 2016.8

实验一 蒙特卡罗方法基本思想 一、实验目的 1、了解蒙特卡罗方法方法的基本思想; 2、掌握蒙特卡罗方法计算面积、体积的方法; 3、掌握由已知分布的随机抽样方法。 二、实验原理 Monte Carlo 方法,又称统计模拟方法或计算机随机模拟方法,是一种基于“随机数”进行数值模拟的方法,一种采用统计抽样理论近似求解物理或数学问题的方法。 如待求量可以表述成某些特征量的期望值、某些事件出现的概率或两者的函数形式,那么可采用蒙特卡罗方法求解。在求解某些特征量的期望值或某些事件出现的概率时,必须构建合符实际的数学模型。例如采用蒙特卡罗方法计算某函数所围面积时,构建的数学模型是构造一已知面积的可均匀抽样区域,在该区域投点,由伯努利定理大数定理可知,进入待求区域投点的频率依概率1收敛于该事件出现的概率(面积之比)。 由已知分布的随机抽样方法指的是由已知分布的总体中抽取简单子样。具体方法很多,详见教材第三章。 三、实验内容 1、安装所需计算工具(MATLAB 、fortran 、C++等); 2、学习使用rand(m,n)、unifrnd(a,b,m,n)函数 3、求解下列问题: 3.0、蒲丰氏投针求圆周率。 3.1、给定曲线y =2 – x 2 和曲线y 3 = x 2,曲线的交点为:P 1( – 1,1 )、P 2( 1,1 )。曲线围成平面有限区域,用蒙特卡罗方法计算区域面积; 3.2 、计算1z z ?≥??≤??所围体积 其中{(,,)|11,11,02}x y z x y z Ω=-≤≤-≤≤≤≤。 4、对以下已知分布进行随机抽样:

蒙特卡罗实验报告

蒙特卡罗方法 实验一 实验报告 蒙特卡罗方法实验一实验报告 一、实验目的 1、了解蒙特卡罗方法方法的基本思想; 2、掌握蒙特卡罗方法计算面积、体积的方法; 3、掌握由已知分布的随机抽样方法。 二、实验原理

Monte Carlo 方法,又称统计模拟方法或计算机随机模拟方法,是一种基于“随机数”进行数值模拟的方法,一种采用统计抽样理论近似求解物理或数学问题的方法。 倘若待求量可以表述成某些特征量的期望值、某些事件出现的概率或两者的函数形式,那么可采用蒙特卡罗方法求解。在求解某些特征量的期望值或某些事件出现的概率时,必须构建合符实际的数学模型。例如采用蒙特卡罗方法计算某函数所围面积时,构建的数学模型是构造一已知面积的可均匀抽样区域,在该区域投点,由伯努利定理大数定理可知,进入待求区域投点的频率依概率1收敛于该事件出现的概率(面积之比)。 由已知分布的随机抽样方法指的是由已知分布的总体中抽取简单子样。抽样方法有: 直接抽样方法:离散型分布随机抽样方法、连续型分布直接抽样方法;挑选抽样方法;复合抽样方法;随机抽样一般方法:加抽样方法、减抽样方法、乘抽样方法、乘加抽样方法、乘减抽样方法、对称抽样方法、替换抽样方法、多为分布抽样方法、积分抽样方法;随机抽样其他方法:偏倚抽样方法、近似分布抽样方法、近似-修正抽样方法。 三、实验内容 1、安装所需计算工具(MA TLAB 、fortran 、C++等); 2、编写一伪随机数发生器;(如乘加同余a=1366,c=150889,M=714025、a=9301,c=49297,M=233280;乘同余a=16807,M=232 -1;或采用其它方法) 以下内容选取一个采用自编伪随机数发生器进行计算,其余采用工具软件中自带伪随机数发生器进行计算。 3、求解以下区域的面积、体积: 3.1、给定曲线y =2 – x 2 和曲线y 3 = x 2,曲线的交点为:P 1( – 1,1 )、P 2( 1,1 )。曲线围成平面有限区域,用蒙特卡罗方法计算区域面积; 3.2、计算22 22 11z x y z x y ?≥+? ?≤+--??所围体积 其中{(,,)|11,11,02}x y z x y z Ω=-≤≤-≤≤≤≤。 4、对以下已知分布进行随机抽样: 4.1、()() []2 3 321,0,12 f x x x x =+ -∈; 4.2、()() ()[]11,1,21E f x f x x E k E = ?∈+

蒙特卡洛方法及其在风险评估中的应用(1)

蒙特卡洛方法及其应用 1风险评估及蒙特卡洛方法概述 1.1蒙特卡洛方法。 蒙特卡洛方法,又称随机模拟方法或统计模拟方法,是在20世纪40年代随着电子计算机的发明而提出的。它是以统计抽样理论为基础,利用随机数,经过对随机变量已有数据的统计进行抽样实验或随机模拟,以求得统计量的某个数字特征并将其作为待解决问题的数值 解。 蒙特卡洛模拟方法的基本原理是:假定随机变量X1、X2、X3……X n、Y,其中X1、X2、X3……X n 的概率分布已知,且X1、X2、X3……X n、Y有函数关系:Y=F(X1、X2、X3……X n),希望求得随机变量Y的近似分布情况及数字特征。通过抽取符合其概率分布的随机数列X1、X2、X3……X n带入其函数关系式计算获得Y的值。当模拟的次数足够多的时候,我们就可以得到与实际情况相近的函数Y的概率分布和数字特征。 蒙特卡洛法的特点是预测结果给出了预测值的最大值,最小值和最可能值,给出了预测 值的区间范围及分布规律。 1.2风险评估概述。 风险表现为损损益的不确定性,说明风险产生的结果可能带来损失、获利或是无损失也无获利,属于广义风险。正是因为未来的不确定性使得每一个项目都存在风险。对于一个公司而言,各种投资项目通常会具有不同程度的风险,这些风险对于一个公司的影响不可小视,小到一个项目投资资本的按时回收,大到公司的总风险、公司正常运营。因此,对于风险的 测量以及控制是非常重要的一个环节。 风险评估就是量化测评某一事件或事物带来的影响的可能程度。根据“经济人”假设,收益最大化是投资者的主要追求目标,面对不可避免的风险时,降低风险,防止或减少损失, 以实现预期最佳是投资的目标。 当评价风险大小时,常有两种评价方式:定性分析与定量分析法。定性分析一般是根据风险度或风险大小等指标对风险因素进行优先级排序,为进一步分析或处理风险提供参考。这种方法适用于对比不同项目的风险程度,但这种方法最大的缺陷是在于,在多个项目中风险最小者也有可能亏损。而定量分析法则是将一些风险指标量化得到一系列的量化指标。通过这些简单易懂的指标,才能使公司的经营者、投资者对于项目分风险有正确的评估与判断,

蒙特卡洛方法模拟小例子

例在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点. 经过长期观察发现,我方指挥所对敌方目标的指示有50%是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一门火炮,有1/6的射击效果能全部毁伤敌人火炮. 现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值。 使用蒙特卡洛方法模拟50次打击结果: function [out1 out2 out3 out4]=Msc(N) % N开炮次数 % out1射中概率 % out2平均每次击中次数 % out3击中敌人一门火炮的射击总数 % out4击中敌人2门火炮的射击总数 k1=0; k2=0; k3=0; for i=1:N x0=randperm(2)-1; y0=x0(1); if y0==1 fprintf('第%d次:指示正确||',i); x1=randperm(6); y1=x1(1); if y1==1|y1==2|y1==3 fprintf('第%d次:击中0炮||',i); k1=k1+1; elseif y1==4|y1==5 fprintf('第%d次:击中1炮||',i); k2=k2+1; else

fprintf('第%d次:击中2炮||',i); k3=k3+1; end else fprintf('第%d次:指示错误,击中0炮||',i); k1+1; end fprintf('\n'); end out1=(k2+k3)/N; out2=(0*k1+k2+2*k3)/20; out3=k2/N; out4=k3/N; 运行: 1.[out1 out2 out3 out4]=Msc(50) 结果: 1.第1次:指示正确||第1次:击中2炮|| 2.第2次:指示错误,击中0炮|| 3.第3次:指示错误,击中0炮|| 4.第4次:指示正确||第4次:击中0炮|| 5.第5次:指示错误,击中0炮|| 6.第6次:指示正确||第6次:击中1炮|| 7.第7次:指示正确||第7次:击中0炮|| 8.第8次:指示错误,击中0炮|| 9.第9次:指示正确||第9次:击中2炮|| 10.第10次:指示正确||第10次:击中1炮|| 11.第11次:指示正确||第11次:击中1炮|| 12.第12次:指示正确||第12次:击中2炮|| 13.第13次:指示错误,击中0炮|| 14.第14次:指示正确||第14次:击中1炮|| 15.第15次:指示错误,击中0炮|| 16.第16次:指示错误,击中0炮|| 17.第17次:指示正确||第17次:击中0炮|| 18.第18次:指示错误,击中0炮||

蒙特卡洛模拟法简介

蒙特卡洛模拟法简介 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。 这个术语是二战时期美国物理学家Metropolis执行曼哈顿计划的过程中提出来的。 蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。 蒙特卡洛模拟法的应用领域 蒙特卡洛模拟法的应用领域主要有: 1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。 2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。 3.MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产生是采用的马尔科夫链形式。 蒙特卡洛模拟法的概念 (也叫随机模拟法)当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用则可用随机模拟法近似计算出系统可靠性的预计值。随着模拟次数的增多,其预计精度也逐渐增高。由于需要大量反复的计算,一般均用计算机来完成。

蒙特卡洛模拟法求解步骤 应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。解题步骤如下: 1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致 2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。 3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。 4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。 5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。 在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。 蒙特卡洛模拟法的实例 资产组合模拟: 假设有五种资产,其日收益率(%)分别为 0.02460.0189 0.0273 0.0141 0.0311 标准差分别为 0.95091.4259, 1.5227, 1.1062, 1.0877 相关系数矩阵为 1.0000 0.4403 0.4735 0.4334 0.6855 0.4403 1.00000.7597 0.7809 0.4343 0.4735 0.75971.0000 0.6978 0.4926 0.4334 0.78090.6978 1.0000 0.4289 0.6855 0.43430.4926 0.4289 1.0000 假设初始价格都为100,模拟天数为504天,模拟线程为2,程序如下%run.m

蒙特卡洛算法简介

算法简介 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。蒙特·卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特·卡罗方法正是以概率为基础的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。 编辑本段背景知识 [1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algorithm, also known as the Monte Carlo method.] 1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和Nick Metropolis共同发明,被称为蒙特卡洛方法。它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列?蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:1,PI为圆周率),当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。摘自《细数二十世纪最伟大的十种算法》CSDN JUL Y译 编辑本段算法描述 以概率和统计理论方法为基础的一种计算方法。将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。比如,给定x=a,和x=b,你要求某一曲线f和这两竖线,及x轴围成的面积,你可以起定y轴一横线y=c 其中c>=f(x)max,很简单的,你可以求出y=c,x=a,x=b及x轴围成的矩形面积,然后利用随机产生大量在这个矩形范围之内的点,统计出现在曲线上部点数和出现在曲线下部点的数目,记为:doteUpCount,nodeDownCount,然后所要求的面积可以近似为doteDownCounts所占比例*矩形面积。 编辑本段问题描述 在数值积分法中,利用求单位圆的1/4的面积来求得Pi/4从而得到Pi。单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分。只要能求出扇形面积S1在正方形面积S中占的比例K=S1/S就立即能得到S1,从而得到Pi的值。怎样求出扇形面积在正方形面积中占的比例K呢?一个办法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个点落在扇形内。将落在扇形内的点数m与所投点的总数n的比m/n作为k的近似值。P落在扇形内的充要条件是x^2+y^2<=1。

蒙特卡罗算法实验报告

多核软件设计——实验指导蒙特卡洛算法求 项目 开发者: 开发时间: 版本号:

一、问题描述 蒙特卡洛算法可理解为通过大量实验,模拟实际行为,来收集统计数据。本例中,算法随机产生一系列点,模拟这些点落在如下图所示的正方形区域内的情况。其几何解释如下 1 1 图1 如图1所示,正方形边长为1,左下顶点与原点重合,两边分别与x ,y 轴重合。曲线为1/4圆弧,圆 心位于原点,与正方形左下定点重合,半径为1。正方形面积S 1=1,圆弧内面积S 2=ππ4 1412=r 。 算法模拟大量点随机落在此正方形区域内,落在圆弧内的点的数量(n 2)与点的总数(n 1)的比例与面积 成正比关系。即 π 42121==S S n n (1) 由此可得 1 2 4n n = π (2) 因此,只要计算出落在圆弧内的点的数量在点总数中所占的比例,就能求出π的值。 由图1可知,所有点均落在正方形范围内,因此点的x 坐标满足10≤≤x 。又,当点落在圆弧范围内,则点的二维坐标关系满足122 ≤+y x 。检验每一个点是否满足此关系即可判定改点是否落在 圆弧内。

二、串行算法描述 本项目中使用了标准C 语言库中的产生随机数函数。该函数原型为: int rand( void ); 此函数产生随机数列,每次调用时均返回0到RAND_MAX 之间的一个整数。 void srand( unsigned int seed ); 此函数为rand ()函数所生成的伪随机数序列设置起始点,使之产生不同的伪随机数。 算法: 产生2n 个随机数据,范围[0,1],对每个数据点计算其坐标是否满足122 ≤+y x , 统计满足此关系的点的数量count ,则n count 4=π 示例见附件Serial.c 三、并行算法 3.1 并行算法描述 算法步骤: 1、确定需要产生的点的个数n ,参与运行的处理器数m ; 2、对每一个处理器,生成两个随机数x ,y ,范围[0,1]; 3、判断两个随机数x ,y 是否满足12 2 ≤+y x ; 4、若满足,则变量COUNT i ++; 5、重复步骤2-4,直至每个处理器均生成n/m 个随机点; 6、收集COUNT i 的值,并累加至变量COUNT 中,此即为随机点落在圆弧内的数量; 7、通过(2)式计算π的值。 3.2 并行算法的一个例子 在这个实验中,采用Linux 操作系统pthread 接口来实现程序的并行化。这些接口函数和数据类型都在头文件中声明。因为pthread 并没有包含在C 的标准库中,编译的时候需要加上-lpthread 选项,

相关文档
相关文档 最新文档