MATLAB编程基础第6讲--数值微积分、多项式_第1页
MATLAB编程基础第6讲--数值微积分、多项式_第2页
MATLAB编程基础第6讲--数值微积分、多项式_第3页
MATLAB编程基础第6讲--数值微积分、多项式_第4页
MATLAB编程基础第6讲--数值微积分、多项式_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-3-241MATLAB编程基础之数值微积分、多项式第六讲第六讲2022-3-2423.7 MATLAB数值积分与微分数值积分与微分3.7.1 差分和偏导数差分和偏导数1. 差分差分在MATLAB中,没有直接提供求数值导数的函数,只有计算没有直接提供求数值导数的函数,只有计算向前差分的函数向前差分的函数diff,其调用格式为:DX=diff(X):计算向量:计算向量X的向前差分,的向前差分,DX(i)=X(i+1)-X(i),i=1,2,n-1。DX=diff(X,n):计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X)。DX=diff(A,n,dim):计算矩阵

2、A的n阶差分,dim=1时(缺省状态),按列计算差分;dim=2,按行计算差分。2022-3-243例例1 差分运算示例差分运算示例命令如下:命令如下:A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;% 生成1维矩阵A1 = reshape(A,6,3)% 转换为36维矩阵 A1 = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18B1 = diff(A1)% 求1维1阶差分 B1 = 6 6 6 6 6 6 6 6 6 6 6 6B2 = diff(A1,1,2)% 求2维1阶差分 B2 = 1 1 1

3、 1 1 1 1 1 1 1 1 1 1 1 1B3 = diff(A1,2)% 求1维2阶差分 B3 = 0 0 0 0 0 02022-3-244 2. 梯度和偏导数 二元及多元函数F(x,y,)的求导FX=gradient(F)FX,FY=gradient(F)=gradient(F,h)2022-3-245例例2 2求二元函数的偏导数求二元函数的偏导数% 生成二元函数v = -2:0.2:2;x,y = meshgrid(v);z = x .* exp(-x.2 - y.2);% 绘制曲面,如图3-4所示figure(1)mesh(x,y,z);px,py = gradient(z,.

4、2,.2);% 求偏导数figure(2)contour(v,v,z)% 绘制等高线,如图3-5所示hold onquiver(v,v,px,py)% 绘制矢量场图,小箭头表示梯度小箭头表示梯度hold off 2022-3-246数值积分数值积分数值积分基本原理数值积分基本原理 求解定积分的数值方法多种多样,如简单的梯形梯形法、辛普生法、辛普生(Simpson) 法、牛顿柯特斯法、牛顿柯特斯(Newton-Cotes)法等都是经常采用的方法。 它们的基本思想都是将整个积分区间都是将整个积分区间a,b分成分成n个个子区间子区间xi,xi+1,i=1,2,n,其中,其中x1=a,xn+1=b。这

5、样求定积分问题就分解为求和问题。2022-3-247 3.7.2 一元函数的数值积分 数值积分的实现方法数值积分的实现方法1变步长辛普生(变步长辛普生(Simpson)法)法(精度较高,较常使用)(精度较高,较常使用)基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为: I,n=quad(fname,a,b,tol,trace)其中fname是被积函数名。a和和b分别是定积分的下限和上限。分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参

6、数返回参数I即定积分值,即定积分值,n为被积函数的为被积函数的调用次数调用次数。2022-3-248函数部分function f=quad1(x)f=1./(x.3-2*x-5);%编制函数m文件调用命令Q = quad(quad1,0,2)% 在同一目录下,计算积分值Q = -0.4605 2022-3-249求定积分。求定积分。 (1) 建立被积函数文件建立被积函数文件fesin.m。function f=fesin(x)f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数调用数值积分函数quad求定积分。求定积分。S,n=quad(fesin,0,3*pi)S

7、 = 0.9008n = 772022-3-24102. 自适应Lobatto法(精度较高,最常使用)q=quadl(fun,a,b)q=quadl(fun,a,b,tol) % 采用内联函数形式内联函数形式,第二个参数为变量例例3-25求求Q=sin2x+cosx从从2*pi到到0的定积分的定积分f = inline(sin(2*x)+cos(x).2,x);Q = quadl(f,0,2*pi)% 求取积分值Q = 3.1416训练任务:请采用编制m函数求该函数积分 2022-3-24113.7.3 多重数值积分多重数值积分使用MATLAB提供的dblquad函数就可以直接求出上述二重定积

8、分的数值解。该函数的调用格式为:I=dblquad(f,a,b,c,d,tol,trace)该函数求f(x,y)在a,bc,d区域上的二区域上的二重定积分重定积分。参数tol,trace的用法与函数quad完全相同。2022-3-2412 计算二重定积分计算二重定积分(1) 建立一个函数文件建立一个函数文件fxy.m:function f=fxy(x,y)global ki;ki=ki+1; %ki用于统计被积函数的调用次数用于统计被积函数的调用次数f=exp(-x.2/2).*sin(x.2+y);(2) 调用调用dblquad函数求解。函数求解。global ki;ki=0;I=dblqu

