Linear Algebras


Remark 1.0.0
このページは工事中です.

導入

Theorem 2.0.1
rank(A)=r>0\mathop{\mathrm{rank}}(A) = r>0 である m×nm \times n 行列 A∈Matm,n(R)A\in \mathop{\mathrm{Mat}}_{m,n}(\mathbb R) に対して次の式を満たす nn 次直交行列 U∈O(n)U\in O(n), mm 次直交行列 V∈O(m)V\in O(m), および正の広義単調減少列 σ1≥σ2≥⋯≥σr>0\sigma_1\geq \sigma_2 \geq \dots \geq \sigma_r > 0 が存在する:

A=UΣV⊤, A = U \Sigma V^{\top}, Σ=[σ10…………00σ20………0⋮0⋱0……⋮0…0σr0…000000…0⋮⋮⋮⋮⋮⋱000000…0]. \Sigma = \begin{bmatrix} \sigma_1 & 0 & \dots & \dots & \dots & \dots & 0 \\ 0 & \sigma_2 & 0 & \dots & \dots & \dots & 0 \\ \vdots & 0 & \ddots & 0 & \dots & \dots & \vdots \\ 0 & \dots & 0 & \sigma_r & 0 & \dots & 0 \\ 0 & 0 & 0 & 0 & 0 & \dots & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & 0 \\ 0 & 0 & 0 & 0 & 0 & \dots & 0\\ \end{bmatrix}_{\textstyle .}

ここで, (2) における Σ\Sigma は 1≤i≤r1\leq i \leq r のとき (i,i)(i,i) 成分が σi\sigma_i でありそれ以外の成分はすべて 0 である行列である. (1) の右辺を AA の特異値分解とよび, σ1,σ2,…,σr\sigma_1,\sigma_2,\dots,\sigma_r を特異値とよぶ.

記号の準備

Definition 2.1.1 (記号の準備)

  • R\mathbb R は実数のなす集合とする. x∈Rx\in\mathbb R と表記されていたら, "xx は実数である"と解釈する.

  • A≔BA \coloneqq B と書かれていたら AA を BB で定義するという意味である.

  • Matm,n(R)\mathop{\mathrm{Mat}}_{m,n}(\mathbb R) は mm 行 nn 列の成分が R\mathbb R の行列の集合をあらわす. m=nm=n であれば Matm,n(R)\mathop{\mathrm{Mat}}_{m,n}(\mathbb R) を Matm(R)\mathop{\mathrm{Mat}}_{m}(\mathbb R) と略記することもある. ここでは行列の成分が実数のみの場合を扱う.

  • A∈Matn(R)A\in\mathop{\mathrm{Mat}}_{n}(\mathbb R) はしばしば nn 次正方行列とよばれる.

  • 行列 A∈Matm,n(R)A\in\mathop{\mathrm{Mat}}_{m,n}(\mathbb R) に対して A⊤A^\top は AA の転置行列を表す. 定義により A⊤∈Matn,m(R)A^\top\in\mathop{\mathrm{Mat}}_{n,m}(\mathbb R) である.

  • λ1,…,λn∈R\lambda_1,\dots,\lambda_n\in \mathbb R に対して , diag(λ1,λ2,…,λn)\mathop{\mathrm{diag}}(\lambda_1, \lambda_2,\dots,\lambda_n) を (i,i)(i,i) - 成分が λi\lambda_i である対角行列とする. すなわち,

diag(λ1,λ2,…,λn)=[λ1λ2⋱λn] \mathop{\mathrm{diag}}(\lambda_1, \lambda_2,\dots,\lambda_n) = \begin{bmatrix} \lambda_1 & & &\\ & \lambda_2 & &\\ & & \ddots & \\ & & & \lambda_n\\ \end{bmatrix}

と定義する.

  • O(n)O(n) は U⊤U=UU⊤=InU^\top U = U U^\top=I_n を満たす U∈Matn(R)U\in \mathop{\mathrm{Mat}}_n(\mathbb R) がなす集合とする:

O(n)={U∈Matn(R)∣U⊤U=UU⊤=In} O(n) = \{U\in \mathop{\mathrm{Mat}}_{n}(\mathbb R) \mid U^\top U = U U^\top=I_n\}

Definition 2.1.2

  • 二つの nn 次元ベクトル x,y∈Rn\bm{x}, \bm{y}\in\mathbb R^n に対する標準内積を ⟨x,y⟩\left\langle \bm{x},\bm{y}\right\rangle を次で定義する:

⟨x,y⟩=∑i=1nxiyiforx=[x1x2⋮xn], y=[y1y2⋮yn]. \left\langle \bm{x},\bm{y} \right\rangle = \sum_{i=1}^n x_i y_i \quad \mathrm{for} \quad \bm{x} = \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} ,\ \bm{y} = \begin{bmatrix}y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix}_{\textstyle .}
  • またベクトル v\bm{v} のノルムは ∥v∥=⟨v,v⟩\left\lVert \bm{v}\right\rVert=\sqrt{\left\langle \bm{v}, \bm{v}\right\rangle} で定める.

