2024年1月11日发(作者:)
班级
实验名称
数学与应用数学2班
定积分的近似计算
姓名
杜志佩
学号
1101114074
问题背景描述:
利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.
实验目的:
本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法。对于定积分的近似数值计算,Matlab有专门函数可用。
实验原理与数学模型:
1.矩形法:
根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即
在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同有不同。
的取法,计算结果会(1) 左点法:对等分区间
,
在区间上取左端点,即取。
(2)右点法:同(1)中划分区间,在区间上取右端点,即取。
(3)中点法:同(1)中划分区间,在区间上取中点,即取。
2. 梯形法
等分区间
,().
相应函数值为
曲线上相应的点为 ()
将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得每个上的曲边梯形成为真正的梯形,其面积为
,.
于是各个小梯形面积之和就是曲边梯形面积的近似值,
,
即 ,
称此式为梯形公式。
3. 抛物线法
将积分区间作等分,分点依次为
,,
对应函数值为
(),
曲线上相应点为
().
现把区间上的曲线段用通过三点,,的抛物线
来近似代替,然后求函数从到的定积分:
由于,代入上式整理后得
同样也有
……
将这个积分相加即得原来所要计算的定积分的近似值:
,
即
这就是抛物线法公式,也称为辛卜生(Simpson)公式.
实验所用软件及版本:Matlab R2012b
主要内容:
1. 分别用梯形法与抛物线法,计算算求解,比较结果的差异.
,取.并尝试直接使用函数trapz()、quad()进行计2. 试计算定积分.(注意:可以运用trapz()、quad()或附录程序求解吗?为什么?)
3. 学习fulu2sum.m的程序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环。
实验过程记录:
1.(1)梯形法:
程序: n=120;
a=1;
b=2;
sum=0;%保证sum开始值为0
syms x fx;
fx=1/x;
for i=1:n %循环语句
xj=a+(i-1)*(b-a)/n;
xi=a+i*(b-a)/n;
fxj=subs(fx,'x',xj); %符号运算,替换
fxi=subs(fx,'x',xi); %符号运算,替换
sum=sum+(fxi+fxj)*(b-a)/(2*n);%求矩形面积
end
sum %如果没有这句话就算不出最后的积分
结果:sum =0.6932
(2)抛物线法:
n=120;
a=1;
b=2;
sum=0;
syms x fx;
fx=1/x;
for i=1:n
xx=a+(2*i-2)*(b-a)/(2*n);%第一点的自变量取值后面是除2*n,不是n
yy=a+(2*i-1)*(b-a)/(2*n); %第二点的自变量取值后面是2*i-1
zz=a+(2*i-0)*(b-a)/(2*n); %复制后没改自变量的名字
fxx=subs(fx,‘x’,x0);
fyy=subs(fx,‘x’,x1);
fzz=subs(fx,‘x’,x2);
sum=sum+(fxx+4*fyy+fzz)*(b-a)/(6*n);%求和
end
sum
结果:sum = 0.6931
(3)trapz()法:
程序:x=1:0.001:2;
y=1./x;
trapz(x,y)
结果:
ans =0.6931
(4)quad()法:
程序:quad('1./x',1,2,10e-10) %10e-10为计算精度
结果:ans = 0.6931
2. (1)使用int:
程序:
syms x;
int(sin(x)/x,0,inf) %了解inf表示无穷
结果:ans =pi/2
(2)使用函数trapz():
程序:
x=1:1/120:inf;
y=sin(x)./x;
trapz(x,y)
结果:Maximum variable size allowed by the program is exceeded.
Error in ch8ex31 (line 1)
x=1:1/120:inf;
(3)使用函数quad():
quad('sin(x)./x',0,inf)
结果:ans =NaN
(4)矩形法:
n=inf;
a=0;
b=inf;
syms x fx
fx=sin(x)./x;
i=1:n;
xj=a+(i-1)*(b-a)/n; %左点自变量取值
fxj=subs(fx,'x',xj); %符号运算,替换
f1=fxj*(b-a)/n;
inum1=sum(f1) %计算总面积,即积分
结果:
Maximum variable size allowed by the program is exceeded.
Error in ch8ex31 (line 6)
i=1:n;
故不能用trapz(),quad(),或梯形法,矩形法,抛物线法计算。
3.(1)矩形法:
程序:
n=120;
a=0;
b=1;
syms x fx;
fx=1/(1+x^2);
i=1:n; %避免for循环
xx=a+i*(b-a)/n;
fxx=subs(fx,'x',xx);
f=fxx*(b-a)/n;
sum=sum(f) %一定要写这个命令,求和
结果:sum = 0.7833
(2)抛物线法:
程序:
n=120;
a=0;
b=1;
syms x fx
fx=1/(1+x^2);
i=1:n;
xx=a+(2*i-2)*(b-a)/(2*n);
yy=a+(2*i-1)*(b-a)/(2*n);
zz=a+(2*i-0)*(b-a)/(2*n); %注意变量名应不同
fxx=subs(fx,'x',xx);
fyy=subs(fx,'x',yy); %复制过后改变量名
fzz=subs(fx,'x',zz);
f=(fxx+4*fyy+fzz)*(b-a)/(6*n);
s=sum(f)
结果:s =0.7854
实验结果报告及实验总结:
1. 实验结果报告:
(1)梯形法:结果:sum =0.6932
(2)抛物线法:结果:sum = 0.6931
(3)trapz()法:结果:ans =0.6931
(4)quad()法:结果:ans = 0.6931
实验总结:
将题中的近似计算结果与Matlab各命令的计算结果相比较,发现运用不同的方法,计算结果会有不同。
因为由梯形法求近似值,当为凹曲线时,它就偏小;当为凸曲线时,它就偏大.误差较大。故由计算结果知,利用抛物线法近似计算定积分,更接近于实际值,精确程度更高.
且发现trapz()的调试结果与梯形法结果相同,故可猜测该Matlab中的数值积分命令函数trapz()采用了梯形法近似计算方法。
2. 实验结果报告:
(1)使用int:结果:ans =pi/2
(2)使用函数trapz():
结果:Maximum variable size allowed by the program is exceeded.
Error in ch8ex31 (line 1)
x=1:1/120:inf;
(3)使用函数quad():结果:ans =NaN
(4)矩形法:
结果:Maximum variable size allowed by the program is exceeded.
Error in ch8ex31 (line 6)
i=1:n;
实验总结:
通过实验发现使用函数trapz(),quad()和附录程序求解,均不能调试出或得出正确答案。用matlab命令中的符号求积分int()才得出正确结果。故矩形法、梯形法、抛物线法是主要研究定积分的三种近似计算算法。Matlab的专门函数trapz(),quad()也是用于定积分的近似数值计算。对于不定积分,由于积
分区间无限大,故不能使用该分割方法。
3. 实验结果报告:
(1)矩形法:结果:sum = 0.7833
(2)抛物线法:结果:s =0.7854
实验总结:
实验结果见实验过程中的调试结果。调试顺利。使用sum函数时,s和sum不需要赋初值,应用了积分理论中分割近似求和取极限的思想方法,避免了for循环的冗杂性,简单明了。
思考与深入:
通过本实验加深理解了积分理论中分割、近似、求和、取极限的思想方法。学习并掌握了用matlab求定积分的方法,了解了定积分近似计算的矩形法、梯形法,和抛物线法。并认识到对于不同的题目,采取不同的运算方法,结果会不同,且精确程度也不同。
同时,对于自身,要深刻理解不定积分、定积分概念,熟悉matlab数学软件的求不定积分、定积分的命令,了解简单的编程语句,以更快更准确且熟练地设计出程序。
教师评语:
发布者:admin,转转请注明出处:http://www.yc00.com/news/1704973793a1384972.html
评论列表(0条)