行列の演算

こんにちは、おぐえもん(@oguemon_com)です。

前回の記事では、行列とは何なのか、そして、行列の中でもちょっぴり特別な形をした行列をご紹介しました。

今回は、行列を使った演算の方法について説明します。行列は、今まで扱っていた数(スカラーといいます)と同じように計算できますが、そのルールや性質が少し異なります。今までとの違いに注意しながら学習しましょう!

足し算・引き算

行列A,BA,Bに対してA+BA+Bという風に表現します。足し算は、対応する成分を足し合わせるだけで OKです。

(3764)+(0344)=(3+07+36+44+(4))=(310108)\begin{aligned} \left( \begin{array}{ccc} 3 & 7 \\ 6 & -4 \end{array} \right)+ \left( \begin{array}{ccc} 0 & 3 \\ 4 & -4 \end{array} \right)&= \left( \begin{array}{ccc} 3+0 & 7+3 \\ 6+4 & -4+(-4) \end{array} \right)\\ &= \left( \begin{array}{ccc} 3 & 10 \\ 10 & -8 \end{array} \right) \end{aligned}

抽象的に表すと、こんな感じ。

行列の和

A=[aij],B=[bij]A=[a_{ij}],B=[b_{ij}]のとき、

A+B=[aij+bij]A+B=[a_{ij}+b_{ij}]

引き算の場合は、プラスをマイナスに置き換えてください。

対応する成分同士を計算するので、行列の縦横の数が合っていないもの同士は加算・減算できません。なんでも足し引きできた今までの数(スカラー)とは大きく異なる特徴です。

スカラー倍

「2」や「-5.4」みたいな今まで使ってきた数(スカラー)で掛け算することをスカラー倍と言います。スカラーはどんな形の行列でも掛け算できます

行列をAA、スカラーをλ\lambdaとすると、スカラー倍はλA{\lambda}Aという風に表現します。計算方法は簡単で、全ての成分にスカラーを掛けます。

4(2352128)=(4243454(2)41248)=(8122084832)\begin{aligned} 4*\left( \begin{array}{ccc} 2 & 3 \\ 5 & -2 \\ 12 & 8 \end{array} \right) &=\left( \begin{array}{ccc} 4*2 & 4*3 \\ 4*5 & 4*(-2) \\ 4*12 & 4*8 \end{array} \right)\\ &=\left( \begin{array}{ccc} 8 & 12 \\ 20 & -8 \\ 48 & 32 \end{array} \right) \end{aligned}

抽象的に表すと、こんな感じ。

行列のスカラー倍

A=[aij]A=[a_{ij}]のとき、

λA=[λaij]{\lambda}A=[{\lambda}a_{ij}]

割り算をしたければ、割りたい数の逆数(aaなら1a\frac{1}{a})を掛けろ!以上!

行列同士の掛け算

行列初心者にとっての最初の壁です。行列同士の掛け算はルールが複雑で、慣れるまでに時間がかかります。しかし、これを覚えないと話が進まないので頑張って覚えてください!

掛け算の手順

まず、掛け合わせてできた積は、行列A,BA,Bに対してABABという風に表現します。

ルールは簡単に言えば次の通り。

  • 「行列AA列数=行列BB行数」じゃないと掛け算できない(積ABABは定義できない)。
  • ABABは、行列AAと同じ行数で、行列BBと同じ列数の行列となる。
  • ABABiijj列成分は、行列AAii行の成分と、行列BBjj列の成分を順に掛けて足したもの。

抽象的に表すと、こんな感じになります。

行列の積

mmrr行列のA=[aij]A=[a_{ij}]と、rrnn列行列のB=[bij]B=[b_{ij}]について、

mmnn列行列の積ABABを定義することができて、下式の通りとなる。

AB=[k=1raikbkj]AB=[\sum_{k=1}^ra_{ik}b_{kj}]

これだけだと意味不明だと思うんで、とにかく例を示しましょう。次のAABBについて、ABABを計算します。

A=(234523),B=(613301585)A= \left( \begin{array}{ccc} 2 & 3 & 4\\ 5 & -2 & 3 \end{array} \right), B= \left( \begin{array}{ccc} 6 & 1 & 3\\ -3 & 0 & 1 \\ 5 & 8 & 5 \end{array} \right)

まず、以下のことがわかります。

  • Aの列数は3で、Bの行数も3
    • Aの列数とBの行数が一致するので、積ABABを求めることができます。
  • Aの行数は2で、Bの列数は3
    • よって、積ABABは、2行3列の行列となります。

ここで、ABABの 2 行 3 列成分を求めてみます。

