def test_tLU(self): n,p=500,2 tm=get_trid(n,p,herm=True) tmr=tm.tocoo().tocsc() tma=tmr.toarray() print 'checking for twist LU decomposition' t0=time.time() invegn=lin.get_inv_system(tm) L,U=invegn.get_twist_LU(j=2) t1=time.time() diff=abs(L.dot(U)-tmr).sum() print 'err -> %s, Elapse -> %s'%(diff,t1-t0) assert_almost_equal(diff,0)
def test_tLU(self): n, p = 500, 2 tm = get_trid(n, p, herm=True) tmr = tm.tocoo().tocsc() tma = tmr.toarray() print 'checking for twist LU decomposition' t0 = time.time() invegn = lin.get_inv_system(tm) L, U = invegn.get_twist_LU(j=2) t1 = time.time() diff = abs(L.dot(U) - tmr).sum() print 'err -> %s, Elapse -> %s' % (diff, t1 - t0) assert_almost_equal(diff, 0)
import trid,linalg #import this library from numpy.linalg import inv #numpy inversion method import time n,p=100,10 tm=trid.get_trid(n,p,herm=True) #construct a random block (np x np) hermitian tridiagonal matrix with block size p. tma=tm.toarray() #parse this tridiagonal matrix to a numpy array. t0=time.time() isys=linalg.get_inv_system(tm) #get the inversion generator. inv00=isys[0,0] #the the first element of the inverse matrix. t1=time.time() invtm=inv(tma) #the traditional method without optimization. t2=time.time() print 'Difference -> %s, Elapse %s(this), %s(numpy).'%(invtm[:p,:p]-inv00,t1-t0,t2-t1)