用蒙特卡洛方法估计积分方法及matlab编程实现_第1页
用蒙特卡洛方法估计积分方法及matlab编程实现_第2页
用蒙特卡洛方法估计积分方法及matlab编程实现_第3页
用蒙特卡洛方法估计积分方法及matlab编程实现_第4页
用蒙特卡洛方法估计积分方法及matlab编程实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用蒙特卡洛方法估计积分方法及matlab编程实现专业班级:材料43学生姓名:王宏辉学号:2140201060指导教师:李耀武完成时间:2016年6月8日用蒙特卡洛方法估计积分方法及matlab编程实现实验内容:2,一221用家特卡洛方法估计积分xsinxdx,e-xdx和exydxdy的值,00x2y21并将估计值与真值进行比较。2用蒙特卡洛方法估计积分1ex2dx和1dxdy的值,并对误0x2y211x4y4差进行估计。要求:(1)针对要估计的积分选择适当的概率分布设计蒙特卡洛方法;(2)利用计算机产生所选分布的随机数以估计积分值;(3)进行重复试验,通过计算样本均值以评价估计的无偏性;通过

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

3、(x)的支持域x|f(x)0(a,b),h(x)幽);令丫牛凶,则积分S=E(Y);利用f(x)matlab软件,编程产生随机变量X的随机数,在由yh(x)I(x),I(x)1,x(a,b),得到随机变量Y的随机数,求出样本均0,x(a,b)值,以此估计积分值。积分Sg(x,y)dxdy的求法与上述方法类似,在此不赘述。A概率密度函数的选取:0(a,b),为使方法普一重积分,由于要求f(x)的支持域x|f(x)x2遍适用,考虑到标准正态分布概率密度函数f(x)1e万支持域为21-R,故选用f(x)Je2。.2支持域为R2。八、一13类似的,一重积分选用f(x,y)-e2,估计评价:进行重复试验

4、,通过计算样本均值以评价估计的无偏性;通过计算均方误(针对第1类题,积得出)或样本方差(针对第2类题,积不出)以评价估计结果的精度。程序设计:依据问题分四类:第一类一重积分;第一类二重积分;第二类一重积分,第二类二重积分,相应程序设计成四类。为了使程序具有一般性以及方便以后使用:一重积分,程序保存为一个.m文本,被积函数,积分区间均采用键盘输入;二重积分,程序主体保存为一个.m文本,被积函数键盘输入,示性函数用function语句构造,求不同区域二重积分,只需改变function函数内容。编程完整解决用蒙特卡洛方法估计一重、二重积分值问题。程序代码及运行结果:第一类一重积分程序代码:%造示性函

5、数functionI=I1(x,a,b)ifx>=a&&x<二bI=1;elseI=0;%保存为I1.m%嘴一类一重积分,程序主体:%保存为f11.mfunctionoutf11=f11()g1=input('输入一元被积函数如x.*sin(x):','s')%输入被积函数g1=inline(g1);a=input('输入积分下界a:');%输入积分上下限b=input('输入积分上界b:');Real=input('积分真值:');输入积分真值fprintf('输入样本容量10

6、71-1072:)V=zeros(1,2);V(1)=input('V1:');%输入样本容量V(2)=input('V2:');form=V(1):V样本容量10Am1-10Am2n=10Amforj=1:10x=randn(1,n);fori=1:nt1(i)=I1(x(i),a,b);%示性及求和向量y1=g1(x)*(pi*2)A0.5),*exp(x.A2/2);Y1(j)=y1*t1'/n;%单次实验样本均值endt=ones(1,10);EY=Y1*t'/10;%十次均值D=abs(EY-Real);%绝对误差RD=D/Real;%

7、绝对误差d=0;fori=1:10d=d+(Y1(i)-Real)A2;endd=d/(10-1);EY1(m-V(1)+1)=EY;%样本容量为10Am时的样本均值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;%存放样本数字特征运行结果:%估计积分xsinxdx,积分真值为10m=f11输入一元被积函数如x.*sin(x):x.*sin(x)gi=x.*sin(x)输入积分下界a:0输入积分上界b:pi/2积分真值:1输入样

8、本容量10AV1-10AV2:V1:1V2:5n=100100010000100000Real=EY1=1.26351.00881.00661.01091.0018D1=0.26350.00880.00660.01090.0018RD1=0.26350.00880.00660.01090.0018MSE1=0.64390.02050.00280.00060.0001m=1.26351.00881.00661.01091.00180.26350.00880.00660.01090.00180.26350.00880.00660.01090.00180.64390.02050.00280.0006

