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))
def test_evolve_2_qubit(self): """test 'evolve' (2-qubit) """ qs = QStateGpu(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)
def test_evolve_1_qubit(self): """test 'evolve' (1-qubit) """ ob = Observable("y_0") hm = Observable("x_0") qs = QStateGpu(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)
def test_evolve(self): """test 'evolve' """ hm = Observable("x_0") qs = QStateGpu(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)
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))
qs.cx(1, 0) qs.rz(1, phase=phi[4]) qs.rx(1, phase=phi[5]) exp = ExpectVal(M, qs) # qs.free() return exp def callback(phi): print("energy = ", cost(phi)) #------------------------------------ # main #------------------------------------ # set Hamiltonian M_str = set_hamiltonian_str() M = Observable(M_str) # VQE init = np.random.rand(6) callback(init) res = scipy.optimize.minimize(cost, init, method='Powell', callback=callback)