Why does inv() work on a rank deficient matrix?

5 ビュー (過去 30 日間)
Jacob Schaperow
Jacob Schaperow 2022 年 1 月 6 日
コメント済み: Walter Roberson 2022 年 1 月 6 日
I have an nxn square matrix A with rank n-1. When I call inv(A), MATLAB computes the inverse without complaining. How is this possible? Shouldn't a matrix that is rank deficient be impossible to invert?

採用された回答

Walter Roberson
Walter Roberson 2022 年 1 月 6 日
If I recall correctly, inv() does not use rank() to detect rank deficiency.
"inv performs an LU decomposition of the input matrix (or an LDL decomposition if the input matrix is Hermitian). It then uses the results to form a linear system whose solution is the matrix inverse inv(X). For sparse inputs, inv(X) creates a sparse identity matrix and uses backslash, X\speye(size(X))."
These algorithms have their own internal settings as to whether they complain about a marginal matrix or not. Depending on the numeric noise in the calculations, sometimes they do not detect a matrix as singular when it is singular.
... You probably should not be using inv() anyhow.
  2 件のコメント
Jacob Schaperow
Jacob Schaperow 2022 年 1 月 6 日
Thanks, yeah, this answers my question. I switched to using the backslash operator. Of course, now I am wondering if there are cases where the backslash operator will fail and whether I can prevent this somehow by ensuring the matrix is well-conditioned.
Walter Roberson
Walter Roberson 2022 年 1 月 6 日
Yes, and the tolerance of the backslash operator has changed in the not-so-distant past. Changed both ways: mostly to reject more problematic matrices, but it also started accepting some matrices it should probably have rejected.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLinear Algebra についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by