《数值计算精选课件.ppt》由会员分享,可在线阅读,更多相关《数值计算精选课件.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、关于数值计算第一页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计24.4 4.4 多项式函数多项式函数l4.4.1 多项式的表示多项式的表示MATLABMATLAB中多项式的表示方法中多项式的表示方法:例如:行向量例如:行向量 p=1 -12 0 25 116对应的多项式对应的多项式为:为:MATLAB多项式函数库多项式函数库polyfun:多项式算术:多项式算术运算、求导、求根、求值、求微积分等运算、求导、求根、求值、求微积分等第二页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)
2、(2)MATLAB 7.X程序设计程序设计34.4.2多项式的算术运算多项式的算术运算1 加减运算加减运算 第三页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计4第四页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计52 2 乘法运算乘法运算 MATLABMATLAB支持多项式乘法,函数格式为:支持多项式乘法,函数格式为:函数函数conv(P1,P2)conv(P1,P2)求多项式求多项式P1P1和和P2P2的乘积。的乘积。这里,这里,P1P
3、1,P2P2是两个多项式系数向量。是两个多项式系数向量。例例 4-444-44 计算计算c=conv(1 2 2,1 5 4)c=conv(1 2 2,1 5 4)执行结果如下:执行结果如下:c=c=1 7 16 18 81 7 16 18 8由执行结果可知由执行结果可知:第五页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计63 除法运算除法运算Q,r=deconv(P1,P2)Q,r=deconv(P1,P2)对对多多项项式式P1P1和和P2P2作作除除法法运运算算。其其中中Q Q返返回回多多项式项式P1P1除以除
4、以P2P2的商式,的商式,r r返回返回P1P1除以除以P2P2的余式。的余式。注意注意deconvdeconv是是convconv的逆函数,即有的逆函数,即有P1=conv(P2,Q)+rP1=conv(P2,Q)+r。第六页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计7例例4-45 4-45 计算计算Q=deconv(1 8 0 0-10,2-1 3)Q=deconv(1 8 0 0-10,2-1 3)Q=Q=0.5000 4.2500 1.3750 0.5000 4.2500 1.3750Q,r=deconv
5、(1 8 0 0-10,2-1 3)Q,r=deconv(1 8 0 0-10,2-1 3)执行结果如下:执行结果如下:Q=Q=0.5000 4.2500 1.3750 0.5000 4.2500 1.3750r=r=0 0 0 -11.3750 -14.1250 0 0 0 -11.3750 -14.1250由执行结果可知商是由执行结果可知商是:余式是余式是:第七页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计84.4.3 导函数导函数lp=polyder(P)p=polyder(P)%求多项式求多项式P P的导函
6、数的导函数p plp=polyder(P,Q)p=polyder(P,Q)%求求PQPQ的导函数的导函数p plp,q=polyder(P,Q)p,q=polyder(P,Q)%求求P/QP/Q的的导导函函数数,导导函函数数的的分分子子存存入入p p,分分母母存入存入q q。第八页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计9例例4-464-46 求的导数求的导数p=3-2 1;polyder(p)p=3-2 1;polyder(p)执行结果为执行结果为:ans=ans=6 -2 6 -2结果是结果是 第九页,本课
7、件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计10a=3-2 1;b=4 5 6;polyder(a,b)a=3-2 1;b=4 5 6;polyder(a,b)执行结果为执行结果为:ans=ans=48 21 24 -748 21 24 -7结果是结果是 例例4-47 4-47 求的导数求的导数第十页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计11例例4-484-48 求求 的导数。的导数。a=3 a=3-2-2 1;b=4 1;b=4 5
8、5 6;6;q,d=polyder(a,b)q,d=polyder(a,b)执行结果为执行结果为:q=q=23 28 -17 23 28 -17(分子)(分子)d=d=16 40 73 60 3616 40 73 60 36(分母)(分母)第十一页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计12例例4-494-49 求有理分式求有理分式 的导数。的导数。P=1;Q=1,0,5;p,q=polyder(P,Q)P=1;Q=1,0,5;p,q=polyder(P,Q)执行结果为:执行结果为:p=p=-2 0 -2 0q
9、=q=1 0 10 0 25 1 0 10 0 25第十二页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计134.4.4 多项式求根多项式求根l x=roots(P)x=roots(P)其其中中P P为为多多项项式式的的系系数数向向量量,求求得得的的根根赋赋给给向向量量x x,即即x(1),x(2),x(n)x(1),x(2),x(n)分分别别代代表表多多项项式式的的n n个根。个根。l给给出出一一个个多多项项式式的的根根,可可以以构构造造相相应应的的多多项项式式。若若已已知知多多项项式式的的全全部部根根,则则可可以
10、以用用polypoly函数建立起多项式,其调用格式为:函数建立起多项式,其调用格式为:P=poly(x)P=poly(x)x x为具有为具有n n个元素的向量,个元素的向量,poly(x)poly(x)为以为以x x为其根为其根的多项式,且将该多项式的系数赋给向量的多项式,且将该多项式的系数赋给向量P P。第十三页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计14例例4-504-50 求多项式的求多项式的 根根A=1,8,0,0,-10;x=roots(A)A=1,8,0,0,-10;x=roots(A)执行结果如下
11、:执行结果如下:x=x=-8.0194 -8.0194 1.0344 1.0344 -0.5075+0.9736i -0.5075+0.9736i -0.5075-0.9736i -0.5075-0.9736i由结果可以看出,方程的根为两个实根和一对共轭复由结果可以看出,方程的根为两个实根和一对共轭复根根 第十四页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计15例例4-514-51 求方程求方程 的根。的根。r=1-7 2 40;p=roots(r);r=1-7 2 40;p=roots(r);执行结果如下:执行结
12、果如下:p=p=5.00005.0000 4.0000 4.0000 -2.0000 -2.0000由结果可以看出,方程的根均为实根由结果可以看出,方程的根均为实根5.0005.000,4.00004.0000和和-2.0000-2.0000。第十五页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计16例例 4-524-52已知已知 (1)(1)计算计算 的全部根。的全部根。(2)(2)由方程由方程 的根构造一个多项式的根构造一个多项式并与并与 进进行行对对比。比。P=3,0,4,-5,-7.2,5;P=3,0,4,-
13、5,-7.2,5;X=roots(P)X=roots(P)%求方程求方程f(x)=0f(x)=0的根的根G=poly(X)G=poly(X)%求多项式求多项式G(x)G(x)第十六页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计17执行结果为:执行结果为:X=-0.3046+1.6217i -0.3046-1.6217i -1.0066 1.0190 0.5967 G=1.0000 0.0000 1.3333 -1.6667 -2.4000 1.6667注意:构造的多项式的首项系数为注意:构造的多项式的首项系数为1
14、1。第十七页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计184.4.5多项式估值多项式估值1 代数多项式求值代数多项式求值 Y=polyval(P,x)Y=polyval(P,x)求求代代数数多多项项式式的的值值。若若x x为为一一常常数数,则则求求多多项项式式P P在该点的值,在该点的值,Y Y=P(1)x P(1)x N N+P(2)P(2)x x(N-1)(N-1)+.+P(N)x+P(N+1)+P(N)x+P(N+1)若若x x为向量或矩阵,则对向量或矩阵中的每个元为向量或矩阵,则对向量或矩阵中的每个元素求
15、多项式素求多项式P P的值,返回值为与自变量同型的的值,返回值为与自变量同型的向量或矩阵。向量或矩阵。第十八页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计19例例4-534-53 已知已知 分别计算分别计算 和和 时时 的值。的值。P=1 8 0 0-10P=1 8 0 0-10;x=1.2x=1.2;Y=polyval(P,x)Y=polyval(P,x)执行结果如下:执行结果如下:Y=Y=5.8976 5.8976y=2 3 4;5 4 1;Y=polyval(P,y)y=2 3 4;5 4 1;Y=polyv
16、al(P,y)执行结果如下:执行结果如下:Y=Y=70 287 758 70 287 758 1615 758 -1 1615 758 -1 第十九页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计202 矩阵多项式求值矩阵多项式求值polyvalmpolyvalm函数用来求矩阵多项式的值,要函数用来求矩阵多项式的值,要求以方阵求以方阵x x为自变量求多项式的值。为自变量求多项式的值。第二十页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计21
17、例例4-544-54 当当x x取取 时求时求 的值。的值。p=1-5 0 8;p=1-5 0 8;a=2 3 5;5 8 1;7 6 9;a=2 3 5;5 8 1;7 6 9;polyvalm(p,a)polyvalm(p,a)执行结果:执行结果:ans=ans=552 690 562 552 690 562 548 686 538 548 686 538 1148 1422 1154 1148 1422 1154第二十一页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计22polyval(p,a)polyval(
18、p,a)执行结果:执行结果:ans=ans=-4 -10 8 -4 -10 8 8 200 4 8 200 4 106 44 332 106 44 332第二十二页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计23例例4-55 4-55 当当x x=8=8时求时求(x x-1)(-1)(x x-2)(-2)(x x-3)(-3)(x x-4)-4)的值。的值。p=poly(1 2 3 4)p=poly(1 2 3 4),polyvalm(p,8)polyvalm(p,8)执行结果如下:执行结果如下:p=p=1 -10
19、 35 -50 24 1 -10 35 -50 24ans=ans=840840第二十三页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计244.4.6 部分分式函数部分分式函数 R,P,K=residue(B,A)R,P,K=residue(B,A)功能:功能:返回部分分式和余数。返回部分分式和余数。R R为极点,为极点,P P为为零点零点 ,K K为余数。为余数。第二十四页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计25例例4-564-
20、56 求求 的部分分式。的部分分式。num=10*1 2;num=10*1 2;%numerator polynomial%numerator polynomialden=poly(-1;-3;-4);den=poly(-1;-3;-4);%denominator polynomial%denominator polynomialres,poles,k=residue(num,den)res,poles,k=residue(num,den)第二十五页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计26执行结果为:执行结
21、果为:res=res=-6.6667-6.6667 5.0000 5.0000 1.6667 1.6667poles=poles=-4.0000-4.0000-3.0000-3.0000 -1.0000 -1.0000k=k=第二十六页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计274.4.7多项式积分多项式积分 polyint(P,K)返回多项式返回多项式P的积分。的积分。K 为常数项(默认值为常数项(默认值为为0)。第二十七页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2
22、)MATLAB 7.X程序设计程序设计28例例4-574-57 求求 。p=3-2 1;polyint(p,2)p=3-2 1;polyint(p,2)ans=ans=1 -1 1 2 1 -1 1 2polyint(p)polyint(p)%常数为常数为0 0ans=ans=1 -1 1 0 1 -1 1 0由执行结果可知:由执行结果可知:(为常数项,本例中为(为常数项,本例中为2 2和和0 0)。)。第二十八页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计294.54.5插值和拟合插值和拟合在离散数据的基础上补插
23、连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。插值问题的提法是:假定区间a,b上的实值函数f(x)在该区间上 n1个互不相同点x0,x1xn 处的值是f x0,f(xn),要求估算f(x)在a,b中某点的值。其做法是:在事先选定的一个由简单函数构成的有n1个参数C0,C1,Cn的函数类(C0,C1,Cn)中求出满足条件P(xi)f(xi)(i0,1,n)的函数P(x),并以P()作为f()的估值。此处f(x)称为被插值函数,c0,x1,xn称为插值结(节)点,(C0,C1,Cn)称为插值函
24、数类,上面等式称为插值条件,(C0,Cn)中满足上式的函数称为插值函数,R(x)f(x)P(x)称为插值余项。当估算点属于包含x0,x1xn的最小闭区间时,相应的插值称为内插,否则称为外插。多项式插值埃尔米特插值 分段插值与样条插值 三角函数插值 第二十九页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计30拟合(曲线拟合)curve fitting用连续曲线近似地刻画或比拟平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。用解析表达式逼近离散数据的一种方法。在科学实验或社会活动中,通过实验或观测得到量x与y
25、的一组数据对(xi,yi)(i1,2,m),其中各xi是彼此不同的。人们希望用一类与数据的背景材料规律相适应的解析表达式,yf(x,c)来反映量x与y之间的依赖关系,即在一定意义下“最佳”地逼近或拟合已知数据。f(x,c)常称作拟合模型,式中c(c1,c2,cn)是一些待定参数。当c在f中线性出现时,称为线性模型,否则称为非线性模型。有许多衡量拟合优度的标准,最常用的一种做法是选择参数c使得拟合模型与实际观测值在各点的残差(或离差)ekykf(xk,c)的加权平方和达到最小,此时所求曲线称作在加权最小二乘意义下对数据的拟合曲线。有许多求解拟合曲线的成功方法,对于线性模型一般通过建立和求解方程组
26、来确定参数,从而求得拟合曲线。至于非线性模型,则要借助求解非线性方程组或用最优化方法求得所需参数才能得到拟合曲线,有时称之为非线性最小二乘拟合。曲线拟合:贝塞尔曲线与路径转化时的误差。值越大,误差越大;值越小,越精确。第三十页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计31拟合:举例拟合:举例1 1第三十一页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计32拟合:举例拟合:举例2 2第三十二页,本课件共有51页第第第第4 4章章章章 数值
27、计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计334.54.5插值和拟合插值和拟合4.5.1数值插值数值插值1 一维数值插值一维数值插值 Y1=interp1(X,Y,X1,method)Y1=interp1(X,Y,X1,method)函数根据函数根据X,YX,Y的值,计算函数在的值,计算函数在X1X1处的值。处的值。X,YX,Y是两个等长的已知向量,描述数据点,是两个等长的已知向量,描述数据点,X1X1是一个向量或标量,描述欲插值的点,是一个向量或标量,描述欲插值的点,Y1Y1是一个与是一个与X1X1等长的插值结果。等长的插值结果。第三十三页,本课件共有51
28、页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计34methodmethod是插值方法,可用的方法有:是插值方法,可用的方法有:linearlinear 默认方法,线性插值。默认方法,线性插值。nearestnearest 最邻近插值。最邻近插值。splinespline 三次样条插值。三次样条插值。cubiccubic 三次插值,要求三次插值,要求x x的值等距离。的值等距离。所有插值方法均要求所有插值方法均要求x x是单调的。是单调的。注意:注意:X1X1的取值范围不能超出的取值范围不能超出X X的给定范围,的给定范围,否则,会给
29、出否则,会给出“NaN”NaN”错误。错误。第三十四页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计35例例4-584-58 求正弦、余弦函数在区间求正弦、余弦函数在区间0 1内间内间 隔为隔为0.25的各点的值。的各点的值。x=0:1;y1=sin(x);y2=cos(x);xi=0:.25:1;yi1=interp1(x,y1,xi),yi2=interp1(x,y2,xi)%线性插值方法线性插值方法yi1=interp1(x,y1,xi,nearest),yi2=interp1(x,y2,xi,nearest)
30、%最邻近插值最邻近插值第三十五页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计362 二二维数值插值维数值插值 Z1=interp2(X,Y,Z,X1,Y1,method)Z1=interp2(X,Y,Z,X1,Y1,method)二维插值。其中二维插值。其中X,YX,Y是两个向量,分别描述两是两个向量,分别描述两个参数的采样点,个参数的采样点,Z Z是与参数采样点对应的是与参数采样点对应的函数值,函数值,X1,Y1X1,Y1是两个向量或标量,描述欲是两个向量或标量,描述欲插值的点。插值的点。Z1Z1是根据相应的插值
31、方法得到是根据相应的插值方法得到的插值结果。的插值结果。第三十六页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计374.5.2 数据拟合数据拟合 polyfitpolyfit函函数数求求最最小小二二乘乘拟拟合合多多项项式式的的系系数数,调用格式为:调用格式为:P,S=polyfit(X,Y,m)P,S=polyfit(X,Y,m)功能:功能:根据采样点根据采样点X X和采样点函数值和采样点函数值Y Y,产生,产生一个一个m m次多项式次多项式P P及其在采样点的误差向量及其在采样点的误差向量S S。其中。其中X,YX
32、,Y是两个等长的向量,是两个等长的向量,P P是一个是一个长度为长度为m+1m+1的多项式系数向量。的多项式系数向量。第三十七页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计38例例4-594-59已已知知 在在1,3区区间间10个个采采样样点点的的函数值,求函数值,求 的的4次拟合多项式次拟合多项式p(x)。x=linspace(1,3,10);y=exp(x);p=polyfit(x,y,4)第三十八页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序
33、设计程序设计39例例4-604-60 已知数表如下已知数表如下 x x 9 10 11 129 10 11 12 f(x)f(x)2.6093 1.75862.6093 1.7586 1.3979 1.39791.94831.9483求求4 4次次拟拟合合多多项项式式f(x)f(x),并并计计算算f(10.5)f(10.5)的的近近似值。似值。x=9 10 11 12;y=2.6093 1.7586 1.3979 1.9483;f=polyfit(x,y,3)polyval(f,10.5)第三十九页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATL
34、AB 7.X程序设计程序设计404.64.6数值微分与积分数值微分与积分4.6.1差分差分 l DX=diff(X)DX=diff(X)计计算算向向量量X X的的向向前前差差分分,DX(i)=X(i+1)-X(i)DX(i)=X(i+1)-X(i),i=1,2,n-1i=1,2,n-1。l DX=diff(X,n)DX=diff(X,n)计算向量计算向量X X的的n n阶向前差分,如阶向前差分,如 diff(X,2)=diff(diff(X)diff(X,2)=diff(diff(X)。l DX=diff(A,n,dim)DX=diff(A,n,dim)计计算算矩矩阵阵A A的的n n阶阶差差
35、分分,dim=1dim=1时时(缺缺省省状状态态),按按列列计计算差分;算差分;dim=2dim=2,按行计算差分。,按行计算差分。第四十页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计41例例4-61 求矩阵求矩阵 的差分。的差分。a=1 2 3;3 9 6;4 10 8;4 0 7;diff(a)%计算矩阵的向前差分diff(a,1)%计算矩阵的1阶向前差分diff(a,2)%计算矩阵的2阶向前差分第四十一页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.
36、X程序设计程序设计424.6.2数值积分数值积分1数值积分基本原理数值积分基本原理 高高等等数数学学中中求求解解定定积积分分的的数数值值方方法法有有简简单单的的梯梯形形法法、辛辛普普生生(Simpson)(Simpson)法法、牛牛顿顿柯柯特特斯斯(Newton-Cotes)(Newton-Cotes)法法等等,基基本本思思想想都都是是将将整整个个积积分分区区间间a,ba,b分分成成n n个个子子区区间间xi,xi+1xi,xi+1,i=1,2,ni=1,2,n,其其 中中 x1=ax1=a,xn+1=bxn+1=b。这这样样求求定定积积分分问问题题就就分分解解为为求求和和问题。问题。第四十二
37、页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计432 一重积分一重积分I,n=quad(fname,a,b,tol,trace)I,n=quad(fname,a,b,tol,trace)基于变步长辛普生法的求定积分。其中基于变步长辛普生法的求定积分。其中:fname fname 是被积函数。是被积函数。a a和和b b 分别是定积分的下限和上限。分别是定积分的下限和上限。toltol 用来控制积分精度,缺省时取用来控制积分精度,缺省时取tol=0.001tol=0.001。tracetrace 控控制制是是否否展展
38、现现积积分分过过程程,若若取取非非0 0则则展展现现 积积 分分 过过 程程,取取 0 0则则 不不 展展 现现,缺缺 省省 时时 取取trace=0trace=0。返返回回参参数数I I即即定定积积分分值值,n n为为被被积积函函数的调用次数。数的调用次数。第四十三页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计44I,n=quad8(fname,a,b,tol,trace)I,n=quad8(fname,a,b,tol,trace)基于牛顿柯特斯法求定积分。其中参数的基于牛顿柯特斯法求定积分。其中参数的含义和含义
39、和quadquad函数相似,只是函数相似,只是toltol的缺省值的缺省值取取1010-6-6。第四十四页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计45例例4-624-62 求求 (1 1)建立被积函数文件)建立被积函数文件fesin.mfesin.mfunction f=fesin(x)function f=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);f=exp(-0.5*x).*sin(x+pi/6);(2 2)调用数值积分函数)调用数值积分函数quadquad求定积分求定积分S,n
40、=quad(fesin,0,3*pi)S,n=quad(fesin,0,3*pi)执行结果如下:执行结果如下:S=S=0.90080.9008n=n=7777第四十五页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计46例例4-634-63 求求(1)(1)被积函数文件被积函数文件fx.mfx.m。function f=fx(x)function f=fx(x)f=x.*sin(x)./(1+cos(x).*cos(x);f=x.*sin(x)./(1+cos(x).*cos(x);(2)(2)调用函数调用函数quad
41、8quad8求定积分。求定积分。I=quad8(fx,0,pi)I=quad8(fx,0,pi)执行结果如下:执行结果如下:I=I=2.46742.4674第四十六页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计47例例4-644-64 分别用分别用quadquad函数和函数和quad8quad8函数求函数求 的近似值,并在相同的积分精度下,比较函数的的近似值,并在相同的积分精度下,比较函数的调用次数。调用次数。format long;fx=inline(exp(-x);I,n=quad(fx,1,2.5,1e-10
42、)format long;fx=inline(exp(-x);I,n=quad8(fx,1,2.5,1e-10)第四十七页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计48以以表表格格形形式式定定义义的的函函数数的的求求定定积积分分函函数数trapztrapz的格式为:的格式为:trapz(X,Y)trapz(X,Y)其中向量其中向量X,YX,Y定义函数关系定义函数关系Y=f(X)Y=f(X)。例例 4-654-65 用用trapztrapz函数计算定积分。函数计算定积分。X=1:0.01:2.5;X=1:0.01:
43、2.5;Y=exp(-X);Y=exp(-X);%生成函数关系数据向量生成函数关系数据向量trapz(X,Y)trapz(X,Y)第四十八页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计493 二重定积分二重定积分 I=dblquad(f,a,b,c,d,tol,trace)I=dblquad(f,a,b,c,d,tol,trace)求求f(x,y)f(x,y)在在a,bc,da,bc,d区区域域上上的的二二重重定定积分。积分。第四十九页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)MATLAB 7.X程序设计程序设计50例例4-664-66 计算二重定积分计算二重定积分global ki;ki=0;I=dblquad(fxy,-2,2,-1,1)第五十页,本课件共有51页第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (2)(2)01.03.2023感感谢谢大大家家观观看看第五十一页,本课件共有51页