高斯-赛德尔迭代法python代码,并且输出迭代次数
时间: 2023-07-22 17:12:26 浏览: 114
Gauss-Seidel-Iteration.rar_GAUSS SEIDEL_Gauss-Seidel
以下是高斯-赛德尔迭代法的 Python 代码:
```python
import numpy as np
# 定义方程组
def equations(x, y, z):
eq1 = x + y + z - 6
eq2 = 2 * x + y - z - 3
eq3 = -x + 2 * y + z + 2
return eq1, eq2, eq3
# 定义高斯-赛德尔迭代法
def gauss_seidel(x0, y0, z0, tol=1e-5, maxiter=100):
x, y, z = x0, y0, z0
iter_count = 0
while iter_count < maxiter:
x_new = (6 - y - z) / 1
y_new = (3 - 2 * x_new + z) / 1
z_new = (-2 + x_new - 2 * y_new) / 1
# 判断是否达到收敛条件
if abs(x_new - x) < tol and abs(y_new - y) < tol and abs(z_new - z) < tol:
break
x, y, z = x_new, y_new, z_new
iter_count += 1
return x, y, z, iter_count
# 执行迭代
x0, y0, z0 = 0, 0, 0
x, y, z, n_iter = gauss_seidel(x0, y0, z0)
# 输出结果
print("方程组的解为:x = %.3f, y = %.3f, z = %.3f" % (x, y, z))
print("迭代次数为:", n_iter)
```
以上代码中的 `equations` 函数定义了方程组,`gauss_seidel` 函数实现了高斯-赛德尔迭代算法,`x0, y0, z0` 是初始值,`tol` 是收敛条件,`maxiter` 是最大迭代次数。在函数执行后,它会返回方程组的解以及迭代次数。
阅读全文