行列・ベクトルの計算の基本|積はどうしてこの形になるのか?

線形代数学の基本
線形代数学の基本

前回の記事では線形代数が「多変数バージョンの比例」を考える分野であることを説明し,線形代数の基本である行列ベクトルがどのようなものか説明しました.

今回の記事では行列とベクトルの計算について説明します.

行列の和の定義は自然に思える人は多いのですが,行列の積については少し厄介で初見では複雑に思えてしまいます.

この記事では,

  • ベクトルの和,スカラー倍,行列倍
  • 行列の和,スカラー倍
  • 行列の積

を順に説明します.

なお,この記事では特に断らない限り実行列・実ベクトルを扱うことにしますが,複素行列など一般のを成分とする行列・ベクトルに対しても同様です.

線形代数学の参考文献

以下は線形代数学に関するオススメの教科書です.

大学教養 線形代数(加藤文元 著)

数学科など理論系の学生向けの線形代数の入門書です.平易な例から丁寧に説明されています.

手を動かしてまなぶ 線形代数(藤岡敦 著)

理論と演習のバランスをとりながら勉強したい人にオススメの入門書です.

ベクトルの計算

単なる数を行列やベクトルと区別してスカラー (scalar)といいます.

例えば,この記事では主に実行列・実ベクトルを扱うので,スカラーは実数です.

scalarは「梯子」を意味するラテン語のscalaが語源です.「目盛り」や「縮尺」を意味する英語のscale(スケール)もラテン語のscalaが語源となっています.

このことから,行列やベクトルとは違い,スカラーは「量」を表すというニュアンスが感じられますね.

さて,まずはベクトルの計算として

  • ベクトルの
  • ベクトルのスカラー倍
  • ベクトルの行列倍

を定義します.

ベクトルの和

$n$次列ベクトル$\m{a}=\bmat{a_1\\\vdots\\a_n}$, $\m{b}=\bmat{b_1\\\vdots\\b_n}$の和$\m{a}+\m{b}$を

    \begin{align*}\m{a}+\m{b}:=\bmat{a_1+b_1\\\vdots\\a_n+b_n}\end{align*}

で定義する.

これは高校数学で学ぶ成分で表されたベクトルの和と考え方は同じですね.

図形的には$\m{a}+\m{b}$は「ベクトル$\m{a}$, $\m{b}$を繋げてできたベクトル」と言えますね.

Rendered by QuickLaTeX.com

また,各成分で交換法則を使えば

    \begin{align*}\m{a}+\m{b}=\bmat{a_1+b_1\\\vdots\\a_n+b_n}=\bmat{b_1+a_1\\\vdots\\b_n+a_n}=\m{b}+\m{a}\end{align*}

と列ベクトルの和でも交換法則が成り立つことが分かりますね.

ベクトルのスカラー倍

$n$次列ベクトル$\m{a}=\bmat{a_1\\\vdots\\a_n}$と実数$k$に対して,$k$を$\m{a}$にかけてできる$n$次実ベクトル$k\m{a}$を

    \begin{align*}k\m{a}:=\bmat{ka_1\\\vdots\\ka_n}\end{align*}

で定義する.

これも高校数学で学ぶ成分で表されたベクトルの実数倍と同じですね.

図形的には$k\m{a}$は「ベクトル$\m{a}$の長さを$k$倍してできたベクトル」と言えますね.

Rendered by QuickLaTeX.com

また,各成分で結合法則を使えば,$k,\ell\in\R$に対して

    \begin{align*}(k\ell)\m{a}=\bmat{(k\ell)a_1\\\vdots\\(k\ell)a_n}=\bmat{k(\ell a_1)\\\vdots\\k(\ell a_n)}=k(\ell\m{a})\end{align*}

と列ベクトルのスカラー倍でも結合法則が成り立つことが分かりますね.

逆ベクトル

$n$次列ベクトル$\m{a}$に対して,

    \begin{align*}\m{a}+\m{b}(=\m{b}+\m{a})=\m{0}\end{align*}

