SingularValueDecomposition

SingularValueDecomposition[m]

给出一个数值矩阵 m 的奇异值分解,形式为矩阵列表 {u,σ,v},其中 σ 是一个对角矩阵,m 可以写为 u.σ.ConjugateTranspose[v].

SingularValueDecomposition[{m,a}]

给出 m 相对于 a 的广义奇异值分解.

SingularValueDecomposition[m,k]

给出 m 与第 k 大奇异值有关联的奇异值分解.

SingularValueDecomposition[m,UpTo[k]]

给出 k 个最大的奇异值,或者尽可能多奇异值.

更多信息和选项

范例

打开所有单元关闭所有单元

基本范例  (3)

计算奇异值分解:

重构输入矩阵:

计算可逆矩阵的奇异值分解:

奇异值的矩阵也可逆:

重构输入矩阵:

计算可逆矩阵的奇异值分解:

格式化结果:

重构输入矩阵:

范围  (18)

基础用法  (7)

求机器精度矩阵的奇异值分解:

格式化结果:

复矩阵的奇异值分解:

精确矩阵的奇异值分解:

任意精度矩阵的奇异值分解:

符号矩阵的奇异值分解:

高效计算大型数值矩阵的奇异值分解:

非方阵的奇异值分解:

奇异值的子集  (5)

求与矩阵的三个最大奇异值相关的奇异值分解:

与完全分解不同,这些矩阵不会精确地重新创建矩阵的任何部分:

求与三个最小奇异值相关的奇异值分解:

求与非零奇异值相关的 "compact" 分解:

这种分解仍然有足够的信息来重建矩阵:

完整的奇异值分解包含一行零:

求非矩形矩阵的 "thin" 分解:

矩阵是方阵:

这种分解仍然有足够的信息来重建矩阵:

完整的奇异值分解包含矩形 矩阵中全是零的行或列:

求与三个最大奇异值相关的分解,或如果数量少的话则计算与奇异值数量一样的分解:

计算具有重复奇异值矩阵的截断奇异值分解:

在进行部分分解时,单独计算重复的奇异值:

广义奇异值分解  (2)

求机器精度实矩阵的广义奇异值分解:

验证结果:

求机器精度复矩阵的广义奇异值分解:

验证结果:

特殊矩阵  (4)

稀疏矩阵的奇异值分解:

求与三个最大奇异值相关的分解:

可视化三个右奇异向量:

结构化矩阵的奇异值分解:

使用不同结构:

带有单位的奇异值:

单位矩阵的奇异值分解:

验证该分解:

可以选择为单位矩阵分解并不唯一:

HilbertMatrix 的奇异值分解:

选项  (3)

Tolerance  (1)

m 几乎是一个奇异矩阵:

对于机器精度而言,该矩阵是有效奇异:

以较小的误差,可以检测到非零奇异值:

缺省误差是基于精确度的,所以精度20可以检测到小值:

TargetStructure  (2)

实矩形矩阵:

TargetStructure->"Dense" 时,SingularValueDecomposition 的结果是三个稠密矩阵组成的列表:

TargetStructure->"Structured" 时,SingularValueDecomposition 的结果是一个列表,其中含有两个 OrthogonalMatrix 对象和一个 DiagonalMatrix

复矩形矩阵:

TargetStructure->"Dense" 时,SingularValueDecomposition 的结果是三个稠密矩阵组成的列表:

TargetStructure->"Structured" 时,SingularValueDecomposition 的结果是一个列表,其中含有两个 UnitaryMatrix 对象和一个 DiagonalMatrix

应用  (11)

奇异值分解的几何学  (5)

计算 2×2 矩阵 的奇异值分解

TemplateBox[{v}, Transpose] 的动作是一个旋转,并像在这种情况下可能是发生在 轴上的一个反射:

的作用是沿每个轴的扩张或压缩的缩放:

的动作是一个旋转,并且可能是尽管在这种情况下并不是目标空间中的反射:

计算 3×2 矩阵 的奇异值分解:

通过 TemplateBox[{v}, Transpose] 矩阵在平面内旋转后, 矩阵将单位圆嵌入三维中的椭圆:

矩阵在三个维度上旋转椭圆:

