Remark 1.0.0
このページは工事中です.
Theorem 2.0.1
rank(A)=r>0 である m×n 行列 A∈Matm,n(R) に対して次の式を満たす n 次直交行列 U∈O(n), m 次直交行列 V∈O(m), および正の広義単調減少列 σ1≥σ2≥⋯≥σr>0 が存在する:
A=UΣV⊤,
Σ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡σ10⋮00⋮00σ20…0⋮0…0⋱00⋮0……0σr0⋮0………00⋮0……………⋱…00⋮0000⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤.
ここで, (2) における Σ は 1≤i≤r のとき (i,i) 成分が σi でありそれ以外の成分はすべて 0 である行列である. (1) の右辺を A の特異値分解とよび, σ1,σ2,…,σr を特異値とよぶ.
Definition 2.1.1 (記号の準備)
R は実数のなす集合とする. x∈R と表記されていたら, "x は実数である"と解釈する.
A:=B と書かれていたら A を B で定義するという意味である.
Matm,n(R) は m 行 n 列の成分が R の行列の集合をあらわす. m=n であれば Matm,n(R) を Matm(R) と略記することもある. ここでは行列の成分が実数のみの場合を扱う.
A∈Matn(R) はしばしば n 次正方行列とよばれる.
行列 A∈Matm,n(R) に対して A⊤ は A の転置行列を表す. 定義により A⊤∈Matn,m(R) である.
λ1,…,λn∈R に対して , diag(λ1,λ2,…,λn) を (i,i) - 成分が λi である対角行列とする. すなわち,
diag(λ1,λ2,…,λn)=⎣⎢⎢⎢⎡λ1λ2⋱λn⎦⎥⎥⎥⎤
と定義する.
O(n)={U∈Matn(R)∣U⊤U=UU⊤=In}
Definition 2.1.2
二つの n 次元ベクトル x,y∈Rn に対する標準内積を ⟨x,y⟩ を次で定義する:
⟨x,y⟩=i=1∑nxiyiforx=⎣⎢⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎥⎤, y=⎣⎢⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎥⎤.
またベクトル v のノルムは ∥v∥=⟨v,v⟩ で定める.
ここで In は単位行列である.
Definition 3.1.1 (実対称行列)
n 次正方行列
A, すなわち,
A∈Matn(R) に対して
AT=A を満たすものを対称行列と呼ぶ. 特に成分が実数であることを強調する場合は実対称行列と呼ぶ.
Proposition 3.1.2 (実対称行列の対角可能性)
n 次対称行列 A は適当な直交行列により対角化できる. すなわち, 次の条件を満たす U∈O(n) 及び λ1,λ2,…,λn∈R が存在する:
A=Udiag(λ1,λ2,…,λn)U⊤.
さらに λi (1≤i≤n) は A の固有値になる.
Definition 3.2.1 (二次形式)
A を n 次実対称行列とする. x∈Rn に対して qA(x)=x⊤Ax を A が定める二次形式 (quadratic form) と呼ぶ. x=[x1,…,xn]⊤, A=[aij]i,j=1n と成分表示した場合に, qA(x) は次のようになる:
qA(x)=i,j=1∑naijxixj=i=1∑naiixi2+21≤i<j≤n∑aijxixj.
qA(x)=x⊤Ax=⟨x,Ax⟩.
ここでは qA(x) を SymPy.jl を用いて具体的に記述してみよう.
Example 3.2.2 (n=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+a22x22
Example 3.2.3 (n=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+a33x32
Definition 3.3.1 (半正定値)
n 次実対称行列
A が半正定値行列であるとは, 任意の
x∈Rn∖{0} に対して
qA(x)≥0 が成り立つことである.
Definition 3.3.2 (正定値)
n 次実対称行列
A が正定値行列であるとは, 任意の
x∈Rn∖{0} に対して
qA(x)>0 が成り立つことである.
Proposition 3.3.3
n 次半正定値行列
A の固有値は全て 0 以上である.
λ を A の固有値とし v=0 をその対応する固有ベクトルとする. この時
0≤qA(v)=⟨v,Av⟩=⟨v,λv⟩=λ∥v∥2
という計算から λ は 0 以上であることが従う.
Proposition 3.3.4
n 次正定値行列
A の固有値は全て 0 より真に大きい.
3.3.3 の証明と同様である. (11) と同様の記号のもとで
0<qA(v)=λ∥v∥2
が従うことから λ>0 が従う.
Proposition 3.3.5
A∈Matm,n(R) に対して
A⊤A∈Matm(R),
AA⊤∈Matn(R) は半正値行列になる.
B:=A⊤A の場合に示す. x∈Rm に対して
qB(x)=⟨x,A⊤Ax⟩=⟨Ax,Ax⟩=∥Ax∥≥0
となることから B は半正定値であることがわかった.
いよいよ, 2.0.1 の証明に入る. ゼロでない行列 A∈Matm,n(R) に対する特異値分解の証明に入る.
命題 3.3.3 及び 3.3.5 から A⊤A は半正定値行列であるため全ての固有値は 0 以上である. そこで A⊤A∈Matn(R) の固有値を大きい順に並べ
λ1≥λ2≥⋯≥λr>λr+1=⋯=λn=0
と表記する. ここで r は重複度も込めた正の固有値の数とする. r は rank(A⊤A) と等しい. また ui を λi の固有値に対応する固有ベクトルとする:
Aui=λiui
Lemma 4.0.1
Aui (1≤i≤r) は
AA⊤ の固有ベクトルになる.
vi:=Aui とおく. これが固有ベクトルの定義を満たせば良い:
(AA⊤)vi=(AA⊤)(Aui)=A(A⊤Aui)=λiAui=λivi.
Lemma 4.0.2
vi:=Aui(1≤i≤r) は
Rm における一次独立なベクトルの組みである.
i=1∑mcivi=0
とした場合
μ1≥μ2≥⋯≥μs>μs+1=⋯=μm=0
と表記する. vi を μi に対応する固有ベクトルとする. s は AA⊤ の固有値で重複度も込めて 0 よりも大きい物の個数とする. 補題
4.0.1 によって s≥r が従う. 同様に A⊤vi (1≤i≤j) は A⊤A の固有ベクトルとなることが示されるので s≤r となる. つまり s=r が従う.
Proposition 4.0.3
A⊤A と AA⊤ は共通した正の固有値を持つ.
rank(A⊤A)=rank(AA⊤)
vi=21Aui (1≤i≤r) は正規直交系をなす.
Lemma 4.0.4
Matm,n(R) に対して次が成り立つ:
Ker(A⊤A)=Ker(A).