svd奇异值分解python
时间: 2023-06-30 22:20:15 浏览: 155
SVD(Singular Value Decomposition)是一种常见的矩阵分解方法,可以将一个矩阵分解为三个矩阵的乘积:$A=U \Sigma V^T$。其中,$U$和$V$是正交矩阵,$\Sigma$是对角阵。
在Python中,可以使用numpy库中的linalg.svd函数实现SVD分解。例如:
```python
import numpy as np
# 创建一个3x2的矩阵
A = np.array([[1, 2], [3, 4], [5, 6]])
# 进行SVD分解
U, s, Vt = np.linalg.svd(A)
# 构造对角阵
Sigma = np.zeros((A.shape[0], A.shape[1]))
Sigma[:A.shape[1], :A.shape[1]] = np.diag(s)
# 重构原矩阵
A_reconstructed = U.dot(Sigma).dot(Vt)
# 输出结果
print("U:\n", U)
print("S:\n", Sigma)
print("Vt:\n", Vt)
print("重构后的矩阵:\n", A_reconstructed)
```
输出结果为:
```
U:
[[-0.2298477 -0.88346102 -0.40824829]
[-0.52474482 -0.24078249 0.81649658]
[-0.81964193 0.40189604 -0.40824829]]
S:
[[9.52551809 0. ]
[0. 0.51430058]
[0. 0. ]]
Vt:
[[-0.61962948 -0.78489445]
[-0.78489445 0.61962948]]
重构后的矩阵:
[[1. 2.]
[3. 4.]
[5. 6.]]
```
其中,$U$、$S$和$V^T$分别代表左奇异向量矩阵、奇异值向量矩阵和右奇异向量矩阵。重构后的矩阵与原矩阵相同。
阅读全文