Моделирование функции Вигнера и Q - функции

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


В данном примере показано использование библиотеки для квантовых вычислений Qutip.

Функция Вигнера (функция квазивероятностного распределения Вигнера или распределение Вейля) была введена Вигнером в 1932 году для изучения квантовых поправок к классической статистической механике.

Функцию Вигнера можно считать тождественной волновой функции в уравнении Шредингера. Она представляет из себя функцию распределения вероятности в фазовом пространстве.

Q - функция - статистическая функция вероятности, является обратной к распределению Гаусса (1 - Ф(x)).

Исходный код прикреплен.

import matplotlib.pylab as plt
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np
from qutip import *

N = 20
alpha = -1.0 #когерентная амплитуда поля
epsilon = 0.5j #сжимающий параметр
a = destroy(N)

D = (alpha * a.dag() - np.conj(alpha) * a).expm()  #эмуляция смещения
S = (0.5 * np.conj(epsilon) * a * a - 0.5 * epsilon * a.dag() * a.dag()).expm()  #эмуляция сжатия
psi = D * S * basis(N, 0)  #воздействие на вакуумное (базисное) состояние
g = 2

xvec = np.arange(-40.,40.)*5./40
X,Y = np.meshgrid(xvec, xvec)

#вызов функции Вигнера
W = wigner(psi, xvec, xvec)

fig1 = plt.figure(figsize=(8,6))
ax = Axes3D(fig1)
ax.plot_surface(X, Y, W, rstride=2, cstride=2, cmap=cm.jet, alpha=0.7)
ax.contour(X, Y, W, 15,zdir='x', offset=-6)
ax.contour(X, Y, W, 15,zdir='y', offset=6)
ax.contour(X, Y, W, 15,zdir='z', offset=-0.3)
ax.set_xlim3d(-6,6)
ax.set_xlim3d(-6,6)
ax.set_zlim3d(-0.3,0.4)
plt.title('Wigner function of squeezed state')

#вызов Q - функции
Q = qfunc(psi, xvec, xvec, g)

fig2 = plt.figure(figsize=(8,6))
ax = Axes3D(fig2)
ax.plot_surface(X, Y, Q, rstride=2, cstride=2, cmap=cm.jet, alpha=0.7)
ax.contour(X, Y, Q,zdir='x', offset=-6)
ax.contour(X, Y, Q,zdir='y', offset=6)
ax.contour(X, Y, Q, 15,zdir='z', offset=-0.4)
ax.set_xlim3d(-6,6)
ax.set_xlim3d(-6,6)
ax.set_zlim3d(-0.3,0.4)
plt.title('Q function of squeezed state')

#отображение данных
plt.show()


Источник: vk.com

Комментарии: