基于Python共轭梯度算法
时间: 2023-12-15 07:31:10 浏览: 158
共轭梯度算法是一种用于求解大规模线性方程组的迭代算法,它可以在较少的迭代次数内得到较为精确的解。下面是基于Python实现共轭梯度算法的步骤:
1.导入必要的库
```python
import numpy as np
from numpy.linalg import norm
```
2.定义共轭梯度算法函数
```python
def conjugate_gradient(A, b, x0, max_iter=1000, tol=1e-6):
x = x0
r = b - A @ x
p = r
for i in range(max_iter):
alpha = np.dot(r, r) / np.dot(p, A @ p)
x = x + alpha * p
r_new = r - alpha * A @ p
if norm(r_new) < tol:
break
beta = np.dot(r_new, r_new) / np.dot(r, r)
p = r_new + beta * p
r = r_new
return x
```
3.调用共轭梯度算法函数
```python
A = np.array([[4, 1], [1, 3]])
b = np.array([1, 2])
x0 = np.array([0, 0])
x = conjugate_gradient(A, b, x0)
print(x)
```
上述代码中,A是系数矩阵,b是常数向量,x0是初始解向量,max_iter是最大迭代次数,tol是收敛精度。运行结果将输出线性方程组的解向量。
阅读全文