当前阶段:步骤 0
x = -
V^T x = -
Sigma V^T x = -
A x = -
sigma = -
原始单位球
变换中的几何体
输入向量 x
V^T x
Sigma V^T x
A x

样例输入向量 x

拖动后会自动归一化到单位球表面,便于观察单位球如何被变换。
0.82
0.36
0.44

SVD 分解的 3D 几何直觉

目标:把一个三维线性变换 \(A\) 看成三步完成:先用 \(V^T\) 旋转输入方向,再用 \(\Sigma\) 沿三个正交方向拉伸/压缩,最后用 \(U\) 把结果整体旋转到最终朝向。也就是:

\[ A = U \Sigma V^T \]

怎么观察这个动画

左侧灰色线框是原始单位球,蓝色线框是“当前已经施加的变换”。你可以点“下一步”逐步看 \(V^T\)、\(\Sigma\)、\(U\) 分别做了什么,也可以拖动下方滑动条改变输入向量 \(x\)。

步骤 0: 准备一个单位球和输入向量

把所有长度为 1 的向量放在一起,就构成一个单位球。理解 SVD 的经典方法,就是观察矩阵 \(A\) 如何把这个球变成一个椭球。

\[ x \in \mathbb{R}^3,\quad \|x\| = 1 \]

步骤 1: 先施加 \(V^T\)

\(V^T\) 是一个正交矩阵,本质上只做旋转或镜像,不改变长度。它的作用是把原始输入坐标系,转到“最适合被缩放”的主方向坐标系里。

\[ x_1 = V^T x \]

注意此时球体形状不会改变,但输入向量和局部主轴方向已经变了。

步骤 2: 再施加 \(\Sigma\)

\(\Sigma\) 是对角矩阵,只会沿三个互相垂直的主方向分别缩放。三个对角元素 \(\sigma_1,\sigma_2,\sigma_3\) 就是奇异值。

\[ \Sigma = \begin{bmatrix} \sigma_1 & 0 & 0 \\ 0 & \sigma_2 & 0 \\ 0 & 0 & \sigma_3 \end{bmatrix} \]

单位球在这一步会直接变成一个椭球,椭球三条半轴长度就是奇异值。

步骤 3: 最后施加 \(U\)

\(U\) 也是正交矩阵,所以它不会再改变椭球半轴长度,只负责把已经拉伸好的椭球整体转到最终输出方向。

\[ A x = U (\Sigma (V^T x)) \]

因此,奇异值负责尺度,\(V\) 决定输入主方向,\(U\) 决定输出主方向。

步骤 4: 几何意义总结

从几何上看,SVD 说的是:任何线性变换都可以拆成“旋转坐标系 + 沿主轴缩放 + 再旋转”。这也是为什么 SVD 在 3D 形变、点云配准、压缩和最小二乘中都很重要。

\[ A(\text{单位球}) = \text{椭球} \]

当前示例矩阵 A


            

当前分解参数