をみたす$n$次列ベクトル$\m{b}$を$\m{a}$の逆ベクトル (inverse vector)といい$-\m{a}$と表します.

成分を考えれば$-\m{a}=(-1)\m{a}$となることが分かりますね.

また,$n$次実列ベクトル$\m{x},\m{y}$に対して,$\m{x}+(-\m{y})$を$\m{x}-\m{y}$と表します.

平行

$\m{0}$でない$n$次列ベクトル$\m{a}$, $\m{b}$が平行であるとは

    \begin{align*}k\m{a}=\m{b}\end{align*}

をみたす$k\in\R$が存在することをいいます.

図形的には$\m{a},\m{b}\in\R^{n}$が平行であるとは「$\m{a}$を伸び縮みだけで$\m{b}$に一致させられること」と言えますね.

ただし,$k<0$の場合には$\m{a}$と$\m{b}$は逆向きになります.すなわち,逆向きに伸び縮みさせると考えます.

ベクトルの行列倍

前回の記事の序盤で,線形代数では

    \begin{align*}\begin{cases}y_1=x_1+2x_2+3x_3\\y_2=4x_1+5x_2+6x_3\end{cases}\end{align*}

は右辺を係数部分と変数部分に分けて

    \begin{align*}\bmat{y_1\\y_2}=\bmat{1&2&3\\4&5&6}\bmat{x_1\\x_2\\x_3}\end{align*}

と表すことを説明しました.

実はこの右辺は行列$\bmat{1&2&3\\4&5&6}$をベクトル$\bmat{x_1\\x_2\\x_3}$に左からかけたものと考えており,このベクトルの行列倍は一般に以下のように定義されます.

$n$次列ベクトル$\m{x}=\bmat{x_{1}\\\vdots\\x_{n}}$と$m\times n$行列$A=\bmat{a_{11}&\dots&a_{1n}\\\vdots&\ddots&\vdots\\a_{m1}&\dots&a_{mn}}$に対して,$A$を$\m{x}$に左からかけてできる$n$次実ベクトル$A\m{x}$を

    \begin{align*}A\m{x}:=\bmat{a_{11}x_{1}+\dots+a_{1n}x_{n}\\\vdots\\a_{m1}x_{1}+\dots+a_{mn}x_{n}}\end{align*}

で定義する.

(行列$A$の列数)=(列ベクトル$\m{x}$の次数)となっている場合のみベクトル$\m{x}$に左から$A$をかけることができます.

具体例1

$\bmat{1&2&3\\4&5&6}$の列数と$\bmat{x\\y\\z}$の次数はともに3なので,積$\bmat{1&2&3\\4&5&6}\bmat{x\\y\\z}$が定義できて,

    \begin{align*}\bmat{1&2&3\\4&5&6}\bmat{x\\y\\z} =\bmat{x+2y+3z\\4x+5y+6z}\end{align*}

ですね.

具体例2

$\bmat{1&2\\3&4\\5&6}$の列数と$\bmat{-1\\2}$の次数はともに2なので,積$\bmat{1&2\\3&4\\5&6}\bmat{-1\\2}$が定義できて,

    \begin{align*}\bmat{1&2\\3&4\\5&6}\bmat{-1\\2} =\bmat{1\cdot(-1)+2\cdot2\\3\cdot(-1)+4\cdot2\\5\cdot(-1)+6\cdot2} =\bmat{3\\5\\7}\end{align*}

ですね.

具体例3(定義できない例)

$\bmat{1&2&3\\4&5&6}$の列数は3で,$\bmat{-1\\2}$の次数は2なので,積

    \begin{align*}\bmat{1&2&3\\4&5&6}\bmat{-1\\2}\end{align*}

定義されません.

行列の計算

それでは次に行列の計算の定義に移ります.

行列のスカラー倍と和

$m\times n$行列$A=(a_{ij})$, $B=(b_{ij})$と$k\in\R$に対して,$A$の$k$倍と,和$A+B$をそれぞれ

  • $kA=\bmat{ka_{11}&\dots&ka_{1n}\\\vdots&\ddots&\vdots\\ka_{m1}&\dots&ka_{mn}}$
  • $A+B=\bmat{a_{11}+b_{11}&\dots&a_{1n}+ b_{1n}\\\vdots&\ddots&\vdots\\a_{m1}+b_{m1}&\dots&a_{mn}+b_{mn}}$

