实验五 用matlab求二元函数的极值 - 图文

更新时间:2023-11-09 15:51:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验五 用matlab求二元函数的极值

1.计算二元函数的极值

对于二元函数的极值问题,根据二元函数极值的必要和充分条件,可分为以下几个步骤: 步骤1.定义二元函数z?f(x,y). 步骤2.求解方程组

fx(x,y)?0,fy(x,y)?0,得到驻点.

?2z?2z?2zA?2,B?,C?2.(x,y)?x?x?y?y 步骤3.对于每一个驻点00,求出二阶偏导数

步骤4. 对于每一个驻点

(x0,y0),计算判别式AC?B2,如果AC?B2?0,则该驻点是

2极值点,当A?0为极小值, A?0为极大值;如果AC?B?0,需进一步判断此驻点是否为2极值点; 如果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命令

MATLAB中主要用diff求函数的偏导数,用jacobian求Jacobian矩阵。

diff(f,x,n) 求函数f关于自变量x的n阶导数。 jacobian(f,x) 求向量函数f关于自变量x(x也为向量)的jacobian矩阵。 可以用help diff, help jacobian查阅有关这些命令的详细信息

42z?x?8xy?2y?3的极值点和极值. 例1 求函数

首先用diff命令求z关于x,y的偏导数

>>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为

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); >>Z=X.^4-8*X.*Y+2*Y.^2-3; >>mesh(X,Y,Z)

>>xlabel('x'),ylabel('y'),zlabel('z') 结果如图16.5.1

图16.5.1 函数曲面图

可见在图6.1中不容易观测极值点,这是因为z的取值范围为[-500,100],是一幅远景图,局部信息丢失较多,观测不到图像细节.可以通过画等值线来观测极值.

>>contour(X,Y,Z, 600)

>>xlabel('x'),ylabel('y')

结果如图16.5.2

图16.5.2 等值线图

由图16.5.2可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值点P(?4,?2)和Q(4,2).根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且

指向函数增加的方向.由此可知,极值点应该有等高线环绕,而点Q(0,0)周围没有等高线环绕,不是极值点,是鞍点.

例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

22z?x?y在条件及x?y?z?1下的最大值和最小值问题.构造Lagrange函数

L(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 ?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函数的稳定点,求所求的条件极值点必在其中取到。由于所求问题存在

22f{(x,y,z):x?y?z,x?y?z?1},上连续,最大值与最小值(因为函数在有界闭集

从而存在最大值与最小值),故由

f(?1?3?1?3,,2?3.)?9?5322

9?53,最短距离为9?53。

求得的两个函数值,可得椭圆到原点的最长距离为

习题16-5

44z?x?y?4xy?1的极值,并对图形进行观测。 1.求

2222??fx,y?x?2yx?y?1的最大值和最小值。 2.求函数在圆周222x?y?z?1求出与点(3,1,-1)距离最近和最远点。 3.在球面

本文来源:https://www.bwwdw.com/article/8bcv.html

Top