用python编写迭代法求解线性方程组(雅可比、高斯-赛德尔)的程序代码
时间: 2024-10-22 13:08:07 浏览: 78
在Python中,我们可以使用迭代法如雅可比(Jacobian)法或高斯-塞德尔(Gauss-Seidel)法来求解线性方程组。这里给出一个简单的雅可比迭代法的示例,假设我们有形如Ax = b的线性系统,其中A是一个系数矩阵,x是我们需要找到的未知数向量,b是右侧常数项。
```python
import numpy as np
def jacobi(A, b, n_iterations=100, tolerance=1e-6):
# 验证输入
if A.shape[0] != A.shape[1]:
raise ValueError("Matrix must be square")
# 初始化变量
x = np.zeros_like(b)
r = b - np.dot(A, x)
D = np.diag(np.diag(A))
for _ in range(n_iterations):
x_new = r / D
error = np.linalg.norm(r)
if error < tolerance:
break
r = b - np.dot(A, x_new)
x = x_new
return x_new, error
# 示例:二维线性方程组
A = np.array([[4, 1], [1, 3]])
b = np.array([8, 15])
solution, error = jacobi(A, b)
print(f"Solutions after {len(solution)} iterations: {solution}")
print(f"Error: {error}")
阅读全文