如何计算奇异值?

33分钟前阅读2回复0
yk
yk
  • 管理员
  • 注册排名3
  • 经验值556495
  • 级别管理员
  • 主题111299
  • 回复0
楼主
奇异值是一种在矩阵分解中经常用到的概念。它们是从方阵的特征向量和特征值得到的。要计算一个矩阵A的奇异值,首先需要对矩阵进行正交化处理,然后对结果进行归一化处理,最后将结果平方并取根号即可得到奇异值。这个过程通常使用了SVD(奇异值分解)的 *** 来实现。

1、奇异值分解

设 \( A \) 为 \( m \times n \) 阶复矩阵,则存在 \( U \) 和 \( V \) 是 \( m \times m \) 和 \( n \times n \) 的酉矩阵,以及对角矩阵 \( S = \text{diag}(\sigma_i, \sigma_{2}, \ldots, \sigma_r) \),\( \sigma_i > 0 \) ( \( i = 1, \ldots, r \)),且 \( r = \text{rank}(A) \)。

则有:

\[

A = U S V'

\]

2、推论

对于实矩阵 \( A \),存在 \( U \) 和 \( V \) 是 \( m \times m \) 和 \( n \times n \) 的正交矩阵,以及对角矩阵 \( S = \text{diag}(\sigma_i, \sigma_{2}, \ldots, \sigma_r) \),\( \sigma_i > 0 \) ( \( i = 1, \ldots, r \)),且 \( r = \text{rank}(A) \)。

则有:

\[

A = U S V'

\]

3、说明

- 奇异值分解非常有用,因为它提供了矩阵 \( A \) 的信息,例如非零奇异值的数量(\( S \) 的阶数)和矩阵 \( A \) 的秩相同。

- 如果矩阵 \( A \) 的秩 \( r \) 确定,\( U \) 的前 \( r \) 列构成了矩阵 \( A \) 的列向量空间的正交基。

在 MATLAB 中进行奇异值分解:

- 函数svd 返回矩阵 \( A \) 的奇异值向量。

- 函数[U, S, V] = svd(A) 返回一个与 \( A \) 同大小的对角矩阵 \( S \),两个酉矩阵 \( U \) 和 \( V \),满足 \( A = U S V' \),\( A \) 是 \( m \times n \) 矩阵,则 \( U \) 是 \( m \times m \) 矩阵,\( V \) 是 \( n \times n \) 矩阵。

MATLAB 特殊功能

- 函数svd 可以生成矩阵 \( A \) 的“经济型”分解,只计算出矩阵 \( U \) 的前 \( n \) 列和 \( n \times n \) 的 \( S \)。

- “经济型”分解节省存储空间。

奇异值分解的主要应用包括主成分分析(PCA),这是一种数据分析 *** ,用于找出大量数据中所隐含的“模式”,PCA 可以通过找到数据集中的主要方向来减少维度,并使用这些方向来表示原始数据。

在很长时间内,奇异值分解无法实现并行处理,直到 Google 中国的张智威博士和他的团队开发了奇异值分解的并行算法,这是一项重要的技术创新。

0
回帖

如何计算奇异值? 期待您的回复!

取消