奇异值分解

用单侧雅可比方法把任意 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。使用单边 Jacobi 旋转把 A 的列两两正交化。

    • 目标:分解 A = U Σ Vᵀ,其中 U(m×r)和 V(n×r)的列标准正交,Σ 为非负奇异值构成的对角阵。
    • 方法:单边 Jacobi —— 反复旋转 A 的列对 (i, j),直到每对列都正交。
    • 收敛后:σₖ = ‖(旋转后 A)ₖ‖,Uₖ = (旋转后 A)ₖ / σₖ,V 累积所有旋转。
  2. 2

    收敛

    Jacobi 经过 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 ]