示例#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)
示例#2
0
    def _test_state_into_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 * evals

        frame = Frame(frame_op)

        value = frame.state_into_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 * Array(evals))) @ expected

        if not return_in_frame_basis:
            expected = U @ expected

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