で定義する.

$k$倍は全ての成分に$k$をかければ良く,和と差は同じ成分同士で和と差を取れば良いわけですね.

また,$m\times n$行列$A$に対して

    \begin{align*}A+B=B+A=O\end{align*}

をみたす$m\times n$実行列$B$を$-A$と表します.つまり,成分を考えれば$-A=(-1)A$ですね.

また,$m\times n$実行列$X$, $Y$に対して$X+(-Y)$を$X-Y$と表します.

具体例1

$A=\bmat{1&2\\3&6}$, $B=\bmat{-1&3\\1&0}$に対して,

    \begin{align*}A+B=\bmat{1+(-1)&2+3\\3+1&6+0}=\bmat{0&5\\4&6}\end{align*}

ですね.

具体例2

$A=\bmat{1&2\\3&6}$, $-2\in\R$に対して,

    \begin{align*}(-2)A=\bmat{(-2)\cdot1&(-2)\cdot2\\(-2)\cdot3&(-2)\cdot6}=\bmat{-2&-4\\-6&-12}\end{align*}

ですね.

行列の和と分配法則

行列の和とベクトルの行列倍について,次のように分配法則が成り立ちます.

$m\times n$実行列$A$, $B$と$n$次実列ベクトル$\m{x}$に対して,

    \begin{align*}(A+B)\m{x}=A\m{x}+B\m{x}\end{align*}

で定義する.

実際に$A$, $B$, $\m{x}$の成分を文字でおいて計算すれば簡単に証明できるので,ぜひ計算練習のつもりで証明してみてください.

行列の積

行列の和やスカラー倍は各成分ごとに考えれば良いですが,行列の積は少し複雑で次のように定義されます.

$\ell\times m$行列$A=(a_{ij})$,$m\times n$行列$B=(b_{ij})$とする.このとき,積$AB$を以下で定義する.

    \begin{align*}AB :=\bra{\sum_{k=1}^{n} a_{ik}b_{kj}}_{1\leqq i\leqq \ell,1\leqq j\leqq n} =\bmat{\sum\limits_{k=1}^{n} a_{1k}b_{k1}&\dots&\sum\limits_{k=1}^{n} a_{1k}b_{k\ell}\\ \vdots&\ddots&\vdots\\ \sum\limits_{k=1}^{n} a_{mk}b_{k1}&\dots&\sum\limits_{k=1}^{n} a_{mk}b_{k\ell}}\end{align*}

この定義のままでは読みにくいので,少し丁寧に説明します.

計算方法

[1] 積$AB$の$(1,1)$成分を求めるには$A$の第1行と$B$の第1列に注目します.

    \begin{align*}\bmat{\color{blue}\m{a}_{11}&\color{blue}\m{\dots}&\color{blue}\m{a}_{1n}\\\vdots&\ddots&\vdots\\a_{m1}&\dots&a_{mn}}\bmat{\color{blue}\m{b}_{11}&\dots&b_{1n}\\\color{blue}\m{\vdots}&\ddots&\vdots\\\color{blue}\m{b}_{m1}&\dots&b_{mn}}\end{align*}

これらの各成分を順番にかけて足し合わせた$a_{11}b_{11}+a_{12}b_{21}+\dots+a_{1n}b_{n1}\bra{=\sum_{k=1}^{n} a_{1k}b_{k1}}$が積$AB$の$(1,1)$成分です:

    \begin{align*}AB=\bmat{\color{blue}\sum\limits_{k=1}^{n} a_{1k}b_{k1}&\dots&*\\\vdots&\ddots&\vdots\\ *&\dots&*}.\end{align*}

