MATLAB实验三 定积分的近似计算

合集下载

《数学实验》实验报告——定积分的近似求解

《数学实验》实验报告——定积分的近似求解


2 梯形法程序如下: f=input('请输入被积函数 f(x)='); qujian=input('请输入积分区间[a,b]='); n=input('请输入子区间个数 n='); s=0; for i=1:n-1 x=qujian(1)+(qujian(2)-qujian(1))/n*i; y=eval(f); s=s+y; end x=qujian(1); y=eval(f); s=s+y/2; x=qujian(2); y=eval(f); s=s+y/2; disp('定积分的近似值是:'); s=s*(qujian(2)-qujian(1))/n
《数学实验》实验报告
班级 试验 内容 **** 学号 **** 姓名 试验 类别
自选试验
****
成绩 试验 时间 2011 年 5 月 20 日—22 日
定积分的近似求解
试验问题:
用梯形法与抛物法,通过 MATLAB,计算 x 2 dx 的近似值,取 n=10,比较结果的差异,研究
0 1
定积分的两种近似计算方法。
1 1 1 2 ph 3 6rh h(2 ph 2 6r ) h( y 0 4 y1 y 2 ) 3 3 3 。 ba n ,则上面所求的 S 等于区间 [ x0 , x2 ] 上以抛物线为曲边的曲边梯形的面积。同理可



以得到区间 [ xi 1 , xi 1 ] 上以抛物线为曲边的曲边梯形的面积:
试验目的:
通过分别用梯形法与抛物线法计算定积分的近似值, 进而熟练掌握运用 MATLAB 来解决 定积分的近似求解,体会 MATLAB 的强大功能。

MATLAB实验三 定积分的近似计算

MATLAB实验三 定积分的近似计算

