Exemplo n.º 1
0
def main():

    hm = Observable("x_0")
    ob_y = Observable("y_0")
    ob_z = Observable("z_0")

    for i in range(6):
        t = i * 0.05
        qs = QState(1)

        # time evolution
        qs.evolve(observable=hm, time=t, iteration=100)

        # expectation values of Observable Y,Z
        exp_y = qs.expect(observable=ob_y).real
        exp_z = qs.expect(observable=ob_z).real

        # argument
        if abs(exp_z) < 0.00001:  # exp_theta = 0.5*PI, if exp_z = 0.0
            exp_theta = 0.5
        else:
            exp_theta = math.atan(exp_y / exp_z) / math.pi

        print(
            "time = {0:.2f}, <y> = {1:.2f}, <z> = {2:.2f}, <theta> = {3:.2f}*PI"
            .format(t, exp_y, exp_z, exp_theta))
Exemplo n.º 2
0
 def test_evolve(self):
     """test 'evolve'
     """
     hm = Observable("x_0")
     qs = QState(qubit_num=1)
     qs.evolve(observable=hm, time=0.2, iteration=100)
     actual = qs.amp
     expect = np.array([(0.8090169943749473 + 0j), 0.5877852522924732j])
     ans = equal_vectors(actual, expect)
     self.assertEqual(ans, True)
Exemplo n.º 3
0
 def test_evolve_2_qubit(self):
     """test 'evolve' (2-qubit)
     """
     qs = QState(qubit_num=2).x(0)
     hm = Observable("z_0*z_1+x_0+x_1")
     ob = Observable("2.0+z_0+z_1")
     qs.evolve(observable=hm, time=0.1, iteration=10)
     actual = qs.expect(observable=ob)
     expect = 1.9999999999999898 + 0j
     ans = equal_values(actual, expect)
     self.assertEqual(ans, True)
Exemplo n.º 4
0
 def test_evolve_1_qubit(self):
     """test 'evolve' (1-qubit)
     """
     ob = Observable("y_0")
     hm = Observable("x_0")
     qs = QState(qubit_num=1)
     qs.evolve(observable=hm, time=0.2, iteration=100)
     actual = qs.expect(observable=ob)
     expect = 0.9510565162951199
     ans = equal_values(actual, expect)
     self.assertEqual(ans, True)
Exemplo n.º 5
0
def main():

    hm = Observable("x_0")

    for i in range(21):
        t = i*0.05
        qs = QState(1)

        # time evolution
        qs.evolve(observable=hm, time=t, iteration=100)

        # quantum stat in bloch spere
        theta, phi = bloch(qs.amp[0],qs.amp[1])

        print("time = {0:.2f}, theta = {1:.2f}*PI, phi = {2:.2f}*PI"
              .format(t,theta,phi))