用Matlab 判断矩阵是正定、半正定还是负定
% 判断矩阵m是正定、半正定还是负定
m = [2 -1; -1 2];
if issymmetric(m) % 检查矩阵是否对称 % disp('矩阵对称'); d = eig(m); % 计算矩阵特征值 if all(d > 0) disp('矩阵正定'); elseif all(d >= 0) disp('矩阵半正定'); else disp('矩阵负定'); end else disp('矩阵不对称'); end
有时候,会在求出海森矩阵之后去判定海森矩阵是否是正定或者半正定:
syms x1 x2; f = x1.^2+x2.^2-x1*x2; h = hessian(f, [x1, x2]); % 求函数f的海森矩阵