You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB求解二元函数局部极小值、极大值及拐点问题求助

问题说明

你需要求解给定二元函数的局部极小值点、局部极大值点与拐点,目标函数如下:
目标函数
你编写的原始MATLAB代码如下:

syms [x1,x2]

f = 3*x1.^2+2*x1.*x2+2*x2.^2+7;

G = gradient(f,[x1,x2]);

S = solve(G(1),G(2));

[S.x1 S.x2]

%settting gradient to zero givens x=(0, 0) as the only candidate minimum point

H = hessian(f,[x1,x2])

运行后得到的结果异常:
运行结果


问题原因

代码的核心语法错误出在符号变量定义行:MATLAB中syms定义多个符号变量不需要加中括号,直接用空格分隔变量名即可,错误的变量定义方式导致后续梯度、海森矩阵的计算维度匹配错误,输出结果异常。

此外你目前的代码仅完成了驻点求解,还缺少极值类型判断、拐点判断的逻辑。


修复后的完整代码

% 正确定义符号变量
syms x1 x2

% 定义目标函数
f = 3*x1^2 + 2*x1*x2 + 2*x2^2 + 7;

% 计算梯度,求驻点
G = gradient(f, [x1, x2]);
S = solve(G(1) == 0, G(2) == 0);
disp('驻点坐标:')
disp([double(S.x1), double(S.x2)])

% 计算海森矩阵判断极值类型
H = hessian(f, [x1, x2]);
disp('海森矩阵:')
disp(double(H))

% 计算海森矩阵特征值判断正定性
eig_H = eig(H);
disp('海森矩阵特征值:')
disp(eig_H)

结果分析

  • 驻点计算结果为(0, 0),是该函数唯一的驻点
  • 海森矩阵计算结果为$\begin{bmatrix}6 & 2 \ 2 & 4\end{bmatrix}$,两个特征值均为正数,海森矩阵正定,因此(0, 0)是该函数的局部极小值点,同时也是全局极小值点
  • 该函数是凸二次函数,不存在局部极大值点,也不存在拐点

内容的提问来源于stack exchange,提问作者Mansoor Rahami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:03