9/27/2006

2.10 陣列運算

矩陣為一組二維向量之實數或複數之陣列,其加減乘除之運算與一般的數學運算法略有不同,陣列通常以行向量為主,但一般運算仍可混用。即使如此,在線性代數中所定義的矩陣操作大體上
Matlab均能支援。其中諸如一般運算、線性方程、特徵值及單一值與階乘運算等均包括在內。

由於陣列所代表的是一堆有系統的數字,與另一個陣列相運算時,必須依據不同的規則才能獲得
================================
操作名稱       應用情形
---------------------------------
C= A◎B-- ◎處可為加法(+)、減法(-)、乘法(*)、左除(\)、右除(/)
C= A.◎B-- ◎處可為乘法(*)、乘幂(^)、左除(\)、右除(/)
C= A◎c-- ◎處可為加法(+)、減法(-)、乘法(*)、乘幂(^)、右除(/)
C= c◎B-- ◎處可為加法(+)、減法(-)、乘法(*)、乘幂(^)、左除(\)、右除(./)

由表中可知,一個操作元前有一點與沒有一點其意義是不同的。在操作元前加一點表示是項目與項目間之操作,即為所謂之對映運算方式,此時兩矩陣之大小要相同。這與一般矩陣之加法及減法相同,其運算僅針對元素間之運算。偏置功能則僅適用於矩陣間,不適用於項目間之操作。這些操作元亦可應用於矩陣與一般常數,後者之大小為[1x1]。

2.10.1矩陣之加減



設C、D分別為3x3之方矩陣,且設C為魔術方塊,D為[1 2 3;4 5 6;7 8 9],即:

>>C=magic(3)
C =
8 1 6
3 5 7
4 9 2

>>D=[1 2 3;4 5 6;7 8 9]
D =
1 2 3
4 5 6
7 8 9

則C+D與C-D之結果分別為各對應元素間之相互運算:

>>C+D %對應元素相加
ans=
9 3 9
7 10 13
11 17 11

>>C-D %對應元素相減
ans=
7 -1 3
-1 0 1
-3 1 -7

2.10.2矩陣之乘法



下面是C.*D與C*D兩種之運算結果,前者為對應元素相乘;後者為兩個矩陣進行數學相乘:

>>C.*D %對應元素相乘
ans =
8 2 18
12 25 42
28 72 18

>>C*D %矩陣乘法
ans =
54 69 84
72 87 102
54 69 84

數學矩陣相乘所代表的意義因實際的問題而定。例如有一化妝品系列,均由三種原料調配而成,因原料之分量會產生不同產品系列。今設有四種產品,其基本原料分別如有下份量:

>>A=[ 2 4 3; 5 2 1; 7 3 5; 4 5 6]
ans=
2 4 3 %產品1之成分
5 2 1 %產品2之成分
7 3 5 %產品3之成分
4 5 6 %產品4之成分

此時矩陣A代表四種產品(四列)之三種成份量。現設三種成分均有不同的價格,其價格設以一行向量表示,即:

>>P=[120 50 100]'
P =
120
50
100

若用向量的表示法,第一種產品之成分代表A(1,:),即:

>>A(1,:)
ans =
2 4 3

即為A矩陣之第一列,其成本只要將A(1,:)與P相乘,即A(1,:)*P,其結果為:

>>A(1,:)*P
ans = 740

亦即代表產品1的成本,若直接計算應為

   2 x (120) + 4x(50) +3x(100) = 740

結果與上面之A(1,:)*P相同。

故上面四種產品,若以成分矩陣A與價格矩陣P,即可得四種產品之成本:

>>A*P
ans =
740
800
1490
1330

不過上述這種乘法必須意到其矩陣大小之配合。由前述可知:A之大小為(4x3),P之大小為(3x1),得到的結果為(3x1)。換言之,兩矩陣相乘,第一矩陣之行與第二矩陣之列,其大小應一致。而結果之大小應為第一矩陣之列與第二矩陣之行,或(4x3)(3x1)=(4x1)。以通式表示之:

A[m,n] * B[n,p] = C[m,p]

若以其元素間之關係而言,可表示如下:

c(ij)=Σ a(ik)b(kj)

其中,i=1,2,…,m;j=1,2,..p,k=1,2...n。其結果即為C[m,p]。由於矩陣大小須配合的關係,顯然B*A並不一定存在,除非其除非其大小均為方矩陣(如前面C*D之例子),但即使如此,其結果也並不一定相同。如:

>>D*C
ans =
26 38 26
71 83 71
116 128 116

足見D*C與C*D的結果並不同。但只要矩陣之大小相搭配,其分解及分配之特性則仍然存在,如:

  A*(B+C)=A*B + A*C



  (A*B)*C=A*(B*C)

矩陣相乘,還有許多有趣的例子。既然大小要相符合,那兩個大小相同之方矩陣之相乘應不會有差錯,至少大小之搭配上不會有問題。如某矩陣AA,設其為(3x3)的魔術方陣:


>>AA=magic(3)
AA =
8 1 6
3 5 7
4 9 2





>>AA*AA
ans =
91 67 67
67 91 67
67 67 91

>>AA*AA*AA
ans =
1197 1029 1149
1077 1125 1173
1101 1221 1053

>>AA^3
ans =
1197 1029 1149
1077 1125 1173
1101 1221 1053

顯然矩陣AA之三次方與AA*AA*AA之結果相同。若用eye(3)函數產生單位矩陣,則其無論先乘與後乘,結果都會一樣。

>>I=eye(3)
I =
1 0 0
0 1 0
0 0 1

>>AA*I
ans =
8 1 6
3 5 7
4 9 2

>>I*AA
ans =
8 1 6
3 5 7
4 9 2

結論是若I為單位矩陣,則I*A=A*I=A,顯示交換律在此情形下仍可成立。

2.10.3 陣列之除法



陣列除法屬逐元除法,因此兩陣列相除時必須同樣大小。例如:

>> a=[2 3 4]
a =
2 3 4

>> b=[5 6 7]

b =
5 6 7

>> a./b
ans =
0.4000 0.5000 0.5714

>> c=[1 2;3 4]
c =
1 2
3 4

>> d=[3 5; 8 7]
d =
3 5
8 7

>> c./d
ans =
0.3333 0.4000
0.3750 0.5714

這是兩陣列經過右除(./)運算之結果。

2.10.4 陣列之次方


陣列之逐元運算亦可應用於次方,但其次方數必須為常數,以pascal函數產生之對稱矩陣為例:

>> A=pascal(3)
A =
1 1 1
1 2 3
1 3 6

>> A.^3
ans =
1 1 1
1 8 27
1 27 216