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

下载本文档

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

文档简介

MATLAB编程基础

之数值微积分、多项式第六讲2/3/202313.7MATLAB数值积分与微分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):计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分;dim=2,按行计算差分。2/3/20232例1差分运算示例命令如下:A=[123456789101112131415161718];%生成1维矩阵A1=reshape(A,6,3)'%转换为3×6维矩阵

A1=123456789101112131415161718B1=diff(A1)%求1维1阶差分

B1=666666666666B2=diff(A1,1,2)%求2维1阶差分B2=111111111111111B3=diff(A1,2)%求1维2阶差分B3=0000002/3/202332.梯度和偏导数二元及多元函数F(x,y,…)的求导FX=gradient(F)[FX,FY]=gradient(F)[…]=gradient(F,h)2/3/20234例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,.2,.2);%求偏导数figure(2)contour(v,v,z)%绘制等高线,如图3-5所示holdonquiver(v,v,px,py)%绘制矢量场图,小箭头表示梯度holdoff

2/3/20235数值积分数值积分基本原理

求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。2/3/202363.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。返回参数I即定积分值,n为被积函数的调用次数。2/3/20237函数部分functionf=quad1(x)f=1./(x.^3-2*x-5);%编制函数m文件调用命令Q=quad('quad1',0,2)%在同一目录下,计算积分值Q=-0.4605

2/3/20238求定积分。

(1)建立被积函数文件fesin.m。functionf=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);(2)调用数值积分函数quad求定积分。[S,n]=quad('fesin',0,3*pi)S=0.9008n=772/3/202392.自适应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函数求该函数积分

2/3/2023103.7.3多重数值积分使用MATLAB提供的dblquad函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:I=dblquad(f,a,b,c,d,tol,trace)该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分。参数tol,trace的用法与函数quad完全相同。2/3/202311计算二重定积分(1)建立一个函数文件fxy.m:functionf=fxy(x,y)globalki;ki=ki+1;%ki用于统计被积函数的调用次数f=exp(-x.^2/2).*sin(x.^2+y);(2)调用dblquad函数求解。globalki;ki=0;I=dblquad('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)%计算二重积分2/3/2023123.8多项式3.8.1多项式的构造使用行向量表示多项式的系数,行向量中各元素按多项式次数从高到低排列。即多项式P(x)=anxn+an-1xn-1+…+a1x+a0的系数向量P为[anan-1…a1a0]。P=poly(A):通过n阶方阵A生成特征多项式p,A为特征多项式的根,满足P(A)=anAn+an-1An-1+…+a1A+a0P=poly(r):通过向量r=[r1r2…rn]方阵A生成多项式,向量元素为多项式的根,即满足(x-r1)(x-r2)…(x-rn)=anxn+an-1xn-1+…+a1x+a0S=poly2str(P,’s’):将多项式系数行向量表达形式P转换成变量为s的标准多项式形式S。2/3/202313例3-29求多项式

r=[123];%生成向量rP1=poly(r)%计算根为r的多项式P1=1-611-6S1=poly2str(P1,'x')%转换成变量为x的标准形式S1=x^3-6x^2+11x-6A=magic(3)%创建3阶魔方矩阵

P2=poly(A)%计算方阵的特征多项式P2=1.0000-15.0000-24.0000360.0000S2=poly2str(P2,'s')%转换成变量为s的标准形式S2=s^3-15s^2-24s+3602/3/2023143.8.2多项式的运算1.多项式的根R=roots(P):求多项式向量P的根p=[1-6-72-27];%多项式向量pr=roots(p)%求多项式的根2/3/2023152.多项式的值y=polyval(p,x):计算多项式向量为p变量为x时的数值y,x可以是向量也可以是矩阵例3-31计算多项式的值p=[321];%创建一个多项式向量x=[5,7,9];%变量为向量形式yx=polyval(p,x)%计算多项式的值yx=86162262A=pascal(4)%变量为矩阵形式

A=1111123413610141020ya=polyval(p,A)%计算多项式的值ya=6666617345763412132165732112412/3/2023163.多项式的乘法c=conv(u,v):求向量为u的多项式与向量为v的多项式的乘积c。例3-32求(x2+2x+6)(x3+2)的乘积a=[126];b=[1002];%生成多项式向量c=conv(a,b)%计算乘积

s=poly2str(c,'x')%标准形式表示c=1262412s=x^5+2x^4+6x^3+2x^2+4x+12训练任务:(x4+2x+6)(x3+2x+6)2/3/2023173.conv,convs多项式乘运算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=[123];b=[456];c=conv(a,b)or=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+182/3/2023184.多项式的除法c=deconv(v,u):v为被除数,u为除数,q返回商,余数为r。例3-33求(2x3+4x2+8x+3)\(x2+2x+3)v=[2483];u=[123];%生成多项式向量c=conv(v,u)%计算多项式乘积

c=282231309[q1,r1]=deconv(c,v)%求商,整除r1为0,商多项式与u相同

q1=123r1=000000[q2,r2]=deconv(v,u)%多项式求商,带余数2/3/2023194.deconv多项式除运算a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余数c除a后的整数2/3/2023205.多项式微分matlab提供了polyder函数多项式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多项式a,b乘积的微分[p,q]=polyder(a,b):求多项式a,b商的微分例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyder(a)b=466

温馨提示

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

评论

0/150

提交评论