Kazus kota Schroedingera jest bodaj najbardziej znanym 'paradoksem' kwantowym. Przypomnijmy, że sam Schroedinger, będąc sceptycznie nastawionym do nowopowstałej mechaniki kwantowej, pragnął był wskazać na niedorzeczność wnioskowania kwantowego zastosowanego do makroświata. W jego przykładzie rolę wiodącą odgrywał był kot, którego życie lub śmierć zależała od wyniku pewnego pomiaru kwantowego. Jak już wówczas wiedziano pomiar wpływa na stan mierzonego układu, rzutując go do jednego z kilku możliwych wyników (pomiar rzutowy - wersja uproszczona). W chwilach poprzedzających pomiar układ kwantowy jest superpozycją możliwości, których realizacja zależy od wyniku przyszłego pomiaru. Schroedinger zauważył, że w opisywanym przezeń gedanken eksperiment rzeczony kot jest również suppozycją, w tym przypadku kota żywego i zdechłego. Realizacja tych możliwości powiązana była z wynikiem eksperymentu.
W dzisiejszych czasach pod pojęciem kota Schroedingera rozumie się stany układów optycznych, które można przedstawić jako superpozycje stanów koherentnych:
$ |SC\rangle =N^{-1}(z)(|z\rangle\pm |-z\rangle) $
Stany te są podobne do kotów, o których myślał Schroedinger, gdyż stany koherentne $ |z\range $ są, dla dostacznie dużych $ |z|$ makroskopowo odróżnialne.
Koty
$ |SC\rangle =N^{-1}(z)(|z\rangle + |-z\rangle) $
nazywamy parzystymi, zaś
$ |SC\rangle =N^{-1}(z)(|z\rangle - |-z\rangle) $
nieparzystymi. Różnice pomiędzy nimi będą nas bardzo interesowały.
Rozpocznijmy od pobrania niezbędnych narzędzi:
from qutip import *
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import *
from pylab import *
%pylab inline
Populating the interactive namespace from numpy and matplotlib
WARNING: pylab import has clobbered these variables: ['power', 'linalg', 'draw_if_interactive', 'random', 'save', 'load', 'info', 'fft'] `%pylab --no-import-all` prevents importing * from pylab and numpy
Określmy teraz wymiar obciętej przestrzeni Hilberta $dim(H) = N$:
N=10
Oraz wybierzmy $z$:
z=3
Jesteśmy gotowi skonstruować koty. Funkcja unit() zapewnia ich normalizację
kot_p=(coherent(N,z)+coherent(N,-z)).unit()
kot_np=(coherent(N,z)-coherent(N,-z)).unit()
Otrzymujemy więc następujące macierze gęstości:
rho_p=ket2dm(kot_p)
rho_np=ket2dm(kot_np)
Użytecznym narzędziem w badaniu własności stanów kwantowych są funkcje (kwazi)prawodopodobieństwa. Tutaj wykorzystamy dwie z nich: funkcję Wignera i Husimiego.
Funcja Wignera jest jedną z najczęściej wykorzystywanych funkcji w optyce kwantowej. Tutaj zdefiniujemy ją jedynie dla stanów czystych $|\psi\rangle$ poprzez jedną z jej włąsności, które można otrzymać z ogólnej definicji:
$ W(\alpha)=\frac{2}{\pi}\sum_{n=0}^\infty \langle \psi|D(\alpha)|n\rangle\langle n|D^\dagger(\alpha)|\psi\rangle $
gdzie operator przesunięcia $ D $dany jest wzorem:
$ D(\alpha) = \exp(\alpha a^\dagger -\alpha^* a )$
Podstawową cechą funkcji Wignera, którą wykorzystamy jest to, że przyjmuje ona wartości ujemne dla stanów, które należą do grupy "nieklasycznych". Cecg tej nie posiada funkcja Husimiego:
$ Q(z) = \langle z|\rho | z\rangle /\pi $
ma ona jednak jasną interpretacją probabilistyczną i opisuje prawdopodobieństwo, że dany stan $\rho$ jest stanem koherentnym o danym $z$.
Poniżej, wykorzystując funkcję QuTipa wigner() wygenerowaliśmy funkcję Wignera dla stanu $\rho$, a następnie ją nakreśliliśmy
rho=rho_p
xvec = linspace(-5,5,200)
X, Y = meshgrid(xvec, xvec)
W = wigner(rho, xvec, xvec)
fig = figure()
ax = Axes3D(fig, azim=-62, elev=25)
ax.plot_surface(X, Y, W, rstride=2, cstride=2, cmap=cm.jet, lw=.1)
ax.set_xlim3d(-6, 6)
ax.set_ylim3d(-6, 6)
ax.set_zlim3d(0, 0.4)
title('Funkcja Wignera')
show()
Na szczególną uwagę zasługuje obszar, gdzie funkcja Wignera jest ujemna. Istnienia takich obszarów oznacza, że koty Schroedingera są stanami nieklasycznymi w rozumieniu optyki kwantowej.
W przypadku nieujemnej funkcji Husimiego nie możemy mówić o detekcji nieklasyczność. Poniżej nakreślona jest funkcja Husimiego dla stanu $\rho$ przy użyciu funkcji qfunc().
rho=rho_p
Q = qfunc(rho, xvec, xvec)
fig = figure()
ax = Axes3D(fig, azim=-62, elev=25)
ax.plot_surface(X, Y, Q, rstride=2, cstride=2, cmap=cm.jet, lw=.1)
ax.set_xlim3d(-6, 6)
ax.set_ylim3d(-6, 6)
#ax.set_zlim3d(0, 0.4)
title('Funkcja Q')
show()
Na podstawie wykresu funkcji Husimiego możemy przekonać się, że istotnie koty Schroedingera są zbudowane z dwu stanów klasycznych, makroskopowo rozróżnialnych, których obecność wskazują maksima funkcji $Q$
Ostanią zagadką, którą przyjdzie nam rozwikłąć jest podział kotów na przyste i nieparzyste. W tym celu przeanalizujmy prawdopodobieństwa obsadzenia stanów $|n\rangle$ o ustalonej liczbie fotonów
$a^\dagger a |n\rangle=n|n\rangle $
czyli
$P_n=|\langle n|\psi\rangle|$
Użyjemy funkcji fock_distribution():
rho=rho_p
fock_distribution(rho)#, fig=None, ax=None, figsize=(8, 6), title=None)
show()
Zauważmy, że w przypadku kotów parzystych niezerowe jest tylko przwdopodobieństwo obsadzenia stanów o parzstym $n$. Inaczej jest w przypadku nieparzystych kotół Schroedingera:
rho=rho_np
fock_distribution(rho)#, fig=None, ax=None, figsize=(8, 6), title=None)
show()