Реализация кодирования эволюции квантового состояния, декогеренции и динамики запутанности с помощью QuTiP

В этом продвинутом руководстве по QuTiP мы исследуем богатую динамику квантовых систем с использованием Python и фреймворка QuTiP.

1. Создание квантовых состояний

Мы начнём с подготовки фундаментальных состояний одно- и двухкубитов, включая пары Белла, а затем перейдём к реализации ключевых квантовых операций, таких как матрицы Паули, вентиль Хадамарда и CNOT.

“`python
import numpy as np
import matplotlib.pyplot as plt
from qutip import *

print(” Advanced QuTip Tutorial: Quantum Dynamics & Entanglement”)
print(“=” * 60)

ground = basis(2, 0)
excited = basis(2, 1)
plus = (ground + excited).unit()
minus = (ground – excited).unit()

print(f”Ground state |0⟩: {ground.dag()}”)
print(f”Superposition |+⟩: {plus.dag()}”)

bellphiplus = (tensor(ground, ground) + tensor(excited, excited)).unit()
bellpsiminus = (tensor(ground, excited) – tensor(excited, ground)).unit()

print(f”\nBell state |Φ+⟩ = (|00⟩ + |11⟩)/√2″)
rhobell = bellphiplus * bellphi_plus.dag()
print(f”Entanglement measure: {concurrence(rho_bell):.3f}”)
“`

2. Квантовые вентили и операции

Мы исследуем операторы Паули σₓ, σᵧ и σ_z как фундаментальные строительные блоки вращений и отражений кубитов. Используя их, мы конструируем вентиль Хадамарда для генерации суперпозиции и вентиль CNOT для операций запутывания, применяя их к подготовленным состояниям.

“`python
sx, sy, sz = sigmax(), sigmay(), sigmaz()
print(f”Pauli-X matrix:\n{sx}”)

hadamard = (sx + sz) / np.sqrt(2)
cnot = tensor(fockdm(2, 0), qeye(2)) + tensor(fockdm(2, 1), sx)

h_ground = hadamard * ground
print(f”\nH|0⟩ = {h_ground.dag()}”)
“`

3. Квантовая динамика: осцилляции Раби

Мы моделируем приведённую двухуровневую систему с гамильтонианом, который связывает члены σ_z и σₓ для моделирования осцилляций Раби. Эволюционируя основное состояние под этим гамильтонианом, мы отслеживаем колебания населённости возбуждённого состояния и визуализируем их за полный цикл Раби.

“`python
omega_0 = 1.0
omega_r = 0.5

H = 0.5 omega0 sz + 0.5 omegar sx

tlist = np.linspace(0, 4*np.pi/omegar, 100)
psi0 = ground
result = mesolve(H, psi0, t_list, [], [])

excitedpop = [expect(fockdm(2, 1), state) for state in result.states]

plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(tlist, excitedpop, ‘b-‘, linewidth=2)
plt.xlabel(‘Time (ℏ/ω)’)
plt.ylabel(‘Excited State Population’)
plt.title(‘Rabi Oscillations’)
plt.grid(True, alpha=0.3)
“`

4. Квантовый гармонический осциллятор

Мы расширяем наше исследование до N-уровневого гармонического осциллятора, инициализируя когерентное состояние и эволюционируя его под стандартным гамильтонианом. Мы вычисляем и строим фазовую траекторию ⟨x⟩ vs. ⟨p⟩ для наблюдения классического движения в квантовом режиме.

“`python
N = 20
a = destroy(N)
H_ho = a.dag() * a + 0.5

alpha = 2.0
psi0_coh = coherent(N, alpha)

tlistho = np.linspace(0, 2*np.pi, 50)
resultho = mesolve(Hho, psi0coh, tlist_ho, [], [])

x_op = (a + a.dag()) / np.sqrt(2)
p_op = 1j * (a.dag() – a) / np.sqrt(2)

xexpect = [expect(xop, state) for state in result_ho.states]
pexpect = [expect(pop, state) for state in result_ho.states]

plt.subplot(1, 2, 2)
plt.plot(xexpect, pexpect, ‘r-‘, linewidth=2)
plt.plot(xexpect[0], pexpect[0], ‘go’, markersize=8, label=’Start’)
plt.plot(xexpect[-1], pexpect[-1], ‘ro’, markersize=8, label=’End’)
plt.xlabel(‘⟨x⟩’)
plt.ylabel(‘⟨p⟩’)
plt.title(‘Coherent State Phase Space’)
plt.legend()
plt.grid(True, alpha=0.3)
plt.axis(‘equal’)
plt.tight_layout()
plt.show()
“`

5. Квантовая декогеренция и открытые системы

Мы вводим диссипацию через коллапсные операторы для затухающего гармонического осциллятора, моделируя взаимодействие с тепловой средой. Затем мы эволюционируем начальное сжатое состояние и отслеживаем распад числа фотонов ⟨n⟩ для иллюстрации эффектов декогеренции.

