特異値分解
任意の m×n 行列を片側ヤコビ法で A = U Σ Vᵀ に分解します。特異値は通常無理数なので、このツールは数値計算です。
計算済み
行列を入力して分解しましょう。
入力行列 A3×2
特異値(Σ の対角成分)
0.00000.0000
ランク: 0
U
0
0
0
0
0
0
Σ(対角行列として)
0
0
0
0
Vᵀ
1
0
0
1
A = U · Σ · Vᵀ
仕組み
- 1
特異値分解(A = U Σ Vᵀ)
入力は 3×2。片側ヤコビ回転で A の列ペアを直交化します。
- 目標:A = U Σ Vᵀ と分解する。U(m×r)と V(n×r)は正規直交列をもち、Σ は非負の特異値の対角行列です。
- 方法:片側ヤコビ法 — すべての列ペアが直交するまで、A の列ペア (i, j) を繰り返し回転します。
- 収束後:σₖ = ‖(回転後の A)ₖ‖、Uₖ = (回転後の A)ₖ / σₖ、V は回転を蓄積します。
- 2
収束
ヤコビ法は 1 回の掃き出しと 0 回の回転で収束しました。すべての列ペアが許容誤差内で直交しています。
- Per-pair skip rule: |γ| ≤ 1e-12 · √(αβ), where α = ‖Bᵢ‖², β = ‖Bⱼ‖², γ = 2·Bᵢ·Bⱼ.
- Jacobi angle: ζ = (β − α) / γ, t = sign(ζ) / (|ζ| + √(1 + ζ²)), c = 1/√(1+t²), s = t·c.
- Each rotation [[c, s], [−s, c]] is applied to columns i, j of both B and V.
- 3
特異値とランク
2 個の特異値が見つかりました。ランク = 0。
- σ = [0, 0]
- 各 σₖ は回転後の A の列ノルムで、降順に並べてあります。
- 2 個の特異値がランク許容誤差 1e-9 未満です(数値的にゼロ)。
- 4
再構成の検証
‖A − U Σ Vᵀ‖_F ≈ 0.000e+0(数値精度の範囲でほぼ 0 のはずです)。
- U (3×2):
- [ 0, 0 ] [ 0, 0 ] [ 0, 0 ]
- Σ (diagonal): [0, 0]
- V (2×2):
- [ 1, 0 ] [ 0, 1 ]