如何用MATLAB确定一个矩阵是正定的?

435次观看(过去30天)
如果一个对称矩阵的所有特征值的实部都是正定的,则它被定义为正定的。
如果(B+B')/2的所有特征值都为正,则非对称矩阵(B)为正定。

接受的答案

MathWorks支金宝app援小组
此更改已被合并到Release 14 Service Pack 3 (R14SP3)的文档中。对于以前的版本,请阅读下面的任何其他信息:
与使用EIG函数来获得特征值以确定正确定性相比,使用CHOL函数在计算上更有效。CHOL函数提供了可选的第二个输出参数“p”,如果发现矩阵是正定的,则该参数为零。如果输入矩阵不是正定的,那么“p”将是一个正整数:
>>[~,p] = chol(0 (3))
p =
1
如果CHOL函数只提供了一个输出参数,并且给出了一个非正定的矩阵,那么它将返回一个错误。注意:CHOL期望它的输入矩阵是对称的,并且只关注矩阵的上三角形部分。
6个评论
亚历克·雅各布森
亚历克·雅各布森 2017年1月14日
关于chol未记录的p输出的独家消息是什么?
它肯定会返回非零的数字 一些 积极的 正定矩阵:
[~,p] = chol([1 0;0 0])
这将返回
P = 2
p是什么意思??!?

登录评论。

更多答案(3)

迈克尔·克鲁格
迈克尔·克鲁格 2014年6月9日
一个矩阵是正定的如果它所有相关的特征值都是正的。
一种检查矩阵A是否正定的方法:
A = [1 2 3;4 5 6;7 8 9];示例矩阵
eig_A = eig(A);
Flag = 0;
i = 1:rank(A)
如果eig_A(i) <= 0
Flag = 1;
结束
结束
如果Flag == 1
disp (矩阵不是正定的
其他的
disp (矩阵是正定的
结束
eig_A的条件可以更改为检查阳性、半阳性、阴性或半阴性的确定性。
1评论
约翰·彼得森
约翰·彼得森 2017年10月14日
这只在A是对称的情况下成立。例如,如果
(1 = 4;0 1];
特征值为(1,1),所以你认为A是正定的,但正定的定义是x'Ax > 0对于所有x~=0,如果你尝试x = [1 2];那么就得到x'Ax = -3所以如果A不对称,只看特征值是行不通的。

登录评论。


Temitayo Bankole
Temitayo Bankole 2016年8月2日
你也可以检查行列式是否为负,如果是,那么它就不是正定的
1评论
Csanad Temesvari
Csanad Temesvari 2019年9月23日
但这是否意味着矩阵是正定的呢?上述A = [1 -4;0 1]不是正定的,即使它的行列式是1。

登录评论。


s.m.雷扬·乔杜里
s.m.雷扬·乔杜里 2021年11月12日
编辑:沃尔特·罗伯森 2021年11月13日
上述“非对称”矩阵的条件一般适用于所有对称或非对称矩阵。下面给出了基于条件的代码片段。
适用于任何对称或不对称矩阵,实矩阵或复矩阵
A = [12, 3, -5;
1,5,3;
3,7,13];理论上A是正定的(PD)。
eig_vals = eig((A + A')/2);
is_pd = [sum([sign(eig_vals)==1])==length(A)];%标志来检查是否是PD
如果is_pd = = 1
disp ("A是正定的"
其他的
disp ("A不是正定的"
结束
B = [1 2 3;
4 5 6;
7 8 9];% B不是正定的。
eig_vals = eig((B + B')/2);
is_pd = [sum([sign(eig_vals)==1])==length(B)];
如果is_pd = = 1
disp ("B是正定的"
其他的
disp ("B不是正定的"
结束
2的评论

登录评论。

类别

了解更多线性代数帮助中心而且文件交换

下载188bet金宝搏


释放

R14SP1

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!