高斯塞德尔迭代法的Python实现
时间: 2024-10-16 08:22:36 浏览: 43
利用Python,实现雅克比(Jacobi)迭代法以及高斯-塞德尔(G-S)迭代法【矩阵形式】
5星 · 资源好评率100%
高斯-塞德尔迭代法是一种用于求解线性方程组的数值方法,它基于矩阵的行操作。在Python中,我们可以利用numpy库来方便地实现。以下是简单的高斯-塞德尔迭代法的步骤和一个例子:
首先,假设我们有线性方程组 \(Ax = b\),其中 \(A\) 是系数矩阵,\(x\) 是未知数向量,\(b\) 是常数项向量。
```python
import numpy as np
# 定义函数计算下一个迭代值
def gauss_seidel_iterate(A, b, x0, max_iters=100, tolerance=1e-6):
n = len(b)
for _ in range(max_iters):
# 计算临时变量,按行更新x
temp = b.copy()
for i in range(n):
for j in range(i, n):
if A[i,j] != 0:
temp[i] -= A[i,j] * x0[j]
x0[i] = temp[i] / A[i,i]
# 检查收敛条件
if np.linalg.norm(temp - b) < tolerance:
break
return x0
# 示例:2x + y = 5, 3x + y = 8
A = np.array([[2, 1], [3, 1]])
b = np.array([5, 8])
x0 = np.zeros_like(b) # 初始猜测
solution = gauss_seidel_iterate(A, b, x0)
print(f"Solution after {len(solution)} iterations: {solution}")
阅读全文