コンテンツにスキップ

補足説明 ベクトル・行列#

ベクトル・行列に関連して本篇のなかで言及・引用した公式や定理について補足する記事です。

1. 行ベクトル・列ベクトル・行列#

1.1. 行ベクトル・列ベクトル・行列の定義#

m 行列ベクトル#

VRmV \in \mathbb{R}^mを以下のように縦方向に表記しm次元列ベクトルと呼ぶことにします。

M=(a1a2am) \begin{equation} M = \begin{pmatrix} a_{1}\newline a_{2}\newline \vdots \newline a_{m} \end{pmatrix} \end{equation}

このため列ベクトルは縦ベクトルとも呼ぶことがあります。

n 列行ベクトル#

URnU \in \mathbb{R}^nを以下のように横方向に表記しn次元行ベクトルと呼びます。

U=(a1,a2,,an) U = ( a_1, a_2, \ldots, a_n )

行ベクトルは横ベクトルとも呼ばれます。

m 行 n 列行列#

m次元の列ベクトルを横にn個並べたもの、あるいはn次元の行ベクトルを縦にm個並べたものをm行n列の行列と呼びます。

M=(a11a1na21a2nam1amn) \begin{equation} M = \begin{pmatrix} a_{11} & \ldots & a_{1n}\newline a_{21} & \ldots & a_{2n}\newline \vdots & \vdots & \vdots \newline a_{m1} & \ldots & a_{mn} \end{pmatrix} \end{equation}

転置ベクトル#

列ベクトルの要素を横に並び替える、あるいは行ベクトルの要素を縦に並び替えることをベクトルの転置とよび上添え字Tにより表記します。

VT=(a1a2an)T=(a1,a2,,an) \begin{equation} V^T =\left( \begin{array}{c} a_1 \newline a_2 \newline \vdots \newline a_n \end{array} \right) ^T = ( a_1, a_2, \ldots, a_n ) \end{equation}

ベクトルと同じように行、列の並びを列,行に入れ替えることを行列の転置とよび上添え字Tにより表記します。

UT=(a1,a2,,an)T=(a1a2an) \begin{equation} U^T = ( a_1, a_2, \ldots, a_n )^T = \left( \begin{array}{c} a_1 \newline a_2 \newline \vdots \newline a_n \end{array} \right) \end{equation}

転置行列#

MT=(a11a1na21a2nam1amn)T=(a11am1a12am2a1namn) \begin{equation} M^T = \begin{pmatrix} a_{11} & \ldots & a_{1n}\newline a_{21} & \ldots & a_{2n}\newline \vdots & \vdots & \vdots \newline a_{m1} & \ldots & a_{mn} \end{pmatrix}^T = \begin{pmatrix} a_{11} & \ldots & a_{m1}\newline a_{12} & \ldots & a_{m2}\newline \vdots & \vdots & \vdots \newline a_{1n} & \ldots & a_{mn} \end{pmatrix} \end{equation}

行列の演算#

列ベクトルは列数1の行列,行ベクトルは行数1の行列とみなせるので以下はベクトルと行列双方に当てはまる定義です。 - 加法

A+B:=(a11a1na21a2nam1amn)+(b11b1nb21b2nbm1bmn):=(a11+b11a1n+b1na21+b21a2n+b2nam1+bm1amn+bmn) \begin{equation} A + B := \begin{pmatrix} a_{11} & \ldots & a_{1n}\newline a_{21} & \ldots & a_{2n}\newline \vdots & \vdots & \vdots \newline a_{m1} & \ldots & a_{mn} \end{pmatrix} + \begin{pmatrix} b_{11} & \ldots & b_{1n}\newline b_{21} & \ldots & b_{2n}\newline \vdots & \vdots & \vdots \newline b_{m1} & \ldots & b_{mn} \end{pmatrix} := \begin{pmatrix} a_{11}+b_{11} & \ldots & a_{1n}+b_{1n}\newline a_{21}+b_{21} & \ldots & a_{2n}+b_{2n}\newline \vdots & \vdots & \vdots \newline a_{m1}+b_{m1} & \ldots & a_{mn}+b_{mn} \end{pmatrix} \end{equation}

  • スカラー倍

cA:=c(a11a1na21a2nam1amn):=(ca11ca1nca21ca2ncam1camn) \begin{equation} cA := c\begin{pmatrix} a_{11} & \ldots & a_{1n}\newline a_{21} & \ldots & a_{2n}\newline \vdots & \vdots & \vdots \newline a_{m1} & \ldots & a_{mn} \end{pmatrix} := \begin{pmatrix} c \cdot a_{11} & \ldots & c \cdot a_{1n}\newline c \cdot a_{21} & \ldots & c \cdot a_{2n}\newline \vdots & \vdots & \vdots \newline c \cdot a_{m1} & \ldots & c \cdot a_{mn} \end{pmatrix} \end{equation}

  • 乗法 ( m x n行列とn x k行列) A が m 行 n 列の行列,B が n 行 k 列の行列であるとする。

AB:=(a11a1na21a2nam1amn)×(b11b1kb21b2kbn1bnk):=(ina1ibi1ina1ibikina2ibi1ina2ibikinamibi1inamibik) \begin{equation} A B := \begin{pmatrix} a_{11} & \ldots & a_{1n}\newline a_{21} & \ldots & a_{2n}\newline \vdots & \vdots & \vdots \newline a_{m1} & \ldots & a_{mn} \end{pmatrix} \times \begin{pmatrix} b_{11} & \ldots & b_{1k}\newline b_{21} & \ldots & b_{2k}\newline \vdots & \vdots & \vdots \newline b_{n1} & \ldots & b_{nk} \end{pmatrix} := \begin{pmatrix} \sum_i^n a_{1i}b_{i1} & \ldots & \sum_i^n a_{1i}b_{ik}\newline \sum_i^n a_{2i}b_{i1} & \ldots & \sum_i^n a_{2i}b_{ik}\newline \vdots & \vdots & \vdots \newline \sum_i^n a_{mi}b_{i1} & \ldots & \sum_i^n a_{mi}b_{ik} \end{pmatrix} \end{equation}

  • 乗法 (行ベクトルと列ベクトル)
    u,v は n 次元列ベクトルであるとします。上記行列乗法の定義から結果は1 行1 列となるためスカラーとして表記します。

