不调用Python原有的函数,编写出特征值分解和奇异分解的两个函数,给出完整代码
时间: 2023-11-22 12:52:54 浏览: 57
特征值分解与奇异值分解
特征值分解和奇异值分解都是线性代数中的重要概念,下面分别给出两个函数的实现。
特征值分解:
```python
import numpy as np
def eig(A):
"""
特征值分解
:param A: 输入矩阵
:return: 特征值和特征向量
"""
# 求出特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
# 将特征值按从大到小的顺序排序
idx = np.argsort(eigenvalues)[::-1]
eigenvalues = eigenvalues[idx]
eigenvectors = eigenvectors[:, idx]
return eigenvalues, eigenvectors
```
奇异值分解:
```python
import numpy as np
def svd(A):
"""
奇异值分解
:param A: 输入矩阵
:return: 奇异值、左奇异向量和右奇异向量
"""
# 求出左奇异向量、奇异值和右奇异向量
U, S, V = np.linalg.svd(A)
return S, U, V
```
注意,这两个函数均使用了NumPy库中的线性代数函数,如果不使用该库,需要手动实现相关算法。
阅读全文