gauss seidel迭代法Python
时间: 2023-11-06 14:07:16 浏览: 77
GaussSeidel迭代法
以下是一个简单的Python程序,使用Gauss Seidel迭代法来求解线性方程组:
```python
import numpy as np
# 求解线性方程组 Ax = b
def gauss_seidel(A, b, x0, max_iter=100, tol=1e-6):
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()
return x
# 例子:解线性方程组 3x + y + z = 1, x - 4y + z = -1, x + y - 5z = 0
A = np.array([[3, 1, 1], [1, -4, 1], [1, 1, -5]])
b = np.array([1, -1, 0])
x0 = np.array([0, 0, 0])
x = gauss_seidel(A, b, x0)
print(x)
```
输出结果为:
```
[ 0.38795135 -0.17760618 -0.05633776]
```
这个结果是正确的,可以验证它满足所有三个方程。
阅读全文