Файл:Master equation unravelings.svg
Материал из Википедии — свободной энциклопедии
Перейти к навигации
Перейти к поиску
![Файл:Master equation unravelings.svg](http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Master_equation_unravelings.svg/720px-Master_equation_unravelings.svg.png)
Размер этого PNG-превью для исходного SVG-файла: 720 × 540 пкс. Другие разрешения: 320 × 240 пкс | 640 × 480 пкс | 1024 × 768 пкс | 1280 × 960 пкс | 2560 × 1920 пкс.
Исходный файл (SVG-файл, номинально 720 × 540 пкс, размер файла: 453 КБ)
![]() | Этот файл находится на Викискладе. Сведения о нём показаны ниже.
Викисклад — централизованное хранилище для свободных файлов, используемых в проектах Викимедиа.
Сообщить об ошибке с файлом |
Краткое описание
ОписаниеMaster equation unravelings.svg |
English: Plot of the evolution of the z-component of the Bloch vector of a two-level atom coupled to the electromagnetic field undergoing damped Rabi oscillations. The top plot shows the quantum trajectory for the atom for photon-counting measurements performed on the electromagnetic field, the middle plot shows the same for homodyne detection, and the bottom plot compares the previous two measurement choices (each averaged over 32 trajectories) with the unconditioned evolution given by the master equation. |
Дата | |
Источник | Собственная работа |
Автор | Azaghal of Belegost |
Source code
Source Code in python: |
---|
import numpy as np
import matplotlib.pyplot as plt
import sys
import random
from math import pi, cos, sin, sqrt
# Pauli matrices
X = np.matrix([[0. + 0.j, 1. + 0.j], [1. + 0.j, 0. + 0.j]])
Y = np.matrix([[0. + 0.j, 0. - 1.j], [0. + 1.j, 0. + 0.j]])
Z = np.matrix([[1. + 0.j, 0. + 0.j], [0. + 0.j, -1 + 0.j]])
Id = np.matrix([[1. + 0.j, 0. + 0.j], [0. + 0.j, 1. + 0.j]])
# Program parameters
timesteps = 1e4
final_time = 5
timestep = final_time/timesteps
# Evolution parameters
H = 1*X
g = 1
L = sqrt(g)*(X - 1.j*Y)/2
# Initial Bloch vector parameters
r = 1
theta = 0
phi = 0
initial_state = 0.5*(Id + r*(cos(theta)*Z + sin(theta)*(cos(phi)*X +
sin(phi)*Y)))
trials = 32
def Commutator(A, B):
return A*B - B*A
def Diffusion(op, state):
return op*state*op.H - 0.5*(op.H*op*state + state*op.H*op)
def Time_Deriv(hamiltonian, lindblad, state):
return -1.j*Commutator(hamiltonian, state) + Diffusion(lindblad, state)
def Vacuum_SME_Evol(hamiltonian, lindblad, state, timestep):
state_trace = np.trace(state*lindblad.H*lindblad)
E_N = state_trace*timestep
d_state = 0.5*timestep*(2*state*state_trace - lindblad.H*lindblad*state -
state*lindblad.H*lindblad)
if random.uniform(0, 1) < E_N:
d_state += lindblad*state*lindblad.H/state_trace - state
else:
d_state += -1.j*Commutator(hamiltonian, state)*timestep
return d_state
def H_supop(op, state):
return op*state + state*op.H - np.trace((op + op.H)*state)*state
def Homodyne_Vac_SME_Evol(hamiltonian, lindblad, state, timestep):
d_state = (Diffusion(lindblad, state) -
1.j*Commutator(hamiltonian, state))*timestep
state_trace = np.trace(lindblad*state + state*lindblad.H)
if random.uniform(0, 1) < (1 + sqrt(timestep)*state_trace)/2:
d_R = sqrt(timestep)
else:
d_R = -sqrt(timestep)
d_state += (d_R - state_trace*timestep)*H_supop(lindblad, state)
return d_state
def main():
state = initial_state
E_z = []
states = []
times = np.arange(0, final_time, timestep)
# Calculate the trajectory from the master equation
for time in times:
states.append(state)
E_z.append(np.trace(Z*state))
state = state + Time_Deriv(H, L, state)*timestep
cond_E_z = []
hom_E_z = []
test_var = pi
cond_states = []
hom_states = []
avg_E_z = []
avg_hom_E_z = []
# Calculate the conditional evolution for a number of trials
for trial in range(trials):
cond_state = initial_state
cond_states.append([])
cond_E_z.append([])
hom_state = initial_state
hom_states.append([])
hom_E_z.append([])
for time in times:
cond_states[trial].append(cond_state)
cond_E_z[trial].append(np.trace(Z*cond_state))
cond_state = cond_state + Vacuum_SME_Evol(H, L, cond_state,
timestep)
hom_states[trial].append(hom_state)
hom_E_z[trial].append(np.trace(Z*hom_state))
hom_state = hom_state + Homodyne_Vac_SME_Evol(H, L, hom_state,
timestep)
# Calculate the average behavior of the system over all trials
for i in range(len(times)):
sum_z = 0
for cond_E_z_series in cond_E_z:
sum_z += cond_E_z_series[i]
avg_E_z.append(sum_z/len(cond_E_z))
hom_sum_z = 0
for hom_E_z_series in hom_E_z:
hom_sum_z += hom_E_z_series[i]
avg_hom_E_z.append(hom_sum_z/len(hom_E_z))
# Plot photon-counting conditional evolution for Z expectation value
fig = plt.figure()
ax1 = fig.add_subplot(311)
for i in range(min(4, len(cond_E_z))):
ax1.plot(times, cond_E_z[i])
plt.axis([0, 5, -1, 1])
plt.ylabel(r'$\operatorname{Tr}[Z\rho_I]$')
# Plot homodyne conditional evolution for Z expectation value
ax2 = fig.add_subplot(312)
for i in range(min(4, len(hom_E_z))):
ax2.plot(times, hom_E_z[i])
plt.axis([0, 5, -1, 1])
plt.ylabel(r'$\operatorname{Tr}[Z\rho_J]$')
# Plot average Z behavior over conditional evolution trials against master
# equation trajectory
ax3 = fig.add_subplot(313)
ax3.plot(times, avg_E_z, dash_joinstyle='round', dash_capstyle='round',
linestyle=':', label=r'$\rho=\operatorname{E}[\rho_I]$')
ax3.plot(times, avg_hom_E_z, dash_joinstyle='round', dash_capstyle='round',
linestyle='--', label=r'$\rho=\operatorname{E}[\rho_J]$')
ax3.plot(times, E_z, linestyle='-', label=r'$\rho=\rho_\mathrm{ME}$')
ax3.legend()
plt.axis([0, 5, -1, 1])
plt.xlabel('t')
plt.ylabel(r'$\operatorname{Tr}[Z\rho]$')
plt.savefig('master_eq_unravelings.svg')
if __name__ == '__main__':
sys.exit(main())
|
Лицензирование
Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующей лицензии:
![w:ru:Creative Commons](https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CC_some_rights_reserved.svg/90px-CC_some_rights_reserved.svg.png)
![атрибуция](https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![распространение на тех же условиях](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
Этот файл доступен по лицензии Creative Commons Attribution-Share Alike 3.0 Unported.
- Вы можете свободно:
- делиться произведением – копировать, распространять и передавать данное произведение
- создавать производные – переделывать данное произведение
- При соблюдении следующих условий:
- атрибуция – Вы должны указать авторство, предоставить ссылку на лицензию и указать, внёс ли автор какие-либо изменения. Это можно сделать любым разумным способом, но не создавая впечатление, что лицензиат поддерживает вас или использование вами данного произведения.
- распространение на тех же условиях – Если вы изменяете, преобразуете или создаёте иное произведение на основе данного, то обязаны использовать лицензию исходного произведения или лицензию, совместимую с исходной.
Краткие подписи
Добавьте однострочное описание того, что собой представляет этот файл
Элементы, изображённые на этом файле
изображённый объект
У этого свойства есть некоторое значение без элемента в
9 декабря 2013
История файла
Нажмите на дату/время, чтобы посмотреть файл, который был загружен в тот момент.
Дата/время | Миниатюра | Размеры | Участник | Примечание | |
---|---|---|---|---|---|
текущий | 03:08, 10 декабря 2013 | ![]() | 720 × 540 (453 КБ) | Azaghal of Belegost | User created page with UploadWizard |
Использование файла
Следующая страница использует этот файл:
Глобальное использование файла
Данный файл используется в следующих вики:
- Использование в en.wikipedia.org
- Использование в www.wikidata.org
Метаданные
Файл содержит дополнительные данные, обычно добавляемые цифровыми камерами или сканерами. Если файл после создания редактировался, то некоторые параметры могут не соответствовать текущему изображению.
Ширина | 576pt |
---|---|
Высота | 432pt |