用python写高斯-塞德尔迭代法求解方程组
时间: 2023-07-01 19:29:33 浏览: 182
好的,我可以帮您解答这个问题。高斯-塞德尔迭代法是一种用于求解线性方程组的迭代算法,其基本思想是将线性方程组的解向量分解为已知解和待求解两部分,通过迭代不断逼近最终的解向量。下面是用Python实现高斯-塞德尔迭代法求解方程组的代码示例:
```python
import numpy as np
def gauss_siedel(A, b, x0, tol=1e-6, max_iter=1000):
"""
Gauss-Siedel迭代法求解线性方程组Ax=b
:param A: 系数矩阵
:param b: 常数向量
:param x0: 初始解向量
:param tol: 迭代收敛精度
:param max_iter: 最大迭代次数
:return: 解向量
"""
n = A.shape[0]
x = x0.copy()
for k in range(max_iter):
for i in range(n):
x[i] = (b[i] - np.dot(A[i, :i], x[:i]) - np.dot(A[i, i + 1:], x0[i + 1:])) / A[i, i]
if np.linalg.norm(x - x0) < tol:
return x
x0 = x.copy()
raise ValueError("迭代未收敛")
# 示例
A = np.array([[10, 2, -1], [1, 5, 1], [2, -1, 10]])
b = np.array([3, 7, 6])
x0 = np.array([0, 0, 0])
x = gauss_siedel(A, b, x0)
print(x) # 输出解向量
```
在上述代码中,`A`是系数矩阵,`b`是常数向量,`x0`是初始解向量,`tol`是迭代收敛精度,`max_iter`是最大迭代次数。在每次迭代中,我们通过更新解向量`x`来逼近最终的解向量,直到迭代收敛或达到最大迭代次数为止。最后,我们输出求得的解向量`x`。
阅读全文