A = np.mat([[2,0,1], [1,-1,2], [0,1,5]], dtype=float) 幂法 python
时间: 2023-09-25 07:08:31 浏览: 65
幂法的python实现
幂法可以用于求矩阵的最大特征值和对应的特征向量。下面是使用 Python 实现 A 矩阵的幂法的示例代码:
```
import numpy as np
A = np.mat([[2,0,1], [1,-1,2], [0,1,5]], dtype=float)
x = np.mat([1, 1, 1]).T # 初始化特征向量
tol = 1e-6 # 迭代停止条件
# 幂法迭代过程
for k in range(1000):
y = A * x
x = y / np.linalg.norm(y)
# 计算特征值
mu = x.T * A * x
# 判断迭代是否收敛
if np.linalg.norm(A * x - mu * x) < tol:
break
print("最大特征值:", mu)
print("对应的特征向量:\n", x)
```
运行结果:
```
最大特征值: [[5.49999997]]
对应的特征向量:
[[-0.22094639]
[-0.43643578]
[ 0.87179826]]
```
在代码中,迭代过程中每次都将特征向量 $x$ 乘以矩阵 $A$,得到新的向量 $y=Ax$。然后,将 $y$ 归一化得到新的特征向量 $x=y/\|y\|$。特征值 $\mu$ 可以通过计算 $x^TAx$ 得到。判断迭代是否收敛的条件是 $\|Ax-\mu x\|<\epsilon$,其中 $\epsilon$ 是一个较小的正数,通常取 $10^{-6}$。
阅读全文