实验三定积分的近似计算一、问题背景与实验目的利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用.二、相关函数(命令)及简介1.sum(a):求数组a的和.2.format long:长格式,即屏幕显示15位有效数字.(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.4.quad():抛物线法求数值积分.格式:quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即.*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2);5.trapz():梯形法求数值积分.格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算0sin()dx xπ⎰x=0:pi/100:pi;y=sin(x);trapz(x,y)6.dblquad():抛物线法求二重数值积分.格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递.例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法.Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件integrnd.m:function z = integrnd(x, y) z = y*sin(x);7.fprintf (文件地址,格式,写入的变量):把数据写入指定文件.例:x = 0:.1:1; y = [x; exp(x)];fid = fopen('exp.txt','w'); %打开文件 fprintf(fid,'%6.2f %12.8f\n',y); %写入 fclose(fid) %关闭文件 8.syms 变量1 变量2 …:定义变量为符号. 9.sym('表达式'):将表达式定义为符号.解释:Matlab 中的符号运算事实上是借用了Maple 的软件包,所以当在Matlab 中要对符号进行运算时,必须先把要用到的变量定义为符号. 10.int(f,v,a,b):求f 关于v 积分,积分区间由a 到b .11.subs(f ,'x',a):将 a 的值赋给符号表达式 f 中的 x ,并计算出值.若简单地使用subs(f),则将f 的所有符号变量用可能的数值代入,并计算出值.三、实验内容1. 矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即1()d ()nbi i ai f x x f x ς==∆∑⎰在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同i ς的取法,计算结果会有不同,我们以 120d 1xx +⎰为例(取100=n ),(1) 左点法:对等分区间b x i n ab a x x a x n i =<<-+=<<<=ΛΛ10,在区间],[1i i x x -上取左端点,即取1-=i i x ς,12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78789399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差0.7878939967307840.0031784ππ-=≈(2)右点法:同(1)中划分区间,在区间],[1i i x x -上取右端点,即取i i x =ς,12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78289399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 0.7828939967307840.0031884ππ-=≈(3)中点法:同(1)中划分区间,在区间1[,]i i x x -上取中点,即取12i ii x x ς-+=, 12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78540024673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 60.7854002467307842.653104ππ--=≈⨯如果在分割的每个小区间上采用一次或二次多项式来近似代替被积函数,那么可以期望得到比矩形法效果好得多的近似计算公式.下面介绍的梯形法和抛物线法就是这一指导思想的产物.2. 梯形法等分区间b x i n a b a x x a x n i =<<-+=<<<=ΛΛ10,nab x -=∆ 相应函数值为n y y y ,,,10Λ(n i x f y i i ,,1,0),(Λ==).曲线)(x f y =上相应的点为n P P P ,,,10Λ(n i y x P i i i ,,1,0),,(Λ==)将曲线的每一段弧i i P P 1-用过点1-i P ,i P 的弦i i P P 1-(线性函数)来代替,这使得每个],[1i i x x -上的曲边梯形成为真正的梯形,其面积为x y y ii ∆⨯+-21,n i ,,2,1Λ=. 于是各个小梯形面积之和就是曲边梯形面积的近似值,11 11()d ()22nnbi i i i ai i y y x f x x x y y --==+∆≈⨯∆=+∑∑⎰, 即11 ()d ()22bn n ay y b a f x x y y n --≈++++⎰L , 称此式为梯形公式.仍用 12 0d 1x x +⎰的近似计算为例,取100=n ,10112 0d ()122n n y y x b a y y x n --≈++++=+⎰L 0.78539399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 60.7853939967307845.305104ππ--=≈⨯很显然,这个误差要比简单的矩形左点法和右点法的计算误差小得多.3. 抛物线法由梯形法求近似值,当)(x f y =为凹曲线时,它就偏小;当)(x f y =为凸曲线时,它就偏大.若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法.将积分区间],[b a 作n 2等分,分点依次为b x i n a b a x x a x n i =<<-+=<<<=2102ΛΛ,nab x 2-=∆, 对应函数值为n y y y 210,,,Λ(n i x f y i i 2,,1,0),(Λ==),曲线上相应点为n P P P 210,,,Λ(n i y x P i i i 2,,1,0),,(Λ==).现把区间],[20x x 上的曲线段)(x f y =用通过三点),(000y x P ,),(111y x P ,),(222y x P 的抛物线)(12x p x x y =++=γβα来近似代替,然后求函数)(1x p 从0x 到2x 的定积分:21 ()d x x p x x =⎰22 ()d x x x x x αβγ++=⎰)()(2)(30220223032x x x x x x -+-+-γβα]4)(2)()()[(62022022202002γβαγβαγβα++++++++++-=x x x x x x x x x x 由于2201x x x +=,代入上式整理后得 21 ()d x x p x x ⎰)](4)()[(612122202002γβαγβαγβα++++++++-=x x x x x x x x )4(621002y y y x x ++-=)4(6210y y y nab ++-= 同样也有422 ()d x x p x x ⎰)4(6432y y y n ab ++-=……222 ()d n n x nx p x x -⎰)4(621222n n n y y y nab ++-=-- 将这n 个积分相加即得原来所要计算的定积分的近似值:22222212 11()d ()d (4)6ii nnbx i i i i ax i i b af x x p x x y y y n---==-≈=++∑∑⎰⎰, 即021******* ()d [4()2()]6bn n n ab af x x y y y y y y y y n---≈++++++++⎰L L 这就是抛物线法公式,也称为辛卜生(Simpson )公式.仍用 12 0d 1x x +⎰的近似计算为例,取100=n ,102132124222 0d [4()2()]16n n n x b ay y y y y y y y x n ---≈+++++++++⎰L L=0.78539816339745,理论值 12 0d 14x x π=+⎰,此时计算的相对误差 160.7853981633974542.827104ππ--=≈⨯4. 直接应用Matlab 命令计算结果(1) 数值计算 120d .1xx +⎰ 方法1:int('1/(1+x^2)','x',0,1) (符号求积分)方法2:quad('1./(1+x.^2)',0,1) (抛物线法求数值积分)方法3:x=0:0.001:1; y=1./(1+x.^2);trapz(x,y) (梯形法求数值积分) (2)数值计算 212 01d d x x y y -+⎰⎰方法1:int(int('x+y^2','y',-1,1),'x',0,2) (符号求积分)方法2:dblquad(inline('x+y^2'),0,2,-1,1) (抛物线法二重数值积分)四、自己动手1. 实现实验内容中的例子,即分别采用矩形法、梯形法、抛物线法计算 120d 1xx +⎰,取258=n ,并比较三种方法的精确程度.2. 分别用梯形法与抛物线法,计算 2 1d xx⎰,取120=n .并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异.3. 试计算定积分 0sin d xx x+∞⎰.(注意:可以运用trapz()、quad()或附录程序求解吗?为什么?)4. 将 120d 1xx +⎰的近似计算结果与Matlab 中各命令的计算结果相比较,试猜测Matlab 中的数值积分命令最可能采用了哪一种近似计算方法?并找出其他例子支持你的观点.5. 通过整个实验内容及练习,你能否作出一些理论上的小结,即针对什么类型的函数(具有某种单调特性或凹凸特性),用某种近似计算方法所得结果更接近于实际值?6. 学习fulu2sum.m 的程序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环.五、附录附录1:矩形法(左点法、右点法、中点法)(fulu1.m ) format long n=100;a=0;b=1;inum1=0;inum2=0;inum3=0; syms x fx fx=1/(1+x^2); for i=1:nxj=a+(i-1)*(b-a)/n; %左点 xi=a+i*(b-a)/n; %右点 fxj=subs(fx,'x',xj); %左点值fxi=subs(fx,'x',xi); %右点值fxij=subs(fx,'x',(xi+xj)/2); %中点值inum1=inum1+fxj*(b-a)/n;inum2=inum2+fxi*(b-a)/n;inum3=inum3+fxij*(b-a)/n;endinum1inum2inum3integrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum1 and real-value is about: %d\n\n',...abs((inum1-integrate)/integrate))fprintf('The relative error between inum2 and real-value is about: %d\n\n',...abs((inum2-integrate)/integrate))fprintf('The relative error between inum3 and real-value is about: %d\n\n',...abs((inum3-integrate)/integrate))附录2:梯形法(fulu2.m)format longn=100;a=0;b=1;inum=0;syms x fxfx=1/(1+x^2);for i=1:nxj=a+(i-1)*(b-a)/n;xi=a+i*(b-a)/n;fxj=subs(fx,'x',xj);fxi=subs(fx,'x',xi);inum=inum+(fxj+fxi)*(b-a)/(2*n);endinumintegrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))附录2sum:梯形法(fulu2sum.m),利用求和函数,避免for 循环format longn=100;a=0;b=1;syms x fxfx=1/(1+x^2);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); %所有右点值f=(fxi+fxj)/2*(b-a)/n; %梯形面积inum=sum(f) %加和梯形面积求解integrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))附录3:抛物线法(fulu3.m)format longn=100;a=0;b=1;inum=0;syms x fxfx=1/(1+x^2);for i=1:nxj=a+(i-1)*(b-a)/n; %左点xi=a+i*(b-a)/n; %右点xk=(xi+xj)/2; %中点fxj=subs(fx,'x',xj);fxi=subs(fx,'x',xi);fxk=subs(fx,'x',xk);inum=inum+(fxj+4*fxk+fxi)*(b-a)/(6*n);endinumintegrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))。

三用MATLAB实现定积分计算

三用MATLAB实现定积分计算

形的公求式积代公数式精。度为对于1,f 辛(x)甫=1森, x公, 式x 2的, x代3,数应精该度有为 3。
节成点立我x,ba下i和们依f面系先(次介x数考11)将绍dfA虑f(x的i(,xx节))是d=使点x1取t代数, (x消数xAb,为1对xaa精f22)(2区/bx,度而21x间)尽使3代等可用Ab入2分2能(fa1,(的1高1x1)即2限计的)f可制(算所得a,的谓2b到n积高确给分斯b定定近2公aA后似t式1,)同A值d。2时t有,x确1代,x定数2
n
In Ai f (xi )
(11)
i1
如何选择节点xi 和系数Ai ,使(11)计算的精度更高?
令我f们(x不)=妨xk只,考用虑(11)I式计11算f (
Ix)dx
b a
f而( x构)d造x,代若数对精于度k为=03,的1,.形..,m如都
有In = I ,而G当2=kA=1mf(+x11)时+ A,2Ifn(x≠2)I ,则称In 的代数精度为m(1。2)梯
s1=s1+y(2*i); end for j=1:m-1
s2=s2+y(2*j+1); end s=(y(1)+y(n)+4*s1+2*s2)*h/3;
当被积函数不是解析表示时, 比如离散数据表表示的函数 通常就用这个函数按辛甫森 公式计算积分。
二 高斯(Gauss)求积公式
各种近似求积公式都可以表示为
tqruaapdz(('yf)un',a(按b,b-)a梯)/形n(公参用式考辛计书甫算P森定22(积3)2分阶()单公位式步计长算)函。数fun在区间 trapz(x,y) x , y同长[ 度a, ,b]的输积出分y ,对自x动的选按择梯步形长公。式计算的积分 quad('fun',a(,b变,to步l) 长)与。上同,但指定了相对误差 tol。 quadl(‘fun’,a,b,tol) 用自适应Gauss-Lobatto公式计算,精度 更高。

数值积分的方法计算定积分,matlab实验

数值积分的方法计算定积分,matlab实验

n 1 n 1 h f ( a ) 2 f ( x ) 4 f ( x 1 ) f (b) i i 6 i 1 i 0 2
编程如下: a=0; b=1; %积分上下限分别为 0,1, 将[0,1]区间 3 等分保证误差小于 e-5 n=3; h=(b-a)/n; %h 为区间长度 m=0;n=0; %定义变量并初始化 for x1=a+h:h:b-h m=m+exp(-x1); %计算以步长为 h 的所有节点函数值之和 end for x2=a+h/2:h:b-h/2 %计算以步长为 h/2 的所有节点函数值之和 n=n+exp(-x2); end S=h*(exp(0)+2*m+4*n+exp(-1))/6*2/sqrt(pi) %复化 simpson 公式求积分并输出 format long;
姓 名
学 号
班 级
成 绩
教师姓名:
时间:
( 教 师 填 写 )
实 验 报 告 要 求
如果步骤较多,请自行加页(A4 幅面)ຫໍສະໝຸດ 2e0
1
x
dx .
(1)复化梯形公式 分析: 由复化梯形公式可知, 余项 RTn

b a 2 '' '' x h f ( ) , 且 a=0, b=1, f ( x) e , 12
h
ba 1 1 x 1 x 1 e e 105 ,所以可 , 所以可得 RTn 2 2 2 n 12 n 12n 12n
n 1 h 得 n 91.29 ,所以 n 取 92, Tn [ f (a) 2 f ( xi ) f (b)] 。 2 i 1
程序: n=92,a=0,b=1;

定积分的近似运算

定积分的近似运算
一.单调增函数
(1)y=x^2
矩形法inum1 =0.328350000000000 inum2 = 0.338350000000000
inum3 =0.333325000000000
integrate =1/3 integrate = 0.333333333333333
the relative error between inum1 and real-value is about: 0.01495
the relative error between inum2 and real-value is about: 0.01505
the relative error between inum3 and real-value is about: 2.5e-05
梯形法inum =0.333350000000000 integrate =1/3
the relative error between inum1 and real-value is about: 0.0199
the relative error between inum2 and real-value is about: 0.0201
the relative error between inum3 and real-value is about: 5e-05
fx1=subs(fx,x,x1);
fx2=subs(fx,x,x2);
si=(fx0+4*fx1+fx2)*(b-a)/(6*n);
inum=inum+si;
end
inum
integrate=int(fx,0,1);
integrate=double(integrate)

数学实验“几种常见的求积分近似解的方法”实验报告(内含matlab程序)

数学实验“几种常见的求积分近似解的方法”实验报告(内含matlab程序)

数学实验“几种常见的求积分近似解的方法”实验报告(内含matlab程序)西京学院数学软件实验任务书实验二十一实验报告一、实验名称:Romberg 积分法,Gauss 型积分法,高斯-勒让德积分法,高斯-切比雪夫积分法,高斯-拉盖尔积分法,高斯-埃尔米特积分法。

二、实验目的:进一步熟悉Romberg 积分法,Gauss 型积分法,高斯-勒让德积分法,高斯-切比雪夫积分法,高斯-拉盖尔积分法,高斯-埃尔米特积分法。

三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。

四、实验原理:1.Romberg 积分法:龙贝格积分法是用里查森外推算法来加快复合梯形求积公式的收敛速度,它的算法如下,其中()i m T 是通过一系列逼近原定积分的龙贝格分值.计算(0)1[()()]2b aT f a f b -=+ 对1,2,3,k n = ,计算下列各步:21()(1)11111(21)()[()]222k k k k k j b a j b a TT f a ---=---=++∑对1,2,,m k = 和,1,2,,1i k k k =-- ,计算111441m i i i m m m m T T T--+-=-随着计算的步骤的增加,()i mT 越来越逼近积分()ba f x dx ?。

2.Gauss 型积分法:高斯积分公式的思想是用n 个不等距的节点123,,,nx x x x 对被积函数进行插值,然后对插值后的函数进行积分,其积分公式为:111()()nk k k f x dx A f x -=≈∑?如果积分区间不是[1,1]-,则需转换到此区间:11()()222bab a b a b af x dx f t dt ---+=+?其中系数k A 、节点k x 与n 的关系如下表所示: 3.高斯-切比雪夫积分法:第一类切比雪夫积分形式为:11()()nk k k f x dx A f x -=≈∑?其中k A n π=,21cos2k k x nπ-= 4.高斯-拉盖尔积分法:高斯-拉盖尔公式有两种形式:1()()nxk k k e f x dx A f x +∞-=≈∑?1()()k nx k k k f x dx A e f x +∞=≈∑?下面编制的程序是针对第一种形式的高斯-拉盖尔公式,即1()()nxk k k e f x dx A f x +∞-=≈∑?因此程序的第一个输入参数——被积函数,是上式中的()f x 。

三用MATLAB实现定积分计算

三用MATLAB实现定积分计算

s=s+feval(f,z1(j))+feval(f,z2(j));
0,2*pi,1000)
end
s=
s=s*h/2;
-267.2458
Gauss-lobatto是改进的高斯积分方法,采取自适应求积方法

三 用MATLAB实现定积分计算: 2 sin xdx 0
⑴ 矩形公式与梯形公式 z1 =
形的公求式积代公数式精。度为对于1,f 辛(x)甫=1森, x公, 式x 2的, x代3,数应精该度有为 3。
节成点立我x,ba下i和们依f面系先(次介x数考11)将绍dfA虑f(x的i(,xx节))是d=使点x1取t代数, (x消数xAb,为1对xaa精f22)(2区/bx,度而21x间)尽使3代等可用Ab入2分2能(fa1,(的1高1x1)即2限计的)f可制(算所得a,的谓2b到n积高确给分斯b定定近2公aA后似t式1,)同A值d。2时t有,x确1代,x定数2
这两种用随机模拟的方式求积分近似值的方法 z=sum(y)*pi/2/n
/2
z=
蒙特卡罗方法
sin xdx
1.0010
0
3、蒙特卡罗方法的通用函数与调用格式
均值估计法
随机投点法 (设0≤ f(x) ≤1)
b
a
f
( x)dx

ba n
n i1
f
(a (b a)ui )
直接调用。这里被积函数为内部函数,无需另外定义。
s=gaussinteg(‘sin', 0, pi/2,1000) s=
1.0000
6000
§2 数值积分应用问题举例4000
2000
0
一 求卫星轨道长度

如何用matlab计算定积分-matlab求积分

如何用matlab计算定积分-matlab求积分

用matlab 计算积分4.1积分的有关理论定积分:积分是微分的无限和,函数)(x f 在区间],[b a 上的积分定义为∑∫=→∆∆==ni iix baxf dx x f I i 1)max()(lim)(ξ其中.,,2,1),,(,,1110n i x x x x x b x x x a i i i i i i n =∈−=∆=<<<=−−ξ从几何意义上说,对于],[b a 上非负函数)(x f ,记分值I 是曲线)(x f y =与直线b x a x ==,及x 轴所围的曲边梯形的面积。

有界连续(或几何处处连续)函数的积分总是存在的。

微积分基本定理(Newton-Leibniz 公式):)(x f 在],[b a 上连续,且],[),()('b a x x f x F ∈=,则有)()()(a F b F dx x f ba−=∫这个公式表明导数与积分是一对互逆运算,它也提供了求积分的解析方法:为了求)(x f 的定积分,需要找到一个函数)(x F ,使)(x F 的导数正好是)(x f ,我们称)(x F 是)(x f 的原函数或不定积分。

不定积分的求法有学多数学技巧,常用的有换元积分和分部积分法。

从理论上讲,可积函数的原函数总是存在的,但很多被积函数的原函数不能用初等函数表示,也就是说这些积分不能用解析方法求解,需用数值积分法解决。

在应用问题中,常常是利用微分进行分析,而问题最终归结为微分的和(即积分)。

一些更复杂的问题是含微分的方程,不能直接积分求解。

多元函数的积分称为多重积分。

二重积分的定义为∑∑∫∫∆∆=→∆+∆ijji jiy x Gy x f dxdy y x f i i ),(lim),(0)max(22ηξ当),(y x f 非负时,积分值表示曲顶柱体的体积。

二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。

如何用matlab计算定积分

如何用matlab计算定积分

用matlab 计算积分4.1积分的有关理论定积分:积分是微分的无限和,函数)(x f 在区间],[b a 上的积分定义为∑∫=→∆∆==ni iix baxf dx x f I i 1)max()(lim)(ξ其中.,,2,1),,(,,1110n i x x x x x b x x x a i i i i i i n =∈−=∆=<<<=−−ξ从几何意义上说,对于],[b a 上非负函数)(x f ,记分值I 是曲线)(x f y =与直线b x a x ==,及x 轴所围的曲边梯形的面积。

有界连续(或几何处处连续)函数的积分总是存在的。

微积分基本定理(Newton-Leibniz 公式):)(x f 在],[b a 上连续,且],[),()('b a x x f x F ∈=,则有)()()(a F b F dx x f ba−=∫这个公式表明导数与积分是一对互逆运算,它也提供了求积分的解析方法:为了求)(x f 的定积分,需要找到一个函数)(x F ,使)(x F 的导数正好是)(x f ,我们称)(x F 是)(x f 的原函数或不定积分。

不定积分的求法有学多数学技巧,常用的有换元积分和分部积分法。

从理论上讲,可积函数的原函数总是存在的,但很多被积函数的原函数不能用初等函数表示,也就是说这些积分不能用解析方法求解,需用数值积分法解决。

在应用问题中,常常是利用微分进行分析,而问题最终归结为微分的和(即积分)。

一些更复杂的问题是含微分的方程,不能直接积分求解。

多元函数的积分称为多重积分。

二重积分的定义为∑∑∫∫∆∆=→∆+∆ijji jiy x Gy x f dxdy y x f i i ),(lim),(0)max(22ηξ当),(y x f 非负时,积分值表示曲顶柱体的体积。

二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。

【笔记】定积分的近似计算

【笔记】定积分的近似计算

【笔记】定积分的近似计算⽬标:加深理解积分理论中分割、近似、求和、取极限的思想⽅法,了解定积分近似计算的矩形法、梯形法与抛物线法,会⽤MATLAB 语⾔编写求定积分近似值的程序,会⽤MALAB中的命令求定积分。

预备知识在许多实际问题中,常常需要计算定积分的值。

根据微分学基本定理,若被积函数f(x)在区间[a,b]上连续,只需要找到被积函数的⼀个原函数F(x),就可以⽤⽜顿-莱布尼茨公式求出定积分值。

但在⼯程技术与科学实验中,有些定积分的被积函数的原函数可能求不出来,即使可求出,计算也可能相当复杂。

特别地,当被积函数是图形或表格时,更不能⽤⽜顿-莱布尼茨公式计算。

因此必须寻求定积分的近似计算⽅法。

⼤多数实际问题的积分需要⽤数值积分⽅法求出近似结果。

数值积分原则上可以⽤于计算各种被积函数的定积分,⽆论被积函数是解析形式还是数表形式,其基本原理都是⽤多项式函数近似代替被积函数,⽤对多项式的积分结果近似代替对被积函数的积分。

由于所选多项式的不同,可以有许多种数值积分⽅法,下⾯介绍最常⽤的⼏种差值型数值积分⽅法。

1、矩形法定积分的⼏何意义是计算曲边梯形的⾯积,如果将区间[a,b]n等分,每个⼩区间上都是⼀个⼩的曲边梯形,⽤⼀个个⼩矩形代替这些⼩曲边梯形,然后把所有⼩矩形的⾯积加起来就近似等于整个曲边梯形的⾯积,于是便求出了定积分的近似值,这就是矩形法的基本原理。

2、梯形法将积分区间[a,b]n等分,⽤线段依次连接各分点,每段都形成⼀个⼩的直⾓梯形。

如果⽤这些⼩直⾓梯形⾯积之和代替原来的⼩曲边梯形⾯积之和,就可求得定积分的近似值。

3、抛物线法在此不做说明4、相关的MATLAB命令命令:sum(a),求数组a的和例1 调⽤命令sum求矩阵x的各列元素的累加和。

>> x=[1 2 3;4 5 6;7 8 9];>> sum(x)ans =12 15 18命令:format long,长格式,即屏幕显⽰15位有效数字。

定积分的近似计算

定积分的近似计算
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)抛物线法:
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
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);%复制后没改自变量的名字
且发现trapz()的调试结果与梯形法结果相同,故可猜测该Matlab中的数值积分命令函数trapz()采用了梯形法近似计算方法。
2.实验结果报告:
(1)使用int:结果:ans =pi/2
(2)使用函数trapz():
结果:Maximum variable size allowed by the program is exceeded.

matlab定积分的近似计算

matlab定积分的近似计算


arctan x
1 0

π 4
左点法相对误差:0.78789399673078 / 4 0.003178 /4
右点法相对误差:0.78289399673078 / 4 0.003188 /4
中点法相对误差:0.78540024673078 / 4 2.653 10-6 /4
yi
xi
yi f ( xi ), i 1, 2,
,n
整个曲边梯形的面积:
b
S a f ( x)dx
n
Si
i 1

n i 1
yi1 2
yi xi
Si
15
梯形法
如果我们 n 等分区间 [a,b],即令:
x1 x2 xn
h ba n
则 S
的抛物线来近似原函数 f (x) 。
用抛物线代替该直线, 计算精度是否会更好?
18
抛物线法
设过以上三点的抛物线方程为:
y = x2 + x + = p1(x)
则在区间 [x0, x2] 上,有
x2 f (x)dx x0
x2 x0
p1( x)dx

x2 ( x2 x )dx
b
n
f(x )dx
a

lim
max(xi )0
i 1
f(i
)xi
其中 a=x0<x1<…<xn=b,
xi=xi-xi-1, i(xi-1,xi), i=1,2,…,n
若在[a,b]上, F’(x)=f(x), 则
b
f(x )dx F(b) F(a)

定积分的近似计算97786

定积分的近似计算97786

数学实验报告实验序号:4 日期:2012 年12 月13 日实验名称定积分的近似计算问题背景描述:利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.实验目的:本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法。

对于定积分的近似数值计算,Matlab有专门函数可用。

实验原理与数学模型:1.矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同的取法,计算结果会有不同。

(1)左点法:对等分区间,在区间上取左端点,即取。

(2)右点法:同(1)中划分区间,在区间上取右端点,即取。

(3)中点法:同(1)中划分区间,在区间上取中点,即取。

2.梯形法等分区间,相应函数值为().曲线上相应的点为()将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得每个上的曲边梯形成为真正的梯形,其面积为,.于是各个小梯形面积之和就是曲边梯形面积的近似值,,即,称此式为梯形公式。

3.抛物线法将积分区间作等分,分点依次为,,对应函数值为(),曲线上相应点为().现把区间上的曲线段用通过三点,,的抛物线来近似代替,然后求函数从到的定积分:由于,代入上式整理后得同样也有……将这个积分相加即得原来所要计算的定积分的近似值:,即这就是抛物线法公式,也称为辛卜生(Simpson)公式.实验所用软件及版本:Matlab 7.0主要内容(要点):1.分别用梯形法与抛物线法,计算,取.并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异.2.试计算定积分.(注意:可以运用trapz()、quad()或附录程序求解吗?为什么?)3.学习fulu2sum.m的程序设计方法,尝试用函数sum 改写附录1和附录3的程序,避免for 循环。

matlab数值计算 实验报告

matlab数值计算 实验报告

matlab数值计算实验报告Matlab数值计算实验报告引言:Matlab是一种强大的数值计算软件,广泛应用于科学和工程领域。

本实验旨在通过实际案例,展示Matlab在数值计算中的应用能力。

本报告将从三个方面进行讨论:数值积分、线性方程组求解和最优化问题。

一、数值积分:数值积分是数学中常见的问题,Matlab提供了多种函数和方法来解决这类问题。

我们以求解定积分为例进行讨论。

假设我们要求解函数f(x) = x^2在区间[0, 1]上的定积分。

我们可以使用Matlab中的quad函数来进行计算,代码如下:```matlabf = @(x) x.^2;integral = quad(f, 0, 1);disp(integral);```运行以上代码,我们可以得到定积分的近似值为0.3333。

通过调整积分方法和精度参数,我们可以得到更精确的结果。

二、线性方程组求解:线性方程组求解是数值计算中的重要问题,Matlab提供了多种函数和方法来解决线性方程组。

我们以一个简单的线性方程组为例进行讨论。

假设我们要求解以下线性方程组:```2x + y = 5x - y = 1```我们可以使用Matlab中的linsolve函数来求解,代码如下:```matlabA = [2 1; 1 -1];B = [5; 1];X = linsolve(A, B);disp(X);```运行以上代码,我们可以得到方程组的解为x = 2,y = 3。

通过调整方程组的系数矩阵和右侧向量,我们可以求解更复杂的线性方程组。

三、最优化问题:最优化问题在科学和工程领域中广泛存在,Matlab提供了多种函数和方法来解决这类问题。

我们以求解无约束最优化问题为例进行讨论。

假设我们要求解函数f(x) = x^2的最小值。

我们可以使用Matlab中的fminunc函数来进行计算,代码如下:```matlabf = @(x) x.^2;x0 = 1; % 初始点options = optimoptions('fminunc', 'Display', 'iter');[x, fval] = fminunc(f, x0, options);disp(x);disp(fval);```运行以上代码,我们可以得到最小值的近似解为x = 0,f(x) = 0。

定积分的近似计算

定积分的近似计算

定积分的近似计算实验项目: 定积分的三种近似计算算法一、实验目的学习定积分的三种近似计算算法:符号法(矩形法)、梯形法和抛物线法。

二、实验内容及要求1.对于定积分的近似计算matlab 有专门函数可用。

int ()符号法求积分;quad ()抛物线法求数值积分;trapz ()梯形法求数值积分;dblquad ()抛物线法求二重数值积分。

2.注意:matlab 的符号运算事实上是借用了maple 的软件包,所以当在matlab 中进行符号运算时,必须先把要用到的变量定义为符号。

例如求1201d x x +⎰的值,程序如下:sym x; int('1/(1+x^2)','x',0,1)3.实验内容(1)分别用符号法、梯形法和抛物线法求1201d x x +⎰(2)计算0sin x d x x +∞⎰,能用quad ()和trapz ()求解吗?(3)用符号法和抛物线法求21201()d x x y d y -+⎰⎰三、实验结果和程序(1) 程序:符号法:syms x yy=1./(1+x.^2);f=int (y,x,0,1)结果:f = 1/4*pi梯形法:x=0:0.001:1;y=1./(1+x.^2);format long ;trapz(x,y)结果:ans = 0.785398121730782抛物线法:format long ;quad('1./(1+x.^2)',0,1)结果:ans = 0.785398149243260(2)程序:符号法:syms x;f=int('sin(x)/x','x',0,inf)结果:f =1/2*pi梯形法:x=0:0.001:100;y=sin(x)./x;format long;f=trapz(x,y)结果:f = NaN抛物线法:syms x;format long;ff=@(x)(sin(x)./x);f=quad(ff,0,inf)结果:f = NaN(3)程序:符号法:syms x ys=vpa(int(int(x+y.^2,y,-1,1),x,0,2))抛物线法:z=inline('x+y.^2','x','y')s=dblquad(z,0,2,-1,1)结果:s =5.333333333333333。

2022年MATLAB数学实验报告定积分的近似计算

2022年MATLAB数学实验报告定积分的近似计算

MATLAB数学实验报告实验日期:11月20日实验名称定积分旳近似计算姓名:学号:班级:问题背景描述:运用牛顿—莱布尼兹公式虽然可以精确地计算定积分旳值,但它仅合用于被积函数旳原函数能用初等函数体现出来旳情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算旳措施.在定积分旳诸多应用问题中,被积函数甚至没有解析体现式,也许只是一条实验记录曲线,或者是一组离散旳采样值,这时只能应用近似措施去计算相应旳定积分.实验目旳:本实验将重要研究定积分旳三种近似计算算法:矩形法、梯形法、抛物线法。

对于定积分旳近似数值计算,Matlab有专门函数可用。

实验原理与数学模型:1.矩形法根据定积分旳定义,每一种积分和都可以看作是定积分旳一种近似值,即在几何意义上,这是用一系列小矩形面积近似小曲边梯形旳成果,因此把这个近似计算措施称为矩形法.但是,只有当积分区间被分割得很细时,矩形法才有一定旳精确度.针对不同旳取法,计算成果会有不同。

(1)左点法:对等分区间,在区间上取左端点,即取。

(2)右点法:同(1)中划分区间,在区间上取右端点,即取。

(3)中点法:同(1)中划分区间,在区间上取中点,即取。

2.梯形法等分区间,相应函数值为().曲线上相应旳点为()将曲线旳每一段弧用过点,旳弦(线性函数)来替代,这使得每个上旳曲边梯形成为真正旳梯形,其面积为,.于是各个小梯形面积之和就是曲边梯形面积旳近似值,,即,称此式为梯形公式。

3.抛物线法将积分区间作等分,分点依次为,,相应函数值为(),曲线上相应点为().现把区间上旳曲线段用通过三点,,旳抛物线来近似替代,然后求函数从到旳定积分:由于,代入上式整顿后得同样也有……将这个积分相加即得本来所要计算旳定积分旳近似值:,即这就是抛物线法公式,也称为辛卜生(Simpson)公式.实验所用软件及版本:Matlab 7.0重要内容(要点):1.分别用梯形法与抛物线法,计算,取.并尝试直接使用函数trapz()、quad()进行计算求解,比较成果旳差别.2.试计算定积分.(注意:可以运用trapz()、quad()或附录程序求解吗?为什么?)3.学习fulu2sum.m旳程序设计措施,尝试用函数sum 改写附录1和附录3旳程序,避免for 循环。

定积分计算实验报告(3篇)

定积分计算实验报告(3篇)

第1篇一、实验目的1. 理解定积分的概念,掌握定积分的计算方法。

2. 熟悉数值积分的方法,提高数值计算能力。

3. 通过实验,验证定积分的计算结果,加深对定积分理论的理解。

二、实验原理定积分是数学分析中的一个基本概念,它表示函数在某一区间上的累积效果。

对于给定的函数f(x),在区间[a, b]上的定积分可以表示为:∫[a, b] f(x) dx其中,dx表示无穷小的区间宽度。

在实际计算中,定积分往往采用数值积分的方法进行近似计算。

三、实验仪器与软件1. 仪器:计算机2. 软件:MATLAB四、实验步骤1. 输入函数表达式:在MATLAB中输入待积分函数的表达式,例如f(x) = x^2。

2. 设置积分区间:设定积分的上下限a和b。

3. 选择数值积分方法:MATLAB提供了多种数值积分方法,如梯形法、辛普森法、高斯法等。

根据需要选择合适的方法。

4. 进行数值积分计算:调用MATLAB的数值积分函数,如quad函数,进行积分计算。

5. 结果分析:观察计算结果,与理论值进行对比,分析误差来源。

五、实验数据及结果1. 函数表达式:f(x) = x^22. 积分区间:[0, 1]3. 数值积分方法:辛普森法4. 计算结果:I ≈ 1.1666666667六、误差分析1. 理论值:∫[0, 1] x^2 dx = [x^3/3] |[0, 1] = 1/32. 误差来源:a. 数值积分方法的误差:由于数值积分方法是一种近似计算方法,其计算结果与真实值存在一定的误差。

b. 计算过程中的舍入误差:在计算过程中,由于计算机的浮点数表示,可能导致舍入误差。

3. 误差分析:计算结果与理论值相差较大,说明数值积分方法的误差较大。

在实际应用中,可以根据需要选择合适的数值积分方法,以减小误差。

七、实验结论1. 通过本次实验,掌握了定积分的计算方法,了解了数值积分的方法及其优缺点。

2. 了解了数值积分方法在计算过程中的误差来源,为实际应用提供了参考。

第六讲定积分与定积分的近似计算

第六讲定积分与定积分的近似计算

第六讲 定积分与定积分的近似计算实验目的1.通过本实验加深理解积分理论中分割、近似、求和、取极限的思想方法. 2.学习并掌握用matlab 求不定积分、定积分、二重积分、曲线积分的方法. 3.学习matlab 命令sum 、symsum 与int. 4. 了解定积分近似计算的矩形法、梯形法。

(***) 实验内容1. 学习matlab 命令(1)求和命令sum 调用格式.sum(x),给出向量x 的各个元素的累加和,如果x 是矩阵,则sum(x)是一个元素为x 的每列列和的行向量.例4.1.x=[1,2,3,4,5,6,7,8,9,10];↵ sum(x)↵ ans=55例4.2.x=[1,2,3;4,5,6;7,8,9]↵ x=1 2 3 4 5 6 7 8 9 sum(x)↵ans=12 15 18 (2)求和命令symsum 调用格式.symsum(s,n), 求∑nssymsum(s,k,m,n),求∑=nm k s当x 的元素很有规律,比如为表达式是)(k s 的数列时,可用symsum 求得x 的各项和,即 symsum ),1),((n k s =)()2()1(n s s s +++symsum )()1()(),,),((n s m s m s n m k k s ++++=例4.3.syms k n ↵ symsum(k,1,10)↵ ans=55symsum(k^2,k,1,n)↵ans=1/3*(n+1)^3-1/2*(n+1)^2+1/6*n+1/6 (3)matlab 积分命令int 调用格式 int (函数)(x f ) 计算不定积分⎰dx x f )(int (函数),(y x f ,变量名x ) 计算不定积分⎰dx y x f ),(int (函数b a x f ,),() 计算定积分⎰badxx f )(int (函数),,(y x f 变量名b a x ,,) 计算定积分⎰badxy x f ),(1.计算不定积分 例4.4.计算xdxx ln 2⎰解:输入命令:int(x^2*log(x))可得结果:ans=1/3*x^3*log(x)-1/9*x^3 注意设置符号变量.例4.5.计算下列不定积分: 1.dxx a ⎰-222.⎰++dx x x 31313.⎰xdx x arcsin 2解:首先建立函数向量.syms xsyms a realy=[sqrt(a^2-x^2),(x-1)/(3*x-1)^(1/3),x^2*asin(x)]; 然后对y 积分可得对y 的每个分量积分的结果. int(y,x)↵ans =[1/2*x*(a^2-x^2)^(1/2)+1/2*a^2*asin((1/a^2)^(1/2)*x), -1/3*(3*x-1)^(2/3)+1/15*(3*x-1)^(5/3),1/3*x^3*asin(x)+1/9*x^2*(1-x^2)^(1/2)+2/9*(1-x^2)^(1/2)]3.定积分的概念.定积分是一个和的极限.取xe xf =)(,积分区间为]1,0[,等距划分为20个子区间.x=linspace(0,1,21);选取每个子区间的端点,并计算端点处的函数值. y=exp(x);取区间的左端点乘以区间长度全部加起来. y1=y(1:20);s1=sum(y1)/20 s1=1.6757s1可作为⎰10dx e x 的近似值.若选取右端点:y2=y(2:21);s2=sum(y2)/20 s2=1.7616s2也可以作为⎰10dx e x 的近似值.下面我们画出图象.plot(x,y);hold onfor i=1:20fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i),y(i),0],’b’) end如果选取右端点,则可画出图象. for i=1:20;fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i+1),y(i+1),0],’b’) hold on endplot(x,y,’r’)在上边的语句中,for … end 是循环语句,执行语句体内的命令20次,fill 命令可以填充多边形,在本例中,用的是兰色(blue)填充.从图上看211s dx e s x <<⎰,当分点逐渐增多时,12s s -的值越来越小,读者可试取50个子区间看一看结果怎样.下面按等分区间计算∑∑=∞→=∞→=∆ξni n in ni i n n ex f 111lim)(limsyms k ns=symsum(exp(k/n)/n,k,1,n); limit(s,n,inf) 得结果ans=exp(1)-1 4.计算定积分和广义积分.例4.6.计算⎰10dx e x .解:输入命令:int(exp(x),0,1)得结果ans=exp(1)-1.这与我们上面的运算结果是一致的.例4.7.计算⎰-201dxx解:输入命令:int(abs(x-1),0,2)得结果ans =1.本例用mathematica 软件不能直接求解.例4.8.判别广义积分⎰+∞11dx x p 、⎰+∞∞--πdx e x 2221与⎰-202)1(1dx x 的敛散性,收敛时计算积分值.解:对第一个积分输入命令:syms p real;int(1/x^p,x,1,inf)得结果ans =limit(-1/(p-1)*x^(-p+1)+1/(p-1),x = inf).由结果看出当1<p 时,x^(-p+1)为无穷,当1>p 时,ans=1/(p-1),这与课本例题是一致的. 对第二个积分输入命令:int(1/(2*pi)^(1/2)*exp(-x^2/2),-inf,inf)得结果:ans=7186705221432913/18014398509481984*2^(1/2)*pi^(1/2) 由输出结果看出这两个积分收敛.对后一个积分输入命令:int(1/(1-x)^2,0,2)结果得ans=inf .说明这个积分是无穷大不收敛.例4.9.求积分⎰t dxx x 0sin解:输入命令:int(sin(x)/x,0,t),可得结果sinint(t),通过查帮助(help sinint )可知sinint(t)=⎰t dxxx 0sin,结果相当于没求!实际上matlab 求出的只是形式上的结果,因为这类积分无法用初等函数或其值来表示.尽管如此,我们可以得到该函数的函数值.输入vpa(sinint(0.5))可得sinint(0.5)的值.5.二重积分计算 例4.10.求二次积分⎰⎰+12102x x xydydx解:输入命令:int(int(x*y,y,2*x,x^2+1),x,0,1) 得结果ans=1/12.例4.11.求⎰⎰≤++π12222))(sin(y x dxdyy x解:积分区域用不等式可以表示成2211,11x y x x -≤≤--≤≤-,二重积分可化为二次积分⎰⎰----+π22112211)(sin(x xdyy x dx,输入命令:int(int(sin(pi*(x^2+y^2)),y,-sqrt(1-x^2),sqrt(1-x^2)),x,-1,1) 由输出结果可以看出,结果中仍带有int ,表明matlab 求不出这一积分的值.采用极坐标可化为二次积分⎰⎰ππ20102)sin(drr r da ,输入命令:int(int(r*sin(pi*r^2),r,0,1),a,0,2*pi)可得结果为ans=2.6.曲线积分 例4.12.求曲线积分⎰L xyds ,其中L 为曲线122=+y x 在第一象限内的一段.解:曲线的参数方程是)20(,sin ,cos π≤≤==t t y t x 曲线积分可以化为⎰π⋅20s i n c o s t d tt .输入命令:int(cos(t)*sin(t),0,pi/2) 执行后即可求出曲线积分结果1/2.练习:1.计算下列不定积分.(1)⎰+dxx x 12 (2)⎰+x xdx 2sin 12sin(3)⎰+52x dx (4)⎰+++dx x x x 112(5)⎰-dxe x x 22 (6)⎰dx x x 2arcsin2.计算下列定积分.(1)⎰exdxx 1ln (2)⎰ππ342sin dxxx(3)⎰edxx 1)sin(ln (4)⎰-++11242312sin dxx x x x3.求⎰+tdxx x x 12)ln (ln 1并用diff 对结果求导.4.求摆线)cos 1(),sin (t a y t t a x -=-=的一拱(π≤≤20t )与x 轴所围成的图形的面积.5.计算二重积分(1)⎰⎰≤++122)(y x dxdyy x (2)⎰⎰≤++xy x dxdyy x 22)(226.计算⎰+Ldsyx22L为圆周)0(22>=+aaxyx7.计算⎰++-Ldyyxdxyx)()(2222,其中L为抛物线2xy=上从点(0,0)到点(2,4)的一段弧.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三定积分的近似计算一、问题背景与实验目的利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用.二、相关函数(命令)及简介1.sum(a):求数组a的和.2.format long:长格式,即屏幕显示15位有效数字.(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.4.quad():抛物线法求数值积分.格式:quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即.*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2);5.trapz():梯形法求数值积分.格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算0sin()dx xπ⎰x=0:pi/100:pi;y=sin(x);trapz(x,y)6.dblquad():抛物线法求二重数值积分.格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递.例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法.Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件integrnd.m:function z = integrnd(x, y) z = y*sin(x);7.fprintf (文件地址,格式,写入的变量):把数据写入指定文件.例:x = 0:.1:1; y = [x; exp(x)];fid = fopen('exp.txt','w'); %打开文件 fprintf(fid,'%6.2f %12.8f\n',y); %写入 fclose(fid) %关闭文件 8.syms 变量1 变量2 …:定义变量为符号. 9.sym('表达式'):将表达式定义为符号.解释:Matlab 中的符号运算事实上是借用了Maple 的软件包,所以当在Matlab 中要对符号进行运算时,必须先把要用到的变量定义为符号. 10.int(f,v,a,b):求f 关于v 积分,积分区间由a 到b .11.subs(f ,'x',a):将 a 的值赋给符号表达式 f 中的 x ,并计算出值.若简单地使用subs(f),则将f 的所有符号变量用可能的数值代入,并计算出值.三、实验内容1. 矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即1()d ()nbi i ai f x x f x ς==∆∑⎰在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同i ς的取法,计算结果会有不同,我们以 120d 1xx +⎰为例(取100=n ),(1) 左点法:对等分区间b x i n ab a x x a x n i =<<-+=<<<=ΛΛ10,在区间],[1i i x x -上取左端点,即取1-=i i x ς,12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78789399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差0.7878939967307840.0031784ππ-=≈(2)右点法:同(1)中划分区间,在区间],[1i i x x -上取右端点,即取i i x =ς,12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78289399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 0.7828939967307840.0031884ππ-=≈(3)中点法:同(1)中划分区间,在区间1[,]i i x x -上取中点,即取12i ii x x ς-+=, 12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78540024673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 60.7854002467307842.653104ππ--=≈⨯如果在分割的每个小区间上采用一次或二次多项式来近似代替被积函数,那么可以期望得到比矩形法效果好得多的近似计算公式.下面介绍的梯形法和抛物线法就是这一指导思想的产物.2. 梯形法等分区间b x i n a b a x x a x n i =<<-+=<<<=ΛΛ10,nab x -=∆ 相应函数值为n y y y ,,,10Λ(n i x f y i i ,,1,0),(Λ==).曲线)(x f y =上相应的点为n P P P ,,,10Λ(n i y x P i i i ,,1,0),,(Λ==)将曲线的每一段弧i i P P 1-用过点1-i P ,i P 的弦i i P P 1-(线性函数)来代替,这使得每个],[1i i x x -上的曲边梯形成为真正的梯形,其面积为x y y ii ∆⨯+-21,n i ,,2,1Λ=. 于是各个小梯形面积之和就是曲边梯形面积的近似值,11 11()d ()22nnbi i i i ai i y y x f x x x y y --==+∆≈⨯∆=+∑∑⎰, 即11 ()d ()22bn n ay y b a f x x y y n --≈++++⎰L , 称此式为梯形公式.仍用 12 0d 1x x +⎰的近似计算为例,取100=n ,10112 0d ()122n n y y x b a y y x n --≈++++=+⎰L 0.78539399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 60.7853939967307845.305104ππ--=≈⨯很显然,这个误差要比简单的矩形左点法和右点法的计算误差小得多.3. 抛物线法由梯形法求近似值,当)(x f y =为凹曲线时,它就偏小;当)(x f y =为凸曲线时,它就偏大.若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法.将积分区间],[b a 作n 2等分,分点依次为b x i n a b a x x a x n i =<<-+=<<<=2102ΛΛ,nab x 2-=∆, 对应函数值为n y y y 210,,,Λ(n i x f y i i 2,,1,0),(Λ==),曲线上相应点为n P P P 210,,,Λ(n i y x P i i i 2,,1,0),,(Λ==).现把区间],[20x x 上的曲线段)(x f y =用通过三点),(000y x P ,),(111y x P ,),(222y x P 的抛物线)(12x p x x y =++=γβα来近似代替,然后求函数)(1x p 从0x 到2x 的定积分:21 ()d x x p x x =⎰22 ()d x x x x x αβγ++=⎰)()(2)(30220223032x x x x x x -+-+-γβα]4)(2)()()[(62022022202002γβαγβαγβα++++++++++-=x x x x x x x x x x 由于2201x x x +=,代入上式整理后得 21 ()d x x p x x ⎰)](4)()[(612122202002γβαγβαγβα++++++++-=x x x x x x x x )4(621002y y y x x ++-=)4(6210y y y nab ++-= 同样也有422 ()d x x p x x ⎰)4(6432y y y n ab ++-=……222 ()d n n x nx p x x -⎰)4(621222n n n y y y nab ++-=-- 将这n 个积分相加即得原来所要计算的定积分的近似值:22222212 11()d ()d (4)6ii nnbx i i i i ax i i b af x x p x x y y y n---==-≈=++∑∑⎰⎰, 即021******* ()d [4()2()]6bn n n ab af x x y y y y y y y y n---≈++++++++⎰L L 这就是抛物线法公式,也称为辛卜生(Simpson )公式.仍用 12 0d 1x x +⎰的近似计算为例,取100=n ,102132124222 0d [4()2()]16n n n x b ay y y y y y y y x n ---≈+++++++++⎰L L=0.78539816339745,理论值 12 0d 14x x π=+⎰,此时计算的相对误差 160.7853981633974542.827104ππ--=≈⨯4. 直接应用Matlab 命令计算结果(1) 数值计算 120d .1xx +⎰ 方法1:int('1/(1+x^2)','x',0,1) (符号求积分)方法2:quad('1./(1+x.^2)',0,1) (抛物线法求数值积分)方法3:x=0:0.001:1; y=1./(1+x.^2);trapz(x,y) (梯形法求数值积分) (2)数值计算 212 01d d x x y y -+⎰⎰方法1:int(int('x+y^2','y',-1,1),'x',0,2) (符号求积分)方法2:dblquad(inline('x+y^2'),0,2,-1,1) (抛物线法二重数值积分)四、自己动手1. 实现实验内容中的例子,即分别采用矩形法、梯形法、抛物线法计算 120d 1xx +⎰,取258=n ,并比较三种方法的精确程度.2. 分别用梯形法与抛物线法,计算 2 1d xx⎰,取120=n .并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异.3. 试计算定积分 0sin d xx x+∞⎰.(注意:可以运用trapz()、quad()或附录程序求解吗?为什么?)4. 将 120d 1xx +⎰的近似计算结果与Matlab 中各命令的计算结果相比较,试猜测Matlab 中的数值积分命令最可能采用了哪一种近似计算方法?并找出其他例子支持你的观点.5. 通过整个实验内容及练习,你能否作出一些理论上的小结,即针对什么类型的函数(具有某种单调特性或凹凸特性),用某种近似计算方法所得结果更接近于实际值?6. 学习fulu2sum.m 的程序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环.五、附录附录1:矩形法(左点法、右点法、中点法)(fulu1.m ) format long n=100;a=0;b=1;inum1=0;inum2=0;inum3=0; syms x fx fx=1/(1+x^2); for i=1:nxj=a+(i-1)*(b-a)/n; %左点 xi=a+i*(b-a)/n; %右点 fxj=subs(fx,'x',xj); %左点值fxi=subs(fx,'x',xi); %右点值fxij=subs(fx,'x',(xi+xj)/2); %中点值inum1=inum1+fxj*(b-a)/n;inum2=inum2+fxi*(b-a)/n;inum3=inum3+fxij*(b-a)/n;endinum1inum2inum3integrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum1 and real-value is about: %d\n\n',...abs((inum1-integrate)/integrate))fprintf('The relative error between inum2 and real-value is about: %d\n\n',...abs((inum2-integrate)/integrate))fprintf('The relative error between inum3 and real-value is about: %d\n\n',...abs((inum3-integrate)/integrate))附录2:梯形法(fulu2.m)format longn=100;a=0;b=1;inum=0;syms x fxfx=1/(1+x^2);for i=1:nxj=a+(i-1)*(b-a)/n;xi=a+i*(b-a)/n;fxj=subs(fx,'x',xj);fxi=subs(fx,'x',xi);inum=inum+(fxj+fxi)*(b-a)/(2*n);endinumintegrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))附录2sum:梯形法(fulu2sum.m),利用求和函数,避免for 循环format longn=100;a=0;b=1;syms x fxfx=1/(1+x^2);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); %所有右点值f=(fxi+fxj)/2*(b-a)/n; %梯形面积inum=sum(f) %加和梯形面积求解integrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))附录3:抛物线法(fulu3.m)format longn=100;a=0;b=1;inum=0;syms x fxfx=1/(1+x^2);for i=1:nxj=a+(i-1)*(b-a)/n; %左点xi=a+i*(b-a)/n; %右点xk=(xi+xj)/2; %中点fxj=subs(fx,'x',xj);fxi=subs(fx,'x',xi);fxk=subs(fx,'x',xk);inum=inum+(fxj+4*fxk+fxi)*(b-a)/(6*n);endinumintegrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))。

相关文档
最新文档