ここで InI_n は単位行列である.

証明のための準備

実対称行列

Definition 3.1.1 (実対称行列)
nn 次正方行列 AA, すなわち, A∈Matn(R)A\in\mathop{\mathrm{Mat}}_{n}(\mathbb R) に対して AT=AA^T = A を満たすものを対称行列と呼ぶ. 特に成分が実数であることを強調する場合は実対称行列と呼ぶ.

Proposition 3.1.2 (実対称行列の対角可能性)
nn 次対称行列 AA は適当な直交行列により対角化できる. すなわち, 次の条件を満たす U∈O(n)U\in O(n) 及び λ1,λ2,…,λn∈R\lambda_1,\lambda_2,\dots,\lambda_n\in\mathbb R が存在する:

A=Udiag(λ1,λ2,…,λn)U⊤. A = U \mathop{\mathrm{diag}}(\lambda_1,\lambda_2,\dots,\lambda_n) U^\top.

さらに λi (1≤i≤n)\lambda_i\ (1\leq i \leq n) は AA の固有値になる.

二次形式

Definition 3.2.1 (二次形式)

  • AA を nn 次実対称行列とする. x∈Rn\bm{x}\in\mathbb R^n に対して qA(x)=x⊤Axq_A(\bm{x}) = \bm{x}^\top A \bm{x} を AA が定める二次形式 (quadratic form) と呼ぶ. x=[x1,…,xn]⊤\bm{x}=\left[x_1,\dots,x_n\right]^\top, A=[aij]i,j=1nA=[a_{ij}]_{i,j=1}^{n} と成分表示した場合に, qA(x)q_A(\bm{x}) は次のようになる:

qA(x)=∑i,j=1naijxixj=∑i=1naiixi2+2∑1≤i<j≤naijxixj. q_A(\bm{x}) = \sum_{i,j=1}^n a_{ij}x_ix_j = \sum_{i=1}^n a_{ii}x_i^2 + 2\sum_{1\leq i < j\leq n} a_{ij}x_i x_j.
  • また, 二次形式は次のように内積を用いて表すことができることに注意する:

qA(x)=x⊤Ax=⟨x,Ax⟩. q_A(\bm{x}) = \bm{x}^\top A \bm{x} = \left\langle \bm{x},A\bm{x} \right\rangle.

Example

ここでは qA(x)q_A(\bm{x}) を SymPy.jl を用いて具体的に記述してみよう.

Example 3.2.2 (n=2n=2 の場合)

using SymPy

@vars x1 x2 real=true
@vars a11 a12 real=true
@vars a21 a22 real=true

a21 = a12
A = [
a11 a12
a21 a22
]

