我必须用Jacobi,Gauss和SOR方法来求解Ax=b,我们使用分解A=M。
例如,对于Jacobi方法,我们使用M=diag(A)和N=M-A。
我编写了一个函数
jacobi(A,b,Imax,err,x0)对于矩阵A,列向量b,最大迭代次数Imax,容差误差,用于Jacobi方法。我用了一个“停止测试”

哪里

是步骤k处的“残差”。
这是我的代码:
import numpy as np
import scipy.linalg as la
def jacobi(A,b,Imax,eps,x0):
M=np.diag(np.diag(A))
N=M-A
r=np.dot(A,x0)-b
x=x0
i=0
err=1+eps
res=[]
while ((i<Imax) and ((la.norm(r))>=eps)):
x=np.dot(np.dot((la.inv(M)),N),x)+np.dot((la.inv(M)),b)
r=np.dot(A,x)-b
err = la.norm(r,2)
res.append(err)
i=i+1
return (x,i,res)而测试:
A=np.array([[2,0,0],[4,5.4,0],[7,8,9]])
x0=np.array([[1],[1],[1]])
b=np.array([[20],[8],[7]])
print(jacobi(A,b,1000,10**(-3),x0))现在,我必须在一个图(序数的对数标度)上表示这些值。

在n的函数中
我只想知道如何用对数表示图形?我是Python的初学者,我不知道如何表示一个图.我试着说清楚,抱歉我的英语不好.
发布于 2017-12-15 23:36:59
下面是一些虚拟值的日志图
import matplotlib.pyplot as plt
import numpy as np
j = np.power(10,range(10)) # <--- here use your computed values instead
plt.plot(j)
plt.yscale('log')
plt.show()

如果您想要日志,也可以设置xscale。
https://stackoverflow.com/questions/47841088
复制相似问题