用matlab实现:多元函数极值的求法(极值的第二充分条件)
时间: 2024-03-10 11:45:28 浏览: 72
多元函数极值的求法可以使用拉格朗日乘数法或者海森矩阵法,其中极值的第二充分条件使用海森矩阵法比较方便。
海森矩阵是一个 $n\times n$ 的矩阵,其中第 $i$ 行第 $j$ 列的元素是 $\frac{\partial^2 f}{\partial x_i\partial x_j}$,其中 $f$ 是多元函数。假设我们要求函数 $f(x_1,x_2,\cdots,x_n)$ 在点 $(a_1,a_2,\cdots,a_n)$ 处的极值,那么我们需要计算海森矩阵 $H$ 在该点的值 $H(a_1,a_2,\cdots,a_n)$。
如果 $H(a_1,a_2,\cdots,a_n)$ 是正定矩阵,则 $f$ 在该点取得一个局部极小值;如果 $H(a_1,a_2,\cdots,a_n)$ 是负定矩阵,则 $f$ 在该点取得一个局部极大值;如果 $H(a_1,a_2,\cdots,a_n)$ 既有正特征值又有负特征值,则 $f$ 在该点不是极值点。
在 Matlab 中,可以使用 `hessian` 函数来计算海森矩阵。例如,假设我们要求函数 $f(x_1,x_2)=x_1^2+x_2^2-4x_1-4x_2+8$ 在点 $(2,2)$ 处的极值,可以按如下方式实现:
```matlab
syms x1 x2
f = x1^2 + x2^2 - 4*x1 - 4*x2 + 8;
H = hessian(f, [x1, x2]); % 计算海森矩阵
eval(H) % 在点 (2,2) 处计算海森矩阵的值
```
运行上述代码将得到结果:
```
ans =
2 0
0 2
```
由于海森矩阵在点 $(2,2)$ 处是正定矩阵,因此函数 $f$ 在该点取得一个局部极小值。
阅读全文