计算 2×2 矩阵 的奇异值分解:

分别表示 的列:

TemplateBox[{{m, ., x}}, Norm] 最大化的方向,最大值为

同理,TemplateBox[{{m, ., x}}, Norm] 最小化的方向,最小值为

可视化 和单位圆及其左侧乘以 的图像:

TemplateBox[{{x, ., m}}, Norm] 最大化的方向,最大值也是

同理,TemplateBox[{{x, ., m}}, Norm] 最小化的方向,最小值也是

可视化 和单位圆及其右侧乘以 的图像:

计算 3×2 矩阵 的奇异值分解:

分别表示 的列:

TemplateBox[{{m, ., x}}, Norm] 最大化的方向,最大值为

同理,TemplateBox[{{m, ., x}}, Norm] 最小化的方向,最小值为

可视化 和单位圆左乘 下的平面图像:

TemplateBox[{{x, ., m}}, Norm] 最大化的方向,最大值也是

最小化 TemplateBox[{{x, ., m}}, Norm],其最小值为零,因为球体在平面中被压缩为椭圆:

在约束条件 下最大化 TemplateBox[{{x, ., m}}, Norm],最大值为

可视化 以及平面上单位球体右乘 下的图像:

计算 3×3 矩阵 的奇异值分解:

分别表示 的列:

TemplateBox[{{m, ., x}}, Norm] 最大化的方向,最大值为

TemplateBox[{{m, ., x}}, Norm] 最大化的方向,最大值为

同理,TemplateBox[{{m, ., x}}, Norm] 最小化的方向,最小值为

可视化 和单位球体及其左侧乘以 下的图像:

TemplateBox[{{x, ., m}}, Norm] 最大化的方向,最大值也是

TemplateBox[{{x, ., m}}, Norm] 最大化的方向,最大值是

同理,TemplateBox[{{x, ., m}}, Norm] 最小化的方向,最小值也是

可视化 和单位球体以及其在右侧乘以 下的图像:

最小二乘和曲线拟合  (6)

如果线性方程组 没有解,最好的近似解是最小二乘解. 这就是 的解,其中 的列空间上的正交投影,可以使用奇异值分解来计算. 思考以下

线性方程组无解:

的紧致奇异值分解的 矩阵. 它的列是正交的并且跨越

计算 的正交投影 的列所张成的空间:

可视化 ,其 投影到 的列上:

求解

使用 LeastSquares 验证结果:

仅使用奇异值分解求解以下 的最小二乘问题:

计算仅保留非零奇异值的紧凑奇异值分解:

x=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose].b

根据定义,,因此 m.x=u.sigma.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose].b=u.TemplateBox[{u}, ConjugateTranspose].b 的正交投影:

因此,正如 LeastSquares 所证实的一样, 是最小二乘问题的解:

求以下 的最小二乘问题的两种不同方法:仅使用奇异值分解的 矩阵投影到 的列空间,以及使用完全分解的直接解求解法. 比较并解释结果:

计算下面的紧凑奇异值分解:

计算 的正交投影

求解

可以使用 x=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose].b=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, Transpose].b 找到直接解,因为 都是实值:

虽然 xxPerp 不同,但都可求解最小二乘问题,因为 m.x==m.xPerp

这两个解的不同之处在于 NullSpace[m] 的一个元素:

请注意,LeastSquares[m,b] 使用直接方法给出结果:

对于后面的矩阵 ,求一个使 TemplateBox[{{{m, ., x}, -, b}}, Norm]_F 最小化的矩阵

有一种解决方案,仅在这种情况下,可由 x=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, Transpose].b 给出:

使用 LeastSquares[m,b] 也可以得到这个结果:

使用 Minimize 验证答案:

SingularValueDecomposition 可用于找到数据的最佳拟合曲线. 思考下列数据:

从数据中提取 坐标:

构造一个设计矩阵,其列是 ,用于拟合直线

使用奇异值分解获取线性最小二乘拟合的系数

使用 Fit 验证系数:

绘制最佳拟合曲线和数据:

求以下数据的最佳拟合抛物线:

从数据中提取 坐标:

构造一个设计矩阵,其列是 ,用于拟合直线

