Main Content

isIllConditioned

行列が悪条件かどうかの判別

説明

tf = isIllConditioned(dA) は、分解 dA の作成に使用した元の係数行列 A が悪条件の場合に logical 1 (true) を返し、それ以外の場合に logical 0 (false) を返します。

使用されるテストは、分解のタイプによって決まります。

  • 'qr' および 'cod' の分解 — rank(dA) < min(size(A)) の場合、係数行列は悪条件です。

  • その他すべての分解 — rcond(dA) < eps の場合、係数行列は悪条件です。

isIllConditioned が logical 1 (true) を返す場合、dA\b または b/dA のいずれかを使用した線形系の求解では警告が表示されます。これらの警告をオフにするには、decomposition オブジェクト 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

係数行列の条件数の逆数をチェックします。この場合、rcond(dA)eps より小さいため、isIllConditioned は係数行列 A が悪条件であると判別します。

rcond(dA)
ans = 1.3969e-19

入力引数

すべて折りたたむ

入力する分解。decomposition オブジェクトとして指定します。

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

ヒント

  • isIllConditioned は decomposition オブジェクトのランクおよび条件数の推定値を使用します。これらの推定値は、係数行列について rank(A) または rcond(A) を直接呼び出す場合とは異なることがあります。

バージョン履歴

R2017b で導入