[2] 積$AB$の$(1,2)$成分を求めるには$A$の第1行と$B$の第2列に注目します.

    \begin{align*}\bmat{\color{blue}\m{a}_{11}&\color{blue}\m{\dots}&\color{blue}\m{a}_{1n}\\\vdots&\ddots&\vdots\\a_{m1}&\dots&a_{mn}}\bmat{b_{11}&\color{blue}\m{b}_{12}&\dots&b_{1n}\\\vdots&\color{blue}\m{\vdots}&\ddots&\vdots\\b_{m1}&\color{blue}\m{b}_{m2}&\dots&b_{mn}}\end{align*}

これらの各成分を順番にかけて足し合わせた$a_{11}b_{12}+a_{12}b_{22}+\dots+a_{1n}b_{n2}\bra{=\sum_{k=1}^{n} a_{1k}b_{k2}}$が積$AB$の$(1,2)$成分です:

    \begin{align*}AB=\bmat{*&\color{blue}\sum\limits_{k=1}^{n} a_{1k}b_{k2}&\dots&*\\\vdots&\vdots&\ddots&\vdots\\ *&*&\dots&*}.\end{align*}

[3] 積$AB$の$(2,1)$成分を求めるには$A$の第2行と$B$の第1列に注目します.

    \begin{align*}\bmat{a_{11}&\dots&a_{1n}\\\color{blue}\m{a}_{21}&\color{blue}\m{\dots}&\color{blue}\m{a}_{2n}\\\vdots&\ddots&\vdots\\a_{m1}&\dots&a_{mn}}\bmat{\color{blue}\m{b}_{11}&\dots&b_{1n}\\\color{blue}\m{\vdots}&\ddots&\vdots\\\color{blue}\m{b}_{m1}&\dots&b_{mn}}\end{align*}

これらの各成分を順番にかけてできる$a_{21}b_{11}+a_{22}b_{21}+\dots+a_{2n}b_{n1}\bra{=\sum_{k=1}^{n} a_{2k}b_{k1}}$が積$AB$の$(2,1)$成分です:

    \begin{align*}AB=\bmat{*&\dots&*\\\color{blue}\sum\limits_{k=1}^{n} a_{2k}b_{k1}&\dots&*\\\vdots&\ddots&\vdots\\ *&\dots&*}.\end{align*}

[1]-[3]のように,積$AB$の$(i,j)$成分を求めるには$A$の第$i$行と$B$の第$j$列に注目して,同様に計算すればいいわけですね.

具体例

$A=\bmat{1&2\\3&6}$, $B=\bmat{-1&3\\1&0}$, $C=\bmat{2&0\\-1&0}$とすると,

    \begin{align*}&AB=\bmat{1\cdot(-1)+2\cdot1&1\cdot3+2\cdot0\\3\cdot(-1)+6\cdot1&3\cdot3+6\cdot0}=\bmat{1&3\\3&9}, \\&BA=\bmat{(-1)\cdot1+3\cdot3&(-1)\cdot2+3\cdot6\\1\cdot1+0\cdot3&1\cdot2+0\cdot6}=\bmat{8&16\\1&2}, \\&AC=\bmat{1\cdot2+2\cdot(-1)&1\cdot0+2\cdot0\\3\cdot2+6\cdot(-1)&3\cdot0+6\cdot0}=\bmat{0&0\\0&0}\end{align*}

となります.

さて,この例から$AB\neq BA$, $AC=O$となることが分かります.このように,

  • 行列の積は可換(交換可能)とは限らない
  • 行列の積が零行列であってもどちらかが零行列とは限らない

ということに注意してください.

積の定義が複雑な理由

行列とベクトルの積については,定義から

  • $m\times n$行列$B$を左から$\m{x}\in\R^n$にかけて$B\m{x}\in\R^m$
  • さらに左から$\ell\times m$行列$A$をかけると$A(B\m{x})\in\R^{\ell}$

となります:

    \begin{align*} \begin{matrix} \R^n & \to & \R^m & \to & \R^\ell \\ \rotatebox[origin=c]{90}{$\in$} &  & \rotatebox[origin=c]{90}{$\in$} &  & \rotatebox[origin=c]{90}{$\in$} \\ \m{x} & \mapsto & B\m{x} & \mapsto & A(B\m{x}) \end{matrix}. \end{align*}