9、0.0001一一一2%估计积分e-xdx真值为0.88620M=f11输入一元被积函数如x.*sin(x):exp(-x.A2)gi=exp(-x.A2)输入积分下界a:0输入积分上界b:+inf积分真值:piA0.5/2%0.8862输入样本容量10AV1-10AV2:10100100010000Real=0.8862EY1=0.93330.90770.88730.8871D1=0.04700.02150.00100.0009RD1=0.05310.02430.00120.00100.19270.01120.00160.00000.93330.90770.04700.02150.05310.

10、02430.19270.01120.88730.88710.00100.00090.00120.00100.00160.0000第一类二重积分程序代码:%造示性函数,求不同区域上积分只需更改示性函数functionI=I2(x,y)ifxA2+yA2<=1I=1;elseI=0;end%保存为I2.m施一类二重积分程序主体%保存为f12.mfunctionoutf12=f12()g2=input('输入二元被积函数如exp(x.A2+y.A2):','s')%输入被积函数g2=inline(g2,'x','y');Real=

11、input('积分真值:');输入积分真值fprintf('输入样本容量10AV1*10AV1-10AV2*10AV2:r')V=zeros(1,2);V(1)=input('V1:');%输入样本容量V(2)=input('V2:');form=V(1):V样本容量10Am1-10Am2forj=1:10x=randn(1,n);y=randn(1,n);fori=1:nt2(i)=I2(x(i),y(i);%示性及求和向量endy2=g2(x,y)*(2*pi).*exp(x.A2+y.A2)/2);Y2(j)=y2*t2&#

12、39;/n;%单次实验样本均值endt=ones(1,10);EY=Y2*t'/10;%十次均值D=abs(EY-Real);%绝对误差RD=D/Real;%绝对误差d=0;fori=1:10d=d+(Y2(i)-Real)A2;endd=d/(10-1);EY2(m-V(1)+1)=EY;%样本容量为10Am时的样本均值D2(m-V(1)+1)=D;%绝对误差RD2(m-V(1)+1)=RD;%绝对误差MSE2(m-V(1)+1)=d;%方差endReal,EY2,D2,RD2,MSE2outf12=EY2;D2;RD2;MSE2;%存放样本数字特征%保存为f12.m运行结果:%估计

13、积分ex2y2dxdy,真值为pi*(exp(1)-1)%5.3981x2y21m=f12输入二元被积函数如exp(x,A2+y.A2):exp(x,A2+y.A2)g2=exp(x.A2+yJ2)积分真值:pi*(exp(1)-1)%5.3981输入样本容量10AV1*10AV1-10AV2*10AV2:V1:1V2:4n=100100010000Real=EY2=4.77025.12505.4317D2=0.62790.27320.0335RD2=0.11630.05060.0062MSE2=3.89650.55640.0247m=4.77025.12505.43170.62790.273

14、20.03350.11630.05060.00623.89650.55640.02475.40410.00600.00110.00175.40410.00600.00110.0017第二类一重积分程序代码:%造示性函数functionI=I1(x,a,b)ifx>=a&&x<二bI=1;elseI=0;end%保存为I1.m施二类一重积分程序主体%程序保存为f21.mfunctionoutf21=f21()输入被积函g1=input('输入一元被积函数如exp(x.A2):','s')%数g1=inline(g1);a=input(,

15、输入积分下界a:');%输入积分上下限b=input('输入积分上界b:');fprintf('输入样本容量10AV1-10AV2:丁)V=zeros(1,2);V(1)=input('V1:');%输入样本容量V(2)=input('V2:');form=V(1):V(2)%样本容量10Am1-10Am2n=10Amforj=1:10x=randn(1,n);fori=1:nt1(i)=I1(x(i),a,b);%示性及求和向量endy1=g1(x)*(pi*2)A0.5),*exp(x.A2/2);Y1(j)=y1*t1

16、9;/n;%单次实验样本均值endt=ones(1,10);EY=Y1*t'/10;%十次均值d=0;fori=1:10d=d+(Y1(i)-EY)A2;endd=d/(10-1);EY1(m-V(1)+1)=EY;%样本容量为10Am时的样本均值MSE1(m-V(1)+1)=d;%方差endEY1,MSE1outf21=EY1;MSE1;%存放样本数字特征%程序保存为f21.m运行结果:1、一2%估计积分exdx0m=f21输入一元被积函数如exp(x.A2):exp(x.A2)gi=exp(x.A2)输入积分下界a:0输入积分上界b:1输入样本容量10AV1-10AV2:V1:1V