x=[
  x1
  x2
]
MyUtils.fdsympy(x'A*x |> expand)
a11x12+2a12x1x2+a22x22a_{11} x_{1}^{2} + 2 a_{12} x_{1} x_{2} + a_{22} x_{2}^{2}

Example 3.2.3 (n=3n=3 の場合)

using SymPy

@vars x1 x2 x3 real=true
@vars a11 a12 a13 real=true
@vars a21 a22 a23 real=true
@vars a31 a32 a33 real=true

a21 = a12
a31 = a13
a32 = a23

A = [
a11 a12 a13
a21 a22 a23
a31 a32 a33
]

x=[
  x1
  x2
  x3
]
MyUtils.fdsympy(x'A*x |> expand)
a11x12+2a12x1x2+2a13x1x3+a22x22+2a23x2x3+a33x32a_{11} x_{1}^{2} + 2 a_{12} x_{1} x_{2} + 2 a_{13} x_{1} x_{3} + a_{22} x_{2}^{2} + 2 a_{23} x_{2} x_{3} + a_{33} x_{3}^{2}

半正定値/正定値行列

Definition 3.3.1 (半正定値)
nn 次実対称行列 AA が半正定値行列であるとは, 任意の x∈Rn∖{0}\bm{x}\in \mathbb R^n\setminus \{\bm{0}\} に対して qA(x)≥0q_A(\bm{x}) \geq 0 が成り立つことである.

Definition 3.3.2 (正定値)
nn 次実対称行列 AA が正定値行列であるとは, 任意の x∈Rn∖{0}\bm{x}\in \mathbb R^n\setminus \{\bf{0}\} に対して qA(x)>0q_A(\bm{x}) > 0 が成り立つことである.

Proposition 3.3.3
nn 次半正定値行列 AA の固有値は全て 0 以上である.


λ\lambda を AA の固有値とし v≠0\bm{v}\neq \bm{0} をその対応する固有ベクトルとする. この時

0≤qA(v)=⟨v,Av⟩=⟨v,λv⟩=λ∥v∥2 0 \leq q_A(\bm{v}) = \left\langle \bm{v},A\bm{v}\right\rangle = \left\langle \bm{v},\lambda\bm{v}\right\rangle = \lambda \left\lVert \bm{v}\right\rVert^2

という計算から λ\lambda は 0 以上であることが従う.


Proposition 3.3.4
nn 次正定値行列 AA の固有値は全て 0 より真に大きい.


3.3.3 の証明と同様である. (11) と同様の記号のもとで

0<qA(v)=λ∥v∥2 0 < q_A(\bm{v}) = \lambda \left\lVert \bm{v}\right\rVert^2

が従うことから λ>0\lambda>0 が従う.


Proposition 3.3.5
A∈Matm,n(R)A\in\mathop{\mathrm{Mat}}_{m,n}(\mathbb R) に対して A⊤A∈Matm(R)A^\top A\in \mathop{\mathrm{Mat}}_m(\mathbb R), AA⊤∈Matn(R)AA^\top\in\mathop{\mathrm{Mat}}_n(\mathbb R) は半正値行列になる.


B≔A⊤AB \coloneqq A^\top A の場合に示す. x∈Rm\bm{x}\in\mathbb R^m に対して

qB(x)=⟨x,A⊤Ax⟩=⟨Ax,Ax⟩=∥Ax∥≥0 q_{B}(x) = \left\langle \bm{x}, A^\top A \bm{x}\right\rangle = \left\langle A \bm{x}, A\bm{x}\right\rangle = \left\lVert A\bm{x}\right\rVert \geq 0

となることから BB は半正定値であることがわかった.


特異値分解の導出

λ1≥λ2≥⋯≥λr>λr+1=⋯=λn=0 \lambda_1\geq\lambda_2\geq\dots\geq\lambda_r>\lambda_{r+1}=\dots=\lambda_{n} = 0

と表記する. ここで rr は重複度も込めた正の固有値の数とする. rr は rank(A⊤A)\mathop{\mathrm{rank}}(A^\top A) と等しい. また ui\bm{u}_i を λi\lambda_i の固有値に対応する固有ベクトルとする:

Aui=λiui A \bm{u}_i = \lambda_i \bm{u}_i

Lemma 4.0.1
Aui (1≤i≤r)A\bm{u}_i\ (1\leq i \leq r) は AA⊤AA^\top の固有ベクトルになる.


vi≔Aui\bm{v}_i \coloneqq A\bm{u}_i とおく. これが固有ベクトルの定義を満たせば良い:

(AA⊤)vi=(AA⊤)(Aui)=A(A⊤Aui)=λiAui=λivi. (A A^\top) \bm{v}_i=(A A^\top) (A\bm{u}_i) = A(A^\top A \bm{u}_i) = \lambda_i A \bm{u}_i=\lambda_i \bm{v}_i.


Lemma 4.0.2
vi≔Aui(1≤i≤r)\bm{v}_i \coloneqq A \bm{u}_i \quad (1\leq i \leq r) は Rm\mathbb R^m における一次独立なベクトルの組みである.


∑i=1mcivi=0 \sum_{i=1} ^m c_i \bm{v}_i = \bm{0}

とした場合


μ1≥μ2≥⋯≥μs>μs+1=⋯=μm=0 \mu_1 \geq \mu_2 \geq \dots \geq \mu_s > \mu_{s+1} = \dots = \mu_m = 0

と表記する. vi\bm{v}_i を μi\mu_i に対応する固有ベクトルとする. ss は AA⊤A A^\top の固有値で重複度も込めて 0 よりも大きい物の個数とする. 補題

4.0.1 によって s≥rs\geq r が従う. 同様に A⊤vi (1≤i≤j)A^\top \bm{v}_i\ (1\leq i\leq j) は A⊤AA^\top A の固有ベクトルとなることが示されるので s≤rs\leq r となる. つまり s=rs=r が従う.

Proposition 4.0.3

  • A⊤AA^\top A と AA⊤A A^\top は共通した正の固有値を持つ.

  • rank(A⊤A)=rank(AA⊤)\mathop{\mathrm{rank}}(A^\top A) = \mathop{\mathrm{rank}}(A A^\top)

  • vi=12Aui (1≤i≤r)\bm{v}_i = \frac{1}{2} A \bm{u}_i\ (1\leq i \leq r) は正規直交系をなす.

Lemma 4.0.4
Matm,n(R)\mathop{\mathrm{Mat}}_{m,n}(\mathbb R) に対して次が成り立つ:

Ker(A⊤A)=Ker(A). \mathop{\mathrm{Ker}}(A^\top A) = \mathop{\mathrm{Ker}}(A).