Jaocb GuassSeidel迭代代码
时间: 2024-05-15 16:18:34 浏览: 8
以下是 Jacobian-Gauss Seidel 迭代的 Python 代码示例:
```python
import numpy as np
def jacobi_gauss_seidel(A, b, x0=None, max_iter=100, tol=1e-6, method='jacobi'):
n = len(A)
if x0 is None:
x0 = np.zeros(n)
x = x0.copy()
x_new = x0.copy()
for k in range(max_iter):
for i in range(n):
if method == 'jacobi':
x_new[i] = (b[i] - np.dot(A[i, :i], x[:i]) - np.dot(A[i, i+1:], x[i+1:])) / A[i, i]
elif method == 'gauss-seidel':
x_new[i] = (b[i] - np.dot(A[i, :i], x_new[:i]) - np.dot(A[i, i+1:], x[i+1:])) / A[i, i]
if np.linalg.norm(x_new - x) < tol:
return x_new
x = x_new.copy()
return x_new
```
其中 `A` 和 `b` 分别是系数矩阵和常数向量,`x0` 为初始解向量,`max_iter` 为最大迭代次数,`tol` 为收敛精度,`method` 为迭代方法,可以选择 Jacobi 或 Gauss-Seidel。函数返回迭代后得到的解向量 `x`。