Dzielniki wiazki (BS: beam splitters) są podstawowymi elementami optycznymi wykorzystywanymi w eksperymentach. W eksperymencie realizuje się go za pomocą płytki półprzepuszczalnej, to jest takiej, która z określonym prawdopodobieńtwem może odbić lub przepuścić padający foton. Poniższy wykres ustala notację:
$ \begin{array}{ccc} 0 \searrow & \,\,\,\, & \nearrow 0 \\ \,\,\,\,\, & -----\mbox{BS}---- &\, \\ 1 \nearrow & \,\,\,\, & \searrow 1 \end{array} $
Uwaga! Pełny opis kwantowy wymaga użycia aż czterech wiązek (pól bozonowych).
Z punktu widzenie opisu kwantowego dzielnik wiązki można opisać poprzez operację unitarną
$|\psi'\rangle=U|\psi\rangle$
gdzie
$ U=\exp(i\kappa)\left(\begin{array}{cc} \rho e^{i\delta_r} & -\tau e^{-i\delta_t} \\ \tau e^{i\delta_t} & \rho e^{i\delta_r} \end{array}\right) $
$\tau$ oraz $\rho$ opisują odpowiednio transmisję i odbicie fotonu, zaś $\delta_{t,r}$ to odpowiednie fazy uzyskiwane przez fotony.
Pamiętajmy o relacji
$\tau^2+\rho^2=1$
odzwierciedlającej zachowanie prawdopodobieństwa.
Rozważmy szczególne przypadki:
1
$ U_1=\left(\begin{array}{cc} i\rho & \tau \\ \tau & i\rho \end{array}\right) $
Załóżmy, że $\tau=\rho$. Jeśli przyjmiemy, że na dzielnik pada tylko wiązka $0$ wówczas na wyjściu dzialnika otrzymujemy superpozycję:
$U_1|0\rangle = \frac{1}{\sqrt{2}}(i|0\rangle+|1\rangle)$
podobnie jeśli wiązka padające to $1$
$U_1|1\rangle = \frac{1}{\sqrt{2}}(i|1\rangle+|0\rangle)$
2
Bardzio istotnym dla zastosowań jest dzielnik wiązki następujacej postaci
$ U_2=\left(\begin{array}{cc} \rho & \tau \\ \tau & -\rho \end{array}\right) $
przyczyna staje się jasna, gdy zauważymy, że przy warunku $\tai=\rho$
$U_2=H$
gdzie
$ H=\frac{1}{\sqrt{2}}\left(\begin{array}{cc} 1 & 1 \\ 1 & -1 \end{array}\right) $
jest bramką Hadamarda
Przystąpmy teraz do konstrukcji implementacji numerycznej dzielnika wiązki. W pierwszym kroku zaimportujmy narzędzia:
from qutip 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
Następnie wprowadźmy uzyteczne skróty dla wektorów bazowych:
up=basis(2,0)
dn=basis(2,1)
oraz macierzy bazowych:
rpp=up*up.dag()
rpm=up*dn.dag()
rmp=rpm.trans()
rmm=dn*dn.dag()
Teraz jesteśmy gotowi zdefiniować dzielnik wiązki jako funkcję BS(), której argumentami są parametry dzielnika, zaś na wyjściu otrzymujemy macierz $U$:
def BS(k,r,t,dr,dt):
U=r*exp(1j*dr)*rpp-t*exp(-1j*dt)*rpm+t*exp(1j*dt)*rmp+r*exp(-1j*dr)*rmm
return U
Szczególne przypadki zdefiniujemy osobno:
def U1(r,t):
U=1j*r*rpp+t*(rpm+rmp)+1j*r*rmm
return U
def U2(r,t):
U=r*(rpp-rmm)+t*(rpm+rmp)
return U
Teraz możemy zdefiniować interferometr zbudowany z dwu dzielników wiązki (BS) oraz dwu zwierciadeł (M) i bramki fazy $\phi(\alpha)$
$ \begin{array}{cccccccc} \, & \, & \, & =M= & \, & \,& \, & D0 \\ 0 \searrow & \, & \nearrow 0 &\, & 0 \searrow & \,& \nearrow 0 & \,\\ \, & -BS- & \, & \,&\, & -BS- & \, &\,\\ 1 \nearrow & \, & \searrow 1 & \, &1 \nearrow +\phi(-\alpha) & \,&\searrow 1 &\,\\ \, & \, & \, & =M= & \, & \,& \,& D1 \end{array} $
na wyjściu interferometru imieszczamy detektory D0 oraz D1 odpowiednich wiązek.
Symbolicznie interferometr Macha Zendera możemy zapisać w postaci
$ \rightarrow H \rightarrow \phi(-\alpha) \rightarrow H \rightarrow$
gdzie $H$ to bramka Hadamarda, zaś
$\phi(\alpha)=\left( \begin{array}{cc} 1 & 0\\ 0 & e^{i\alpha} \end{array}\right)$
jest bramką fazy.
Działanie interferometru opiszemy za pomocą funkcji MZ(). Wykorzystaliśmy funkcje snot() oraz phasegate() przy implementacji bramki H oraz $\phi$. Oczywiście równie dobrze moglibyśmy użyć funkcji $U_1()$ zdefinowanej powyżej.
def MZ(psi,phi):
U=snot()*phasegate(-phi)*snot()
return U*psi
Wynikiem działania funkcji MZ() jest stan wiązki na wyjściu interferometru. Na przkład, jeśli na wejściu mieliśmy tylko wiązkę $0$, a przesunięcie fazowe ustawione na $\alpha=\pi/4$ to otrzymujemy:
MZ(dn,pi/4)
Szaczególnie istotne dla zatosowań jest określenie wyniku pomiaru przez detektory D0 oraz D1. Prawdopodobieństwo detekcji przez D0 określa
$p_0=|\langle input|output \rangle|^2$
opisane funkcją P0():
def P0(psi,phi):
xi=MZ(psi,phi)
p0=((dn.dag()*xi).norm())**2.0
return p0
Funkcja ta, zastosowana do powyższego przykładu daje:
print(P0(dn,pi/4.0))
print(1.0/2.0*(1.0+cos(pi/4.0)))
0.853553390593 0.853553390593
Dalej spróbujemy zwizualiziwać prawdopodobieństwo detekcji wiązki $0$ w postaci graficznej. W pierwszym kroku określamy wartości przesunięcia fazowego:
philist=linspace(0.0,2.0*pi,100.0)
plist=zeros(len(philist))
oraz stan na wejściu interferometru:
psi=dn
A dalej obliczamy wartość funkcji P0() dla przesunieć fazowych:
for i1 in xrange(len(philist)):
x=philist[i1]
plist[i1]=P0(psi,x)
Uzyskany wynik możemy nakreślić:
plot(philist,plist,'-',label='', linewidth=4)
xlabel('phi',fontsize=20)
ylabel('P0',fontsize=20)
show()