Matlab 教材:Matlab 是一個超級計算器---以矩陣為物件

一般的計算器或數值計算軟體,都能做加、減、乘這些運算, 通常也都用 + - * 這些符號代表加、減、乘。 但是這些符號向來只能作用在兩個整數或有理數之間, 鮮少能夠自動作用在兩個複數、甚至矩陣之間。 Matlab 的 + - * 能夠視其兩側的「物件」類別而決定該採取怎樣的步驟來計算, 這叫做「拓展」(overload) 功能。

我們已經見識過 Matlab 的 + - * 能夠拓展到複數上, 現在看看它們也能很自然地拓展到矩陣上。令

A = [1, 2; 3, 4];
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];
則 A, B, C, I 分別代表一個 2x2、2x3、3x3 和 3x3 的矩陣。
1 2
3 4
3.1416 2.7183 0.6931
1.0000 0.7071 1.3611
8 1 6
3 5 7
4 9 2
1 0 0
0 1 0
0 0 1

根據矩陣加、減計算的規則,只有 C 和 I 可以相加減,例如
C + I
或者
I - C
都是正確語法,而且 Matlab 會得到正確結果。

根據矩陣乘法計算規則,

A * B
是可以計算的,得到另一個 2x3 矩陣。但是
B * A
就不能計算,Matlab 會提醒您 Inner matrix dimensions must agree. 同理,
B * C
B * I
C * I
I * C
都可以計算,而且 Matlab 獲得正確的結果。

因為 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 其實能算方陣的任意次方 (只要是純量指數)。 我們不打算在此說明,那計算究竟是何意義?

習題

  1. 將以下方陣指派給 M,然後計算 2*M
    8 1 6
    3 5 7
    4 9 2

  2. 輸入以下 8x8 方陣,指派給 T,然後計算 T2
           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
  3. I = [1, 0, 0; 0, 1, 0; 0, 0, 1];
    計算
    I - (I+1)/2
    (1 - I)/2
    解釋為何結果相同?
單維彰 (03/03/08) --- [Prev] [Next] [Up]