在MATLAB中,处理多元函数的极值问题是一项常见的任务,这涉及到偏导数的计算、驻点的寻找以及利用二阶偏导数判别法来确定极值点的性质。本实验主要涵盖三个关键点:自由极值的求解、最大值和最小值的计算以及MATLAB中的相关命令使用。
多元函数的自由极值是指在没有任何约束条件下,函数在其定义域内达到的局部最值。对于一个二元函数\( f(x, y) \),极值点满足的必要条件是函数的一阶偏导数等于零,即\( \frac{\partial f}{\partial x} = 0 \)和\( \frac{\partial f}{\partial y} = 0 \)。然后,通过计算二阶偏导数组成的Hessian矩阵,可以进一步判断这些驻点是否为极值点。Hessian矩阵的元素为\( H_{ij} = \frac{\partial^2 f}{\partial x_i \partial x_j} \),其中\( i, j \)分别代表自变量\( x, y \)。如果在某点\( (x_0, y_0) \)处,Hessian矩阵的行列式\( \text{det}(H) = BAC - 2AC > 0 \),且\( A > 0 \),则\( (x_0, y_0) \)为极小值点;如果\( \text{det}(H) < 0 \),则为极大值点。若\( \text{det}(H) = 0 \),则需要进一步的分析,例如使用泰勒展开或图形分析。
在MATLAB中,求偏导数可以使用`diff`命令,例如`diff(f, x)`求函数\( f \)关于\( x \)的一阶导数,`diff(f, x, 2)`求二阶导数。Jacobian矩阵则可由`jacobian`函数获得,如`jacobian(f, [x, y])`。
对于有界区域\( D \)内的最大值和最小值问题,我们需要考虑函数在边界和内部驻点的值。除了驻点,还需要检查边界上的极值,这可能涉及线性规划或边界积分。在MATLAB中,可以结合`fsolve`或`fminbnd`等优化工具来寻找这些值。
在练习1中,给定函数\( z = x^4 - 8xy + 2y^2 - 3 \)的极值点求解过程演示了如何应用上述理论。使用`diff`求偏导数,然后通过`solve`找到驻点,接着计算二阶偏导数并利用Hessian矩阵判断极值。在练习2中,引入了条件极值,需要用到拉格朗日乘数法,构造Lagrange函数\( L(x, y, k) = f(x, y) - \lambda g(x, y) \),其中\( g(x, y) \)为约束条件,\( \lambda \)为拉格朗日乘数。通过求解\( L \)关于\( x, y, \lambda \)的偏导数,可以找到满足约束条件的极值点。
在MATLAB中,通过图形化工具如`mesh`和`contour`函数,可以直观地观察函数的三维曲面和等值线,帮助识别极值点。例如,通过等值线图,可以发现函数\( z = x^4 - 8xy + 2y^2 - 3 \)的极小值点\( P(-2, -4) \)和\( Q(2, 4) \)。
MATLAB提供了强大的工具来处理多元函数的极值问题,包括偏导数计算、驻点求解、极值判断以及图形分析。熟练掌握这些技能,对于解决实际问题具有重要意义。