
为了说明如何使用 MATLAB 来求二元函数的驻点并对其进行分类,我们考虑例 9.40 中的函数。MATLAB 命令
syms x y f = 2*x^3 + 6*x*y^2 - 3*y^3 - 150*x; fx = diff(f,x); fy = diff(f,y); [X,Y] = solve(fx,fy)
返回两个列向量 $X$ 和 $Y$ ,给出驻点为 $(5, 0)$ , $(-5, 0)$ , $(3, 4)$ 和 $(-3, -4)$ 。接下来我们求二阶偏导数,并使用命令
fxx = diff(fx,x); fxy = diff(fx,y); fyy = diff(fy,y); delta = fxx*fyy - fxy^2;
在每个驻点处计算
$$\Delta = \frac{\partial^2 f}{\partial x^2} \frac{\partial^2 f}{\partial y^2} - \left( \frac{\partial^2 f}{\partial x \partial y} \right)^2$$
的值,并将四个点的坐标代入
subs(delta,{x,y},{X(1),Y(1)}) 得到 ans = 3600 subs(delta,{x,y},{X(2),Y(2)}) 得到 ans = 3600 subs(delta,{x,y},{X(3),Y(3)}) 得到 ans = -3600 subs(delta,{x,y},{X(4),Y(4)}) 得到 ans = -3600
对于前两个点 $delta > 0$ ,因此我们考察 $f_{xx}$ 的符号,即 $f_{yy}$
subs(fxx,{x,y},{X(1),Y(1)}) 得到 ans = 60,所以 (5,0) 是极小值点 subs(fxx,{x,y},{X(2),Y(2)}) 得到 ans = −60,所以 (−5,0) 是极大值点
对于后两个点,delta < 0,所以 (3, 4) 和 (-3, 4) 都是鞍点。可以使用命令
ezcontour(f,[10,10])
来研究等高线图。上述过程可以推广到任意多变量的函数。在驻点处,一阶微分 $df$ 为零,因此所有一阶偏导数在该点都为零。如果在该驻点处,二阶微分 $d^2f$ 如果该值对于自变量的所有微小变化都为负,则我们得到一个极大值。如果为正,则得到一个极小值。如果为零,则需要进一步分析。然而,出现这种情况的一般条件无论在书写上还是在应用上都极其复杂。