uTv:=(a11a1n)×(b11b21bn1):=ina1ibi1 \begin{equation} u^T v := \begin{pmatrix} a_{11} & \ldots & a_{1n}\newline \end{pmatrix} \times \begin{pmatrix} b_{11}\newline b_{21}\newline \vdots \newline b_{n1} \end{pmatrix} := \sum_i^n a_{1i}b_{i1} \end{equation}

  • 乗法 (列ベクトルと行ベクトル)
    u は m 次元列ベクトル,v は k 次元列ベクトルであるとします。上記行列乗法の定義から結果は m 行 k 列となりまする。

uvT:=(a1a2am)×(b1bk):=(a1b1a1bka2b1a2bkamb1ambk) \begin{equation} u v^T := \begin{pmatrix} a_{1}\newline a_{2}\newline \vdots \newline a_{m} \end{pmatrix} \times \begin{pmatrix} b_{1} & \ldots & b_{k} \end{pmatrix} := \begin{pmatrix} a_{1}b_{1} & \ldots & a_{1}b_{k}\newline a_{2}b_{1} & \ldots & a_{2}b_{k}\newline \vdots & \vdots & \vdots \newline a_{m}b_{1} & \ldots & a_{m}b_{k} \end{pmatrix} \end{equation}

区分行列#

以下の行列 A の要素 {aij}\lbrace a_{ij} \rbrace を縦 s 個,横 t 個の小行列に分割する

A=(a11a1na21a2nam1amn) \begin{equation} A = \begin{pmatrix} a_{11} & \ldots & a_{1n}\newline a_{21} & \ldots & a_{2n}\newline \vdots & \vdots & \vdots \newline a_{m1} & \ldots & a_{mn} \end{pmatrix} \end{equation}

A=(A11A1tA21A2tAs1Ast) \begin{equation} A = \begin{pmatrix} A_{11} & \ldots & A_{1t}\newline A_{21} & \ldots & A_{2t}\newline \vdots & \vdots & \vdots \newline A_{s1} & \ldots & A_{st} \end{pmatrix} \end{equation}

ここで

m1+...+ms=mn1+...+nt=n \begin{equation} m_1 + ... + m_s = m \newline n_1 + ... + n_t = n \end{equation}

このように行列を小行列のブロックに分割した記法を区分行列とよびます。そして区分けの仕方を $( m_1, ... m_s ; n_1 ,..., n_t ) $のように表記します。

区分行列に対しては以下の乗法公式が有用(証明略)。

AB:=(A11A1tA21A2tAs1Ast)×(B11B1uB21B2uBt1Btu):=(itA1iBi1itA1iBiuitA2iBi1itA2iBiuitAmiBi1itAsiBiu) \begin{equation} A B := \begin{pmatrix} A_{11} & \ldots & A_{1t}\newline A_{21} & \ldots & A_{2t}\newline \vdots & \vdots & \vdots \newline A_{s1} & \ldots & A_{st} \end{pmatrix} \times \begin{pmatrix} B_{11} & \ldots & B_{1u}\newline B_{21} & \ldots & B_{2u}\newline \vdots & \vdots & \vdots \newline B_{t1} & \ldots & B_{tu} \end{pmatrix} := \begin{pmatrix} \sum_i^t A_{1i}B_{i1} & \ldots & \sum_i^t A_{1i}B_{iu}\newline \sum_i^t A_{2i}B_{i1} & \ldots & \sum_i^t A_{2i}B_{iu}\newline \vdots & \vdots & \vdots \newline \sum_i^t A_{mi}B_{i1} & \ldots & \sum_i^t A_{si}B_{iu} \end{pmatrix} \end{equation}

ここで A は m 行 n 列の行列で,区分けは (m1,...ms;n1,...,nt)( m_1, ... m_s ; n_1 ,..., n_t )。B は n 行 p 列の行列で,区分けは (n1,...,nt;p1,...,pu)( n_1 ,..., n_t ; p_1 ,..., p_u )

逆行列#

AA を n 行 n 列の正方行列II を n 行 n 列の単位行列とするとき,n 行 n 列の行列 A1A^{-1}AAの逆行列であるとは以下の等式が成り立つことをいいます。逆行列を持つ行列は正則であると呼びます。

A1×A=A×A1=I \begin{equation} A^{-1} \times A = A \times A^{-1} = I \end{equation}

例)2次元の逆行列

A1=(a11a12a21a22)1=1a11a22a12a21(a22a12a21a11) \begin{equation} A^{-1} = \begin{pmatrix} a_{11} & a_{12}\newline a_{21} & a_{22} \end{pmatrix}^{-1} = \frac{1}{a_{11}a_{22}-a_{12}a_{21}}\begin{pmatrix} a_{22} & -a_{12}\newline -a_{21} & a_{11} \end{pmatrix} \end{equation}

良く使う事実

(1) (A1)1=A(A^{-1})^{-1} = A
(2) (AB)1=B1A1(AB)^{-1} = B^{-1}A^{-1}
(3) (AT)1=(A1)T(A^{T})^{-1} = (A^{-1})^T

一次独立(線形独立)#

n行k列の行列Mがあるとします。Mを構成するk個の列ベクトのなかからm個の列ベクトルをとってきたとします。このとき以下が成り立つならばm個の列ベクトルv1,...,vmv_1,...,v_mは一次独立であるといいます。行ベクトルに関しても定義は同様です。一次独立ではない場合一次従属であるといいます。

c1c2...cmc_1,c_2,...,c_mを任意の実数または複素数とするとき

c1v1+..+cmvm=0ならばc1=c2=...=cn=0 \begin{equation} c_1 v_1 + .. + c_m v_m = 0 \newline ならば \newline c_1 = c_2 = ... = c_n = 0 \end{equation}

例)単位行列を構成する列ベクトルはどれをとっても一次独立である。

(e1,...,en)(e_1,...,e_n)を単位行列を構成する単位列ベクトルとする

