コード例 #1
0
ファイル: lsq_testproblem.py プロジェクト: modeha/lsq_solver
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)
コード例 #2
0
    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))
コード例 #3
0
ファイル: linop.py プロジェクト: ghisvail/pykrylov
    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
コード例 #4
0
ファイル: linop.py プロジェクト: PythonOptimizers/pykrylov
    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
コード例 #5
0
 def test_symmetric(self):
     """Check that the factorization is a symmetric operator."""
     assert check_symmetric(self.M)
コード例 #6
0
 def test_symmetric(self):
     """Check that the factorization is a symmetric operator."""
     assert check_symmetric(self.M)
コード例 #7
0
ファイル: linop.py プロジェクト: jueqingsizhe66/pykrylov
    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