实验三 数值积分与微分
实验目的
1)用MATLAB软件掌握梯形公式、辛普森公式和孟特卡罗方法计算数值积分;
2)通过实例学习用数值积分和数值微分解决实际问题。
预备:对数值函数,用辛普森公式计算定积分的程序simp.m:
function s=simp(y,h,m)
s=0;
for k=1:m
s=s+4*y(2*k);
end
for k=1:(m-1)
s=s+2*y(2*k+1);
end
s=(s+y(1)+y(2*m+1))*h/3;
实验内容
1.用矩形、梯形(trapz)、和辛普森(simp)三种公式计算由下表数据给出的积分
| k 1 2 3 4 5 6 7 |
| xk 0.3 0.5 0.7 0.9 1.1 1.3 1.5 yk 0.35 0.6598 0.9147 1.1611 1.3971 1.6212 1.8325 |
用MATLAB作积分:
a.矩形法求积分
》y=[0.35 0.6598 0.9147 1.1611 1.3971 1.6212 1.8325];
》s1=sum(y(1:6))*0.2
s1 =
1.2287
b.梯形法求积分
》s2=trapz(y)*0.2
s2 =
1.3730
c.用辛普森公式计算积分
》s3=simp(y,0.2,3)
s3 =
1.3743
d.精确值:
各方法结果比较:
| 矩形公式 | 梯形公式 | 辛普森公式 | 精确值 |
| 1.2287 | 1.3730 | 1.3743 | 1.4323 |
2.选择下面函数用梯形(trapz)、辛普森(quad)和孟特卡罗三种方法计算积分,改变步长(对梯形),改变精度要求(对辛普森),改变随机点数目(对孟特卡罗),进行比较、分析。
a.梯形公式计算积分:
为了便于改变区间数,编制函数tpz(n)专用于计算按n个区间的梯形法积分。
function s=tpz(n)
x=linspace(-2,2,n+1);
y=1/sqrt(2*pi).*exp(-x.*x./2);
s=trapz(x,y);
分别用tpz(20) tpz(30) tpz(40)计算区间数分别为n=20 n=30 n=40时的结果,并与精确值(用误差函数计算)0.9545比较
| n=10 | n=20 | n=30 | 精确值 |
| 0.9516 | 0.9538 | 0.9542 | 0.9545 |
b.辛普森法
先编制函数ff( )
function y=ff(x)
y=1/sqrt(2*pi)*exp(-x*x/2);
分别计算quad(ff,-2,2,0.1) quad(ff,-2,2,0.01) quad(ff,-2,2,0.001)并与精确值比较
| quad (ff,-2,2,0.1) | quad (ff,-2,2,0.01) | quad (ff,-2,2,0.001) | 精确值 |
| 0.9544 | 0.9545 | 0.9545 | 0.9545 |
c.孟特卡罗法
编制程序mt( )如下:(n是随机点的数目)
function s=mt(n)
s=0;
x=-2.+4.*rand(1,n);
y=1/sqrt(2*pi).*exp(-x.*x./2);
s=sum(y)*4/n;
分别计算mt(100) mt(10000) mt(1000000)并与精确值比较如下:
| n=100 | n=10000 | n=1000000 | 精确值 |
| 1.0298 | 0.9587 | 0.9546 | 0.9545 |
6.测得活塞中气体压力P和体积V的一组数据如下:
| P(lbf/in2) | 60 | 80 | 100 | 120 | 140 | 160 | 180 |
| V(in3) | 80.0 | 69.2 | 60.0 | 52.0 | 45.0 | 38.6 | 32.5 |
a.求数值微分,在MATLAB下运行如下命令:
》P=[60 80 100 120 140 160 180];
》V=[80 69.2 60 52 45 38.6 32.5];
》pp=spline(V,P);
》ppd=ppder(pp);
》dy=ppval(ppd,[60 50]);
dy=
-2.3341 -2.71
即在V=60, 50(in3)处,V改变1(in3)时P的变化量分别是 -2.3341和 -2.71 (lbf/in2)。
b.求数值积分
》V1=linspace(40,70,1000);
》P1=spline(V,P,V1);
》S=trapz(V1,P1);
S=
3.4144e+003
即V从70减至40(in3)时气体作的功是-3414.4 (lbf in)。
10.炮弹射击的目标为一半径100m的圆形区域,当瞄准目标的中心发射时,在众多因素的影响下,弹着点与目标中心有随机偏差。可以合理地假设弹着点围绕中心呈二维正态分布,x方向和y方向的均方差分别为80m和50m,且偏差在x和y之间的相关系数为0.4。求炮弹命中圆形区域的概率。
用孟特卡罗法计算如下积分
其中Ω是半径为100的圆形区域。
编制如下程序mtc( )
function s=mtc(n)
m=0;ss=0;
for i=1:n
x=(rand-0.5)*200;
y=(rand-0.5)*200;
if x^2+y^2<=100^2
z=1/(2*pi*80*50*sqrt(1-0.4*0.4))*exp(-0.5/(1-0.4*0.4)*(x*x/00-2*0.4*x/80*y/50+y*y/2500));
ss=ss+z;
m=m+1;
end
end
s=ss*40000/n;
取随机点数n=1000000,计算mtc (1000000)得结果为0.6986
即炮弹命中的概率是69.9%.下载本文