这是求解线性方程组的Jacobi迭代法程序的一部分,代码问题是迭代的前解向量与这个迭代的解向量是相同的。
import numpy as np
def Jacobi(A,b,x,e,N): ## Ax=b,e precision ,N max times
A,b=np.array(A,dtype=float),np.array(b,dtype=float)
n=A.shape[0]
x,y=np.array(x),np.zeros(n)
for k in range(N):
for i in range(n):
m=0
for j in range(n):
m=m+A[i,j]*x[j]
y[i]=x[i]+(b[i]-m)/A[i,i]
R=max(abs(x-y))
x=y
print(R)
A=[[5,-1,-1,-1],[-1,10,-1,-1],[-1,-1,5,-1],[-1,-1,-1,10]]
B=[-4,12,8,34]
x0=np.zeros(4)
Jacobi(A,B,x0,0.001,10)X和y应该是不相等的,但是程序输出的R=0.Just类似于在这里输入图像描述。
发布于 2022-04-22 01:26:18
在第13行
x=y.copy()因为x=y让x=y永远。
https://stackoverflow.com/questions/71952935
复制相似问题