MATLAB Function Reference |
Syntax
Y = inv(X)
Description
Y = inv(X)
傳回矩陣 X
的反矩陣。若 X
不為正矩陣或僅含單一元素,則會顯示出警告。
一般很少用這個函式僅僅計算反矩陣,較常使用在解線性方程式上。
當Ax = b,欲解 x 時,其中一種解法為 x
=
inv(A)
*b
。另一種計算時間及準確性都比較好的解法為使用矩陣的除法運算元,即 x
=
A\b
。其所得到的結果即為使用高斯消去法,卻沒有用到矩陣反轉函式的解法。可參考 \
及 /
以得到更多的資訊。
Examples
以下的例子顯示了使用反矩陣函式 inv(A)
*b
和使用較直接解法 A\b
的不同。A
為一隨機產生的 500 * 500 的陣列。而其條件數字(condition number),也就是 cond(A)
為 1.e10
,它的基準(norm),即 norm(A)
為 1
。x
為一長度為 500 的向量。此線性方程組雖然相當有限制,但卻是前後一致的。
n = 500; Q = orth(randn(n,n)); d = logspace(0,-10,n); A = Q*diag(d)*Q'; x = randn(n,1); b = A*x; tic, y = inv(A)*b; toc err = norm(y-x) res = norm(A*y-b)
elapsed_time = 1.4320 err = 7.3260e-006 res = 4.7511e-007
tic, z = A\b, toc err = norm(z-x) res = norm(A*z-b)
elapsed_time = 0.6410 err = 7.1209e-006 res = 4.4509e-015
在y
=
inv(A)
*b
所花的時間比 z
=
A\b
多了將近兩倍半。兩個計算結果的誤差不超過 1.e-6
,反應了矩陣的條件數字(condition number)。但是將結果放入原先方程式後所餘的空間卻相差的相當大。
這個範例的結果是獨特的。使用 A\b
所花的時間比 inv(A)
*b
快了二到三倍的時間,而剩餘的空間根據資料的大小有不同的準確性。
Algorithm
矩陣 |
程序 |
Real |
DLANGE , DGETRF , DGECON , DGETRI |
Complex |
ZLANGE , ZGETRF , ZGECON , ZGETRI |
See Also
The arithmetic operators \
, /
References
[1] Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide, Third Edition, SIAM, Philadelphia, 1999.
intersect | invhilb |