oscillating_states_prod = np.dot(U_mom, oscillating_states)
reviving_states_prod = np.dot(U_mom, reviving_states)
thermalizing_states_prod = np.dot(U_mom, thermalizing_states)

oscillating_entropy = np.zeros(np.size(oscillating_states, axis=1))
reviving_entropy = np.zeros(np.size(reviving_states, axis=1))
thermalizing_entropy = np.zeros(np.size(thermalizing_states, axis=1))

oscillating_energy = np.zeros(np.size(oscillating_states, axis=1))
reviving_energy = np.zeros(np.size(reviving_states, axis=1))
thermalizing_energy = np.zeros(np.size(thermalizing_states, axis=1))

pbar = ProgressBar()
for n in pbar(range(0, np.size(oscillating_entropy, axis=0))):
    oscillating_entropy[n] = entropy(pxp).eval(oscillating_states_prod[:, n])
    oscillating_energy[n] = states_energy_exp[int(oscillating_indices[n])]
    # oscillating_energy[n] = np.vdot(oscillating_states[:,n],np.dot(H,oscillating_states[:,n]))
pbar = ProgressBar()
for n in pbar(range(0, np.size(reviving_entropy, axis=0))):
    reviving_entropy[n] = entropy(pxp).eval(reviving_states_prod[:, n])
    reviving_energy[n] = states_energy_exp[int(reviving_indices[n])]
    # reviving_energy[n] = np.vdot(reviving_states[:,n],np.dot(H,reviving_states[:,n]))
pbar = ProgressBar()
for n in pbar(range(0, np.size(thermalizing_entropy, axis=0))):
    thermalizing_entropy[n] = entropy(pxp).eval(thermalizing_states_prod[:, n])
    thermalizing_energy[n] = states_energy_exp[int(thermalizing_indices[n])]
    # thermalizing_energy[n] = np.vdot(thermalizing_states[:,n],np.dot(H,thermalizing_states[:,n]))

plt.scatter(oscillating_energy, oscillating_entropy, label="Oscillatory band")
plt.scatter(reviving_energy, reviving_entropy, label="Reviving band")
t = np.arange(0, 10, 0.1)
from Calculations import time_evolve_state
z = zm_state(2, 1, pxp)
# k = pxp_syms.find_k_ref(z.ref)
# for n in range(0,np.size(k,axis=0)):
# H.gen(k[n])
# H.sector.find_eig(k[n])

# fidelity(z,H,"use sym").plot(np.arange(0,20,0.01),z)
fidelity(z, H).plot(np.arange(0, 20, 0.01), z)
plt.show()

states = dict()
states_energy = dict()
f = dict()
ent = entropy(pxp)
ent_vals = np.zeros(np.size(pxp.basis_refs))
pbar = ProgressBar()
print("Plotting fidelity/entropy")
for n in pbar(range(0, np.size(pxp.basis_refs, axis=0))):
    states[n] = ref_state(pxp.basis_refs[n], pxp)
    states_energy[n] = np.conj(u[pxp.keys[states[n].ref], :])
    f[n] = np.zeros(np.size(t))

    ent_vals[n] = ent.eval(u[:, n])
    for m in range(0, np.size(t, axis=0)):
        evolved_state = time_evolve_state(states_energy[n], e, t[m])
        f[n][m] = np.abs(np.vdot(states_energy[n], evolved_state))**2

    plt.plot(t, f[n], alpha=0.6)
plt.xlabel(r"$t$")
示例#3
0
d = 2

system = unlocking_System([0], "periodic", d, N)
system.gen_basis()
#dynamics + fidelity
H = Hamiltonian(system)
H.site_ops[1] = np.array([[0, 1], [1, 0]])
H.site_ops[2] = np.array([[0, 0], [0, 1]])
H.model = np.array([[0, 1, 0], [2]])
H.model_coef = np.array([1, 0.325])
H.gen()
H.sector.find_eig()
e = H.sector.eigvalues()
u = H.sector.eigvectors()

ent = entropy(system)


def long_time_entropy(phi2, t):
    #create MPs
    def A_up(theta, phi):
        return np.array([[0, 1j * np.exp(-1j * phi)], [0, 0]])

    def A_down(theta, phi):
        return np.array([[np.cos(theta), 0], [np.sin(theta), 0]])

    theta1 = 0.9
    theta2 = 2.985
    phi1 = 0.188
    # phi2 = 1.3