如何不用numpy来写gauss-seidel迭代法python
时间: 2023-11-07 18:05:08 浏览: 36
可以使用纯Python的列表来代替NumPy数组,实现Gauss-Seidel迭代法。以下是一个简单的代码示例:
```python
def gauss_seidel(A, b, x0, epsilon, max_iterations):
n = len(A)
x = x0.copy()
for k in range(max_iterations):
for i in range(n):
s = sum(A[i][j] * x[j] for j in range(n) if j != i)
x[i] = (b[i] - s) / A[i][i]
if all(abs(x[i] - x0[i]) < epsilon for i in range(n)):
return x
x0 = x.copy()
raise ValueError("Gauss-Seidel method did not converge")
# 示例用法
A = [[4, 1, -1], [2, 7, 1], [1, -3, 12]]
b = [3, 19, 31]
x0 = [0] * len(A)
epsilon = 1e-6
max_iterations = 100
x = gauss_seidel(A, b, x0, epsilon, max_iterations)
print(x)
```
这个例子中,我们将矩阵A和向量b表示为纯Python列表,然后使用Gauss-Seidel迭代法求解线性方程组Ax=b。函数gauss_seidel接受矩阵A、向量b、初始解x0、收敛精度epsilon和最大迭代次数max_iterations作为输入,返回解向量x。
注意,由于纯Python列表没有NumPy数组的高效性能,所以在处理大型矩阵时可能会出现性能问题。如果需要处理大型数据集,请使用NumPy数组。