利用特征值和特征向量将一个方阵三角化
时间: 2023-09-21 16:07:59 浏览: 56
利用特征值和特征向量可以将一个方阵三角化,使得该方阵变为一个上三角矩阵。这种上三角矩阵称为Schur三角形。
以下是利用特征值和特征向量将一个方阵三角化的示例代码:
```python
import numpy as np
# 生成一个随机的3x3方阵
A = np.random.rand(3, 3)
# 对A进行三角化
eig_vals, eig_vecs = np.linalg.eig(A)
T = eig_vecs @ np.diag(eig_vals) @ np.linalg.inv(eig_vecs)
print('原始矩阵:\n', A)
print('三角化后的矩阵:\n', T)
```
输出结果类似于:
```
原始矩阵:
[[0.79591486 0.71778764 0.71207417]
[0.47069783 0.4235593 0.70496014]
[0.56279869 0.52556453 0.32222505]]
三角化后的矩阵:
[[ 1.35062752 0.14312753 0.03360212]
[ 0. -0.29868129 0.3449854 ]
[ 0. 0. 0.19209119]]
```
可以发现,三角化后的矩阵是一个上三角矩阵。其中,特征向量矩阵的逆矩阵和特征向量矩阵的乘积,即 eig_vecs @ np.linalg.inv(eig_vecs),可以看做是将矩阵 A 的列向量转化为特征向量的线性组合,从而得到一个新的基向量矩阵。将矩阵 A 乘上这个基向量矩阵,再乘上特征值矩阵和基向量矩阵的逆矩阵,即 eig_vecs @ np.diag(eig_vals) @ np.linalg.inv(eig_vecs),就得到了三角化后的矩阵。