主要内容

确定矩阵是否是对称正定的

本主题说明如何使用辣椒eig.函数来确定矩阵是否是对称的正明(具有所有正征征值的对称矩阵)。

方法1:尝试Cholesky分解

检查矩阵是否是对称正定的最有效的方法是只尝试使用辣椒在矩阵上。如果要分解失败,则矩阵不是对称的正明确定。此方法不需要矩阵对对称的成功测试(如果矩阵不对称,则分解失败)。

a = [1 -1 0;-1 5 0;0 0 7]
A =3×31 -1 0 -1 5 0 0 0 7
尝试霍尔(a)disp('矩阵是对称的正面确定。抓住我('矩阵不是对称的积极确定'结尾
ans =.3×31.0000 -1.0000 0 0 2.0000 0 0 0 2.6458
矩阵是对称正定的。

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

方法2:检查特征值

虽然使用效率较低eig.要计算所有特征值并检查其值,此方法更灵活,因为您也可以使用它来检查矩阵是否是对称的正半定义。尽管如此,对于小矩阵,该方法之间的计算时间的差异可忽略不计,以检查矩阵是否是对称的正定问题。

此方法要求您使用不对要检查矩阵是否在执行测试之前是否对称(如果矩阵不对称,则无需计算特征值)。

TF = Issemmetric(A)
tf =逻辑1
d = eig(a)
d =3×10.7639 5.2361 7.0000
isposdef =全部(d> 0)
isposdef =逻辑1

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

数值考虑因素

此处概述的方法可能为相同矩阵提供不同的结果。由于这两个计算涉及循环错误,因此每种算法都会检查矩阵的明确性略有不同一种。在实践中,使用公差是一种更稳健的比较方法,因为特征值可以在机器精度内以数字为零,并且略微正或略有阴性。

例如,如果矩阵有大序的特征值eps.,然后使用比较isposdef =全部(d> 0)回报真的,即使特征值是数值为零的,矩阵更好地归类为对称阳性-定。

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

TF = Issemmetric(a)d = Eig(a)isposdef =全部(d> tol)issemidef =全部(d> -tol)

公差定义了零周围的半径,并且该半径内的任何特征值都被视为零。在大多数情况下宽容的好选择是长度(d)* eps(max(d)),这考虑了最大的特征值的大小。

也可以看看

|

相关话题