Main Content

isIllConditioned

确定矩阵是否为病态

说明

示例

如果用于创建分解 dA 的原始系数矩阵 A 为病态,则 tf = isIllConditioned(dA) 返回逻辑值 1 (true);否则,返回逻辑值 0 (false)。

使用的测试取决于分解类型:

  • 'qr''cod' 分解 - 如果 rank(dA) < min(size(A)),则系数矩阵为病态。

  • 所有其他分解 - 如果 rcond(dA) < eps,则系数矩阵为病态。

如果 isIllConditioned 返回逻辑值 1 (true),则使用 dA\bb/dA 求解线性系统将显示警告。可以使用分解对象 dACheckCondition 属性关闭这些警告。

示例

全部折叠

为一个 25×25 的希尔伯特系数矩阵创建矩阵分解对象,然后检查基础系数矩阵是否为病态。

A = hilb(25);
dA = decomposition(A)
dA = 
  decomposition with properties:

    MatrixSize: [25 25]
          Type: 'lu'

  Show all properties

tf = isIllConditioned(dA)
tf = logical
   1

检查系数矩阵的条件数倒数。在这种情况下,isIllConditioned 确定系数矩阵 A 为病态,因为 rcond(dA) 小于 eps

rcond(dA)
ans = 1.3969e-19

输入参数

全部折叠

输入分解,指定为 decomposition 对象。

示例: dA = decomposition(A,'qr')

提示

  • isIllConditioned 使用分解对象的秩和条件数估计值。这些估计值可能与直接对系数矩阵调用 rank(A)rcond(A) 的结果不同。

版本历史记录

在 R2017b 中推出

另请参阅

| |