- API介绍
- API接口
- 定价


奇异值分解计算器
借助我们的SVD计算器,矩阵的奇异值分解将不再给您带来任何困扰——您将快速掌握线性代数中这个重要的主题。向下滚动并学习:什么是奇异值分解?如何使用我们的SVD计算器找到矩阵的SVD?如何手动计算矩阵的SVD?奇异值分解是唯一的吗?
奇异值分解(SVD)是一种矩阵分解的方法:任何大小为m×n的实矩阵A都可以分解为A = UΣVᵀ的形式,其中U和V分别是大小为m×m和n×n的正交矩阵,Σ是与A相同大小(即m×n)的矩形矩阵,其对角线上有非负数,其他地方都是零。Σ的对角元素实际上就是A的奇异值。
如何使用这个SVD计算器?
使用这个SVD计算器非常简单!
- 选择矩阵大小:A中的行数和列数。
- 在专用字段中输入矩阵元素。
- 奇异值分解的组成部分U、Σ和Vᵀ将出现在计算器的底部。
- 想要验证结果吗?只需执行结果的三个矩阵的矩阵乘法,并将该结果与您的初始矩阵进行比较。请记住,数值计算和舍入可能会导致微小的差异!
想要了解SVD计算器是如何得到结果的吗?在下一节中,我们将讨论奇异值分解背后的所有理论,并逐步解释如何找到矩阵的SVD。准备好了吗?
奇异值分解公式
其中:
- U 是 m×m 的正交矩阵(左奇异向量矩阵)
- Σ 是 m×n 的对角矩阵(奇异值矩阵)
- Vᵀ 是 n×n 的正交矩阵V的转置(右奇异向量矩阵)
如果A是复数矩阵,则用复共轭V*替换转置Vᵀ(我们还有矩阵转置计算器来帮助您)。U和V然后变成酉矩阵,但Σ仍然在其对角线上具有实非负数。
如何手动计算矩阵的SVD?
这里是如何手动计算m×n矩阵A的奇异值分解。我们将看到SVD与A的特征值和特征向量密切相关。
详细步骤:
1. 计算AᵀA。
2. 计算AᵀA的特征值和特征向量。
3. 绘制与A相同大小的矩阵,并用您在步骤2中找到的特征值的平方根填充其对角线元素。这就是Σ。
4. 写下列为您在步骤2中找到的特征向量的矩阵。这就是V。
5. SVD方程A = UΣVᵀ转换为AV = UΣ。我们可以将其按列重写为Avᵢ = σᵢuᵢ。这告诉我们如何计算U,因为U的列设置为uᵢ = (1/σᵢ)Avᵢ,对于每个σᵢ ≠ 0的i。
6. 如果U需要更多列来填充其大小,您可以选择任意向量,但必须确保U是正交矩阵。因此,您必须选择具有单位长度并与U中所有列(以及您要添加的列)正交的向量。
正如我们记得的,我们可以轻松地找到方阵的特征值和特征向量,但A在SVD中可以是矩形的。我们该怎么办?让我们考虑与A密切相关的两个方阵:这些矩阵是AᵀA和AAᵀ。
实际应用
一旦我们知道了矩阵的奇异值分解是什么,看一些例子将是有益的。手动计算SVD是一个耗时的过程,正如我们将在如何计算矩阵的SVD部分中看到的。我们打赌生成SVD示例的最快方法是使用Omni的奇异值分解计算器!
图像压缩: 将图像矩阵进行SVD分解,只保留最大的几个奇异值,可以实现图像压缩。通过这种方式,我们可以识别数据中最重要的特征(大的奇异值对应的部分),去除噪声(小的奇异值往往对应噪声),并压缩数据(只保留重要的奇异值)。
例如,一张4×3的矩阵M的奇异值分解可以帮助我们理解图像的行信息特征(U矩阵)、各个特征的重要程度(Σ矩阵中的奇异值)以及图像的列信息特征(V矩阵)。
推荐系统: 在推荐系统中,用户-物品评分矩阵可以通过SVD分解来预测未知评分。通过这种分解,我们可以找出潜在特征,从而为用户推荐他们可能感兴趣的物品。
数据降维: 在机器学习中,SVD可以用于降低数据维度,去除噪声。高维数据可以通过保留最重要的奇异值来降到更低的维度,同时保持数据的主要特征。
其他相关概念
SVD将任意矩形矩阵A分解为三个矩阵UΣVᵀ的乘积,这受到一些约束。这些U和V是正交矩阵。Σ与A具有相同的大小,并包含A的奇异值作为其对角线元素。
如果A是实对称的,那么它的奇异值(Σ的对角元素)与其特征值的绝对值一致。U和V的列是A的单位特征向量。特别是,如果A的特征值都严格为正(即A是正定的),那么U = V,A的SVD与A的特征分解一致。
对于酉矩阵,SVD是平凡的。即,如果A是酉的(即AA* = A*A = I),那么A的所有奇异值都等于1。因此,在SVD中我们有U = A,Σ = I,V = I。
V的列是AᵀA的特征向量。Σ的非零元素是A的非零奇异值,即它们是AᵀA的非零特征值的平方根。一旦我们知道V和Σ,我们就可以从SVD公式(A = UΣVᵀ)恢复U。
常见问题
奇异值分解是唯一的吗?
不,SVD不是唯一的。即使我们同意让Σ的对角元素按降序排列(这使Σ唯一),矩阵U和V仍然是非唯一的。
什么是奇异值分解?
奇异值分解(SVD)是一种矩阵分解的方法:任何大小为m×n的实矩阵A都可以分解为A = UΣVᵀ的形式,其中U和V分别是大小为m×m和n×n的正交矩阵,Σ是与A相同大小的矩形矩阵,其对角线上有非负数,其他地方都是零。
如何使用SVD计算器找到矩阵的SVD?
使用SVD计算器非常简单:1) 选择矩阵大小(行数和列数);2) 在专用字段中输入矩阵元素;3) 奇异值分解的组成部分U、Σ和Vᵀ将自动出现在计算器的底部。您可以通过执行三个矩阵的乘法来验证结果。
如何手动计算矩阵的SVD?
手动计算SVD的步骤:1) 计算AᵀA;2) 计算AᵀA的特征值和特征向量;3) 创建Σ矩阵,对角线元素为特征值的平方根;4) V矩阵的列为特征向量;5) 通过公式uᵢ = (1/σᵢ)Avᵢ计算U矩阵;6) 如需要,添加正交向量以填充U矩阵。
参数名 | 参数类型 | 默认值 | 是否必传 | 描述 |
---|---|---|---|---|
matrixElements | array | [1,2,3,4,5,6,7,8,9] | 否 | 按行优先顺序排列的矩阵元素数组,长度应等于行数×列数 |
rowCount | integer | 3 | 否 | 矩阵的行数,取值范围[1, 10] |
columnCount | integer | 3 | 否 | 矩阵的列数,取值范围[1, 10] |
参数名 | 参数类型 | 默认值 | 描述 |
---|---|---|---|
matrixV | array | 右奇异向量矩阵,大小为n×n的正交矩阵,按行优先顺序排列 | |
matrixU | array | 左奇异向量矩阵,大小为m×m的正交矩阵,按行优先顺序排列 | |
singularValues | array | 矩阵的奇异值数组,按降序排列 | |
matrixSigma | array | 奇异值对角矩阵,大小为m×n,对角线元素为奇异值(降序排列),其余为0,按行优先顺序排列 | |
matrixRank | integer | 矩阵的秩,等于非零奇异值的个数 |
错误码 | 错误信息 | 描述 |
---|---|---|
FP00000 | 成功 | |
FP03333 | 失败 |
参考上方对接示例