Esempio n. 1
0
    def test_state_transformations_no_frame(self):
        """Test frame transformations with no frame."""

        frame = Frame(Array(np.zeros(2)))

        t = 0.123
        y = Array([1.0, 1j])
        out = frame.state_into_frame(t, y)
        self.assertAllClose(out, y)
        out = frame.state_out_of_frame(t, y)
        self.assertAllClose(out, y)

        t = 100.12498
        y = Array(np.eye(2))
        out = frame.state_into_frame(t, y)
        self.assertAllClose(out, y)
        out = frame.state_out_of_frame(t, y)
        self.assertAllClose(out, y)
Esempio n. 2
0
    def _test_state_out_of_frame(self,
                                 t,
                                 frame_op,
                                 y,
                                 y_in_frame_basis=False,
                                 return_in_frame_basis=False):

        evals, U = np.linalg.eigh(1j * frame_op)
        evals = -1j * Array(evals)

        frame = Frame(frame_op)

        value = frame.state_out_of_frame(t, y, y_in_frame_basis,
                                         return_in_frame_basis)
        expected = y
        if not y_in_frame_basis:
            expected = U.conj().transpose() @ expected

        expected = np.diag(np.exp(t * evals)) @ expected

        if not return_in_frame_basis:
            expected = U @ expected

        self.assertAllClose(value, expected, rtol=1e-10, atol=1e-10)