用蒙特卡洛方法估计积分方法与matlab编程实现.docx

上传人:rrsccc 文档编号:10466098 上传时间:2021-05-17 格式:DOCX 页数:33 大小:67.99KB
返回 下载 相关 举报
用蒙特卡洛方法估计积分方法与matlab编程实现.docx_第1页
第1页 / 共33页
用蒙特卡洛方法估计积分方法与matlab编程实现.docx_第2页
第2页 / 共33页
用蒙特卡洛方法估计积分方法与matlab编程实现.docx_第3页
第3页 / 共33页
用蒙特卡洛方法估计积分方法与matlab编程实现.docx_第4页
第4页 / 共33页
用蒙特卡洛方法估计积分方法与matlab编程实现.docx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《用蒙特卡洛方法估计积分方法与matlab编程实现.docx》由会员分享,可在线阅读,更多相关《用蒙特卡洛方法估计积分方法与matlab编程实现.docx(33页珍藏版)》请在三一文库上搜索。

1、-用蒙特卡洛方法估计积分方法及 matlab 编程实现专业班级:材料 43学生姓名:王宏辉学号:2140201060指导教师:李耀武完成时间:2016 年 6 月 8 日-用蒙特卡洛方法估计积分方法及 matlab编程实现实验内容:2x sin xdx , e- x2ex2 y21 用蒙特卡洛方法估计积分dx 和dxdy 的00x2 y2 1值,并将估计值与真值进行比较。112 用蒙特卡洛方法估计积分ex2dx 和dxdy的值,0x2 y 2 1 1 x4y4并对误差进行估计。要求:( 1)针对要估计的积分选择适当的概率分布设计蒙特卡洛方法;( 2 )利用计算机产生所选分布的随机数以估计积分值

2、;( 3)进行重复试验,通过计算样本均值以评价估计的无偏性;通过计算均方误差(针对第 1 类题)或样本方差(针对第2 类题)以评价估计结果的精度。目的:(1)能通过MATLAB或其他数学软件了解随机变量的概率密度、分布函数及其期望、方差、协方差等;(2) 熟练使用 MATLAB 对样本进行基本统计, 从而获取数据的基本信息;(3) 能用MATLAB熟练进行样本的一元回归分析。实验原理:蒙特卡洛方法估计积分值,总的思想是将积分改写为某个随机变量的数学期望,借助相应的随机数,利用样本均值估计数学期望,从而估计相应的积分值。具体操作如下:-一般地,积分Sb g( x) dx 改写成 Sbg(x )

3、f (x)dxb h(x ) f (x )dx 的aaf(x)a形式,(其中为 f(x ) 一随机变量X 的概率密度函数, 且 f(x ) 的支持域 x | f (x ) 0 ( a,b), h(x )g (x ) );令 Y=h(X) ,则积分 S=E)f(x)(Y);利用 matlab软件,编程产生随机变量X 的随机数,在由 y h(x )I (x ), I(x)1, x(a,b) ,得到随机变量Y 的随机数,0, x(a,b)求出样本均值,以此估计积分值。积分 Sg (x, y)dxdy的求法与上述方法类似,在此不赘述。A概率密度函数的选取:一重积分,由于要求f(x )的支持域 x |

4、f (x ),为使0( a, b)方 法 普 遍 适 用 , 考 虑 到 标 准 正 态 分 布 概 率 密 度 函 数1x21x2f (x )e 2 支持域为 R ,故选用 f (x )e 2 。22x2y2类似的,二重积分选用f (x, y)1 e2,支持域为 R 2 。2估计评价:进行重复试验,通过计算样本均值以评价估计的无偏性;通过计算均方误(针对第1 类题,积得出)或样本方差(针对第 2 类题,积不出)以评价估计结果的精度。程序设计:依据问题分四类:第一类一重积分; 第一类二重积分;第二类一重积分,第二类二重积分,相应程序设计成四类。为了使程序具有一般性以及方便以后使用:一重积分,

5、程序保存为一个.m文本,被积函数,积分区间均采用键盘输入;二重积分,程序主体保存为一个.m文本,被积函数键盘输入,示性函数用function语句构造,求不同区域二重-积分,只需改变function函数内容。编程完整解决用蒙特卡洛方法估计一重、二重积分值问题。程序代码及运行结果:第一类一重积分程序代码:%构造示性函数function I=I1(x,a,b)if x=a&x=bI=1;elseI=0;end%保存为 I1.m%第一类一重积分,程序主体:%保存为 f11.mfunction outf11=f11()g1=input(输入一元被积函数如x.*sin(x):,s)% 输入被积函数g1=i