17、2:4n=100100010000EY1=2.07821.65831.50291.4590MSE1=0.43150.08890.00570.00081.45900.00082.07821.65831.50290.43150.08890.005712%用matlab指令求积分exdx0f=inline('exp(x.A2)')f=Inlinefunction:f(x)=exp(x.A2)>>S=quadl(f,0,1)1.4627第二类二重积分程序代码:%造示性函数,求不同区域上积分只需更改示性函数functionI=I2(x,y)ifxA2+yA2<=1I=1

18、;elseI=0;end%保存为I2.m施二类二重积分函数主体%程序彳存为f22.mfunctionoutf22=f22()g2=input('输入二元被积函数如1./(1+乂八4+丫八4)八0.5:',&')%输入被积函数g2=inline(g2,'x','y');fprintf('输入样本容量10AV1*10AV1-10AV2*10AV2:丁)V=zeros(1,2);V(1)=input('V1:');%输入样本容量V(2)=input('V2:');form=V(1):V(2)%样本

19、容量10Am1-10Am2n=10Amforj=1:10x=randn(1,n);y=randn(1,n);fori=1:nt2(i)=I2(x(i),y(i);%示性及求和向量endy2=g2(x,y)*(2*pi).*exp(x.A2+y.A2)/2);Y2(j)=y2*t2'/n;%单次实验样本均值endt=ones(1,10);EY=Y2*t'/10;%十次均值d=0;fori=1:10d=d+(Y2(i)-EY)A2;endd=d/(10-1);EY2(m-V(1)+1)=EY;%样本容量为10Am时的样本均值MSE2(m-V(1)+1)=d;%方差endEY2,MS

20、E2outf22=EY2;MSE2;%存放样本数字特征施二类二重积分,程序保存为f22.m运行结果:%估计积分1dxdyx2y21Jix,/m=f22输入二元被积函数如1./(1+xA4+yA4)A0.5:1./(1+xA4+yA4)A0.5g2=1./(1+xA4+yA4)A0.5输入样本容量10AV1*10AV1-10AV2*10AV2:V1:1V2:4n=10n=100100010000EY2=3.07592.96992.85662.8269MSE2=3.07592.96991.32670.09002.85662.82690.00600.0014实验结果整理:第一类一重积分:2估计积分x

21、sinxdx0积分真值:1积分估计值:1.0018样本容量:10100100010000100000样本均值:1.26351.00881.00661.01091.0018绝对误差:0.26350.00880.00660.01090.0018相对误差:0.2635均方误差:0.6439、一一2估计积分e-xdx0积分真值:0.8862样本容量:10样本均值:0.9333绝对误差:0.0470相对误差:0.0531均方误差:0.19270.00880.00660.02050.00280.01090.00180.00060.0001积分估计值:10010000.90770.88730.02150.0

22、0100.02430.00120.01120.00160.8871100000.88710.00090.00100.0000第一类二重积分:估计积分exydxdyx2y21积分真值:5.3981积分估计值:5.4041样本容量:10100100010000样本均值:4.77025.12505.43175.4041绝对误差:0.62790.27320.03350.0060相对误差:0.11630.05060.00620.0011土匀方误差:3.89650.55640.02470.0017第二类一重积分:12估计积分exdx0积分估计值:1.4590样本容量:10100100010000样本均值:

23、2.07821.65831.50291.4590样本方差:0.43150.08890.00570.0008用matlab指令求得积分结果1.4627第二类二重积分:估计积分f1dxdy51x4y4积分估计值:2.8269样本容量:10100100010000样本均值:3.07592.96992.85662.8269样本方差:1.32670.09000.00600.0014实验结果分析:2从第一类积分看,以估计积分xsinxdx为例:0样本容量:10样本均值:1.2635绝对误差:0.2635相对误差:0.2635均方误差:0.643910010001.00881.00660.00880.00660.00880.00660.02050.0028100001000001.01091.00180.01090.00180.01090.00180.00060.0001随着样本容量的增大,样本均值有接近积分真值的趋势,绝对误差、相对误差、均方误差呈减小趋势;随着样本容量的增大,样本均值有接近积分真值的趋势,说明估计具有无偏性;绝对误差、相对误差、均方误差呈减

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论