さて,ここで行列$A$と$B$の積$AB$をするとき,結合法則$A(B\m{x})=(AB)\m{x}$が成り立っていて欲しいと思うのは自然なことですね.

たとえば,$A=\bmat{2&2\\-3&1}$, $B=\bmat{-2&0\\3&1}$, $\m{x}=\bmat{x\\y}$の場合を考えると,

    \begin{align*}A(B\m{x}) =&A\bra{\bmat{-2&0\\3&1}\bmat{x\\y}} =A\bmat{-2x\\3x+y} \\=&\bmat{2&2\\-3&1}\bmat{-2x\\3x+y} =\bmat{2(-2x)+2(3x+y)\\-3(-2x)+(3x+y)} \\=&\bmat{2x+2y\\9x+y} =\bmat{2&2\\9&1}\bmat{x\\y} =\bmat{2&2\\9&1}\m{x}\end{align*}

となるので,$AB=\bmat{2&2\\9&1}$と定義されていれば,結合法則$A(B\m{x})=(AB)\m{x}$が成り立ちます.

このように,行列の積が結合法則をもつように定義しようとすると,上の行列の積の定義のようになる分けですね.

行列の積の表し方

ベクトルで区分けされた行列の積を計算することはよくあります.

そこで次の命題も当たり前にしておいてください.

$m\times n$行列$A=(a_{ij})$,$n\times\ell$行列$B=(b_{ij})$を

    \begin{align*}A=\bmat{\m{a}_1\\\vdots\\\m{a}_m},\quad B=[\m{b}_1,\dots,\m{b}_{\ell}]\end{align*}

とすると,以下のいずれも積$AB$に等しい.

  1. $\bmat{\m{a}_1\m{b}_1&\dots&\m{a}_1\m{b}_\ell\\\vdots&\ddots&\vdots\\\m{a}_m\m{b}_1&\dots&\m{a}_m\m{b}_\ell}$
  2. $[A\m{b}_1,\dots,A\m{b}_\ell]$
  3. $\bmat{\m{a}_{1}B\\\vdots\\\m{a}_{m}B}$

(1) $A$, $B$の区分けの仕方から,任意の$i=1,\dots,m$に対して,

    \begin{align*}\m{a}_{i}=[a_{i1},\dots,a_{in}],\quad \m{b}_{i}=\bmat{b_{1i}\\\vdots\\b_{ni}}\end{align*}

であることに注意する.

また,定義から積$AB$の$(i,j)$成分は$\sum_{k=1}^{n}a_{ik}b_{kj}$であり,これは

    \begin{align*}\sum_{k=1}^{n}a_{ik}b_{kj}=a_{i1}b_{1j}+\dots+a_{in}b_{nj}=\m{a}_{i}\m{b}_{j}\end{align*}

と変形できるから,

    \begin{align*}AB=\bmat{\m{a}_1\m{b}_1&\dots&\m{a}_1\m{b}_\ell\\ \vdots&\ddots&\vdots\\ \m{a}_m\m{b}_1&\dots&\m{a}_m\m{b}_\ell}\end{align*}

が成り立つ.

(2) (1)の等式の第$j$列は

    \begin{align*}\bmat{\m{a}_1\m{b}_j\\\vdots\\\m{a}_m\m{b}_j}=\bmat{\m{a}_1\\\vdots\\\m{a}_m}\m{b}_j=A\m{b}_j\end{align*}

だから,積$AB$は

    \begin{align*}AB=[A\m{b}_1,\dots,A\m{b}_l]\end{align*}

と表せる.

(3) 同様に,(1)の等式の第$i$列は

    \begin{align*}[\m{a}_i\m{b}_1,\dots,\m{a}_i\m{b}_l]=\m{a}_{i}[\m{b}_1,\dots,\m{b}_l]=\m{a}_{i}B\end{align*}

だから,積$AB$は

    \begin{align*}AB=\bmat{\m{a}_{1}B\\\vdots\\\m{a}_{m}B}\end{align*}

と表せる.

コメント