| 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 | ![]() |