📄 isdef.m
字号:
function [out]=isdef(Q)
%ISDEF checks the definiteness of the square matrix Q.
% Output returns the following message.
%
% not definite
% positive definite
% positive semidefinite
% negative definite
% negative semidefinte
%
% Using the fact that x'Qx=1/2*x'(Q+Q')*x, we check the definiteness
% of Q. For symmetrical or Hermitian matrix it is well known that the
% matrix is positive (semi)definite whenever all eigenvalues of matrix
% is positive(nonnegative).
%
[numrow numcol]=size(Q);
if numrow~=numcol
out='The input matrix must be square';
else
temp=1/2*(Q+Q');
eigenvalue=eig(temp);
positive=find(eigenvalue>0);
zero=find(eigenvalue==0);
lenpos=length(positive);
lenzero=length(zero);
if(numrow==lenpos)
out='positive definite';
end
if((lenzero>0)&((numrow-lenpos)==lenzero))
out='positive semidefinite';
end
if((lenzero==0)&(lenpos==0))
out='negative definite';
end
if((lenzero>0)&(lenpos==0))
out='negative semidefinite';
end
if((lenpos~=0)&((numrow-lenzero-lenpos)~=0))
out='not definite';
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -