(translator=roro, ChineseSource=roro-20020609-5\arithmeticoperators.html, EnglishSource=c:\matlabr12\help\techdoc\ref\arithmeticoperators.html)
MATLAB Function Reference |
|
Arithmetic Operators + - * / \ ^ '
矩陣和陣列的運算
Syntax
A+B
A-B
A*B A.*B
A/B A./B
A\B A.\B
A^B A.^B
A' A.'
Description
MATLAB
有兩種不同型態的運算。矩陣運算依線性代數的法則執行。陣列運算則是元素之間一對一的運算。句號字元 (.)
表示將執行陣列運算。然而,矩陣和陣列的加法及減法運算結果是相同的,故字元組合 .+
和 .-
並不會使用。
+
|
加法或是正號。A+B 為把 A 及 B
相加。A 和 B 必須有相同的尺寸,除非其中之一為數值。數值可和任何尺寸的矩陣進行加法運算。
|
-
|
減法或是負號。A-B 為把 A 減去 B 。A
和 B 必須有相同的尺寸,除非其中之一為數值。數值可和任何尺寸的矩陣進行減法運算。
|
*
|
矩陣乘法。C = A *B 為矩陣 A
和 B 的線性代數乘法。更精確的說法,
A 和 B 皆不為單一數值。A
的欄數必須等於 B 的列數。數值可和任何尺寸的矩陣相乘。
|
.*
|
陣列乘法。A .*B 為陣列 A 和 B
之間元素對元素的乘法。A 和 B 必須有相同的尺寸,除非其中之一為數值。
|
/
|
斜線或矩陣右除法。B/A 相當於 B *inv(A) 。更精確地說,B/A = (A'\B')' 。可參考 \ 。
|
./
|
陣列右除法。A./B 產生元素為 A(i,j)/B(i,j)
的矩陣。A 和 B 必須有相同的尺寸,除非其中之一為數值。
|
\
|
反斜線或矩陣左除法。若 A 為正方矩陣,A\B
則等同於 inv(A) *B 。若 A 為 n*n
的矩陣而 B 為含有 n 個元件的行向量,或是有如此數欄的矩陣,則 X = A\B
為方程式 AX = B 經高斯消去法所得到的解(可參考 "Algorithm" 以得到更詳細的資訊)。
|
|
若 A 為一 m*n 的矩陣而 m ~= n
且 B 為一含有 m 個元件的行向量,或是有如此數欄的矩陣,則 X = A\B
為等式 AX = B 的最近距離解。有效的行列,即 A 中的 k ,依 QR
分解來定義(可參考 "Algorithm" 以得到詳細的資訊)。解 X 至多每一欄有 k
個非零的元件。若 k < n ,則通常所得到結果不等於 pinv(A) *B ,此即為最小距離的解,也就是 ||X||。
|
.\
|
陣列左除法。A.\B 產生元素為 B(i,j)/A(i,j)
的矩陣。A 和 B 必須有相同的尺寸,除非其中之一為數值。
|
^
|
矩陣乘冪。X^p 為 X 的 p
次方,p 為一數值。若 p 為正整數,則乘慕則是重覆 p 次的乘法。若為負數,X 為先經過反轉。若
p 為其他值,則計算將會涉入特徵值(eigenvalues)及特徵向量(eigenvectors),也就是若 [V,D] = eig(X) ,則 X^p = V *D.^p/V 。
|
|
若 x 為一數值而 P 為一矩陣,x^P
為 x 利用特徵值及特徵向量提升至矩陣乘冪 P 。X^P ,其中 X
和 P 若皆為矩陣,則會有錯誤。
|
.^
|
陣列的乘冪。A.^B 產生元素為 A(i,j)
的 B(i,j) 次方之矩陣。A 和 B
必須有相同的尺寸,除非其中之一為數值。
|
'
|
矩陣轉置。A' 為線性代數的轉置。對於複數矩陣,則為複數共軛轉置。
|
.'
|
陣列轉置。A.' 為 A
的陣列轉置。對於複數矩陣,則不會涉入共軛轉置。
|
Remarks
運算元和 M 檔案有相同的函式,列於下表:
二元加法
|
A+B
|
plus(A,B)
|
一元正號
|
+A
|
uplus(A)
|
二元減法
|
A-B
|
minus(A,B)
|
一元負號
|
- A
|
uminus(A)
|
矩陣乘法
|
A*B
|
mtimes(A,B)
|
陣列乘法
|
A.*B
|
times(A,B)
|
矩陣右除法
|
A/B
|
mrdivide(A,B)
|
陣列右除法
|
A./B
|
rdivide(A,B)
|
矩陣左除法
|
A\B
|
mldivide(A,B)
|
陣列左除法
|
A.\B
|
ldivide(A,B)
|
矩陣乘冪
|
A^B
|
mpower(A,B)
|
陣列乘冪
|
A.^ B
|
power(A,B)
|
複數轉置 |
A'
|
ctranspose(A)
|
矩陣轉置
|
A.'
|
transpose(A)
|
Examples
以下有兩個向量,而不同的矩陣和陣列運算會導致不同的結果,以 format
rat
顯示。
Matrix Operations
| Array Operations
|
x
|
1
2
3
|
y
|
4
5
6
|
x'
|
1 2 3
|
y'
|
4 5 6
|
x+y
|
5
7
9
|
x-y
|
-3
-3
-3
|
x + 2
|
3
4
5
|
x-2
|
-1
0
1
|
x * y
|
錯誤
|
x.*y
|
4
10
18
|
x'*y
|
32
|
x'.*y
|
錯誤
|
x*y'
|
4 5 6
8 10 12
12 15 18
|
x.*y'
|
錯誤
|
x*2
|
2
4
6
|
x.*2
|
2
4
6
|
x\y
|
16/7
|
x.\y
|
4
5/2
2
|
2\x
|
1/2
1
3/2
|
2./x
|
2
1
2/3
|
x/y
|
0 0 1/6
0 0 1/3
0 0 1/2
|
x./y
|
1/4
2/5
1/2
|
x/2
|
1/2
1
3/2
|
x./2
|
1/2
1
3/2
|
x^y
|
錯誤
|
x.^y
|
1
32
729
|
x^2
|
錯誤
|
x.^2
|
1
4
9
|
2^x
|
錯誤
|
2.^x
|
2
4
8
|
(x+i*y)'
|
1 - 4i 2 - 5i 3 - 6i
|
(x+i*y).'
|
1 + 4i 2 + 5i 3 + 6i
|
Algorithm
用來解大量線性方程式 X = A\B
及 X = B/A
的演算法是根據係數矩陣 A
的結構。
- 若
A
為一三角矩陣或排列的三角矩陣,則 X
可經由交換反減演算法(permuted backsubstitution
algorithm)很快地計算出結果。檢查其三角性質對全矩陣而言即檢查其零的元素,而對稀疏矩陣則是接受其稀疏資料結構。大多數非三角的矩陣都能立即檢測出來,所以檢測幾乎不花時間。
- 若
A
為對稱或是 Hermitian,並有正向對角元素,則會使用 Cholesky
消去法(參考 chol)。
若 A
為正向定義,則 Cholesky
消去法可成功並只需一般消去法的一半時間即可完成。非正向定義的矩陣通常僅需很短的時間檢測。若為成功,則 Cholesky 消去法為A = R'*R
X = R\(R'\B)
若 A
為稀疏矩陣,則最小對稱層次的先序(preordering)將被套用(參考 symmmd
及 spparms
)。演算法為:
perm = symmmd(A); % Symmetric minimum degree reordering
R = chol(A(perm,perm)); % Cholesky factorization
y = R'\B(perm); % Lower triangular solve
X(perm,:) = R\y; % Upper triangular solve
- 若
A
為 Hessenberg,則會先轉成上三角矩陣。
- 若
A
為正方矩陣,但不會三角排列矩陣,或是不為有正元素的 Hermitian,或是經 Cholesky
消去法而失敗,則一般三角消去法將會經由高斯消去法來計算(參考 lu
)。結果為A = L*U
X = U\(L\B)
若 A
為稀疏矩陣,則非對稱最小層次的先序將被適用(參考 colmmd
及 spparms
)。演算法為
perm = colmmd(A); % Column minimum degree ordering
[L,U,P] = lu(A(:,perm)); % Cholesky factorization
Y = L\(P*B); % Lower triangular solve
X(perm,:) = U\Y; % Upper triangular solve
- 若 A 不為正方但為全矩陣,則 Householder 反則會被用來計算垂直三角分解。
A*P = Q*R
X = P*(R\(Q'*B)
- 若 A 不為正方或稀疏矩陣,則 MATLAB 計算最矩距離的解將使用 A 的稀疏
qr
分解法。
注意
若 A 不為正方、稀疏或複數矩陣,反斜線並不會對其執行。 |
MATLAB 使用 LAPACK 程序計算不同的全矩陣分解:
矩陣
|
實數
|
複數
|
全矩陣,對稱 (Hermitian) 正向定義
|
DLANGE , DPOTRF , DPOTRS , DPOCON
|
ZLANGE , ZPOTRF , ZPOTRS ZPOCON
|
全矩陣,一般的形式 |
DLANGE , DGESV , DGECON
|
ZLANGE , ZGESV , ZGECON
|
全為非正方 |
DGEQPF , DORMQR , DTRTRS
|
ZGEQPF , ZORMQR , ZTRTRS
|
其他的狀況(三角及 Hessenberg)MATLAB
並不使用 LAPACK。
|
Diagnostics
對於矩陣除法,若一正方 A
為單數:
Warning: Matrix is singular to working precision.
對於陣列元素除法,若除數的元素有零:
Warning: Divide by zero.
矩陣除法回傳一矩陣其每個元素都設為 Inf
;元素除法產生 NaN
s
或 Inf
s。
若反轉找得到,但並不確實:
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = xxx
對於矩陣除法,若非正方矩陣 A
為行列缺陷(rank deficient):
Warning: Rank deficient, rank = xxx tol = xxx
See Also
det
, inv
, lu
, orth
, permute
, ipermute
, qr
, rref
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.
| Reference | | Relational Operators < > <= >= == ~= | |