奇異矩陣
- |A|=0;
- A可逆 <=> |A| != 0,即A是非奇異矩陣
用inv進行矩陣求逆時,出現矩陣奇異的情況。報錯:Warning: Matrix is singular to working precision.
只需將inv替換為pinv求偽逆即可。
特點
- 對於方陣A,如果為非奇異方陣,則存在逆矩陣inv(A)
- 對於奇異矩陣或者非方陣,並不存在逆矩陣,但可以使用pinv(A)求其偽逆;
很多時候你不需要求逆矩陣,例如:
inv(A)*B
實際上可以寫成 A\B;B*inv(A)
實際上可以寫成B/A;
這樣比求逆之后帶入精度要高。
關於 inv
和 \ 或 /
;
inv
Y=inv(X)
返回方陣X的逆矩陣,如果X病態或者高度奇異,則會顯示警告信息。
實際上,很少需要真的把矩陣的逆求出來,常見的使用失誤主要出現在求解線性方程組AX=b。一種求解方法為x=inv(A)*b
,但如要達到更快,更穩定,就得用X=A\b
。這個算法使用高斯消去法,因此不產生逆矩陣。
\
矩陣左除
- 如果A是方陣,
A\B
近似等於inv(A)*B
,只是他們的算法不一樣; - 如果A是 nxn 的方陣,B是 nx1 的列向量,或 nxn 的矩陣,那么
X=A\B
是AX=B
的解; - 如果A很病態或者很奇異,很會顯示警告信息;用
A\EYE(SIZE(A))
計算A的逆,參見mldivide,可得到更多信息; - 如果A是 mxn 的矩陣,m != n,B是 mx1 或 mxn 的列向量,那么 X=A\B 就是線性方程組 AX=B(超定或者欠定)的最小二乘解;
- Asolution X is computed that has at most k nonzero componentspercolumn;如果K<N,結果通常和
pinv(A)*B
不一樣,后者是最小范數解。A\EYE(SIZE(A))
用來求解A的廣義逆。