I=(100010001)=(e1,...,en) \begin{equation} I = \begin{pmatrix} 1 & 0 & \ldots & 0\newline 0 & 1 & \ldots & 0\newline \vdots & \vdots & \vdots & \vdots\newline 0 & 0 & \ldots & 1 \end{pmatrix} = (e_1,...,e_n) \newline \end{equation}

(c1,...,cn)(c_1,...,c_n)に対して

c1e1+..+cnen=0 \begin{equation} c_1 e_1 + .. + c_n e_n = 0 \newline \end{equation}

c1(100)+c2(010)++cn(001)=0 \begin{equation} \Rightarrow c1\left( \begin{array}{c} 1 \newline 0 \newline \vdots \newline 0 \end{array} \right) + c2\left( \begin{array}{c} 0 \newline 1 \newline \vdots \newline 0 \end{array} \right) + \cdot\cdot\cdot + c_n\left( \begin{array}{c} 0 \newline 0 \newline \vdots \newline 1 \end{array} \right) = 0 \end{equation}

(c1c2cn)=0 \begin{equation} \Rightarrow \left( \begin{array}{c} c_1 \newline c_2 \newline \vdots \newline c_n \end{array} \right) = 0 \end{equation}

c1=0,c2=0,...cn=0 \begin{equation} \Rightarrow c_1 = 0,c_2 =0,...c_n = 0 \end{equation}

例)一次従属の列ベクトルをもつ行列

M=(1100011000111001)=(x1,...,xn) \begin{equation} M = \begin{pmatrix} 1 & 1 & 0 & 0\newline 0 & 1 & 1 & 0\newline 0 & 0 & 1 & 1\newline 1 & 0 & 0 & 1 \end{pmatrix} = (x_1,...,x_n) \newline \end{equation}

このとき(c1,...,cn)(c_1,...,c_n)に対して

c1x1+..+cnxn=0 \begin{equation} c_1 x_1 + .. + c_n x_n = 0 \newline \end{equation}

(c1+c2c2+c3c3+c4c1+c4)=0 \begin{equation} \Rightarrow \left( \begin{array}{c} c_1 + c_2 \newline c_2 + c_3 \newline c_3 + c_4\newline c_1 + c_4 \end{array} \right) = 0 \end{equation}

c1+c2=0,c2+c3=0,c3+c4=0,c4+c1=0 \begin{equation} \Rightarrow c_1 +c_2 =0,c_2 +c_3 =0,c_3 +c_4 =0,c_4 +c_1 =0 \end{equation}

例えば c1=1,c2=1,c3=1,c4=1c_1 = 1,c_2 = -1,c_3 = 1, c_4 = -1の組み合わせをとれば方程式c1x1+..+cnxn=0c_1 x_1 + .. + c_n x_n = 0を満たすので、Mを構成する列ベクトルは一次従属の例になります。

2. 行列と線形方程式#

2.1. 行列の階数(ランク)#

n 行 k 列の行列を言考えます。これを k 個の列ベクトルとみたとき,一次独立の列ベクトルの最大個数を列階数(列ランク)と呼びます。列ランクが列数と一致しているとき列充足階数(列フルランク)であるといいます。同様に n 個の行ベクトルとみたとき,一次独立の行ベクトルの最大個数を行階数(行ランク)と呼びます。行ランクが行数と一致しているとき行充足階数(行フルランク)であるといいます。

列階数と行階数は一致#

列階数と行階数は常に一致します。この事実のため、行列の列ランク、行ランクを単にランクといっても同じ意味になります。証明は線形代数の教科書などを参照ください。列ランクと行ランクが常に一致するので、列フルランクの行列では必ず(行数)≧(列数)=(列階数)です。また、行フルランクの行列では必ず(列数)≧(行数)=(行階数)です。

従って、正方行列では列フルランクと行フルランクは同じになりますので単にフルランクといいます。 一方、非正方行列では、単にフルランクといった場合、行数と列数の小さい方にランク数が一致するときを言います。

逆行列の存在条件#

Aが正則であることと同値の命題がいくつか存在します。ここでは以下をあげておきます。行列式、固有値の定義、命題の証明等、詳細は線形代数の教科書を参照してください。

(1) Aがフルランクであること
(2) Aの行列式 det(a) がゼロではないこと
(3) Aの列ベクトルまたは行ベクトルが線形独立であること
(4) Aの固有値が全てゼロではないこと

ランク定理#

行列のランク定理は、線形代数における基本的な定理であり、行列の列空間と核(ヌル空間)の次元に関する関係を示すものです。まず、ランク定理を理解するために必要な概念を導入しておきます。

列空間:

m×nm \times n 行列 ARm×nA \in \mathbb{R}^{m \times n} の 列空間 とは、行列 AA の列ベクトルの線形結合によってつくられる Rm\mathbb{R}^m の部分空間です。この空間は AA によって定義される変換の像(Im(A))を表します。そして空間の次元が行列のランクに相当します。

Col(A):={yRmy=Ax,xRn} \text{Col(A)} := \{ y \in \mathbb{R}^m \mid y = A x, x \in \mathbb{R}^n \}

ヌル空間:

行列 AA の ヌル空間(核空間、カーネル空間ともいう) とは、次の方程式を満たすベクトル全体の集合からつくられるRn\mathbb{R}^n の部分空間です。

Null(A):={xRnAx=0} \text{Null(A)} := \{ x \in \mathbb{R}^n \mid A x = 0 \}

つまり、行列 AA を掛けたときにゼロベクトルになる入力ベクトルの集合です。

定理の主張:

行列 AAm×n m \times n の行列であるとき、次の等式が成り立つ。

rank(A)+dim(Null(A))=n \text{rank}(A) + \text{dim} (\text{Null}(A)) = n

ここで、

rank(A) \text{rank}(A) は行列のランク、つまり行列 AA の列空間の次元。
dim(Null(A)) \text{dim} (\text{Null}(A)) はヌル空間の次元。dim(Ker(A))\text{dim} (\text{Ker}(A))と表記されることもある。

