您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > matlab的多元函数微积分学
2.3多元函数微积分学2.3.1多元函数的微分1、符号求导指令diff多元函数的偏导数与全微分可以通过Matlab中的diff()指令直接求解,现以二元函数为例,现要求出,则可以用下面的函数求出f=diff(diff(f,x,m),y,n)或f=diff(diff(f,y,n),x,m)实际上,当m,n取不同值时,该指令可以完成以下功能:),(yxfnmnmyxf•2、多元函数的Jacobi矩阵•Jacobi矩阵可以由Matlab的符号工具箱中jacobian()函数直接求得.该函数的调用格式为,其中x为自变量构成的向量,y为各个函数构成的向量.),(xyjacobianJ指令功能指令功能diff(),(yxf,x)与diff(),(yxf,y)xf与yfdiff(),(yxf,x,m)与diff(),(yxf,y,n)nnxf与mmyf),F(diff),F(diffzx),F(diff),F(diffzy求隐函数),(Fyxz偏导数xz与yzdiff(diff(),(yxf),x,y)与diff(diff(),(yxf),y,x)yxf2与xyf2指令功能diff(),(yxf,x)*dx+diff(),(yxf,y)*dy求全微分dyyxfdxyxfdzyx),(),(collect(simple(),(yxf,x)整理表达式例1、已知二元函数)(cos)sin(),(232yxxyyxfsymsxydxdyfdff=sin(x*y)+(cos(x^3+y^2))^2;fx=diff(f,x)%求fxfy=diff(f,y)%求fydf=fx*dx+fy*dy%求全微分f2x2=diff(fx,x)%求f’’xxf2xy=diff(fx,y)%求f’’xyf3xyx=diff(f2xy,x)%求f’’’xyx对于表达式的结果比较冗长,输入collect和simple命令对表达式进行整理。如输入命令:collect(simple(f2x2),cos(x*y))。例2、已知隐函数04222zzyx,求xz,22xz。解,根据表3-1中的命令,可以立即得到所求偏导数xz,22xz。M文件:symsxyz;f=x^2+y^2+z^2-4*z;fx=diff(f,x);fz=diff(f,z);fy=diff(f,y);zx=collect(-simple(fx/fz));z2xx=collect(-diff(zx,x)-diff(zx,z)*zx)M文件:symsxyz;f=x^2+y^2+z^2-4*z;fx=diff(f,x);fz=diff(f,z);fy=diff(f,y);zx=collect(-simple(fx/fz));z2xx=collect(diff(zx,x)+diff(zx,z)*zx)例3、已知vexucos,veyusin试求其Jacobi矩阵和Jacobi行列式32|vuJ。解:求其Jacobi矩阵,建立Matlab的M文件程序:symsuv;%x=exp(u)*cos(v);y=exp(u)*sin(v);x=exp(u)*cos(v);y=exp(u)*sin(v);J=jacobian([x,y],[u,v])2.3.2极值问题1、函数求导指令diff;2、方程求解指令sovle;3、显示文本指令disp;4、创建二维等高线指令contour:1)contour(Z),参数Z为一个矩阵,表示相对于XY平面的高度,Z最小为2行2列的矩阵;2)contour(Z,n),根据矩阵绘制n组等高线;3)contour(Z,v),根据矢量v绘制指定等高线;4)contour(X,Y,Z)或contour(X,Y,Z,n)或contour(X,Y,Z,v),其中矢量X,Y,分别表示两个坐标范围.如果它们为矩阵,必须与矩阵Z大小相同,此时的Z为一般用函数surf创建的面.1、求解函数xyxyxyxf933),(2233的极值。解:首先求解偏导数symsxy;f=x^3-y^3+3*x^2+3*y^2-9*x;diff(f,x),diff(f,y)其次求解驻点坐标:[x,y]=solve('3*x^2+6*x-9=0','-3*y^2+6*y=0','x','y')第三步,求借二阶偏导数,并输出结果A=diff(f,x,2),B=diff(diff(f,x),y),C=diff(f,y,2)第四步,分别判别四点是否为极值,建立M文件,自动判断四点的极值情况:xx=[1-31-3];%驻点横坐标yy=[0022];%驻点纵坐标fori=1:4D=(6*xx(i)+6)*(-6*yy(i)+6)ifD0if(6*xx(i)+6)0x=xx(i)y=yy(i)disp('为极大值点;')disp('极大值为')fmax=x^3-y^3+3*x^2+3*y^2-9*xelseif(6*xx(i)+6)0x=xx(i)y=yy(i)disp('为极小值点;')disp('极小值为')fmin=x^3-y^3+3*x^2+3*y^2-9*xendendifD0x=xx(i)y=yy(i)disp('该点不是极值点;')endifD==0x=xx(i)y=yy(i)disp('无法确定!')endend例3、求内接于单位球且有最大体积的长方体。解:设球面方程为1222zyx,),,(zyx是它的内接长方形在第一卦线内的一个顶点,则此长方形的长宽高分别为2x,2y,2z,体积为V=2x·2y·2z=8xyz,令)(8),,,(222zyxkxyzkzyxL下面按步骤求解,首先求解偏导数。Matlab的M文件程序symsxyzrk;L=8*x*y*z+k*(x^2+y^2+z^2-r^2);diff(L,x),diff(L,y),diff(L,z),diff(L,k)再求解驻点坐标:[k,x,y,z]=solve('8*y*z+2*k*x=0','8*x*z+2*k*y=0','8*x*y+2*k*z=0','x^2+y^2+z^2-1=0')2.3.3空间曲面的绘制1、常用绘制曲面的网格函数1)生成网格函数meshgrid①[X,Y]=meshgrid(x,y):将向量x和y转换成矩阵X,Y,其中矩阵X的每行是向量x,矩阵Y的每列是向量y,此命令可用于作三维曲面的图形.②[X,Y]=meshgrid(x):是[X,Y]=meshgrid(x,y)的一种缩写形式.③[X,Y,Z]=meshgrid(x,y,z):将向量x,y和z转换成矩阵X,Y和Z,此命令可用于作三维曲面的图形.2)mesh(x,y,z):用空间中的两组相交的平行平面上的网状线的方式表示曲面,即绘制网格图.3)meshc(x,y,z):绘制网格图,并带有等高线.4)meshz(x,y,z):屏蔽的网格图.5)surf(x,y,z):用空间中网状线与网格中填充色彩的方式表示曲面,即绘制表面图.6)surfc(x,y,z):绘制表面图,并带有等高线.7)surfl(x,y,z):绘制表面图,并带有阴影.2、绘制旋转曲面和球面的函数1)绘制球面函数sphere①[X,Y,Z]=sphere(N):生成三个(N+1)(N+1)阶矩阵,利用surf(X,Y,Z)可以产生一个单位球面.②[X,Y,Z]=sphere:默认值N=20.③sphere(N):只绘制球面图,不返回任何值.2)绘制旋转曲面的函数cylinder①[X,Y,Z]=cylinder(R,N):以母线向量R生成单位柱面,母线向量R在单位高度里等分刻度上定义的半径向量.N为旋转圆周上的分格线的条数.利用surf(X,Y,Z)可以产生一个此柱面.②[X,Y,Z]=cylinder(R),或[X,Y,Z]=cylinder:使用默认值N=20和R=[1,1].3、二元函数简捷绘图指令1)绘制网格图函数ezmesh①ezmesh(f):生成二元函数f(x,y)网格图,其中f为一个字符串.②ezmesh(f,domain):绘制二元函数f(x,y)在指定邻域上的网格图,该邻域可以是4×1向量[xmin,xmax,ymin,ymax]或2×1向量[min,max](其中,minxmax,minymax).③ezmesh(x,y,z):绘制在默认邻域-2s2,-2t2上的参数方程x=x(s,t),y=y(s,t)和z=z(s,t)确定的曲面.④ezmesh(x,y,z,[smin,smax,tmin,tmax])orezmesh(x,y,z,[min,max]):绘制在指定邻域上的参数方程x=x(s,t),y=y(s,t)和z=z(s,t)确定的曲面⑤ezmesh(...,n):在默认邻域上绘制n×n网格的函数f图像,默认n=60.⑥ezmesh(...,'circ'):在圆域上绘制函数f图像.2)绘制表面图函数ezsurf①ezsurf(f):生成二元函数f(x,y)表面图,其中f为一个字符串.②ezsurf(f,domain):绘制二元函数f(x,y)在指定邻域上的表面图,该邻域可以是4×1向量[xmin,xmax,ymin,ymax]或2×1向量[min,max](其中,minxmax,minymax).③ezsurf(x,y,z):绘制在默认邻域-2s2,-2t2上的参数方程x=x(s,t),y=y(s,t)和z=z(s,t)确定的曲面.④ezsurf(x,y,z,[smin,smax,tmin,tmax])orezsurf(x,y,z,[min,max]):绘制在指定邻域上的参数方程x=x(s,t),y=y(s,t)和z=z(s,t)确定的曲面.⑤ezsurf(...,n):在默认邻域上绘制n×n网格的函数f图像,默认n=60.⑥ezsurf(...,'circ'):在圆域上绘制函数f图像.3)绘制网格或表面图的其他函数ezmeshc绘制网格图,并带有等高线;ezsurfc绘制表面图,并带有等高线.4、曲面的属性设置1)编修三维曲面的设置命令hiddenon/off预设on.设定off则会除去隐藏线,但这个指令只对mesh等函数所绘出的网格图形有效.axison/off预设on.设定off則不显示坐标轴与刻度.boxon/off预设off.设定定on則在图形的外围显示一个外框.holdon/off预设off.设定on时,則新产生的图形不会覆盖掉原有的图形.gridon/off设定on則显示坐标的网格线.2)改变三维图形的视角viewview(az,el)设定图形的视角;其中az为方位角,el为仰角,它们均以度为单位.系统缺省的视点定义为方位角-37.5°,仰角30°.[az,el]=view传回目前所使用的视角.3)修改三维图形的曲面颜色colormapcolormap(map)使用map当成目前配色的颜色对应表.colormap('default')使用预设的颜色对应表.map=colormap把目前的颜色对应表设定给变量map.colorbar在目前的图形中显示颜色对应表.4)光照处理lightlight('Color',选项1,'Style',选项2,'Position',选项3)灯光设置.5)三维表面图形的着色shading三维表面图实际上就是在网格图的每一个网格片上涂上颜色.surf函数用缺省的着色方式对网格片着色.除此之外,还可以用shading命令来改变着色方式.shadingfaceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其shadingflat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑.shadinginterp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑.颜色是黑色.这是系统的缺省着色方式.例1、画出马鞍面222yxz和平
本文标题:matlab的多元函数微积分学
链接地址:https://www.777doc.com/doc-3232827 .html