def test_eigs(n, k, which): np.random.seed(0) A = sps.random(n, n, density=0.1) Aop = NumpyMatrixOperator(A) ew, ev = eigs(Aop, k=k, which=which) assert np.sum((Aop.apply(ev) - ev * ew).l2_norm()) < 1e-4
def apply_adjoint(self, V, mu=None): assert V in self.range if self.functional: U = super().apply_adjoint(V, mu=mu) return self.source.from_numpy(U.to_numpy()) adj_op = NumpyMatrixOperator(self.matrix).H U = [adj_op.apply(adj_op.source.make_array(v._array)).to_numpy().ravel() for v in V._list] if self.vector: return self.source.make_array(np.array(U)) if len(U) > 0 else self.source.empty() else: return self.source.from_numpy(U)
def test_numpy_sparse_solvers(numpy_sparse_solver): op = NumpyMatrixOperator(diags([np.arange(1., 11.)], [0]), solver_options=numpy_sparse_solver) rhs = op.range.make_array(np.ones(10)) solution = op.apply_inverse(rhs) assert ((op.apply(solution) - rhs).l2_norm() / rhs.l2_norm())[0] < 1e-8
def test_numpy_dense_solvers(): op = NumpyMatrixOperator(np.eye(10) * np.arange(1, 11)) rhs = op.range.make_array(np.ones(10)) solution = op.apply_inverse(rhs) assert ((op.apply(solution) - rhs).l2_norm() / rhs.l2_norm())[0] < 1e-8
def test_numpy_sparse_solvers(numpy_sparse_solver): op = NumpyMatrixOperator(diags([np.arange(1., 11.)], [0]), solver_options=numpy_sparse_solver) rhs = NumpyVectorArray(np.ones(10)) solution = op.apply_inverse(rhs) assert ((op.apply(solution) - rhs).l2_norm() / rhs.l2_norm())[0] < 1e-8
def test_numpy_dense_solvers(numpy_dense_solver): op = NumpyMatrixOperator(np.eye(10) * np.arange(1, 11), solver_options=numpy_dense_solver) rhs = NumpyVectorArray(np.ones(10)) solution = op.apply_inverse(rhs) assert ((op.apply(solution) - rhs).l2_norm() / rhs.l2_norm())[0] < 1e-8
def test_numpy_dense_solvers(): op = NumpyMatrixOperator(np.eye(10) * np.arange(1, 11)) rhs = op.range.make_array(np.ones(10)) solution = op.apply_inverse(rhs) assert ((op.apply(solution) - rhs).l2_norm() / rhs.l2_norm())[0] < 1e-8
def test_numpy_dense_solvers(numpy_dense_solver): op = NumpyMatrixOperator(np.eye(10) * np.arange(1, 11), solver_options=numpy_dense_solver) rhs = NumpyVectorArray(np.ones(10)) solution = op.apply_inverse(rhs) assert ((op.apply(solution) - rhs).l2_norm() / rhs.l2_norm())[0] < 1e-8