def test_apply(): np.random.seed(0) A11 = np.random.randn(2, 3) A12 = np.random.randn(2, 4) A21 = np.zeros((5, 3)) A22 = np.random.randn(5, 4) A = np.vstack((np.hstack((A11, A12)), np.hstack((A21, A22)))) A11op = NumpyMatrixOperator(A11) A12op = NumpyMatrixOperator(A12) A22op = NumpyMatrixOperator(A22) Aop = BlockOperator(np.array([[A11op, A12op], [None, A22op]])) v1 = np.random.randn(3) v2 = np.random.randn(4) v = np.hstack((v1, v2)) v1va = NumpyVectorSpace.from_numpy(v1) v2va = NumpyVectorSpace.from_numpy(v2) vva = BlockVectorSpace.make_array((v1va, v2va)) wva = Aop.apply(vva) w = np.hstack((wva.block(0).to_numpy(), wva.block(1).to_numpy())) assert np.allclose(A.dot(v), w)
def test_apply(): np.random.seed(0) A11 = np.random.randn(2, 3) A12 = np.random.randn(2, 4) A21 = np.zeros((5, 3)) A22 = np.random.randn(5, 4) A = np.vstack((np.hstack((A11, A12)), np.hstack((A21, A22)))) A11op = NumpyMatrixOperator(A11) A12op = NumpyMatrixOperator(A12) A22op = NumpyMatrixOperator(A22) Aop = BlockOperator(np.array([[A11op, A12op], [None, A22op]])) v1 = np.random.randn(3) v2 = np.random.randn(4) v = np.hstack((v1, v2)) v1va = NumpyVectorSpace.from_data(v1) v2va = NumpyVectorSpace.from_data(v2) vva = BlockVectorSpace.make_array((v1va, v2va)) wva = Aop.apply(vva) w = np.hstack((wva.block(0).data, wva.block(1).data)) assert np.allclose(A.dot(v), w)