定理は、Rn \mathbb{R}^n のベクトルは、列空間に属する部分と、ヌル空間に属する部分に分割できることを主張します。元の空間を分割する二つの独立した空間、というイメージから、列空間とヌル空間は直交すると表現することができます。このように空間が二つの直交する部分空間で分割できることを、以下のように直和と呼ぶ記号 \oplus を使って表現します。

Rn=Col(AT)Null(A) \mathbb{R}^n = \text{Col}(A^T) \oplus \text{Null}(A)

ここで、

Col(AT) \text{Col}(A^T) は行列 A A の転置 AT A^T の列空間(これは、元々の行列 A A の行空間とも一致します)。
Null(A) \text{Null}(A) は、行列 A A のヌル空間です。

例として、行列 AA を次のように考えます:

A=(121010000) A = \begin{pmatrix} 1 & 2 & 1 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{pmatrix}

行列 AA のランクを求めるために、まず AA の線形独立な列ベクトルを数えます。上の行列を見ると、1列目と2列目は線形独立ですが、3列目は1列目と2列目の線形結合です(実際、3列目は1列目の1倍です)。したがって、この行列のランクは2です。

rank(A)=2 \text{rank}(A) = 2

次に、ヌル空間(Ax=0 A x = 0 を満たす x x の空間)を考えます。この場合、ヌル空間の次元は 11 です。

dim(Null(A))=1 \text{dim} (\text{Null}(A)) = 1

ランク定理によると、次の関係が成り立ちます。

rank(A)+dim(Null(A))=2+1=3 \text{rank}(A) + \text{dim} (\text{Null}(A)) = 2 + 1 = 3

これは、行列 AA の列数(n=3 n = 3 )と一致します。

2.2. 行列の掃き出し法#

行列の掃き出し法は以下のような一般的な連立一次方程式を機械的に(かつ手作業で)解くためのアルゴリズムです。

a11x1+a12x2++a1nxn=b1a21x2+a22x2++a2nxn=b2...am1xm+am2x2++amnxn=bm \begin{equation} \begin{aligned} a_{11}x_1+a_{12}x_2+⋯+a_{1n}x_n &= b_1 \newline a_{21}x_2+a_{22}x_2+⋯+a_{2n}x_n & =b_2 \newline & ... \newline a_{m1}x_m+a_{m2}x_2+⋯+a_{mn}x_n & =b_m \newline \end{aligned} \end{equation}

掃き出し法は連立方程式の同値変形をく繰り返して最終的に非常に解きやすい形にすることを目標とします。この作業は行列で表現することにより非常に見通しがよくなるのです。このためにまず以下のように左辺の係数からなる行列Aに対して右辺の定数から作った列ベクトルb=(b1,...,bm)Tb= (b_1,...,b_m)^Tを右端に追加した下記の拡大係数行列 A~\tilde A を定義します。前出の区分行列の記法を使うならばA~\tilde AはブロックA,bで分割された区分行列であり,区分は (m;n,1) と言い換えることができます。

A~:=[Ab]:=(a11a12..a1nb1a21a22..a2nb2..........am1am2..amnbm) \begin{equation} \tilde A := [A|b] := \begin{pmatrix} \begin{array}{ccccc} a_{11} & a_{12} & .. & a_{1n} & b_1 \newline a_{21} & a_{22} & .. & a_{2n} & b_2 \newline .. & .. & .. & .. & .. \newline a_{m1} & a_{m2} & .. & a_{mn} & b_m \newline \end{array} \end{pmatrix} \end{equation}

さらに二つの用語を定義しておきましょう。

  • 行列の主成分
    行列 A の零ベクトルでない各行ベクトルに対して, その行のゼロでない最初の成分のことを, その行の主成分と呼びます。以下の例でいうと、第一行の3,第二行の2,第四行の1が主成分です。

例 M=(3100024500000001) \begin{equation} 例 M = \begin{pmatrix} 3 & 1 & 0 & 0\newline 0 & 2 & 4 & 5\newline 0 & 0 & 0 & 0\newline 0 & 0 & 0 & 1 \end{pmatrix} \end{equation}

  • 行列の基本変形
    行列に対する以下三種類の算法を施すことを行列の基本変形と呼びます。
  • ある行を定数倍する
  • ある行の定数倍を別の行に加える
  • ある行と別の行を入れ替える

前述の「非常に解きやすい形」とは行列が以下4条件を満たすことをいい、この行列を簡約行列とよびます。 1. 0 だけからなる行は, 0 以外の成分を持つ行よりも下に位置している. 2. 0 以外の値を持つ各行の主成分は全て 1 である. 3. 下方の行の主成分は上の行の主成分よりも右の列に位置している. 4. 各行の主成分が位置する列の上方の値はすべて0である.

簡約行列へと基本変形を繰り返すことで連立方程式を解くことができます。

【連立一次方程式を解く例】

