输入为一个矩阵(ndarray格式),输出为分解后的2个(特征分解)或3个(SVD)矩阵。
时间: 2024-01-24 21:04:11 浏览: 64
svd.zip_svd分解
好的,那我稍微修改一下之前的两个函数,使它们符合你的要求:
特征分解函数:
```python
import numpy as np
def eigen_decomposition(matrix):
eigenvalues, eigenvectors = np.linalg.eig(matrix)
return np.diag(eigenvalues), eigenvectors.T
```
在这个函数中,我们使用 `np.diag()` 函数将特征值转换为对角矩阵的形式,并将特征向量的转置作为第二个分解矩阵的返回值。
奇异值分解函数:
```python
import numpy as np
def singular_value_decomposition(matrix):
u, s, vh = np.linalg.svd(matrix)
return u, np.diag(s), vh
```
在这个函数中,我们同样使用 `np.diag()` 函数将奇异值转换为对角矩阵的形式,并将左奇异向量矩阵、对角矩阵、右奇异向量矩阵作为三个分解矩阵的返回值。
这样,你只需要调用这两个函数,并将输入矩阵作为参数传入,就可以得到分解后的矩阵了。
阅读全文