GMRES残差绘图

时间:2017-02-14 14:13:55

标签: python class matplotlib scipy

我正试图做一个这个GMRES算法的收敛图。我设法创建了一个类,让我在每次迭代时打印残差,但我找不到将数据提取到数组中的方法,以便我可以用matplotlib绘制它。

这是我的代码:

 matrixSize = 25
 A = Atridiag(2, -1, -1, matrixSize)
 A = scipy.sparse.csc_matrix (A)
 b = np.matrix(np.ones((matrixSize, 1)))
 x1 = np.matrix(np.ones((matrixSize, 1)))

 M_i=scipy.sparse.linalg.spilu(A)
 M2=scipy.sparse.linalg.LinearOperator((matrixSize,matrixSize),M_i.solve)

 nmax_iter = 1
 rstart = 1
 tol = 1e-12
 e = np.zeros((nmax_iter + 1, 1))
 rr = 1

 class gmres_counter(object):
    def __init__(self, disp=True):
       self._disp = disp
       self.niter = 0
       self.callbacks = []
    def __call__(self, rk=None):
       self.callbacks.append(str(rk))
       self.niter += 1
       if self._disp:
       print('%s' %(str(rk)))

 counter = gmres_counter()
 x, info = scipy.sparse.linalg.gmres(A, b, x0=x1, tol=tol, restart=rstart, 
                                     M=M2, callback=counter)

0 个答案:

没有答案