6、nline(g1);a=input( 输入积分下界 a:);% 输入积分上下限 b=input( 输入积分上界 b:); Real=input( 积分真值 :);% 输入积分真值 fprintf( 输入样本容量 10V1-10V2:r)-V=zeros(1,2);V(1)=input(V1:);%输入样本容量V(2)=input(V2:);for m=V(1):V(2)%样本容量 10m1-10m2n=10mfor j=1:10x=randn(1,n);for i=1:nt1(i)=I1(x(i),a,b);%示性及求和向量endy1=g1(x)*(pi*2)0.5).*exp(x.2/2);

7、Y1(j)=y1*t1/n; %单次实验样本均值endt=ones(1,10);EY=Y1*t/10;%十次均值D=abs(EY-Real); %绝对误差RD=D/Real;%绝对误差d=0;for i=1:10d=d+(Y1(i)-Real)2;endd=d/(10-1);EY1(m-V(1)+1)=EY;%样本容量为10m时的样本均值D1(m-V(1)+1)=D;%绝对误差RD1(m-V(1)+1)=RD;%绝对误差-MSE1(m-V(1)+1)=d;%方差endReal,EY1,D1,RD1,MSE1outf11=EY1;D1;RD1;MSE1; %存放样本数字特征%保存为 f11.m运

8、行结果:2%估计积分xsin xdx ,积分真值为10m=f11输入一元被积函数如x.*sin(x):x.*sin(x)g1 =x.*sin(x)输入积分下界a:0输入积分上界b:pi/2积分真值 :1输入样本容量10V1-10V2:V1:1V2:5n =10-n =100n =1000n =10000n =100000Real =1EY1 =1.26351.00881.00661.01091.0018D1 =-0.26350.00880.00660.01090.0018RD1 =0.26350.00880.00660.01090.0018MSE1 =0.64390.02050.00280.0

9、0060.0001m=1.26351.00881.00661.01091.00180.26350.00880.00660.01090.00180.26350.00880.00660.01090.00180.64390.02050.00280.00060.0001%估计积分e-x2 dx 真值为0.88620M=f11输入一元被积函数如x.*sin(x):exp(-x.2)g1 =exp(-x.2)-输入积分下界a:0输入积分上界b:+inf积分真值 :pi0.5/2%0.8862输入样本容量10V1-10V2:V1:1V2:4n =10n =100n =1000n =10000Real =0.

10、8862-EY1 =0.93330.90770.88730.8871D1 =0.04700.02150.00100.0009RD1 =0.05310.02430.00120.0010MSE1 =0.19270.01120.00160.0000M =0.93330.90770.88730.88710.04700.02150.00100.00090.05310.02430.00120.00100.19270.01120.00160.0000-第一类二重积分程序代码:%构造示性函数,求不同区域上积分只需更改示性函数function I=I2(x,y)if x2+y2=a&x S=quadl(f,0,

11、1)S =1.4627-第二类二重积分程序代码:%构造示性函数,求不同区域上积分只需更改示性函数function I=I2(x,y)if x2+y2=1I=1;elseI=0;end%保存为 I2.m%第二类二重积分函数主体%,程序保存为f22.mfunction outf22=f22()g2=input(输入二元被积函数如1./(1+x.4+y.4).0.5:,s)%输入被积函数g2=inline(g2,x,y);fprintf( 输入样本容量10V1*10V1-10V2*10V2:r)V=zeros(1,2);V(1)=input(V1:);%输入样本容量V(2)=input(V2:);f

12、or m=V(1):V(2)%样本容量10m1-10m2n=10mfor j=1:10x=randn(1,n);y=randn(1,n);for i=1:n-t2(i)=I2(x(i),y(i);%示性及求和向量endy2=g2(x,y)*(2*pi).*exp(x.2+y.2)/2);Y2(j)=y2*t2/n; %单次实验样本均值endt=ones(1,10);EY=Y2*t/10;%十次均值d=0;for i=1:10d=d+(Y2(i)-EY)2;endd=d/(10-1);EY2(m-V(1)+1)=EY;%样本容量为10m时的样本均值MSE2(m-V(1)+1)=d;%方差endE

13、Y2,MSE2outf22=EY2;MSE2; %存放样本数字特征%第二类二重积分,程序保存为f22.m运行结果:1%估计积分dxdyx2y2 1 1x4y4m=f22输入二元被积函数如1./(1+x.4+y.4).0.5:1./(1+x.4+y.4).0.5-g2 =1./(1+x.4+y.4).0.5输入样本容量10V1*10V1-10V2*10V2:V1:1V2:4n =10n =100n =1000n =-10000EY2 =3.07592.96992.85662.8269MSE2 =1.32670.09000.00600.0014m =3.07592.96992.85662.8269

