奇异值计算器 - SVD矩阵分解
使用SVD分解计算任意实矩阵的奇异值——输入按行换行、按列逗号分隔,即可立即得到全部奇异值、矩阵秩和范数。
输入矩阵并使用奇异值分解(SVD)计算其奇异值。计算器会按降序显示所有奇异值及矩阵属性。
奇异值计算器 - SVD矩阵分解
使用SVD分解计算任意实矩阵的奇异值——输入按行换行、按列逗号分隔,即可立即得到全部奇异值、矩阵秩和范数。
每行单独占一行。行内元素可用逗号或空格分隔。所有行必须具有相同的列数。
关于奇异值计算器
奇异值分解(SVD)是线性代数中最重要的分解之一。对于任意实数 m×n 矩阵 A,SVD 将 A 表示为 A = UΣV^T,其中 U 是 m×m 的正交矩阵,Σ 是一个 m×n 的对角矩阵,对角线上为非负元素,V 是 n×n 的正交矩阵。Σ 的对角元素 σ₁ ≥ σ₂ ≥ … ≥ 0 就是 A 的奇异值。
奇异值始终是非负实数,即使原矩阵包含负值或复数结构也是如此。它们由矩阵唯一确定——不同于向量 U 和 V,当奇异值重复时它们可能并不唯一。非零奇异值的个数等于矩阵的秩,秩衡量的是列空间的维数(也就是矩阵 A 所代表的线性变换的所有可能输出所张成的空间)。
SVD 与特征值之间的关系非常精确:A 的奇异值是对称半正定矩阵 A^T·A(或等价的 A·A^T,对应左奇异向量)特征值的平方根。这个计算器先计算 A^T·A,再使用 Jacobi 特征值算法——一种通过一系列称为 Givens 旋转的正交旋转来消去对称矩阵非对角元素的迭代方法——求出其特征值,然后再取平方根。
最大奇异值 σ₁ 等于矩阵的谱范数(也称 2-范数或算子范数)——它表示矩阵对单位向量的最大拉伸倍数。Frobenius 范数是所有奇异值平方和的平方根,也等于所有矩阵元素平方和的平方根。这些范数具有实际意义:Frobenius 范数是衡量矩阵总能量最自然的指标,而谱范数则控制对扰动的敏感性。
条件数 κ = σ₁/σₙ(最大与最小奇异值之比)用于量化矩阵在线性方程求解中的病态程度。条件数接近 1 表示系统条件良好,易于精确求解。条件数非常大——例如高于 10⁶ 或 10¹²——则表明系统病态,输入中的微小扰动可能导致解发生巨大变化,这是科学计算和机器学习中数值不稳定的常见来源。
SVD 的应用非常广泛。在数据科学中,主成分分析(PCA)——降维中的核心方法——在数学上等价于对居中后的数据矩阵做 SVD。主成分就是右奇异向量 V,而每个分量解释的方差与对应奇异值的平方成正比。在图像处理和压缩中,只保留最大的 k 个奇异值及其相关向量,可以得到图像矩阵的秩-k 近似,并在所有秩-k 矩阵中使 Frobenius 范数误差最小——这就是 Eckart-Young 定理。在推荐系统(协同过滤)中,SVD 的矩阵分解用于预测用户对未见项目的评分。在工程中,伪逆 A† = VΣ†U^T 可为超定或欠定系统提供最小范数最小二乘解,这在机器人学、控制理论和信号处理中至关重要。
对于这个计算器,Jacobi 算法可以可靠处理大约 10×10 以内的矩阵。对于非常大的矩阵,或具有许多几乎重复奇异值的矩阵,由于浮点舍入误差的累积,精度可能会有一定损失,但对典型输入结果至少可达到六位有效数字。
奇异值示例
常见矩阵示例及其奇异值和关键属性。
| 矩阵 | 奇异值 | 属性 |
|---|---|---|
| [[1, 2], [3, 4]] | σ₁ ≈ 5.4650, σ₂ ≈ 0.3660 | 一个一般的 2×2 矩阵。秩 = 2,条件数 ≈ 14.93。 |
| [[1, 0, 0], [0, 2, 0], [0, 0, 3]] | σ₁ = 3, σ₂ = 2, σ₃ = 1 | 对角矩阵。奇异值等于对角元素的绝对值。 |
| [[1, 2, 3], [4, 5, 6]] | σ₁ ≈ 9.5080, σ₂ ≈ 0.7729 | 一个秩为 2 的 2×3 矩阵。SVD 会得到 min(2,3)=2 个奇异值;这里两者都非零。 |
| [[1, 2], [2, 4]] | σ₁ = 5, σ₂ = 0 | 秩亏矩阵(第 2 行 = 2 × 第 1 行)。其中一个奇异值为 0。 |
如何使用奇异值计算器
- 在文本框中输入矩阵:每行单独占一行,行内列值用逗号或空格分隔。
- 确认所有行的元素个数一致——如果行长度不一致,计算器会提示解析错误。
- 点击“计算奇异值”。工具会计算 A^T·A,应用 Jacobi 特征值算法,并按降序显示所有奇异值。
- 查看附加属性:秩(非零奇异值的个数)、Frobenius 范数、谱范数(σ₁),以及在矩阵具有满列秩时显示的条件数(σ₁/σₙ)。
- 使用示例按钮加载预设矩阵,探索不同矩阵结构如何影响奇异值。
奇异值常见问题
什么是奇异值?
奇异值是描述线性变换大小的非负标量。对于矩阵 A,奇异值是 A^T·A 的特征值平方根。它们描述了 A 在不同方向上拉伸或压缩向量的程度——最大奇异值给出最大拉伸因子,最小奇异值给出最小值。
奇异值和特征值有什么不同?
特征值只对方阵定义,且可以为负或复数。奇异值适用于任意矩阵(包括长方矩阵),并且始终是非负实数。对于对称正定矩阵,奇异值与特征值相同。一般情况下,A 的奇异值是 A^T·A 特征值的平方根。
条件数告诉我什么?
条件数(σ₁/σₙ)衡量敏感性:较小的条件数(接近 1)表示矩阵状态良好,线性方程 Ax = b 可以被精确求解。较大的条件数(>10⁶)表示接近奇异——矩阵几乎秩亏,由舍入误差放大的数值效应可能使解不可靠。
为什么奇异值总是非负的?
奇异值定义为 σᵢ = √λᵢ,其中 λᵢ 是 A^T·A 的特征值。由于 A^T·A 是半正定矩阵(所有特征值都 ≥ 0),所以平方根必然是非负实数。对于任意实矩阵或复矩阵 A,这一点都成立。
SVD 和 PCA 有什么关系?
主成分分析(PCA)在数学上等价于对居中后的数据矩阵进行 SVD。右奇异向量(V 的列)就是主方向(主成分)。对应的奇异值与这些方向上的标准差成正比——具体来说,σᵢ/√(m-1) 是 m 行数据矩阵中第 i 个主成分的标准差。
这个计算器能处理长方矩阵吗?
可以。SVD 适用于任意实数 m×n 矩阵,不管 m > n、m = n 还是 m < n。对于 m×n 矩阵,奇异值的个数等于 min(m, n)。若 m > n,最多只有 n 个非零奇异值;若 m < n,最多只有 m 个非零奇异值。