获取最小二乘拟合的系数

使用 Fit 验证系数:

绘制最佳拟合曲线和数据:

属性和关系  (13)

m 的奇异值分解 {u,σ,v}m 分解为 u.σ.ConjugateTranspose[v]

如果 a 是具有分解 {u,σ,v}n×m 矩阵,则 un×n 矩阵:

vm×m 矩阵:

σn×m 矩阵:

SingularValueDecomposition[m]m.TemplateBox[{m}, ConjugateTranspose]TemplateBox[{m}, ConjugateTranspose].m 的特征系统构建而成:

计算 m.TemplateBox[{m}, ConjugateTranspose] 的特征系统:

的列为特征向量:

计算 TemplateBox[{m}, ConjugateTranspose].m 的特征系统:

的列为特征向量:

由于 的行数少于列数,因此 的对角线项为

第一个右奇异向量可以通过在所有单位向量上最大化 TemplateBox[{{m, ., x}}, Norm] 求得:

每个后续向量都是一个最大化器,其约束条件是它垂直于所有先前的向量:

SingularValueDecomposition 求得的 进行比较;除符号之外其他是一样的:

类似的结论适用于具有 TemplateBox[{{x, ., m}}, Norm] 的左奇异向量:

的对角线项是各自的最大值:

如果 的维度中较小的一个,则 的前 列通过 关联:

的前 列也通过 关联:

如果 m 是方阵, 的对角元素的乘积等于 Abs[Det[m]]

如果 是正规矩阵,则 都由相同的向量组成:

除非 是半正定的并且是埃尔米特矩阵,否则向量将以不同的顺序出现:

的对角线项等于 Abs[Eigenvalues[m]]

对于正定和埃尔米特矩阵 SingularValueDecompositionEigensystem 重合:

相等:

它们的列是 的单位特征向量:

的非零元素是 的特征值:

MatrixRank[m] 等于非零奇异值的数量:

只保留非零奇异值的紧凑分解可计算 PseudoInverse[m]

如果 分解为 u.sigma.TemplateBox[{v}, ConjugateTranspose],则 m^((-1))=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose]

作为两个向量的外积的矩阵 m 可有 MatrixRank[m]==1

m 的非零奇异值是向量范数的乘积:

对应的左右奇异向量是正规化的输入向量:

SingularValueDecomposition[{m,a}]m 分解为 u.w.ConjugateTranspose[v]

其将 a 分解为 ua.wa.ConjugateTranspose[v]

SingularValueDecomposition[{m,a}] 可与 Eigensystem[{m.m,a.a}] 关联:

w 的对角元素为 /

wa 的对角元素为 1/

v 的列是 Conjugate[Inverse[vλ]] 的列的缩放倍数:

缩放的大小是 wvλ.m.m.vλ 对应的对角线元素之比:

同样,其也为 wavλ.ma.ma.vλ 对应的对角线元素之比:

可能存在的问题  (1)

m 是一个2×1000 的随机矩阵:

完整的奇异值分解是非常大的,因为 u 是一个1000×1000 矩阵:

简明奇异值分解小得多:

它仍包含足够的信息来重建 m

Wolfram Research (2003),SingularValueDecomposition,Wolfram 语言函数,https://reference.wolfram.com/language/ref/SingularValueDecomposition.html (更新于 2024 年).

文本

Wolfram Research (2003),SingularValueDecomposition,Wolfram 语言函数,https://reference.wolfram.com/language/ref/SingularValueDecomposition.html (更新于 2024 年).

CMS

Wolfram 语言. 2003. "SingularValueDecomposition." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/SingularValueDecomposition.html.

APA

Wolfram 语言. (2003). SingularValueDecomposition. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/SingularValueDecomposition.html 年

BibTeX

@misc{reference.wolfram_2024_singularvaluedecomposition, author="Wolfram Research", title="{SingularValueDecomposition}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/SingularValueDecomposition.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_singularvaluedecomposition, organization={Wolfram Research}, title={SingularValueDecomposition}, year={2024}, url={https://reference.wolfram.com/language/ref/SingularValueDecomposition.html}, note=[Accessed: 17-November-2024 ]}