
MATLAB多元函数导数求极值或最优值.docx
7页本文格式为Word版,下载可任意编辑MATLAB多元函数导数求极值或最优值 测验六 多元函数的极值 【测验目的】 1. 多元函数偏导数的求法 2. 多元函数自由极值的求法 3. 多元函数条件极值的求法. 4. 学习掌管MATLAB软件有关的命令 【测验内容】 求函数z?x?8xy?2y?3的极值点和极值 42【测验打定】 1.计算多元函数的自由极值 对于多元函数的自由极值问题,根据多元函数极值的必要和充分条件,可分为以下几个步骤: 步骤1.定义多元函数z?f(x,y) 步骤2.求解正规方程fx(x,y)?0,fy(x,y)?0,得到驻点 ?2z?2z?2z步骤3.对于每一个驻点(x0,y0),求出二阶偏导数A?,B?,C?2, 2?x?y?x?y步骤4. 对于每一个驻点(x0,y0),计算判别式AC?B,假设AC?B?0,那么该驻点是极值点,当A?0为微小值, A?0为极大值;,假设AC?B?0,判别法失效,需进一步判断; 假设AC?B?0,那么该驻点不是极值点. 2.计算二元函数在区域D内的最大值和最小值 设函数z?f(x,y)在有界区域D上连续,那么f(x,y)在D上必定有最大值和最小值。
求f(x,y)在D上的最大值和最小值的一般步骤为: 步骤1. 计算f(x,y)在D内全体驻点处的函数值; 步骤2. 计算f(x,y)在D的各个边畛域上的最大值和最小值; 步骤3. 将上述各函数值举行对比,最终确定出在D内的最大值和最小值 3.函数求偏导数的MATLAB命令 2222 1 MATLAB中主要用diff求函数的偏导数,用jacobian求Jacobian矩阵 diff(f,x,n) 求函数f关于自变量x的n阶导数 jacobian(f,x) 求向量函数f关于自变量x(x也为向量)的jacobian矩阵 可以用help diff, help jacobian查阅有关这些命令的细致信息 【测验方法与步骤】 练习1 求函数z?x?8xy?2y?3的极值点和极值.首先用diff命令求z关于x,y的偏导数 >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 42结果为 ans =4*x^3-8*y ans =-8*x+4*y 即 ?z?z?4x3?8y,??8x?4y.再求解正规方程,求得各驻点的坐标。
一般方程组的符?x?y号解用solve命令,当方程组不存在符号解时,solve将给出数值解求解正规方程的MATLAB代码为: >>clear; >>[x,y]=solve('4*x^3-8*y=0','-8*x+4*y=0','x','y') 结果有三个驻点,分别是P(-2,-4),Q(0,0),R(2,4).下面再求判别式中的二阶偏导数: >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>A=diff(z,x,2) >>B=diff(diff(z,x),y) >>C=diff(z,y,2) 结果为 A=2*x^2 B =-8 C =4 由判别法可知P(?4,?2)和Q(4,2)都是函数的微小值点,而点Q(0,0)不是极值点,实际上, P(?4,?2)和Q(4,2)是函数的最小值点当然,我们可以通过画函数图形来观测极值点与鞍 点 >>clear; >>x=-5:0.2:5; y=-5:0.2:5; >>[X,Y]=meshgrid(x,y); 2 >>Z=X.^4-8*X.*Y+2*Y.^2-3; >>mesh(X,Y,Z) >>xlabel('x'),ylabel('y'),zlabel('z') 结果如图6.1 图6.1 函数曲面图 可在图6.1种不轻易观测极值点与鞍点,这是由于z的取值范围为[-500,100],是一幅远景图,局部信息损失较多,观测不到图像细节.可以通过画等值线来观测极值. >>contour(X,Y,Z, 600) >>xlabel('x'),ylabel('y') 结果如图6.2 图6.2 等值线图 由图6.2可见,随着图形灰度的逐步变浅,函数值逐步减小,图形中有两个明显的微小值点 P(?4,?2)和Q(4,2).根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且指 向函数增加的方向.由此可知,极值点理应有等高线环绕,而点Q(0,0)周边没有等高线环绕,不 3 是极值点,是鞍点. 练习2 求函数z?xy在条件x?y?1下的极值..构造Lagrange函数 L(x,y)?xy??(x?y?1) 求Lagrange函数的自由极值.先求L关于x,y,?的一阶偏导数 >>clear; syms x y k >>l=x*y+k*(x+y-1); >>diff(l,x) >>diff(l,y) >>diff(l,k) 得 ?L?L?L?y??,?x??,?x?y?1,再解正规方程 ?x?y??>>clear; syms x y k >>[x,y,k]=solve('y+k=0','x+k=0','x+y-1=0','x','y','k') 得x?111,y?,???,进过判断,此点为函数的极大值点,此时函数达成最大值. 222 22练习3 抛物面z?x?y被平面x?y?z?1截成一个椭圆,求这个椭圆到原点的最长与最短距离. 这个问题实际上就是求函数 f(x,y,z)?x2?y2?z2 在条件z?x?y及x?y?z?1下的最大值和最小值问题.构造Lagrange函数 22L(x,y,z)?x2?y2?z2??(x2?y2?z)??(x?y?z?1) 求Lagrange函数的自由极值.先求L关于x,y,z,?,?的一阶偏导数 >>clear; syms x y z u v >>l=x^2+y^2+z^2+u*(x^2+y^2-z)+v*(x+y+z-1); >>diff(l,x) >>diff(l,y) >>diff(l,z) >>diff(l,u) >>diff(l,v) 得 ?L?L?L?2x?2x???,?2y?2y???,?2z???? ?x?y?z 4 ?L?L?x2?y2?z,?x?y?z?1 ????再解正规方程 >>clear; >>[x,y,z,u,v]=solve('2*x+2*x*u+v=0','2*y+2*y*u+v=0','2*z-u+v=0', 'x^2+y^2-z=0','x+y+z-1=0','x','y','z','u','v') 得 ???3?511?1?33,???7?3,x?y?,z?2?3. 332上面就是Lagrange函数的稳定点,求所求的条件极值点必在其中取到。
由于所求问题存在最大值与最小值(由于函数f在有界闭集{(x,y,z):x?y?z,x?y?z?1},上连续,从而存在最大值与最小值),故由 22f(?1?3?1?3,,2?3.)?9?53 22求得的两个函数值,可得椭圆到原点的最长距离为9?53,最短距离为9?53 练习4 求函数z?x?y?4x?2y?7在上半圆x?y?16,y?0上的最大值和最小值 首先画出等高线举行观测,相应的MATLAB程序代码为: >>clear; >>x=-4:0.1:4; y=-4:0.1:4; >>[X,Y]=meshgrid(x,y); >>Z=X.^2+Y.^2-4*X-2*Y+7; >>contour(X,Y,Z,100) >>xlabel('x'),ylabel('y') 2222结果如图6.3 420-2-4-4y-20图6.3 x等值线 24 5 — 7 —。
