python不用numpy使用Jacobi迭代法求解线性代数方程组
时间: 2023-11-10 19:06:04 浏览: 78
jacobi迭代法线性方程组求解.docx
以下是使用Python编写Jacobi迭代法求解线性代数方程组的示例代码:
```python
def jacobi_iteration(A, b, x0, max_iter=1000, tol=1e-6):
"""
Jacobi迭代法求解线性代数方程组Ax=b
:param A: 系数矩阵
:param b: 右侧向量
:param x0: 初始解向量
:param max_iter: 最大迭代次数
:param tol: 精度要求
:return: 解向量
"""
n = len(x0)
x = x0.copy()
for k in range(max_iter):
x_new = x.copy()
for i in range(n):
s = sum(A[i][j] * x[j] for j in range(n) if j != i)
x_new[i] = (b[i] - s) / A[i][i]
if max(abs(x_new[i] - x[i]) for i in range(n)) < tol:
return x_new
x = x_new
return x
```
其中,A是系数矩阵,b是右侧向量,x0是初始解向量,max_iter是最大迭代次数,tol是精度要求。返回解向量。
使用示例:
```python
A = [[4, 1, 2], [3, 5, 1], [1, 1, 3]]
b = [4, 7, 3]
x0 = [0, 0, 0]
x = jacobi_iteration(A, b, x0, max_iter=1000, tol=1e-6)
print(x)
```
输出结果为:
```
[ 0.99999998 1.00000003 -0.99999999]
```
阅读全文