44 lines
910 B
Python
44 lines
910 B
Python
|
import numpy as np
|
||
|
import matplotlib.pyplot as plt
|
||
|
|
||
|
from pyqcs import State, sample
|
||
|
from transfer_matrix import T_time_slice
|
||
|
from hamiltonian import H
|
||
|
|
||
|
nqbits = 4
|
||
|
g = 0.5
|
||
|
N = 400
|
||
|
t_stop = 9
|
||
|
delta_t = 0.05
|
||
|
qbits = list(range(nqbits))
|
||
|
|
||
|
n_sample = 200
|
||
|
measure = 0b10
|
||
|
|
||
|
|
||
|
results_qc = []
|
||
|
print()
|
||
|
for t in np.arange(0, t_stop, delta_t):
|
||
|
# QC simulation
|
||
|
state = State.new_zero_state(nqbits)
|
||
|
|
||
|
for _ in range(N):
|
||
|
state = T_time_slice(qbits, t, g, N) * state
|
||
|
|
||
|
result = sample(state, measure, n_sample)
|
||
|
|
||
|
results_qc.append(result[0] / n_sample)
|
||
|
|
||
|
# Simulation using matrices
|
||
|
#np_
|
||
|
print(f"simulating... {int(t/t_stop*100)} % ", end="\r")
|
||
|
print()
|
||
|
print("done.")
|
||
|
|
||
|
plt.plot(np.arange(0, t_stop, delta_t), results_qc)
|
||
|
plt.xlabel("t")
|
||
|
plt.ylabel(r"$|0\rangle$ probability amplitude for second spin")
|
||
|
plt.title(f"{nqbits} site spin chain with g={g} coupling to external field")
|
||
|
plt.show()
|
||
|
|