特異値分解

任意の 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. 1

    特異値分解(A = U Σ Vᵀ)

    入力は 3×2。片側ヤコビ回転で A の列ペアを直交化します。

    • 目標:A = U Σ Vᵀ と分解する。U(m×r)と V(n×r)は正規直交列をもち、Σ は非負の特異値の対角行列です。
    • 方法:片側ヤコビ法 — すべての列ペアが直交するまで、A の列ペア (i, j) を繰り返し回転します。
    • 収束後:σₖ = ‖(回転後の A)ₖ‖、Uₖ = (回転後の A)ₖ / σₖ、V は回転を蓄積します。
  2. 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. 3

    特異値とランク

    2 個の特異値が見つかりました。ランク = 0。

    • σ = [0, 0]
    • 各 σₖ は回転後の A の列ノルムで、降順に並べてあります。
    • 2 個の特異値がランク許容誤差 1e-9 未満です(数値的にゼロ)。
  4. 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 ]