一般的計算器或數值計算軟體,都能做加、減、乘這些運算, 通常也都用 + - * 這些符號代表加、減、乘。 但是這些符號向來只能作用在兩個整數或有理數之間, 鮮少能夠自動作用在兩個複數、甚至矩陣之間。 Matlab 的 + - * 能夠視其兩側的「物件」類別而決定該採取怎樣的步驟來計算, 這叫做「拓展」(overload) 功能。
我們已經見識過 Matlab 的 + - * 能夠拓展到複數上, 現在看看它們也能很自然地拓展到矩陣上。令
A = [1, 2; 3, 4];則 A, B, C, I 分別代表一個 2x2、2x3、3x3 和 3x3 的矩陣。
B = [pi, exp(1), log(2); sin(pi/2), -cos(3*pi/4), 1+2^(-2)+3^(-2)];
C = [8, 1, 6; 3, 5, 7; 4, 9, 2];
I = [1, 0, 0; 0, 1, 0; 0, 0, 1];
|
|
|
|
---|
C + I或者
I - C都是正確語法,而且 Matlab 會得到正確結果。
根據矩陣乘法計算規則,
A * B是可以計算的,得到另一個 2x3 矩陣。但是
B * A就不能計算,Matlab 會提醒您 Inner matrix dimensions must agree. 同理,
B * C都可以計算,而且 Matlab 獲得正確的結果。
B * I
C * I
I * C
因為 A + A 應該要能簡寫成 2*A,所以常數 (純量) 乘矩陣的結果, 就是把那個常數乘上矩陣的每個元素。這一個簡單的道理 Matlab 也知道,例如
2*A都是合法的計算,而且結果正確。
-3*A
(1/4) * A
A / 4
因為 A * A 應該要能簡寫成 A^2,所以 Matlab 能計算方陣的正整數次方,例如
A^2都可以計算。
C^2
I^2
數學中並無規定純量與矩陣的加、減計算。 Matlab 為了方便起見,拓展純量與矩陣的 + - 意義,使得
A + 1是將 A 的每個元素都加 1,同理
1 - A用 1 減去 A 的每個元素。
讀者隨便實驗一下,就知道 Matlab 其實能算方陣的任意次方 (只要是純量指數)。 我們不打算在此說明,那計算究竟是何意義?
習題
8 | 1 | 6 |
---|---|---|
3 | 5 | 7 |
4 | 9 | 2 |
2 -28 148 -116 -273 -1302 4186 -4371 -243 -428 1951 -1643 -5384 -24082 80029 -76443 -40 -115 546 -405 -1145 -5180 17025 -17140 105 209 -967 809 2563 11529 -38201 36781 236 431 -1965 1627 5268 23562 -78245 75104 33 64 -288 208 643 2843 -9434 9341 20 31 -137 112 380 1681 -5608 5340 -8 -23 109 -81 -229 -1036 3405 -3427
I = [1, 0, 0; 0, 1, 0; 0, 0, 1];計算
I - (I+1)/2解釋為何結果相同?
(1 - I)/2