matlab多元函数极值的求法(极值的第二充分条件)
时间: 2023-12-14 19:02:49 浏览: 344
遗传算法求多元函数极值的Matlab代码
5星 · 资源好评率100%
在 MATLAB 中,可以使用多元函数的二阶偏导数来判断其是否为极值点。具体地,若多元函数 $f(x_1,\dots,x_n)$ 在点 $(a_1,\dots,a_n)$ 处取得局部极值,且此点的二阶偏导数存在,则有以下结论:
1. 当二阶偏导数的 Hessian 矩阵在该点为正定矩阵时,该点为局部极小值点。
2. 当二阶偏导数的 Hessian 矩阵在该点为负定矩阵时,该点为局部极大值点。
3. 当二阶偏导数的 Hessian 矩阵在该点不定时,该点不是极值点。
下面是 MATLAB 中多元函数极值的求法的步骤:
1. 定义多元函数。
例如,假设我们要求解如下的多元函数的极值:
$$f(x,y)=x^3-3x+y^3-3y$$
2. 计算一阶偏导数。
在 MATLAB 中,可以使用 `diff` 函数计算多元函数的一阶偏导数。例如,对于上面定义的多元函数,可以如下计算一阶偏导数:
```
syms x y
f = x^3 - 3*x + y^3 - 3*y;
df_dx = diff(f, x);
df_dy = diff(f, y);
```
计算出的一阶偏导数为:
```
df_dx =
3*x^2 - 3
df_dy =
3*y^2 - 3
```
3. 计算二阶偏导数的 Hessian 矩阵。
在 MATLAB 中,可以使用 `hessian` 函数计算多元函数的二阶偏导数的 Hessian 矩阵。例如,对于上面定义的多元函数,可以如下计算 Hessian 矩阵:
```
H = hessian(f, [x, y]);
```
计算出的 Hessian 矩阵为:
```
H =
[ 6*x, 0]
[ 0, 6*y]
```
4. 判断极值类型。
将上述计算出的一阶偏导数和 Hessian 矩阵带入到上述结论中,即可判断出多元函数的极值类型。对于上面定义的多元函数,可得到如下结论:
在点 $(1,1)$ 处,一阶偏导数为:
```
df_dx = 0
df_dy = 0
```
因此,点 $(1,1)$ 是多元函数的临界点。
在点 $(1,1)$ 处,Hessian 矩阵为:
```
H =
[ 6, 0]
[ 0, 6]
```
该 Hessian 矩阵为正定矩阵,因此,点 $(1,1)$ 是多元函数的局部极小值点。
因此,多元函数 $f(x,y)=x^3-3x+y^3-3y$ 在点 $(1,1)$ 处取得局部极小值。
阅读全文