{2x1+x2+x4=0x1+x2+x4=0x1+x3+x4=12x1+x4=1 \begin{equation} \left\lbrace \begin{array}{l} 2x_1 + x_2 + x_4 = 0 \newline x_1 + x_2 + x_4 = 0 \newline x_1 + x_3 + x_4 = 1 \newline 2x_1 + x_4 = 1 \end{array} \right. \end{equation}

 拡大係数行列 M=(21010110101011120011) \begin{equation}  拡大係数行列 M = \begin{pmatrix} 2 & 1 & 0 & 1 & 0 \newline 1 & 1 & 0 & 1 & 0 \newline 1 & 0 & 1 & 1 & 1 \newline 2 & 0 & 0 & 1 & 1 \end{pmatrix} \end{equation}

step1:1row2+row1row1step2:1row3+row2row2step3:1row1+row3row3step4:2row1+row4row4step5:1row3+row2row2step6:1row4+row3row3step7:1row4+row2row2 \begin{equation} \begin{aligned} step1 &: -1 * row2 + row1 \rightarrow row1 \newline step2 &: -1 * row3 + row2 \rightarrow row2 \newline step3 &: -1 * row1 + row3 \rightarrow row3 \newline step4 &: -2 * row1 + row4 \rightarrow row4 \newline step5 &: 1 * row3 + row2 \rightarrow row2 \newline step6 &: -1 * row4 + row3 \rightarrow row3 \newline step7 &: -1 * row4 + row2 \rightarrow row2 \newline \end{aligned} \end{equation}

 簡約行列 M~=(10000010010010000011) \begin{equation}  簡約行列 \tilde M = \begin{pmatrix} 1 & 0 & 0 & 0 & 0\newline 0 & 1 & 0 & 0 & -1\newline 0 & 0 & 1 & 0 & 0\newline 0 & 0 & 0 & 1 & 1 \end{pmatrix} \end{equation}

簡約行列より以下の解を得る。

x1=0x2=1x3=0x4=1 \begin{equation} x_1 = 0 \newline x_2 = -1 \newline x_3 = 0 \newline x_4 = 1 \end{equation}

連立一次方程式の解と係数行列の階数との関係

連立 1 次方程式 Ax=bAx = b に対して以下が成り立ちます。証明は線形代数の教科書を参照ください。

(1) Ax=bAx = b の解が存在するための必要十分条件は rank[Ab]=rankArank[A|b] = rank A である.
(2) Ax=bAx = b の解が存在するとき, 解の任意定数の個数は nrankAn − rank A である.
(3) c の解が唯一つであるための必要十分条件は, rank[Ab]=rankA=nrank[A|b] = rank A = n である.

さらに n 次正方行列 A において次は同値です。 (1) rankA=nrank A = n (2) A の簡約行列は 単位行列である, (3) 任意の n 次列ベクトル b について方程式 Ax=bAx = b は唯一つの解を持つ, (4) 方程式 Ax=bAx = b は唯一つの解 0 を持つ (5) A は可逆,すなわちAの逆行列はAそのものである。

2.3. ベクトルによる微分#

以下で c は定数。x は n 次元列ベクトル。f は x を変数とするスカラー関数。u は x を変数とする関数を要素にもつ m 次元列ベクトル。v は x を変数とする関数を要素にもつ m 次元行ベクトル。A,B は 定数を要素にもつ m 行 n 列の行列とします。

  • 定義

fx(fx1,...,fxn)uxx (u1...um)(u1/x1...u1/xn.........um/x1...um/xn)vxx (v1,...,vm)(v1/x1...vm/x1.........v1/xn...vm/xn) \begin{equation} \begin{aligned} \frac{ \partial f }{ \partial x } &\coloneqq (\frac{ \partial f }{ \partial x_1 },...,\frac{ \partial f }{ \partial x_n })\newline \frac{ \partial u }{ \partial x } &\coloneqq \frac{ \partial }{ \partial x } \begin{matrix} \left( \begin{array}{ccc} u_{1} \newline ... \newline u_{m} \end{array} \right) \end{matrix} \coloneqq \begin{matrix} \left( \begin{array}{ccc} \partial u_1 / \partial x_1 & ... & \partial u_1/ \partial x_n \newline ... & ... & ... \newline \partial u_m /\partial x_1 & ... & \partial u_m / \partial x_n \end{array} \right) \end{matrix} \newline \frac{ \partial v }{ \partial x } &\coloneqq \frac{ \partial }{ \partial x } (v_1,...,v_m) \coloneqq \begin{matrix} \left( \begin{array}{ccc} \partial v_1 / \partial x_1 & ... & \partial v_m/ \partial x_1 \newline ... & ... & ... \newline \partial v_1 /\partial x_n & ... & \partial v_m / \partial x_n \end{array} \right) \end{matrix} \end{aligned} \end{equation}

  • 公式

(AT)T=A(A+B)T=AT+BT(AB)T=BTATcx=0ATxx=AxTBx=BxTAxx=(A+AT)x \begin{equation} \begin{aligned} (A^T)^T &= A \newline (A+B)^T &= A^T + B^T \newline (AB)^T &= B^T A^T \newline \frac{ \partial c }{ \partial x } &= 0 \newline \frac{ \partial A^Tx }{ \partial x } &= A \newline \frac{ \partial x^TB }{ \partial x } &= B \newline \frac{ \partial x^TAx }{ \partial x } &= (A+A^T) x \end{aligned} \end{equation}

(注記) スカラー関数を式(2)のように行ベクトルとして定義するスタイルを分子レイアウトと呼びます。列ベクトルとして定義するスタイルは分母レイアウトと呼ばれます。公式はそれぞれのスタイルをベースとして一貫した使い方をする必要があります。

参考 英語版Wikipedia 

3. ベクトル空間#

3.1. ベクトル空間の定義#

以下の条件を満たす集合Vを実数 R\mathbb{R} また複素数 C\mathbb{C} 上のベクトル空間 V と呼びます。線形空間とも呼ばれます。

  • 可換律と結合率を満たすな加法が定義されている:
    uV,vVu+vVu\in V,v \in V \Rightarrow u + v \in V
    u+v=v+uu + v = v + u
    u+(v+w)=(u+v)+wu + (v + w) = (u + v) + w

  • スカラー倍が定義されている:
    任意のスカラーa( aRa \in \mathbb{R}またはaCa \in \mathbb{C})に対して uVauVu \in V \Rightarrow a u \in V

  • 零ベクトル 0\bold 0 が定義されている:
    uVau+0=uu \in V \Rightarrow a u + 0 = u

  • 逆元が存在する:
    uVu \in Vに対して加算すると零ベクトルになる元を-uと書きuの逆元と呼ぶ。u+(u)=0u + (-u) = 0

  • 加法とスカラー倍が混在した分配律が成り立つ:
    a(u+v)=au+ava(u+v) = au + av (a+b)u=au+bu(a+b)u = au + bu

  • スカラー倍とスカラー乗法が混在できる:
    a(bv)=(ab)va(bv) = (ab)v

本稿ではベクトル空間として有限次元の実数空間Rn\mathbb{R}^nあるいは複素数空間Cn\mathbb{C}^nのみを対象とするので特に断らない限り単にベクトル空間といえばこれらを指すものとします。

行ベクトル、列ベクトル#

有限次元の実数空間Rn\mathbb{R}^nあるいは複素数空間Cn\mathbb{C}^nの元から構成した列ベクトル、行ベクトルの演算の定義より、Rn\mathbb{R}^n,複素数空間Cn\mathbb{C}^nはベクトル空間になっていることがわかります。

ベクトルの一次独立#

ベクトル空間V内の要素v1v2...vnv_1,v_2,...,v_nが「一次独立」である,あるいは「線型独立」であるとは,どの要素も他の要素の一次結合(線型結合)で表すことができないことをいう。これは以下と同値です。

c1,c2,...,cnを任意の実数または複素数とするとき

c1v1+..+cnvn=0ならばc1=c2=...=cn=0 \begin{equation} c_1 v_1 + .. + c_n v_n = 0 \newline ならば \newline c1 = c2 = ... = cn = 0 \end{equation}

ベクトル空間の基底

ベクトル空間Vのなかから一次独立のベクトル(e1,..,rn)(e_1,..,r_n)を集めたとき,Vの任意の要素がそれらの一次結合で表すことができるとき(e1,..,rn)(e_1,..,r_n)をVの基底であるという。基底をなすベクトルの数nをベクトル空間の次元と呼称します。

基底に関する重要な事実

以下の事実の証明はベクトルの教科書を参照されたい。

  1. ベクトル空間には必ず基底が存在する
  2. 基底の要素の個数は一定である
  3. ベクトル空間の一次独立なベクトルがあったとき,他のベクトルを付け加えて基底とすることができる

3.2. 内積空間#

内積が定義されたベクトル空間は、内積空間(inner product space)と呼ばれ、これには内積(dot product)が追加され、ベクトルの大きさや角度、直交性などの概念が導入されます。本稿でも様々な事実の基盤となっていますのでここで基本事項を整理しておきます。

ベクトル空間 V V 上での内積とは、次の性質を持つ関数 (,) ⁣:V×VR ( \cdot, \cdot ) \colon V \times V \to \mathbb{R} (または C \mathbb{C} )であり、任意のベクトル u,v,wV u,v,w \in V とスカラー cR c \in \mathbb{R} (または C \mathbb{C} )について以下の条件を満たすことをいいます。

(1) 双線型性

  • 加法に対する線型性

    (u+v,w)=(u,w)+(v,w) ( u + v, w ) = ( u, w ) + ( v, w )

  • スカラー倍に対する線型性

    (cu,v)=c(u,v) ( c u , v ) = c ( u, v )

(2) 対称性

(u,v)=(v,u) ( u, v ) = ( v, u )

複素ベクトル空間では、対称性の代わりに次のエルミート対称性が成り立つこと。

(u,v)=(v,u) ( u, v ) = \overline{( v, u )}

ここで \overline{\cdot} は複素共役を意味します。

(3) 正定値性

(u,u)0,(u,u)=0    u=0 ( u, u ) \geq 0, \quad ( u, u ) = 0 \iff u = 0

内積空間の重要な性質を以下にまとめておきます。詳しい内容は線形代数の教科書を参照ください。

(1) ノルム(長さ)の定義

内積空間では、ベクトルの長さを測る尺度として、ノルムを次のように定義します。

v=(v,v) \| v \| = \sqrt{( v, v )}

(2) ベクトルの直交性

2つのベクトル u,vV u, v \in V が直交する(垂直である)とは、次が成り立つことを意味します。

(u,v)=0 ( u, v ) = 0

直交するベクトルは、互いに独立した方向を持つことを示しています。

(3) コーシー・シュワルツの不等式

内積空間において、次の重要な不等式が成り立ちます:

(u,v)uv |( u, v )| \leq \|u\| \|v\|

等号成立条件は、ベクトル u u v v が線形従属、すなわち同一方向である場合です。これは、ベクトルの内積が2つのベクトルの長さの積の間にあることを示しています。

(4) 三角不等式

内積空間におけるノルムに関して、次の不等式が成り立ちます:

u+vu+v \|u + v\| \leq \|u\| + \|v\|

これは、三角形の辺の長さがその2辺の長さの和より小さいことを示しています。

(5) ピタゴラスの定理

2つの直交するベクトル u,vV u, v \in V に対して、次が成り立ちます:

u+v2=u2+v2 \|u + v\|^2 = \|u\|^2 + \|v\|^2

これは、ピタゴラスの定理に対応しています。直交するベクトルの和のノルムの2乗は、各ベクトルのノルムの2乗の和に等しいという事実です。

(6) グラム・シュミットの正規直交化

有限次元内積空間において、与えられた線形独立なベクトル集合から正規直交基底を構成するためのアルゴリズムです。この手順では、与えられたベクトルを内積に基づいて直交化し、さらにそれらをノルムが 1 となるように正規化します。

  1. 最初のベクトル v1 v_1 を正規化して、最初の基底ベクトル e1 \mathbf{e}_1 とする。

    e1=v1v1 \mathbf{e}_1 = \frac{v_1}{\|v_1\|}

  2. 次に、2番目のベクトル v2 v_2 から e1 \mathbf{e}_1 方向の成分を除いて直交ベクトルを作る。

    u2=v2(v2,e1)e1 u_2 = v_2 - ( v_2, \mathbf{e}_1 ) \mathbf{e}_1

  3. u2 u_2 を正規化して e2 \mathbf{e}_2 を得る。
  4. これを繰り返して、すべてのベクトルに対して正規直交基底を作成する。

(7) スペクトル定理

実対称行列(またはエルミート行列)は、固有ベクトルによって対角化できます。この定理により、ベクトル空間上で自己共役作用素に対して内積の概念を利用してスペクトル分解を行うことができます。

(8) 内積空間における射影定理

内積空間 V V の部分空間 WV W \subset V に対して、任意の vV v \in V W W 上に射影することができます。このとき、v v は部分空間 W W のベクトルとその直交補空間のベクトルに分解できます:

v=w+w v = w + w^{\perp}

ここで、wW w \in W であり、w w^{\perp} W W と直交します。この射影は、最小二乗法や信号処理などに応用されます。

4. 線形方程式の解#

4.1. 解の存在条件#

未知のn×1 n \times 1 列ベクトル x x 、既知の係数 m×n m \times n 行列 A A  、そして既知の定数項 m×1 m \times 1 の列ベクトル b b  から作られる線形方程式があったとします。

Ax=b \begin{equation} \begin{aligned} A x = b \end{aligned} \end{equation}

この方程式の解の有無や形は、係数行列のランクと次元数、定数項ベクトルとの関係によって決まります。大別すれば、方程式の数が変数の数と一致する場合( m=nm = n )、方程式の数が変数の数よりも少ない場合(m<nm \lt n 、制約不足)、そして方程式の数が変数の数よりも多い場合( m>nm \gt n 、過剰制約)です

(1) m=nm = n のとき、AA正則行列であれば、逆行列 A1A^{-1} が存在します。従って以下がユニークな解となります。

xunique=A1b \begin{equation} \begin{aligned} x_{unique} = A^{-1} b \end{aligned} \end{equation}

(2) 制約不足 m<nm \lt n であり、b が A の列空間に属しかつ行列 AAランク落ち、すなわち m>rank(A)m \gt rank(A) であるならば、 AA に対応する ムーア・ペンローズ擬似逆行列を A+A^+ とすると、方程式は以下の式で表される無限個の解を持ちます。 zz は任意のn×1 n \times 1 行ベクトルです。

xany=A+b+(InA+A)z x_{any} = A^+ b + (I_n - A^+ A) z

(3) 制約不足 m<nm \lt n であり、b が A の列空間に属しかつ AAフルランク、すなわち m=rank(A)m = rank(A) であるならば、ペンローズ擬似逆行列 A+ =(ATA)1ATA^+ = (A^T A)^{-1} A^T が定義でき、P=AA+P = AA^+ は射影演算子の性質を持ちます。従って上記の特解は以下のように表現できます。

xunique=Pb=A(ATA)1ATb \begin{equation} \begin{aligned} x_{unique} = P b = A(A^T A)^{-1} A^T b \end{aligned} \end{equation}

(4) 過剰制約 m>nm \gt n の場合一般論として解が存在しない場合があります。しかし、最小二乗法を用いた近似解を常に求めることができます。実際、上出のペンローズ擬似逆行列 A+ =(ATA)1ATA^+ = (A^T A)^{-1} A^T から構成される以下の式が最小二乗解となります。

xleast squares=A+b  x_{least squares} = A^+ b 

ここで、

A+:=(ATA)1AT A^+ := (A^T A)^{-1}A^T`

(1)は自明なので、以下に(2),(3),(4)を順次説明します。

ムーア・ペンローズ擬似逆行列

説明の前提として、ムーア・ペンローズ擬似逆行列(Moore-Penrose pseudoinverse)を導入します。これは一般の(正方形ではない、またはランクが低い)行列に対して逆行列を一般化した非常に有用な概念です。

任意の行列 A+ A^+ は、次の4つの条件を満たす行列とします。

  1. AA+A=A A A^+ A = A
  2. A+AA+=A+ A^+ A A^+ = A^+
  3. (AA+)T=AA+ (A A^+)^T = A A^+
  4. (A+A)T=A+A (A^+ A)^T = A^+ A

これらの条件を満足する行列は一意に存在し、これをムーア・ペンローズ擬似逆行列と呼称します。

もしもこれらの条件を満たす A の擬似逆行列 Y,Z があったとします。定義式から以下となります。

Y=YAY=(YA)TY=(YAZA)TY=(ZA)T(YA)TY=(ZA)(YA)Y=ZAY \begin{equation} \begin{aligned} Y &= Y A Y \\ &= (Y A)^T Y \\ &= (Y A Z A)^T Y \\ &= (Z A)^T(Y A)^T Y \\ &= (Z A)(Y A) Y \\ &= Z A Y \\ \end{aligned} \end{equation}

同様に、

Z=ZAZ=Z(AZ)T=Z(AYAA)T=Z(AZ)T(AY)T=ZAZAY=ZAY \begin{equation} \begin{aligned} Z &= Z A Z \\ &= Z (A Z)^T \\ &= Z (A Y A A)^T \\ &= Z (A Z)^T (A Y)^T \\ &= Z A Z A Y \\ &= Z A Y \\ \end{aligned} \end{equation}

上記より Y=Zであり、解は存在した場合一意であることがわかります。

次に任意の行列 A に対応する疑似逆行列を必ず構成できることをしめします。そのために、一般のm×nm \times n 行列 Z は、次のように特異値分解と呼ばれる形式で表現できることに注目します。証明は線形代数の教科書を参照ください。

Z=UΣVT Z = U \Sigma V^T

ここで、 - U U m×m m \times m の直交行列(UTU=I U^T U = I ) - Σ \Sigma m×n m \times n の準対角行列で、 n×nn \times n 対称行列 ZTZZ^TZ の固有値の平方根を対角要素とする特異値行列です。

Σ=(σ1000σ2000) \Sigma = \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots \\ \end{pmatrix}

- V V n×n n \times n の直交行列(VTV=I V^T V = I )。

この性質を先の n×p n \times p 行列 AA に適用してえられる特異値行列 Σ \Sigma から Σ+\Sigma^+ を次のように構成します。

Σ+=(1σ10001σ20001σr) \Sigma^+ = \begin{pmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{1}{\sigma_r} \\ \end{pmatrix}

ただし、σi0\sigma_i \neq 0 の場合に限り、1σi\frac{1}{\sigma_i} とし、σi=0\sigma_i = 0 の場合はそのままゼロを保ちます。

そして、A+A^+ を次のように定義します。

A+=UΣ+VT \begin{equation} \begin{aligned} A^+ = U \Sigma^+ V^T \end{aligned} \end{equation}

こうして構成した行列A+A^+はムーア・ペンローズ擬似逆行列の定義式を満足することを確認できます。

射影演算子を構成できること

P:=AA+P := A A^+ と定義すると P は列空間への射影演算子の定義を満たすことがわかります。実際、擬似逆行列の定義を当てはめると、冪等性 P2=PP^2 =P は容易に確認できます。自己随伴性 PT=PP^T = P については、ATA^T の擬似逆行列 (AT)+(A^T)^+(A+)T(A^+)^T になることが4つの定義式からわかります。これを使うとPT=PP^T = P を導くことができます。

射影演算子の定義については線形代数の教科書を参照ください。あるいは wiki にも掲載されています。

4.2. 一般解の存在と式形#

2.1.項のランク定理の帰結として、未知ベクトル x の空間 Rn\mathbb{R}^n 以下のように直和分解できます。

Rn=Col(AT)Null(A) \mathbb{R}^n = \text{Col}(A^T) \oplus \text{Null}(A)

この分解式により、定数項ベクトル b が A の列空間に属する、すなわちbCol(A)b \in Col(A) ならば、対応する解 x の空間 Col(AT)Col(A^T) が {0}(要素がゼロベクトルのみ)空ではないことがわかります。これはとりもなおさず特解 xparticularx_{particular} が存在することを意味します。

そして、射影演算子の性質から、

Pb=b(AA+)b=bA(A+b)=b \begin{equation} \begin{aligned} P b &= b \\ (A A^+) b &= b \\ A (A^+ b) &= b \\ \end{aligned} \end{equation}

最後の等式から、解の一般形は以下で表現することができます。 InI_nn×nn \times n 単位行列、z を任意の n×1n \times 1 列ベクトルとして、

xany=xparticular+xnull=Pxany+(InP)xany=AA+b+(InAA+)z \begin{equation} \begin{aligned} x_{any} &= x_{particular} + x_{null} \\ &= P x_{any} + (I_n - P) x_{any} \\ &= A A^+ b + (I_n - A A^+) z \end{aligned} \end{equation}

ランク定理の主張は、n=rank(A)+dim(Null(A))n = rank(A) + dim(Null(A)) なので、ヌル空間の次元は nrank(A)n - rank(A) となります。従って A が制約不足(m<nm \lt n)の場合には、ヌル空間は {0} になりませんので、zの任意性の分、一般に解は無限個存在する、という結論になります。これで命題(2)を確認できました。

次に、A が制約不足(m<nm \lt n) かつ、b が A の列空間に属し、かつフルランク(rank(A)=mrank(A)=m) であるとしましょう。すると、まず A がフルランクであれば ATAA^T A も フルランクの正方行列ですから、2.1.項で挙げたランクの基本的性質より ATAA^T A は逆行列を持ちます。

行列 A+A^+ を以下のように定義します。

A+:=(ATA)1AT A^+ := (A^T A)^{-1}A^T

すると、A+A^+ はペンローズ・ムーアの疑似逆行列の定義を満たすことを確認できます。さらに、

P:=AA+ P := A A^+

を定義すると、正方行列の転置の逆行列は正方行列の逆行列の転置に等しいという一般的性質を思い出せば、行列 P が射影演算子の定義を満たすことを容易に確認できます。

ベクトル b が A の列空間に属するならば、これに射影演算子を作用させた先は自分自身になりますので、命題(3)を確認できました。

b=Pb=A(ATA)1ATb=A+b b = P b = A (A^T A)^{-1}A^T b = A^+ b

4.3. 最小二乗解#

A+ A^+ を用いて最小二乗法により Ax=b A x = b の近似解を得ることができることを確認していきます。

行列 ARm×n A \in \mathbb{R}^{m \times n} に対して、次の誤差(目的関数)を最小化する x x が最小二乗法による近似解です。

minXAxb2 \min_X \| Ax - b \|^2

誤差を二乗ノルムで表すと、次のようになります。

Axb2=(Axb)T(Axb) \| Ax - b \|^2 = (Ax - b)^T (Ax - b)

これを展開します:

Axb2=xTATAx2bTAx+bTb \| Ax - b \|^2 = x^T A^T A x - 2 b^T A x + b^T b

この関数を x x について最小化するためには、偏微分を行い、勾配がゼロとなる条件を求めます。参考まで、ベクトルの微分公式については2.3.項にまとめています。

誤差関数を x x で偏微分します:

x(xTATAx2bTAx+bTb)=2ATAx2ATb \frac{\partial}{\partial x} \left( x^T A^T A x - 2 b^T A x + b^T b \right) = 2A^T A x - 2A^T b

この式がゼロになる条件は:

ATAx=ATb A^T A x = A^T b

この方程式は、最小二乗法での正規方程式そのものです。そこで A+:=(ATA)1ATA^+ := (A^T A)^{-1}A^T を定義すれば、A+bA^+ b は上記の正規方程式の解であり、最小二乗解です。

そして、A+A^+ が疑似逆行列の定義を満たすことは容易に確認できます。上記より以下の最小二乗解を得ることができました。

xleast squares=A+b  x_{least squares} = A^+ b 

ここで、

A+:=(ATA)1AT A^+ := (A^T A)^{-1}A^T`

例えば、行列 AR3×2 A \in \mathbb{R}^{3 \times 2} とベクトル bR3 \mathbf{b} \in \mathbb{R}^3 が以下のような場合を考えます:

A=(123456),b=(789) A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix}, \quad \mathbf{b} = \begin{pmatrix} 7 \\ 8 \\ 9 \end{pmatrix}

この場合、行列 A A は正方行列ではないので、通常の逆行列は存在しません。しかし、ムーア・ペンローズ擬似逆行列 A+ A^+ を計算し、それを使って最小二乗解を求めることができます。

補足

補足説明 確率・統計 のなかで言及しました、線形回帰モデルの最良推定が最小二乗法推定であることを示すガウス・マルコフの定理の証明においては、線形方程式の一般解の性質を利用しています。

ガウス・マルコフの定理の証明では、ここで記述したベクトル方程式を以下のように、既知の係数行列 XRn×pX \in \mathbb{R}^{n \times p} と未知の係数行列 ARp×nA \in \mathbb{R}^{p \times n} に対する行列方程式へと応用する必要があります。

AX=Ip A X = I_p

この節での説明を未知行列Aの各列ベクトルに対して、適用することによって、以下の一般解を得ることができます。

A=(XTX)1XT+C(InX(XTX)1XT) A = (X^T X)^{-1} X^T + C (I_n - X (X^T X)^{-1} X^T)