欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    MATLAB-ch013(数值计算-微积分.ppt

    • 资源ID:5438848       资源大小:233.50KB        全文页数:27页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MATLAB-ch013(数值计算-微积分.ppt

    第13讲 数值计算微积分,张建瓴,13.1 数值积分,在工程教学和应用中,除了进行数据逼近外,还要求逼近曲线下面的面积,这就是积分问题。,一、数值积分方法,典型的数值积分方法有:用常数(0阶多项式)近似函数矩形法;用直线(一阶多项式)近似函数曲线的梯形法;用抛物线(二阶多项式)近似函数曲线的Simpson法,以及用一般多项式近似函数的Romberg法等。y=sin(x3)*sqrt(x)x求y,表13-1列出了函数数值积分的一些命令。,表13-1 函数数值积分的命令,常见的一元数值积分命令,MATLAT提供了在有限区间内,数值计算某函数下的面积(积分)的三种函数:trapz,quad和quad8。,二、一(元)维数值积分,1、trapz函数函数trapz通过计算若干梯形面积的和来近似某函数的积分,这些梯形如图13-1所示,是通过使用函数humps的数据点形成。,图13-2 较好的梯形逼近曲线下的面积示意图从图中可明显地看出,单个梯形的面积在某一段欠估计了函数真正的面积,而在其它段又过估计了函数的真正面积。如同线性插值,当梯形数目越多时,函数的近似面积越准确。例如,在图13-1中,如果我们大致增加一倍数目的梯形,我们得到如下(如图13-2)所示的更好的近似结果。,trapz 函数,对如上所示的两个曲线,用trapz在区间-1x=-1:0.17:2;%rough approximationy=humps(x);area=trapz(x,y)%call trapz just like the plot commandarea=25.9174,trapz 函数的应用,x=-1:0.07:2;%better approximationy=humps(x);area=trapz(x,y)area=26.6243上述两个结果不同是基于对图形的观察,粗略近似可能低估了实际面积。除非特别精确,没有准则说明哪种近似效果更好。,trapz 函数的应用,MATLAB提供的求积函数命令quad和quad8在使用时,其递推的层次限制在十层以内,达到这个限制则会提示警告信息,并且这两个函数命令都不能解决可积的奇异值问题,例如,求解。,quad函数和quad8函数,函数quad和quad8完整的调用格式为:(1)q=quad(fun,a,b,tol,trace,pl,p2,)采用Simpson法计算积分;(2)q=quad8(fun,a,b,tol,trace,p1,p2,)采用八样条Newton-Cotes公式求数值积分。其中:fun是被积函数,可以是表达式字符串、内联函数、M函数文件名,被积函数的自变量,一般采用字母x;a、b分别是积分的上、下限,都是确定的值;,quad和quad8函数调用格式,tol是一个二元向量,它的第一个元素用来控制相对误差,第二个元素用来控制绝对误差,缺省时积分的相对精度为0.001;trace如果取非零值时,将以动态图形的形式展现积分的整个过程,若取零值,则不画图,其缺省值是0;pl和p2是向被积函数传递的参数。在上面的调用格式中,前三个输入参数是调用时必须的,而后面的输入参数可缺省。,quad和quad8的参数,MATLAB的函数quad和quad8是基于数学上的正方形概念来计算函数的面积。为获得更准确的结果,两个函数在所需的区间都要计算被积函数。与简单的梯形比较,这两个函数进行更高阶的近似,而且quad8比quad更精确。这两个函数的调用方法与fzero相同,即area=quad(humps,-1,2)%find area between-1 and 2area=26.3450,quad和quad8函数的调用,area=quad8(humps,-1,2)area=26.3450注意:这两个函数返回完全相同的估计面积,而且这个估计值在两个trapz面积的估计值之间。,quad和quad8函数的调用,求函数的数值积分(1)建立函数funqfunction y=funq(x)y=x.3+x.2+2;(2)对被积函数funq进行数值积分q=quad(funq,-1,1,le-4)使用quad命令求数值积分q=4.6667,例13-1 example13_1.m,q8=quad8(funq,-1,1,le-4,1)用quad8命令求数值积分q8=4.6667程序的运行结果显示出积分的过程如图13-3所示。,例13-1,一元函数积分中存在的问题,同样存在于多重积分中。1、积分限为常数的二重积分多重积分使用函数dblquad,其完整的调用格式为:result=dblquad(fun,inmin,inmax,outmin,outmax,tol,method)其中:输入参数fun是被积函数,可以直接用字符串内联函数或M函数文件表达,但不论什么形式,该被积函数应有两个变量,即内变量和外变量。内变量接受向量输入,外变量接受标量输入。被积函数的输出是与内变量同长的向量。,三、多重数值积分,输入参数inmin,inmax是内变量的下限和上限;outmin、outmax是外变量的下限和上限;tol的含义与命令quad中的情况相同;method是积分方法选项,如“quad”和“quad8”等。注意:该命令不适用于内积分区间上、下限为函数的情况。,dblquad函数的参数,求积分上下限都为常数的二重积分,被积函数为y*sin(x)+s*cos(y),其中x的取值范围是到2,y的取值范围是0到。(1)建立名为integrnd的M文件 fimction out=integrnd(x,y)out=y*sin(x)+x*cos(y)(2)用函数dblquad命令来求integrnd的二重积分 result=dblquad(integrnd,pi,2*pi,0,pi)result=-9.8698,例13-6 example13_6.m,对于内积分上下限是外积分变量的函数的积分问题,求解过程较为麻烦。一般方法都是先求出,然后再求。,2、内积分上下限为函数的二重积分,【例13-10】计算。(1)编写内积分区间上下限的M函数文件x_low.mfunction f=x_low(y)f=sqrt(y);(2)编写被积函数 被积函数函数采用内联函数ff=inline(x.2+y.2,x,y)表示。(3)被积函数用内联函数表达时,运行以下指令,即得结果ff=inline(x.2+y.2,x,y);%被积函数的内联函数表达SS=double_int(ff,x_low,2,1,4)SS=9.5810(4)本题用符号计算很容易获得高精度解Ssym=vpa(int(int(x2+y2,x,sqrt(y),2),y,1,4)Ssym=9.580952380952381,例13-10 example13_10.m,1、“完整”离散序列的数值卷积(1)求和运算上下界的确定(2)卷积C(n)“非平凡”区间的确定(3)“截尾”离散序列的数值卷积(4)多项式乘法与离散卷积的算法同构(5)连续时间函数的数值卷积(6)“零阶”近似算法(7)“积分-插值”混合算法(8)SIMULINK卷积法【例13-12】example12_12.m 有序列和。(A)求这两个完整序列的卷积,并图示。(B)假设A(7)及其后的4个非零值未知,而成为截尾序列,求卷积并图示。%完整序列卷积a=ones(1,10);n1=3;n2=12;%完整A(n)序列的非平凡值和区间端点b=ones(1,8);n3=2;n4=9;%完整B(n)序列的非平凡值和区间端点c=conv(a,b);nc1=n1+n3;nc2=n2+n4;%计算卷积和确定卷积非平凡区间端点kc=nc1:nc2;%构成非平凡区间的序号自变量%截尾序列卷积aa=a(1:6);nn1=3;nn2=8;%截尾A(n)序列的非平凡值和区间端点cc=conv(aa,b);ncc1=nn1+n3;图13-7“完整”序列卷积和“截尾”序列卷积nx=nn2+n4;%“非平凡”区间右端点ncc2=min(nn1+n4,nn2+n3);%截尾序列卷积被正确计算区间的右端点kx=(ncc2+1):nx;kcc=ncc1:ncc2;N=length(kcc);stem(kcc,cc(1:N),r,filled)axis(nc1-2,nc2+2,0,10),grid,hold onstem(kc,c,b),stem(kx,cc(N+1:end),g),hold off【例13-8】求函数u(t)=e-tU(t)和h(t)=te-t/2U(t)的卷积。本例展示:(A)符号Laplace变换求卷积的理论表示;(B)SIMULINK卷积法的执行过程和它的快速精确性。(C)从理论符号解产生相应的理论数值序列。(1)符号卷积法(得解析结果)syms tao;t=sym(t,positive);%把t定义为“取正”符号变量US1=laplace(exp(-t);%u(t)的L氏变换HS1=laplace(t*exp(-t/2)%h(t)的L氏变换yt1=simple(ilaplace(US1*HS1)%L氏反变换得卷积的理论解图13-8 卷积解算模型exm5835_2_2.mdlHS1=1/(1/2+s)2yt1=4*exp(-t)+(2*t-4)*exp(-1/2*t)(2)SIMULINK卷积法根据h(t)的传递函数,构作SIMULINK模型exm5835_2.mdl,并运行,可从示波器上看到卷积结果。(3)比较两种卷积方法的结果,并用图形表示t=yt2(:,1);%exm5835_2.mdl示波器所保存的仿真采样时间序列yyt1=eval(vectorize(char(yt1);%理论解的数值序列dy,kd=max(abs(yyt1-yt2(:,2);dy12=dy/abs(yyt1(kd)dy12=2.8978e-006【例13-9】用“零阶”近似法求u(t)=e-tU(t)和h(t)=te-t/2U(t)的卷积。本例演示:(A)连续函数的有限长度采样。(B)卷积数值计算三个误差(“截尾”误差、“零阶”近似误差、计算机字长误差)的影响。(C)卷积“无截尾误差”区间、“非平凡”区间端点的确定。(D)离散卷积和连续卷积之间的关系。(E)指令conv的使用。(F)绘图分格线的运用。(1)离散卷积运算前的准备由于数值计算只能对有限长度序列进行,所以必须对被卷函数做截尾处理。假如把5%作为函数的截断阈值,那么u(t)在t=3处截尾,h(t)在t=11处截尾,即取t2=3,t4=11。取采样周期T=0.001。(2)实施计算%“零阶”法计算卷积t2=3;t4=11;T=0.01;tu=0:T:t2;N2=length(tu);th=0:T:t4;N4=length(th);u=exp(-tu);h=th.*exp(-th/2);tx=0:T:(t2+t4);Nx=length(tx);yt3=T*conv(u,h);%把计算结果与理论值比较t=tx;yyt1=eval(vectorize(char(yt1);%例13-8第(1)步的计算结果dy,kd=max(abs(yyt1(1:N2)-yt3(1:N2);dy13(1)=dy/abs(yyt1(kd);图13-9“零阶”近似法卷积在不同区间上的精度图示dy,kd=max(abs(yyt1(N2+1:N4)-yt3(N2+1:N4);dy13(2)=dy/abs(yyt1(N2+kd);dy,kd=max(abs(yyt1(N4+1:Nx)-yt3(N4+1:Nx);dy13(3)=dy/abs(yyt1(N4+kd);(3)不同区间段的误差及图示disp(与理论结果的相对误差)disp(blanks(4),0,3段 3,11段 11,14段),disp(dy13)plot(t,yyt1,:b,t,yt3,r)set(gca,Xtick,0,3,11,14),grid与理论结果的相对误差 0,3段 3,11段 11,14段 0.0068 0.0810 0.6974。,三、卷积,13.1 数值微分,在工程试验或工程应用中,有时要根据已知的数据点,求某一点的一阶或高阶导数,这时就要用到数值微分。与积分相反,数值微分非常困难。积分描述了一个函数的整体或宏观性质,而微分则描述了一个函数在一点处的斜率,即函数的微观性质。因此积分对函数的形状在小范围内的改变不敏感。而微分却很敏感。一个函数小的变化,容易产生相邻点的斜率的大的改变。由于微分这个固有的困难,所以尽可能避免数值微分,特别是对实验获得的数据进行微分。在这种情况下,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分。或用另一种方法,对该数据进行三次样条拟合。数值微分的基本思路是先用逼近或拟合等方法将已知数据在一定范围内的近似函数求出,再用特定的方法对此近似函数进行微分。,己知函数某些节点的值,只要将用曲线拟合得到的多项式微分,再对微分后的多项式求值,即可求出在拟合范围以内任意一点的任意阶微分。这种方法一般只用在低阶数值微分。例13-20example13_20.m 用5阶多项式拟合函数cos(x),并利用多项式的求导来求处的一阶和二阶导数。x=0:0.3:4;y=cos(x);p=polyfit(x,y,5);生成拟合多项式 pp=polyder(p)对拟合多项式求一阶微分 pp=-0.0330 0.257 0.0027-1.0257 0.0069 polyvat(pp,pi)求pi处的一阶导数 ans=0.0025 ppp=polyder(pp)求多项式的二阶微分 pp=-0.1321 0.6200 0.0053-1.0257 polyval(ppp,pi)求pi处的二阶导数 ans=1.0150 例13-21example13_21.m x=0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1y=-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;%datan=2;%order of fitp=polyfit(x,y,n)%find polynomial coefficientsp=-9.8108 20.1293-0.0317xi=linspace(0,1,100);z=polyval(p,xi);%evaluate polynomialplot(x,y,o,x,y,xi,z,:)xlabel(x),ylabel(y=f(x),title(Second Order Curve Fitting)图13-9 二次曲线拟合 在这种情况下,运用多项式微分函数polyder求得微分。pd=polyder(p)pd=-19.6217 20.1293 y=-9.8108x2的微分是dy/dx=-19.6217x+20.1293。由于一个多项式的微分是另一个低一阶的多项式,所以还可以计算并画出该函数的微分。图13-11 曲线拟合多项式微分z=polyval(pd,xi);%evaluate derivativeplot(xi,z)xlabel(x),ylabel(dy/dx),title(Derivative of a curve Fit Polynimial)%(微分曲线如图13-11所示)在这种情况下,拟合的多项式为二阶,使其微分为一阶多项式。这样,微分为一条直线,它意味该微分与x成线性变化。,一、多项式求导法求数值微分,二、用diff函数计算差分求数值微分 给定一些描述某函数的数据,MATLAB提供了一个计算其非常粗略的微分的函数。这个函数命名为diff,它计算数组中元素间的差分。【调用格式】:D=diff(X)因为微分定义为:则y=f(x)的微分可近似为:它是y的有限差分除以x的有限差分。因为diff计算数组元素间的差分,所以在MATLAB中,可近似求得函数的微分。继续前一个例子:dy=diff(y)./diff(x);%compute differences and use array divisionxd=x(1:length(x)-1);%create new x axis since dy is shorter than yplot(xd,dy);title(Approximate Derivative Using DIFF)图13-12 用diff得到的近似微分ylabel(dy/dx),xlabel(x)例13-25example13_25.m 用diff近似求函数的微分。x=0:0.3:4;y=cos(x);dy=diff(y)./diff(x)应用数组近似计算微分 dy=Columns 1 through 7-0.1489-0.4333-0.6791-0.8642-0.9721-0.9931-0.9255 Columns 8 through l3-0.7752-0.5556-0.2864 0.0084 0.3024 0.5694 因函数diff计算的是数组元素间的差分,故所得输出比原数组少了一个元素。这样,在绘制微分曲线时,必须舍弃x数组中的一个元素。当舍弃x的第一个元素时,上述过程给出向后差分近似。而舍弃x的量后一个元素,则给出向前差分近似。如果比较这两条曲线,就很容易发现,用有限差分近似微分会导致很差的结果,特别是在处理被噪音污染了的数据方面。,一、多项式求导法求数值微分,13.3 符号微积分,MATLAB的数学工具箱提供了微积分运算的基本函数:包括微分、积分、求和、极限和泰勒展开等。,1、符号自变量的确定 在MATLAB中进行数学运算时,自变量的选取一般根据上下文得到。例如,在表达式f=x3和y=sin(at+b)中,如果对其进行求导而没有指定自变量,则MATLAB将根据数学约定,分别得到求导式:f=3x2和y=acos(at+b),即分别假设这两个表达式中的自变量为x和t,其他符号a和b都看作常数或参数。根据数学约定,自变量一般都是小写字母,并且在拉丁字母表的后面(如x、y和z)。在MATLAB中,可以用函数findsym找出自变量的符号。2、findsym函数 函数findsym用来找出自变量的符号。例13-30example12_30.m 如何确定自变量。syms a b c x y f=a*x3+b*x-c;定义一个符号表达式 g=sin(x+3*y);定义另一个符号表达式 diff(f)对第一个表达式求导,但并没有说明对哪一个变量运算 ans=3*a*x2+b findsym(f,1)寻找f中的第一个符号变量 ans=x findsym(g,1)寻找g中的第一个符号变量 ans=x findsym(f)给出表达式f中的所有符号变量 ans=a,b,c,x 函数findsym的运算规则是在符号表达式中的缺省变量为靠近小写字母x的优先,在x后面的字母优先。F=(1:6).3 建立一个向量 F=1 8 27 64 125 216 diff(F)计算元素之间的差分 ans=7 19 37 61 91 4、多元向量函数的雅可比式 MATLAB中可使用jacobian函数计算变换的雅可比矩阵J。其调用格式为:J=jacobian(f,v)例13-42example13_42.m 求函数的jacobian矩阵 syms r m n x=r*sin(m)*sin(n);y=r*cos(m)*sin(n);z=r*cos(m);J=jacobian(x;y;z,r,m,n)计算雅可比矩阵 J=sin(m)*sin(n)r*cos(m)*sin(n)r*sin(m)*cos(n)cos(m)*sin(n)-r*sin(m)*sin(n)r*cos(m)*cos(n)cos(m)-r*sin(m)0【注意】:jacobiaa函数的第一个输入参数必须是列向量,第二个输入参数必须是行向量。因jacobian行列式是非常复杂的三角函数表达式,所以用simple命令可对其进行三角变换和简化。三、符号积分 积分有不定积分、定积分、广义积分和重积分等。一般说来,积分比微分更难求。符号积分与数值积分相比,符号积分指令简单,适应性强。但可能占用的机器时间较长。有时可能得不出“封闭”解,但都给警告提示和积分原式。在MATLAB中,函数int(f)命令用来进行符号积分。该命令试图找到一个符号表达式,使得diff(F)=f,也就是说int(f)返回f的不定积分,或者是f的微分的逆运算。与微分类似,int(f,a)使用符号对象a作为积分自变量。积分命令的调用格式为:(1)int(s)求符号表达式s关于findsym确定的默认符号变量进行不定积分;(2)int(s,v)求符号表达式s关于变量v的不定积分;(3)int(s,a,b)求符号表达式s关于默认变量从a到b的定积分,其中a和b是数值;(4)int(s,v,a,b)求符号表达式s关于变量v的从a到b的定积分。【说明】:(1)正如函数diff一样,积分命令int对符号数组或矩阵的每一个元素进行运算;(2)a、b分别是积分的上,下限,允许它们取任何值或符号表达式;(3)当积分限由一具体值变为正负无穷时,定积分便转化为广义积分,此时也只需将积分限变为无穷,即可得到相应函数的广义积分值。例13-45example13_45.m 符号积分运算 syms x u t;A=cos(x*t),sin(x*t);-sin(x*t),cos(x*t);%定义一个符号矩阵 S=sin(u+3*x);%定义一个符号表达式 int(s)%以默认变量,进行积分 ans=-l/3*cos(u+3*x)int(s,u)%以u为变量进行积分 ans=-cos(u+3*x)int(s,pi/2,pi)%以变量x从pi/2到pi进行积分 ans=1/3*cos(u)+1/3*sin(u)int(u,pi/2,pi)%以变量u从pi/2到pi进行积分 ans=4*cos(x)3-3*cos(x)-4*sin(x)*cos(x)2+sin(x)int(s,x,2,sin(t)以变量x从2到sin(t)进行积分 ans=-4/3*cos(u)*cos(sin(t)3+cos(u)*cos(sin(t)+4/3*sin(u)*sin(sin(t)*cos(sin(t)2-1/3*sin(u)*sin(sin(t)+l/3*cos(u+6)int(A,t)以变量t对矩阵A进行积分 ans=1/x*sin(x*t)-cos(x*t)/x cos(x*t)/x l/x*sin(x*t)syms x k f=exp(-(k*x)2);int(f,x,-inf,inf)四、符号求和 当符号变量的和存在时,可用函数symsum进行符号求和。其调用格式为:(1)symsum(s)关于默认变量对通项s求不定和;(2)symsum(s,v)关于指定变量v对通项s求不定和;(3)symsum(s,a,b)或symsum(s,v,a,b)关于默认变量或指定变量v在a,b之间取值时,对通项s求和。例13-47example12_47.m 求下面级数的和。syms k n simple(symsum(k2,0,n)%求和0+12+22+n2 ans=1/6*n*(n+1)*(2*n+1)symsum(1/k2,1,inf)%求和1+1/22+1/32+ans=1/6*pi2五、泰勒级数 在MATLAB中,提供有函数taylor,用于对变量进行泰勒级数的展开。taylor函数的调用命令为:(1)taylor(f)求f对默认变量的泰勒展开,六阶小量以余项式给出;(2)taylor(f,n)求f对默认变量的前(n-1)项非零泰勒展开多项式;(3)taylor(f,a)求f对默认变量在点a处的泰勒展开多项式;(4)taylor(f,x)用指定变量x代替findsym所确定的变量。例13-50example12_50.m 求下面的泰勒级数 taylor(exp(-x)求对默认变量的前6个非零项 ans=1-x+l/2*x2-1/6*x3+1/24*x4-1/120*x5 taylor(log(x),8,1)求log(x)的在x=l点处的泰勒展开式的前面8个非零项 ans=x-1-l/2*(x-1)2+1/3*(x-1)3-l/4*(x-1)4+1/5*(x-1)5-l/6*(x-1)6+1/7(x-1)7 taylor(xt,3,t)求xt对指定变量t的泰勒展开式的前面3个非零项 ans=1+log(x)*t+l/2*log(x)2*t2六、符号积分示例【例13-51】example12_51.m 求。演示:积分指令对符号函数矩阵的作用。syms a b x;f=a*x,b*x2;1/x,sin(x);disp(The integral of f is);pretty(int(f)The integral of f is 2 3 1/2 a x 1/3 b x log(x)-cos(x)【例13-52】example12_52.m 求。演示如何使用mfun指令获取一组积分值。(1)求一般积分结果F1=int(1/log(t),t,0,x)F1=-Ei(1,-log(x)(2)利用mfun指令求x=0.5,0.6,0.7,0.8,0.9时的定积分x=0.5:0.1:0.9F115=-mfun(Ei,1,-log(x)x=0.5000 0.6000 0.7000 0.8000 0.9000F115=-0.3787-0.5469-0.7809-1.1340-1.7758【例13-53】example12_53.m 求积分。注意:内积分上下限都是函数。syms x y zF2=int(int(int(x2+y2+z2,z,sqrt(x*y),x2*y),y,sqrt(x),x2),x,1,2)VF2=vpa(F2)%积分结果用32位数字表示图13-13 交互式近似积分F2=1610027357/6563700-6072064/348075*2(1/2)+14912/4641*2(1/4)+64/225*2(3/4)VF2=【例13-54】example13_54.m 利用rsums求积分。(与例12-11结果比较)syms x positive;px=0.5/log(0.5*x);rsums(px)小 结 本章从工程教学的角度,详细介绍了MATLAB在数值微积分等方面的应用。通过本章的学习,应该重点掌握如下内容:(1)熟练掌握一维和多重数值积分的命令,以及用多项式求导法求数值微分和用diff计算插分法求数值微分。(2)熟练掌握符号微积分应用的内容,包括符号自变量的确定、求函数的极限、对符号表达式(符号数组和多元向量函数)求导数和积分、符号积分,符号求和等,同时熟练掌握通过调用函数taylor求函数的泰勒级数展开式。,一、符号自变量的确定,1、符号自变量的确定 在MATLAB中进行数学运算时,自变量的选取一般根据上下文得到。例如,在表达式f=x3和y=sin(at+b)中,如果对其进行求导而没有指定自变量,则MATLAB将根据数学约定,分别得到求导式:f=3x2和y=acos(at+b),即分别假设这两个表达式中的自变量为x和t,其他符号a和b都看作常数或参数。根据数学约定,自变量一般都是小写字母,并且在拉丁字母表的后面(如x、y和z)。在MATLAB中,可以用函数findsym找出自变量的符号。2、findsym函数 函数findsym用来找出自变量的符号。例13-30example12_30.m 如何确定自变量。syms a b c x y f=a*x3+b*x-c;定义一个符号表达式 g=sin(x+3*y);定义另一个符号表达式 diff(f)对第一个表达式求导,但并没有说明对哪一个变量运算 ans=3*a*x2+b findsym(f,1)寻找f中的第一个符号变量 ans=x findsym(g,1)寻找g中的第一个符号变量 ans=x findsym(f)给出表达式f中的所有符号变量 ans=a,b,c,x 函数findsym的运算规则是在符号表达式中的缺省变量为靠近小写字母x的优先,在x后面的字母优先。二、极限 在实际工作中,极限的求法有很多技巧,因而往往比较复杂。MATLAB采用函数limit直接计算函数的极限,其调用格式为:(1)limit(f,x,a)求符号表达式f当xa时的极限;(2)limit(f,a)对系统默认变量且该默认变量a时表达式f的极限;(3)limt(f)对系统默认变量且该默认变量a=0时表达式f的极限;(4)limit(f,x,a,right)或limit(f,x,a,left)求x从右侧或从左侧趋近a时表达式f的极限。例13-32example12_32.m 求极限 syms x h limit(sin(x+h)-sin(x)/h,h,0)求当h0时的极限 ans=cos(x)limit(x-2)/(x2-4),2)求对默认变量2时的极限 ans=1/4 limit(sin(x)/x)求对默认变量0时的极限 ans=1 limit(1/x,x,0)ans=NaN limit(1/x,x,0,right)%x从右侧趋近0时的极限 ans=inf limit(1/x,x,0,left)%x从左侧趋近0时的极限 ans=-inf【说明】:(1)系统缺省情况下limit仍等同于limit(f,x,0)。(2)对于极限,不论从左侧趋近a还是从右侧趋近a,其结果都相同,则f(x)在a的极限存在;如果两侧的值不同,则说明f(x)在a点的极限不存在。表达式f(x)在其奇异点处没有极限。三、导数和微分 由高等数学可知,函数f(x,y,z,)在某一点(x0,y0,z0,)的增长率就是此函数在该点的导数。对函数的严格定义为:可以用前面的limit命令来求各种函数的导数。而在MATLAB中,求函数的导数或微分由专门的函数diff来完成。1、符号表达式的导数和微分 diff函数有四种调用格式,分别为:(1)diff(f)对默认的自变量求微分,并且自变量由函数findsym确认;(2)diff(f,a)对自变量a求微分;(3)diff(f,n)对默认的自变量求n阶微分,并且自变量由函数findsym确认;(4)diff(f,a,n)对变量a求n阶微分。当a缺省时,自变量自动由findsym确认;n缺省时,默认n=1。例13-35example13_35.m 符号表达式的求导与微分 syms a b c x f;f=a*x4+x3-b*x+c;定义一个符号表达式 diff(f)对默认的变量求微分,等价于diff(f,x,1)ans=4*a*x3+3*x2-b diff(f,a)对变量a求微分 ans=x4 diff(f,2)对默认的变量求二次微分,等价于diff(f,x,2)ans=12*a*x2+6*x diff(f,a,3)对变量a求三次微分 ans=0 2、符号数组和符号矩阵的导数和微分 函数diff也可对数组进行运算。如果f是符号数组或矩阵,则求导对数组或矩阵中的每个元素进行。例13-37example13_37.m 符号矩阵的微分 syms a b x;F=cos(a*x)sin(a*x);-sin(b*x)cos(a2*x);diff(F)%对F求微分 ans=-sin(a*x)*a cos(a*x)*a-cos(b*x)*b-sin(a2*x)*a2 diff(F,a,2)%对变量a求二阶微分 ans=-cos(a*x)*x2-sin(a*x)*x2 0-4*cos(a2*x)*a2*x2-2*sin(a2*x)*x diff(diff(f,a),x)求二阶混合导数 ans=4*x3 3、计算数值向量的数值差分 函数diff也可以计算数值向量或矩阵的数值差分。对于一个数值向量或矩阵F,diff(F)计算F(2:m,:)-F(1:m-1,:)的数值差分。其调用格式为:Y=diff(F,n,dim)其中:F是向量或数组;n是差分阶数;dim是指定沿着数组的那一维进行差分。而n和dim可以省略。【注意】:向量或数组的有限差分是按列进行的。例13-39example13_39.m 数值向量的差分 F=(1:6).3 建立一个向量 F=1 8 27 64 125 216 diff(F)计算元素之间的差分 ans=7 19 37 61 91 4、多元向量函数的雅可比式 MATLAB中可使用jacobian函数计算变换的雅可比矩阵J。其调用格式为:J=jacobian(f,v)例13-42example13_42.m 求函数的jacobian矩阵 syms r m n x=r*sin(m)*sin(n);y=r*cos(m)*sin(n);z=r*cos(m);J=jacobian(x;y;z,r,m,n)计算雅可比矩阵 J=sin(m)*sin(n)r*cos(m)*sin(n)r*sin(m)*cos(n)cos(m)*sin(n)-r*sin(m)*sin(n)r*cos(m)*cos(n)cos(m)-r*sin(m)0【注意】:jacobiaa函数的第一个输入参数必须是列向量,第二个输入参数必须是行向量。因jacobian行列式是非常复杂的三角函数表达式,所以用simple命令可对其进行三角变换和简化。三、符号积分 积分有不定积分、定积分、广义积分和重积分等。一般说来,积分比微分更难求。符号积分与数值积分相比,符号积分指令简单,适应性强。但可能占用的机器时间较长。有时可能得不出“封闭”解,但都给警告提示和积分原式。在MATLAB中,函数int(f)命令用来进行符号积分。该命令试图找到一个符号表达式,使得diff(F)=f,也就是说int(f)返回f的不定积分,或者是f的微分的逆运算。与微分类似,int(f,a)使用符号对象a作为积分自变量。积分命令的调用格式为:(1)int(s)求符号表达式s关于findsym确定的默认符号变量进行不定积分;(2)int(s,v)求符号表达式s关于变量v的不定积分;(3)int(s,a,b)求符号表达式s关于默认变量从a到b的定积分,其中a和b是数值;(4)int(s,v,a,b)求符号表达式s关于变量v的从a到b的定积分。【说明】:(1)正如函数diff一样,积分命令int对符号数组或矩阵的每一个元素进行运算;(2)a、b分别是积分的上,下限,允许它们取任何值或符号表达式;(3)当积分限由一具体值变为正负无穷时,定积分便转化为广义积分,此时也只需将积分限变为无穷,即可得到相应函数的广义积分值。例13-45example13_45.m 符号积分运算 syms x u t;A=cos(x*t),sin(x*t);-sin(x*t),cos(x*t);%定义一个符号矩阵 S=sin(u+3*x);%定义一个符号表达式 int(s)%以默认变量,进行积分 ans=-l/3*cos(u+3*x)int(s,u)%以u为变量进行积分 ans=-cos(u+3*x)int(s,pi/2,pi)%以变量x从pi/2到pi进行积分 ans=1/3*cos(u)+1/3*sin(u)int(u,pi/2,pi)%以变量u从pi/2到pi进行积分 ans=4*cos(x)3-3*cos(x)-4*sin(x)*cos(x)2+sin(x)int(s,x,2,sin(t)以变量x从2到sin(t)进行积分 ans=-4/3*cos(u)*cos(sin(t)3+cos(u)*cos(sin(t)+4/3*sin(u)*sin(sin(t)*cos(sin(t)2-1/3*sin(u)*sin(sin(t)+l/3*cos(u+6)int(A,t)以变量t对矩阵A进行积分 ans=1/x*sin(x*t)-cos(x*t)/x cos(x*t)/x l/x*sin(x*t)syms x k f=exp(-(k*x)2);int(f,x,-inf,inf)四、符号求和 当符号变量的和存在时,可用函数symsum进行符号求和。其调用格

    注意事项

    本文(MATLAB-ch013(数值计算-微积分.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开