主要内容

判断矩阵是对称正定的

解释如何使用这个主题胆固醇eig函数来确定一个矩阵是对称正定(与所有积极的对称矩阵特征值)。

方法1:柯列斯基分解

最有效的方法来检查是否一个矩阵是对称正定尝试使用胆固醇在矩阵。如果分解失败,则不对称正定矩阵。

创建一个对称矩阵和使用试一试/块来测试是否胆固醇(A)成功。

一个= [1 1 0;1 5 0;0 0 7]
一个=3×31 1 0 1 5 0 0 0 7
试一试胆固醇(A) disp (“矩阵是对称正定的。”)我disp (“矩阵是不对称正定”)结束
ans =3×31.0000 - -1.0000 2.6458 2.0000 0 0 0 0 0
矩阵是对称正定的。

这种方法的缺点是,它还不能扩展到检查是否对称半正定矩阵(特征值可以是正数或零)。

方法2:检查特征值

而低效率使用eig计算所有特征值并检查它们的值,这种方法更为灵活,因为您还可以使用它来检查是否对称半正定矩阵。不过,对于小矩阵方法计算时间之间的差异是可以忽略的检查是否对称正定矩阵。

这种方法要求您使用issymmetric检查是否执行测试前矩阵是对称的(如果不对称矩阵,那么就不需要计算特征值)。

tf = issymmetric (A)
tf =逻辑1
d = eig (A)
d =3×10.7639 5.2361 7.0000
isposdef =所有(d > 0)
isposdef =逻辑1

您可以扩展这个方法检查是否对称半正定矩阵的命令所有(d > = 0)

数值的考虑

这里描述的方法可能会给不同的结果相同的矩阵。因为计算涉及舍入错误,每个矩阵的算法检查清晰度略有不同一个。在实践中,宽容是一种更健壮的使用比较的方法,从特征值可以在机器精度和数值0稍微消极或积极。

例如,如果一个矩阵的特征值每股收益,然后利用比较isposdef =所有(d > 0)返回真正的,尽管特征值是数字0和矩阵分为对称积极要好明确的。

使用公差执行比较,您可以使用修改后的命令

tf = issymmetric (A) d = eig (A) isposdef =所有(d > tol) issemidef = (d > tol)

公差定义了一个半径在零附近,任何特征值半径内被视为零。的公差在大多数情况下是一个不错的选择长度(d) * eps (max (d)),考虑到最大的特征值的大小。

另请参阅

|

相关的话题