本主题说明如何使用辣椒
和eig.
函数来确定矩阵是否是对称的正明(具有所有正征征值的对称矩阵)。
检查矩阵是否是对称正定的最有效的方法是只尝试使用辣椒
在矩阵上。如果要分解失败,则矩阵不是对称的正明确定。此方法不需要矩阵对对称的成功测试(如果矩阵不对称,则分解失败)。
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
矩阵是对称正定的。
这种方法的缺点是它不能扩展到检查矩阵是否是对称的正半定义(其中特征值可以是正或零)。
虽然使用效率较低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))
,这考虑了最大的特征值的大小。