玄関雑学の部屋雑学コーナーベクトルと行列

2.ベクトルと行列の演算

1) ベクトルと行列の基本演算

ベクトルと行列について次のような演算を定義してやりますと、何かと便利なことがあります。

・ベクトルとベクトルの和

:n次元ベクトル









x1


xi


xn
















y1


yi


yn
















x1+y1


xi+yi


xn+yn








  …… (2.1)

<例>





20
30
40




  



15
10
5








20+15
30+10
40+5








35
40
45




・行列と行列の和

:(n, p)型行列
=[1jp]+[1jp

   =







x11


xi1


xn1






x1j


xij


xnj






x1p


xip


xnp
















y11


yi1


yn1






y1j


yij


ynj






y1p


yip


ynp








   =







x11+y11


xi1+yi1


xn1+yn1






x1j+y1j


xij+yij


xnj+ynj






x1p+y1p


xip+yip


xnp+ynp








   =[11jjpp]  …… (2.2)

<例>





20
30
40
50
60
70




  



15
10
5
5
4
3








20+15
30+10
40+5
50+5
60+4
70+3








35
40
45
55
64
73




基本的に、足し算(または引き算)は同じ種類のデータ間で行われる演算ですので、ベクトルと行列を一連のデータの集まりと考えれば上記の定義は自然です。

・スカラーとベクトルの積

a:スカラー、:n次元ベクトル

a・







a・x1


a・xi


a・xn








  …… (2.3)

a=-1の場合、次のように表記する。

(-1)・







-x1


-xi


-xn








=-  …… (2.4)

n:正の整数の場合
n・+…+ (をn個足し合わせたもの)

<例>

a=2   



20
30
40




a・



2×20
2×30
2×40








40
60
80




・スカラーと行列の積

a:スカラー、:(n, p)型行列

a・=[a・1 … a・j … a・p







a・x11


a・xi1


a・xn1






a・x1j


a・xij


a・xnj






a・x1p


a・xip


a・xnp








  …… (2.5)

a=-1の場合、次のように表記する。

(-1)・=[-1 … -j … -p







-x11


-xi1


-xn1






-x1j


-xij


-xnj






-x1p


-xip


-xnp








=-

  …… (2.6)

n:正の整数の場合
n・+…+ (をn個足し合わせたもの)

<例>

a=2   



20
30
40
50
60
70




a・



2×20
2×30
2×40
2×50
2×60
2×70








40
60
80
100
120
140




スカラーとベクトルまたは行列の積は一連のデータに定数係数を掛けることに相当し、定数係数が正の整数の時は同じベクトルまたは行列を定数個足し合わせたものになります。 この定義は、データがスカラーの場合の自然な拡張になっていることがわかると思います。

・ベクトルとベクトルの積

:n次元ベクトル

'=(,)=x1・y1+…+xi・yi+…+xn・ynn
Σ
i=1
xi・yi=Σxi・yi  …… (2.7)
n
Σ
i=1
は添字iを1からnまで変えて合計するという意味の記号

この計算は、









y1


yi


yn








┌――――――
|  ┌―――
|  |
|  |  ┌
|  |  |
'=[ x1 … xi … xn →Σxi・yi'=(,)

と、次元数の等しい行ベクトルと列ベクトルを直角に並べ、その対応する要素を掛け合わせて内側に合計します。 このため、この積のことを「内積(inner product)」と呼びます。 また結果がスカラーとなることから、「スカラー積(scalar product)」と呼ぶこともあります。 基本的に、足し算と違って掛け算は種類の異なるデータ間で行われる演算ですので、種類の異なるベクトル間で定義されています。 掛けあわせた要素を合計するのは、このように定義すると何かと都合が良いからです。 (注1)

<例>




20
30
40




  



3
2
1




'=(,)=20×3+30×2+40×1=60+60+40=160

・行列と行列の積

:(n, p)型行列、:(p, m)型行列、i':p次元行ベクトル、j:p次元列ベクトル

XY









1'



i'



n'










1jm









1'1



i'1



n'1








1'j



i'j



n'j








1'm



i'm



n'm










  …… (2.8)

この計算は、

┌――― 1 j m










1'



i'



n'




























1'1



i'1



n'1








1'j



i'j



n'j








1'm



i'm



n'm










XY

つまり、

:(p, m)型








y11


yk1


yp1






y1j


ykj


ypj






y1m


ykm


ypm








┌――――――――――
|   ┌――――――
|   |
|   |   ┌――
|   |   |








x11


xi1


xn1
 … 





x1k


xik


xnk
 … 





x1p


xip


xnp






















Σx1k・yk1


Σxik・yk1


Σxnk・yk1
 … 





Σx1k・ykj


Σxik・ykj


Σxnk・ykj
 … 





Σx1k・ykm


Σxik・ykm


Σxnk・ykm








:(n, p)型 XY:(n, m)型

(n, p)型行列×(p, m)型行列→(n, m)型行列  (Σは添え字kに関して合計する)
  ↑____↑
同じ次数でないといけない――→この次数が潰れる!

と、行列のp次元行ベクトルと行列のp次元列ベクトルの内積を計算し、それを(n, m)型に並べたものになります。 この定義から、スカラー同士の積と違って行列同士の積はどんな場合でも行えるとは限らず、しかも交換律(掛ける数と掛けられる数を交換しても演算結果が変わらない)が成り立たないことがわかります。 これはスカラーの演算とベクトル・行列の演算の大きな違いです。

<例>





20
30
40
50
60
70




  


3
1
2
0







20×3+50×1
30×3+60×1
40×3+70×1
20×2+50×0
30×2+60×0
40×2+70×0








110
150
190
40
60
80




※この式のを入れ替えた、
  
は(2, 2)型行列×(3, 2)型行列となり、演算を行うことができない。 つまり積の交換律が成り立たない!

・行列のベキ

行列と行列の積の定義より、n次正方行列について行列の「ベキ(power)」を次のように定義します。

m・…・ (をm個掛けたもの)  …… (2.9)
0n (行列の0乗は単位行列になると定義する)  …… (2.10)

・ベクトルと行列の積

ベクトルは行数または列数が1の行列として扱うことができますから、ベクトルと行列の積も行列同士の積と同じように定義することができます。

':n次元行ベクトル :p次元列ベクトル :(n, p)型行列
''[1jp]=['1 'j'p
   =[Σxi・yi1 … Σxi・yij … Σxi・yip]  …… (2.11)
(1, n)型行列×(n, p)型行列→(1, p)型行列=p次元行ベクトル

Yz









1'



i'



n'




















1'



i'



n'




















Σy1j・zj



Σyij・zj



Σynj・zj










  …… (2.12)

(n, p)型行列×(p, 1)型行列→(n, 1)型行列=n次元列ベクトル

<例>





20
30
40
50
60
70




  


3
1







20×3+50×1
30×3+60×1
40×3+70×1








110
150
190




また行列と行列の積の定義より、行ベクトル同士または列ベクトル同士の積は行えないことがわかると思います。 しかし列ベクトルと行ベクトルの積は可能で、次のように結果が行列になります。

:n次元列ベクトル ':p次元行ベクトル

xy'=







x1


xi


xn








[y1 … yj … yp







x1y1


xiy1


xny1






x1yj


xiyj


xnyj






x1yp


xiyp


xnyp








  …… (2.13)

(n, 1)型行列×(1, p)型行列→(n, p)型行列

<例>





20
30
40





  '=[3 1]

'=



20×3
30×3
40×3
20×1
30×1
40×1








60
90
120
20
30
40




行ベクトルと列ベクトルの積つまり内積は、2つのベクトルの次数が同じでないと計算できませんが、列ベクトルと行ベクトルの積は上例のように次数が違っても計算でき、しかも結果が行列になります。 これは、ベクトル・行列の演算では交換律が成り立たない顕著な例です。 ただし内積を表す特殊な演算記号「(,)」は、「最初のベクトルを行ベクトルにし、次のベクトルを列ベクトルにしてから積を求める」という意味の演算記号ですので、を入れ替えても結果は変わらず、交換律が成り立ちます。

・行列のトレース

n次正方行列ついて、対角成分を合計したものを「トレース(trace)」といいます。

tr()=x11+…+xii+…+xnnn
Σ
i=1
ii  …… (2.14)

<例>





20
30
40
50
60
70
80
90
100




tr()=20+60+100=180


(注1) 掛け算はもともと商取引などに関連して工夫された演算で、例えば、

1個10円の卵を3個買うときの値段…10円+10円+10円=10円/個×3個=30円

などのように、種類(単位)の異なるデータ間で行われるのが普通です。 それに対して、足し算と引き算は同じ種類のデータ間で行われるのが普通です。 ベクトル・行列の演算は、こういったことを踏まえて定義されています。