14、1.32670.09000.00600.0014-实验结果整理:第一类一重积分:2估计积分x sin xdx0积分真值: 1积分估计值: 1.0018样本容量: 10100100010000100000样 本 均 值 : 1.26351.00881.00661.01091.0018绝 对 误 差 : 0.26350.00880.00660.01090.0018相 对 误 差 : 0.26350.00880.00660.01090.0018均 方 误 差 : 0.64390.02050.00280.00060.0001- x2估计积分 e dx0积分真值: 0.8862积分估计值: 0.8871

15、样本容量: 10100100010000样本均值: 0.93330.90770.88730.8871绝对误差: 0.04700.02150.00100.0009相对误差: 0.05310.02430.00120.0010均方误差: 0.19270.01120.00160.0000-第一类二重积分:估计积分ex2 y2dxdyx2y2 1积分真值: 5.3981积分估计值:5.4041样本容量: 10100100010000样本均值: 4.77025.12505.43175.4041绝对误差:0.62790.27320.03350.0060相对误差: 0.11630.05060.00620.00

16、11均方误差: 3.89650.55640.02470.0017第二类一重积分:1估计积分ex2dx0积分估计值: 1.4590样本容量: 10100100010000样本均值: 2.07821.65831.50291.4590样本方差: 0.43150.08890.00570.0008用 matlab 指令求得积分结果 1.4627第二类二重积分:1估计积分dxdyx2y2 1 1x4 y4-积分估计值: 2.8269样本容量: 10100100010000样本均值: 3.07592.96992.85662.8269样本方差: 1.32670.09000.00600.0014实验结果分析:2

17、从第一类积分看,以估计积分x sin xdx 为例:0积分真值: 1积分估计值: 1.0018样本容量: 10100100010000100000样 本 均 值 : 1.26351.00881.00661.01091.0018绝 对 误 差 : 0.26350.00880.00660.01090.0018相 对 误 差 : 0.26350.00880.00660.01090.0018均 方 误 差 : 0.64390.02050.00280.00060.0001随着样本容量的增大,样本均值有接近积分真值的趋势,绝对误差、相对误差、均方误差呈减小趋势;随着样本容量的增大,样本均值有接近积分真值的

18、趋势,说明估计具有无偏性;绝对误差、相对误差、均方误差呈减小趋势,说明增大样本容量能提高估计精度;验证了蒙特卡洛方法估计积分值的可行性,为后续估计第二类积分提供了参考。1从第二类积分看,以估计积分ex2 dx 为例:0积分估计值: 1.4590-样本容量: 10100100010000样本均值: 2.07821.65831.50291.4590样本方差: 0.43150.08890.00570.0008用 matlab 指令求得积分结果 1.4627由于积分真值未知, 无法直接比较估计值与积分值值; 但随样本容量增大,样本方差减小,间接反映了估计精度的提高。蒙特卡洛方法估计值 1.4590 相

19、比用 matlab 指令求得的积分结果 1.4627 ,绝对偏差 0.0038 ,相对偏差 0.0025 。蒙特卡洛方法估计值与用 matlab 指令求得的积分结果相互验证。总结与讨论:蒙特卡洛方法是基于随机数的一种统计方法。蒙特卡洛方法估计积分值, 总的思想是将积分改写为某个随机变量的数学期望,借助相应的随机数,利用样本均值估计数学期望,从而估计相应的积分值。为使方法具有一般性,概率密度函数一重积分选择了1x21x2y2f (x )e 2 ,二重积分选用 f (x, y)e2。22程序设计方面, 本着使程序具有一般性以及方便以后使用的原则,依据问题分四类:第一类一重积分;第一类二重积分;第二类一重积分,第二类二重积分,相应程序设计成四类,并存储为 .m 文件,用蒙特卡洛方法估计积分值,一重积分只需调用相应程序即可;二重积分只需依据积分域修改相应示性函数即可调用相应函数求解。极大方便了同类问题求解。实验运行结果表明本方案可操作性良好。遗留问题: 本次实验未设计选用不同概率密度函数,估计-精度的比较,留有不同条件下选用何种概率密度函数估计效果最佳?如何缩短程序运行时间?如何对程序进行封装?如何更好评价第二类积分估计值无偏性以及精度?等问题。姓名:王宏辉班级:材料43学号:2140201060-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1