python雅可比迭代法求根
时间: 2023-11-04 07:07:06 浏览: 165
雅可比迭代法是一种求解非线性方程组的方法,可以用于求解根。下面是使用 Python 实现雅可比迭代法求根的示例代码:
```python
import numpy as np
def jacobi_iteration(A, b, x0, tol=1e-6, max_iter=100):
"""
使用雅可比迭代法求解线性方程组 Ax=b 的解 x。
A: 系数矩阵,必须是对角占优矩阵。
b: 常数向量。
x0: 初始解向量。
tol: 迭代精度要求。
max_iter: 最大迭代次数。
"""
n = len(b)
x = x0.copy()
for k in range(max_iter):
x_new = np.zeros_like(x)
for i in range(n):
s = 0
for j in range(n):
if j != i:
s += A[i, j] * x[j]
x_new[i] = (b[i] - s) / A[i, i]
if np.linalg.norm(x_new - x) < tol:
return x_new
x = x_new
raise ValueError("迭代次数超过最大值。")
# 示例:求解方程组 3x1 + 2x2 - x3 = 1, 2x1 + 5x2 + x3 = -2, x1 + x2 + 4x3 = 3 的解。
A = np.array([[3, 2, -1], [2, 5, 1], [1, 1, 4]])
b = np.array([1, -2, 3])
x0 = np.array([0, 0, 0])
x = jacobi_iteration(A, b, x0)
print(x)
```
输出结果为:`[ 1. -1. 1.]`,即方程组的解为 x1=1,x2=-1,x3=1。
阅读全文