AAの 2 行成分は(523)\begin{pmatrix}5 & -2 & 3\end{pmatrix}で、BBの 3 列成分は(315)\begin{pmatrix}3 \\ 1 \\ 5\end{pmatrix}です。

これらを左から or 上から順にかけて足すと、下式の通りです。

53+(2)1+35=285*3+(-2)*1+3*5=28

これがABABの「2 行 3 列成分の値」です。

他の成分についても同様の計算を行うとABABは以下のようになります。

AB=(233429512928)AB= \left( \begin{array}{ccc} 23 & 34 & 29\\ 51 & 29 & 28 \end{array} \right)

計算が超面倒ですよね?しかしこれが仕様です。この計算量には現代のコンピューターも悩んでいます(笑)

AB≠BA?

スカラーでは、引き算の順序入れ替えこそご法度(52255-2 \neq 2-5)でしたが、掛け算の入れ替えは全然 OK でした(5×2=2×55 \times 2 = 2 \times 5)。掛け算は順番を変えても答えが変わりません。

しかし、行列では掛け算の順序を入れ替えると答えが変わることがある点に注意が必要です。

例を挙げます。

A=(2113),B=(2312)A= \left( \begin{array}{cc} 2 & 1\\ 1 & 3 \end{array} \right), B= \left( \begin{array}{cc} 2 & 3\\ 1 & 2 \end{array} \right)

上の 2 行列についてABABBABAを求めました。

AB=(5859)AB= \left( \begin{array}{cc} 5 & 8\\ 5 & 9 \end{array} \right) BA=(71147)BA= \left( \begin{array}{cc} 7 & 11\\ 4 & 7 \end{array} \right)

このように結果が全く異なります。

掛け合わせる 2 行列を入れ替えると、答えが変わるどころか、そもそも答えが定義されなくなる場合すらあります。

したがって、今後は掛け算を扱う時に、掛け合わせる順番(左右のどちらから掛け合わせるのか)を意識しましょう

なんでこんな面倒な方法なの?

ぶっちゃけ「そういう定義だから!」って話ですが、「線形代数って何?」という記事で行列と連立方程式の関連について軽く触れたのを思い出してください。

{2x+4y=7x+3y=6\left\{ \begin{array}{l} 2x + 4y = 7 \\ x + 3y = 6 \end{array} \right.

上の連立方程式は、行列を使って以下のように表されると述べました。

(2413)(xy)=(76)\left( \begin{array}{cc} 2 & 4 \\ 1 & 3 \end{array} \right) \left( \begin{array}{c} x \\ y \end{array} \right)= \left( \begin{array}{c} 7 \\ 6 \end{array} \right)

この式を、行列同士の積のルールに基づいて計算してみてください。多分こんな感じになります。

(2x+4yx+3y)=(76)\left( \begin{array}{c} 2x+4y \\ x+3y \end{array} \right)= \left( \begin{array}{c} 7 \\ 6 \end{array} \right)

元の連立方程式と同じような式に戻りました。

こうして見ると、行列の積は、連立方程式の係数と変数を上手く分離できるように定義されているように思えます。

このような積の定義のおかげで、係数と変数を「行列同士の積」という形でまとめて分離できるわけです。このありがたさを今後学習を進めるうちに実感できることと思います。

行列同士の冪乗(べき乗)

同じ行列を何個も次々と掛け合わせたものを、その個数に応じてAnA^nという風に記します。

例えば、A1=AA^1=AA3=AAAA^3=AAAA6=AAAAAAA^6=AAAAAAとなります。

行列の冪乗
An=AAAnA^n=\underbrace{AA{\cdots}A}_{n\text{個}}

ただし、A0=EA^0=Eとする。

ここで掛け算のルールを思い出しましょう。

行列の積ABABが求められるのは、行列AAの列数と、行列BBの行数が等しいときのみでした。

つまり、積A2=AAA^2=AAを求められるのは、行列AAの行数と列数が同じときで、それはすなわち**AAが正方行列の時に限られます**。

ちなみに、積A2A^2AAと同じサイズなので、A3=A2AA^3=A^2AA4=A3AA^4=A^3A、...は必ず求めることができます。

行列同士の割り算は?

行列には割り算がありません。しかし、代わりに逆行列というものを掛けることで、行列で割ったような効果をもたらすことができます。逆行列については次回以降の記事で解説します。

おわりに

今回は、行列を使った演算の定義について扱いました。行列の演算も基本中の基本ですので絶対に覚えてください!笑

次回の記事では、掛け合わせることで割り算みたいな効果を生み出す不思議な行列「逆行列」について解説します!

割り算みたいな効果をもたらす「逆行列」について>>

▲ トップへ戻る