高斯赛德尔迭代法python,还需要显示迭代次数
时间: 2023-10-16 19:09:51 浏览: 106
高斯赛德尔迭代法是解线性方程组的一种迭代方法。下面是Python实现高斯赛德尔迭代法,并显示迭代次数的代码:
```python
import numpy as np
def gauss_seidel(A, b, x0, tol=1e-6, max_iter=1000):
n = len(b)
x = np.array(x0, dtype=float)
for k in range(max_iter):
for i in range(n):
sigma = 0.0
for j in range(n):
if j != i:
sigma += A[i][j] * x[j]
x[i] = (b[i] - sigma) / A[i][i]
# 计算误差
error = np.linalg.norm(np.dot(A, x) - b)
# 判断是否达到指定精度
if error < tol:
print("迭代次数:", k+1)
return x
print("达到最大迭代次数,仍未收敛")
return None
```
其中,`A`是系数矩阵,`b`是常数向量,`x0`是初始解,`tol`是指定精度(默认为1e-6),`max_iter`是最大迭代次数(默认为1000)。
在每次迭代结束后,我们可以计算误差(即残量的二范数),如果误差小于指定精度,则认为已经收敛,输出迭代次数并返回求解结果;如果迭代次数达到了最大迭代次数,仍未收敛,则输出提示信息并返回`None`。
阅读全文