9、ad(fxy,-2,2,-1,1)kiI = 1.57449318974494ki = 1038(3)匿名函数方法)匿名函数方法f = (x,y)y*sin(x)+x*cos(y);% 编写匿名函数,将句柄赋给fS = dblquad(f,pi,2*pi,0,pi)% 计算二重积分2022-3-24133.8 多项式 3.8.1 多项式的构造 使用行向量表示多项式的系数,行向量中各元素按多项式次数从高到低排列。即多项式P(x)=anxn+an-1xn-1+a1x+a0的系数向量P为an an-1a1 a0。P=poly(A):通过n阶方阵A生成特征多项式p,A为特征多项式的根,满足 P(A)=

10、anAn+an-1An-1+a1A+a0P=poly(r):通过向量r= r1 r2 rn方阵A生成多项式,向量元素为多项式的根,即满足(x-r1) (x-r2)(x-rn)= anxn+an-1xn-1+a1x+a0S=poly2str(P,s):将多项式系数行向量表达形式P转换成变量为s的标准多项式形式S。2022-3-2414例3-29求多项式r = 1 2 3;% 生成向量rP1 = poly(r)% 计算根为r的多项式 P1 = 1 -6 11 -6S1 = poly2str(P1,x)% 转换成变量为x的标准形式 S1 = x3 - 6 x2 + 11 x - 6A = magic

11、(3)% 创建3阶魔方矩阵 P2 = poly(A)% 计算方阵的特征多项式 P2 = 1.0000 -15.0000 -24.0000 360.0000S2 = poly2str(P2,s)% 转换成变量为s的标准形式S2 = s3 - 15 s2 - 24 s + 3602022-3-2415 3.8.2多项式的运算1.多项式的根R=roots(P):求多项式向量P的根 p = 1 -6 -72 -27; % 多项式向量p r = roots(p) % 求多项式的根2022-3-24162.多项式的值y=polyval(p,x):计算多项式向量为p变量为x时的数值y,x可以是向量也可以是矩

12、阵例3-31计算多项式的值p = 3 2 1;% 创建一个多项式向量x = 5,7,9;% 变量为向量形式yx = polyval(p,x)% 计算多项式的值 yx = 86 162 262A = pascal(4)% 变量为矩阵形式 A = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20ya = polyval(p,A)% 计算多项式的值ya = 6 6 6 6 6 17 34 57 6 34 121 321 6 57 321 12412022-3-24173.多项式的乘法c=conv(u,v):求向量为u的多项式与向量为v的多项式的乘积c。例3-32求(x2+2x+6

13、)(x3+2)的乘积a = 1 2 6;b = 1 0 0 2;% 生成多项式向量c = conv(a,b)% 计算乘积 s = poly2str(c,x)% 标准形式表示c = 1 2 6 2 4 12s = x5 + 2 x4 + 6 x3 + 2 x2 + 4 x + 12训练任务: (x4+2x+6)(x3+2x+6)2022-3-24183.conv,convs多项式乘运算例:a(x)=x2+2x+3; b(x)=4x2+5x+6;c = (x2+2x+3)(4x2+5x+6)a=1 2 3;b=4 5 6;c=conv(a,b) or =conv(1 2 3,4 5 6)c = 4

14、.00 13.00 28.00 27.00 18.00p=poly2str(c,x)p = 4 x4 + 13 x3 + 28 x2 + 27 x + 182022-3-24194.多项式的除法c=deconv(v, u):v为被除数,u为除数,q返回商,余数为r。例3-33求(2x3+4x2+8x+3)(x2+2x+3)v = 2 4 8 3;u = 1 2 3;% 生成多项式向量c = conv(v,u)% 计算多项式乘积 c = 2 8 22 31 30 9q1,r1 = deconv(c,v)% 求商,整除r1为0,商多项式与u相同 q1 = 1 2 3r1 = 0 0 0 0 0 0

15、q2,r2 = deconv(v,u)% 多项式求商,带余数2022-3-24204.deconv多项式除运算a=1 2 3; c = 4.00 13.00 28.00 27.00 18.00d=deconv(c,a)d =4.00 5.00 6.00d,r=deconv(c,a)余数余数c除除a后的整数后的整数2022-3-24215.多项式微分matlab提供了polyder函数多项式的微分。命令格式:polyder(p): 求p的微分polyder(a,b): 求多项式a,b乘积的微分p,q=polyder(a,b): 求多项式a,b商的微分例:a=1 2 3 4 5; poly2str(a,x)ans = x4 + 2 x3 + 3 x2 + 4 x + 5b=polyder(a)b = 4 6 6

温馨提示

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

评论

0/150

提交评论