“`python
gamma = 0.2
n_th = 0.1

cops = [np.sqrt(gamma (1 + nth)) a, np.sqrt(gamma n_th) a.dag()]

psi0_sq = squeeze(N, 0.5) * basis(N, 0)

tlistdamp = np.linspace(0, 10, 100)
resultdamp = mesolve(Hho, psi0sq, tlistdamp, cops, [])

nexpect = [expect(a.dag() * a, state) for state in resultdamp.states]

plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(tlistdamp, n_expect, ‘g-‘, linewidth=2)
plt.xlabel(‘Time’)
plt.ylabel(‘⟨n⟩’)
plt.title(‘Photon Number Decay’)
plt.grid(True, alpha=0.3)
“`

6. Визуализация функции Вигнера

Мы вычисляем квазивероятностное распределение Вигнера конечного затухающего состояния на сетке в фазовом пространстве. Контур-построение W(x,p) позволяет нам интуитивно понять неклассические особенности и влияние декогеренции на когерентность состояния.

“`python
finalstate = resultdamp.states[-1]
xvec = np.linspace(-4, 4, 50)
Wfinal = wigner(finalstate, xvec, xvec)

plt.subplot(1, 2, 2)
plt.contourf(xvec, xvec, W_final, 20, cmap=’RdBu’)
plt.colorbar(label=’W(x,p)’)
plt.xlabel(‘x’)
plt.ylabel(‘p’)
plt.title(‘Wigner Function (Final State)’)
plt.tight_layout()
plt.show()
“`

7. Динамика запутанности

Мы связываем два кубита с взаимодействием σₓ⊗σₓ и эволюционируем начальное состояние произведения, измеряя конкордантность на каждом временном шаге. Это позволяет нам наблюдать нарастание и затухание запутанности в реальном времени в зависимости от силы связи и расстройки.

“`python
omega1, omega2 = 1.0, 1.1
g = 0.1

H_coupled = (omega1/2 * tensor(sz, qeye(2)) +
omega2/2 * tensor(qeye(2), sz) +
g * tensor(sx, sx))

psi0_prod = tensor(plus, ground)

tlistent = np.linspace(0, 20, 200)
resultent = mesolve(Hcoupled, psi0prod, tlist_ent, [], [])

entanglement = [concurrence(state * state.dag()) for state in result_ent.states]

plt.figure(figsize=(8, 5))
plt.plot(tlistent, entanglement, ‘purple’, linewidth=2)
plt.xlabel(‘Time’)
plt.ylabel(‘Concurrence’)
plt.title(‘Entanglement Generation in Coupled Qubits’)
plt.grid(True, alpha=0.3)
plt.ylim(0, 1)
plt.show()
“`

8. Резюме продемонстрированных продвинутых функций:

✓ Подготовка и манипуляция квантовыми состояниями
✓ Эволюция во времени с помощью mesolve()
✓ Осцилляции Раби в двухуровневых системах
✓ Когерентные состояния и гармонические осцилляторы
✓ Открытые квантовые системы с декогеренцией
✓ Визуализация функции Вигнера
✓ Количественная оценка и динамика запутанности

Мы прошли через основные явления квантовой механики, от суперпозиции и запутанности до декогеренции и визуализации фазового пространства, используя интуитивно понятный API QuTiP. По пути мы подготовили квантовые состояния, применили вентили, решили задачи временной эволюции и количественно оценили запутанность с помощью конкордантности.

Попробуйте изменить параметры, такие как силы связи, скорости затухания и начальные состояния, чтобы углубить своё понимание.

1. Какие квантовые состояния были созданы в статье и какие операции над ними были выполнены?

В статье были созданы фундаментальные состояния одно- и двухкубитов, включая пары Белла. Затем были реализованы ключевые квантовые операции, такие как матрицы Паули, вентиль Хадамарда и CNOT.

2. Какие параметры и переменные были использованы для моделирования осцилляций Раби в двухуровневой системе?

Для моделирования осцилляций Раби были использованы следующие параметры и переменные: omega0, omegar, H, tlist, psi0, result, excitedpop.

3. Какие методы и функции QuTiP были использованы для визуализации функции Вигнера и как они помогли понять неклассические особенности состояния?

Для визуализации функции Вигнера были использованы следующие методы и функции QuTiP: wigner(), contourf(), colorbar(). Эти методы позволили наглядно представить распределение Вигнера в фазовом пространстве и понять неклассические особенности состояния.

4. Какие квантовые вентили и операции были исследованы в статье и как они были применены к подготовленным состояниям?

В статье были исследованы операторы Паули σₓ, σᵧ и σ_z как фундаментальные строительные блоки вращений и отражений кубитов. Используя их, был сконструирован вентиль Хадамарда для генерации суперпозиции и вентиль CNOT для операций запутывания, которые были применены к подготовленным состояниям.

5. Какие параметры и переменные были использованы для моделирования динамики запутанности в связанных кубитах?

Для моделирования динамики запутанности были использованы следующие параметры и переменные: omega1, omega2, g, Hcoupled, psi0prod, tlistent, result_ent, entanglement.

Источник