def linearoperator(): np.set_printoptions(precision=3, linewidth=80, threshold=10, edgeitems=3) Q,B,d,c,lcon,ucon,lvar,uvar,name = fifth_class_tp(8,11) #Q,B,d,c,lcon,ucon,lvar,uvar,name = sixeth_class_tp(128,1024) lsqpr = lsq_tp_generator(Q,B,d,c,lcon,ucon,lvar,uvar,name,Model=LSQRModel,\ txt='False', npz='True') print lsqpr.name J = sp(matrix=as_llmat(Q)) e1 = np.ones(J.shape[0]) e2 = np.ones(J.shape[1]) print 'J.shape = ', J.getShape() print 'Testing PysparseLinearOperator:' op = PysparseLinearOperator(J) print 'op.shape = ', op.shape print 'op.T.shape = ', op.T.shape print 'op * e2 = ', op * e2 print "op.T * e1 = ", op.T * e1 print 'op.T.T * e2 = ', op.T.T * e2 print 'op.T.T.T * e1 = ', op.T.T.T * e1 print 'With call:' print 'op(e2) = ', op(e2) print 'op.T(e1) = ', op.T(e1) print 'op.T.T is op : ', (op.T.T is op) print print 'Testing LinearOperator:' op = LinearOperator(J.shape[1], J.shape[0], lambda v: J*v, matvec_transp=lambda u: u*J) print 'op.shape = ', op.shape print 'op.T.shape = ', op.T.shape print 'op * e2 = ', op * e2 print 'e1.shape = ', e1.shape print 'op.T * e1 = ', op.T * e1 print 'op.T.T * e2 = ', op.T.T * e2 print 'op(e2) = ', op(e2) print 'op.T(e1) = ', op.T(e1) print 'op.T.T is op : ', (op.T.T is op) print op2 = op.T * op print 'op2 * e2 = ', op2 * e2 print 'op.T * (op * e2) = ', op.T * (op * e2) print 'op2 is symmetric: ', check_symmetric(op2) op3 = op * op.T print 'op3 * e1 = ', op3 * e1 print 'op * (op.T * e1) = ', op * (op.T * e1) print 'op3 is symmetric: ', check_symmetric(op3) print print 'Testing negative operator:' nop = -op print op * e2 print nop * e2 I = LinearOperator(nargin=4, nargout=4, matvec=lambda v: v, symmetric=True)
def test_structure(self): """Test that B and H are spd and inverses of each other.""" # Insert a few {s,y} pairs. for _ in range(self.npairs + 2): s = np.random.random(self.n) y = np.random.random(self.n) self.B.store(s, y) self.H.store(s, y) assert self.B.insert == 2 assert self.H.insert == 2 assert check_symmetric(self.B) assert check_symmetric(self.H) assert check_positive_definite(self.B) assert check_positive_definite(self.H) C = self.B * self.H assert np.allclose(C.full(), np.eye(self.n))
print 'op.T(e1) = ', op.T(e1) print 'op.T.T is op : ', (op.T.T is op) print print 'Testing LinearOperator:' op = LinearOperator(J.shape[1], J.shape[0], lambda v: J*v, matvec_transp=lambda u: u*J) print 'op.shape = ', op.shape print 'op.T.shape = ', op.T.shape print 'op * e2 = ', op * e2 print 'e1.shape = ', e1.shape print 'op.T * e1 = ', op.T * e1 print 'op.T.T * e2 = ', op.T.T * e2 print 'op(e2) = ', op(e2) print 'op.T(e1) = ', op.T(e1) print 'op.T.T is op : ', (op.T.T is op) print op2 = op.T * op print 'op2 * e2 = ', op2 * e2 print 'op.T * (op * e2) = ', op.T * (op * e2) print 'op2 is symmetric: ', check_symmetric(op2) op3 = op * op.T print 'op3 * e1 = ', op3 * e1 print 'op * (op.T * e1) = ', op * (op.T * e1) print 'op3 is symmetric: ', check_symmetric(op3) print print 'Testing negative operator:' nop = -op print op * e2 print nop * e2
def test_symmetric(self): """Check that the factorization is a symmetric operator.""" assert check_symmetric(self.M)
print "With call:" print "op(e2) = ", op(e2) print "op.T(e1) = ", op.T(e1) print "op.T.T is op : ", (op.T.T is op) print print "Testing LinearOperator:" op = LinearOperator(J.shape[1], J.shape[0], lambda v: J * v, matvec_transp=lambda u: u * J) print "op.shape = ", op.shape print "op.T.shape = ", op.T.shape print "op * e2 = ", op * e2 print "e1.shape = ", e1.shape print "op.T * e1 = ", op.T * e1 print "op.T.T * e2 = ", op.T.T * e2 print "op(e2) = ", op(e2) print "op.T(e1) = ", op.T(e1) print "op.T.T is op : ", (op.T.T is op) print op2 = op.T * op print "op2 * e2 = ", op2 * e2 print "op.T * (op * e2) = ", op.T * (op * e2) print "op2 is symmetric: ", check_symmetric(op2) op3 = op * op.T print "op3 * e1 = ", op3 * e1 print "op * (op.T * e1) = ", op * (op.T * e1) print "op3 is symmetric: ", check_symmetric(op3) print print "Testing negative operator:" nop = -op print op * e2 print nop * e2