高斯-赛德尔迭代法python
时间: 2023-11-19 08:57:17 浏览: 210
高斯-赛德尔迭代法是一种解线性方程组的迭代方法,它可以用Python实现。具体实现步骤如下:
1. 定义系数矩阵A和常数向量b;
2. 定义初始解向量x0;
3. 定义迭代次数n和误差限eps;
4. 进行高斯-赛德尔迭代,直到满足误差限或达到最大迭代次数为止;
5. 输出迭代结果。
下面是Python代码实现:
```python
import numpy as np
def gauss_seidel(A, b, x0, n, eps):
"""
高斯-赛德尔迭代法求解线性方程组
:param A: 系数矩阵
:param b: 常数向量
:param x0: 初始解向量
:param n: 最大迭代次数
:param eps: 误差限
:return: 迭代结果
"""
D = np.diag(np.diag(A)) # 对角矩阵
L = -np.tril(A, -1) # 下三角矩阵
U = -np.triu(A, 1) # 上三角矩阵
T = np.dot(np.linalg.inv(D - L), U) # 迭代矩阵
c = np.dot(np.linalg.inv(D - L), b) # 常数向量
x = x0
for i in range(n):
x_new = np.dot(T, x) + c # 迭代公式
if np.linalg.norm(x_new - x) < eps: # 判断误差是否小于eps
break
x = x_new
return x
# 测试
A = np.array([[10, 1, 1], [2, 10, 2], [1, 1, 10]])
b = np.array([12, 14, 10])
x0 = np.array([0, 0, 0])
n = 100
eps = 1e-6
x = gauss_seidel(A, b, x0, n, eps)
print(x)
```
阅读全文