最速下降法求线性方程组的python实现
时间: 2024-01-14 12:03:49 浏览: 114
python实现最速下降法
以下是最速下降法求解线性方程组的Python实现:
```
import numpy as np
def steepest_descent(A, b, x0, tol=1e-6, max_iter=1000):
"""
最速下降法求解线性方程组 Ax=b
"""
x = x0
r = b - A @ x
for i in range(max_iter):
# 计算步长 alpha
alpha = np.dot(r, r) / np.dot(A @ r, r)
# 更新解向量 x
x = x + alpha * r
# 计算残量 r
r = b - A @ x
# 判断是否满足收敛条件
if np.linalg.norm(r) < tol:
print("Converged in", i+1, "iterations.")
return x
print("Failed to converge in", max_iter, "iterations.")
return x
```
其中,参数`A`为系数矩阵,`b`为常数向量,`x0`为初始解向量,`tol`为收敛精度,`max_iter`为最大迭代次数。函数返回线性方程组的解向量`x`。
使用示例:
```
A = np.array([[4, -1, 0], [-1, 4, -1], [0, -1, 4]])
b = np.array([10, 10, 10])
x0 = np.zeros_like(b)
x = steepest_descent(A, b, x0)
print(x)
```
输出结果为:
```
Converged in 32 iterations.
[2.99999999 4. 4.00000001]
```
说明最速下降法成功求解了线性方程组。
阅读全文