QuTIP를 사용하여 Rabi의 진동을 관찰합니다.
이 보도의 대부분은 원 보도QuTiP example: Vacuum Rabi oscillations in the Jaynes-Cummings model의 화역이다.
지금까지 이런 기사를 쓴 적이 없는데 메모 형식으로 썼는데 저작권 쪽은 어떤가요, 이런 일이 있으면 기사 자체를 삭제하거나 다른 모델로 다시 계산할 테니 사양하지 말고 알려주세요.
한편 이 글은 QUTIP를 활용하면 해밀턴의 정의와 양자 주방정식을 계산하는 시간을 줄일 수 있고, 연구하는 사람과 양자 광학을 좋아하는 사람들이 보다 본질적인 물리적 문제에 집중할 수 있기를 바라는 동기를 담았다.
모델인 Jyanes-Cummings 모델에서 라비 진동을 대상으로 시연하는 것은 이해하기 쉬워 선택했다.
물론 여기에만 할 수 있는 게 아니라 물리과 사람들이 조금이나마 관심을 가질 수 있는 계기가 된다면 좋았을 텐데요.
컨디션
QuTiP 4.2.0
Python 3.6.1
설치
pip install qutip
처음 하는 거라 별로 힘들지 않아요.설치 관련뉴스.도 있습니다.이번에 우리는 시스템의 시간 발전을 계산할 것이다.모형으로 라비 진동을 본교의 맨 위의 공진기 양자 전자 시스템(Jaynuuues-Comings 모델)에서 계산한다.
그림의 묘사와 계산을 위해 import 라이브러리입니다.
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from qutip import *
다음에 모델의 수치를 대입합니다.wc = 1.0 * 2 * np.pi # 共振器の周波数
wa = 1.0 * 2 * np.pi # 2準位系の周波数
g = 0.05 * 2 * np.pi # 共振器と2準位系の結合定数
kappa = 0.005 # 共振器の緩和レート
gamma = 0.05 # 2準位系の緩和レート
N = 20 # 共振器の数状態の数
n_th_a = 0.0 # 2準位系の熱浴のレート
QuTip은 상태 벡터를 간단하게 정의합니다.예를 들어 2급 시스템의 기본 상태의 벡터를 정의하려면입력
TLSket=basis(2,0)
구문을 사용합니다.이때 출력은...출력
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[ 1.]
[ 0.]]
출력좀 못생겼지만 위에는 기본 상태인 것 같아요.(정확히 말하면 이 정의가 광자에 대응하는 Fock 상태는 최대 하나이다.)현재 공진기 광자와 2급 시스템의 힐버트 공간을 고려하여ket벡터의 정교승적을 얻었다.초기 상태를 제공합니다.
입력
psi0=tensor(basis(N,0),basis(2,1))
텐솔은 직접 명중한 것 같습니다.광자의 Fock 상태가 많기 때문에 출력을 생략합니다.다음은 공진기 광자와 2급 시스템의 산수를 정의한다.Destroy(M)는 M개의 Fock 상태를 정의하는 벡터의 사라짐 계산자입니다.예제
입력
destroy(5)
출력Quantum object: dims = [[5], [5]], shape = (5, 5), type = oper, isherm = False
Qobj data =
[[ 0. 1. 0. 0. 0. ]
[ 0. 0. 1.41421356 0. 0. ]
[ 0. 0. 0. 1.73205081 0. ]
[ 0. 0. 0. 0. 2. ]
[ 0. 0. 0. 0. 0. ]]
결과는 Fock 상태의 인몰 연산자를 행렬로 썼을 때와 같습니다.이를 바탕으로 공진기 광자와 2급 시스템의 인몰산자를 정의한다.
소실 연산자
a = tensor(destroy(N), qeye(2)) #共振器フォトンの消滅演算子
sm = tensor(qeye(N), destroy(2)) #2準位系の消滅演算子
공진기 광자와 2급 시스템의 직접 곱셈을 통해 이번 계산의 힐버트 공간에서 각자의 소광 산자를 정의했다.이전에 정의한 초기 상태와 순서를 번호대로 자리에 앉혀야 한다.여기까지 정의할 수 있다면 연산자 생성은 간단합니다.연산자 생성
a.dag() #共振器フォトンの生成演算子
sm.dag() #2準位系の生成演算子
되다방금 정의한 인멸산자에 .deg()
만 더하면 된다.흔히 볼 수 있는 Jaynes-Cummings 모델의 하미턴 양
\mathcal{H}=\hbar\omega_c a^\dagger a +\hbar\omega_a \sigma^\dagger \sigma+\hbar g (a^\dagger \sigma+a\sigma^\dagger)
, 위의 정의를 사용하십시오.하미어턴
H = wc * a.dag() * a + wa * sm.dag() * sm + g * (a.dag() * sm + a * sm.dag())
이렇게 써.양자 주 방정식의 solver가 기본적으로 QuTIP에 들어가기 때문에 위에서 정의한 이완율은 다음과 같이 정의됩니다.
누그러지다
c_ops = []
# cavity relaxation
rate = kappa * (1 + n_th_a)
if rate > 0.0:
c_ops.append(np.sqrt(rate) * a)
# cavity excitation, if temperature > 0
rate = kappa * n_th_a
if rate > 0.0:
c_ops.append(np.sqrt(rate) * a.dag())
# qubit relaxation
rate = gamma
if rate > 0.0:
c_ops.append(np.sqrt(rate) * sm)
c_ops
, 노선의 완화율 채택×인몰 연산자를 넣은 수조.그런 다음 원하는 시간 범위를 0에서 설정합니다.
시간 범위
tlist = np.linspace(0,15,301)
여기서 각 자극 상태의 점유율은\langle a^\dagger a\rangle(t)\\
\langle \sigma^\dagger \sigma \rangle(t)
계산해 봐.solver에는 다음과 같은 내용을 쓸 수 있다.solver
output = mesolve(H, psi0, tlist, c_ops, [a.dag()*a, sm.dag()*sm])
하미어턴의 양, 초기 상태, 시간 범위와 이완률을 제시한 후 괄호 안에 계산할 연산자로 배열 형식으로 되돌아간다.output
n_c = output.expect[0]
n_a = output.expect[1]
예를 들어, output입니다.expect[0]로 첫 번째 a.dag()*a의 기대치를 계산합니다.이걸 묘사해 봐.그리다
fig, axes = plt.subplots(1, 1, figsize=(10,6))
axes.plot(tlist, n_c, label="Cavity_g2")
axes.plot(tlist, n_a, label="Atom excited state")
axes.legend(loc=0)
axes.set_xlabel('Time')
axes.set_ylabel('Occupation probability')
axes.set_title('Vacuum Rabi oscillations')
이렇게 하면 라비 진동을 계산할 수 있다.
여기까지는 복제품일 뿐이니 일부분을 바꿔보자.예를 들어 결합 상수 g가 증가할 때 초강력 결합 상태가 되지만 회전파는 거의 성립되지 않는다고 한다.그러니까 위에 하미어튼.
\mathcal{H}=\hbar\omega_c a^\dagger a +\hbar\omega_a \sigma^\dagger \sigma+\hbar g (a^\dagger +a)(\sigma+\sigma^\dagger)
모습우세 격차가 나타날지 검증해 보자.현재g=0.05
, 이를 g=0.5
로 설정할 때의 차이를 비교한다.g=0.05
회전파 없음 근사위와 차이가 보이지 않는다.
g=0.5
회전파 근사g=0.5
회전파 없음 근사결합 상수가 강할 때 검증 결과는 우세 차이를 보인다.
다른 것은 Fock 상태의 초기값을 바꿔서 하는 것도 있어요. 다양한 게임을 시도할 수 있을 거예요. 꼭 구해서 해보세요.
Reference
이 문제에 관하여(QuTIP를 사용하여 Rabi의 진동을 관찰합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryosukehata23/items/7a0f598337bbe455d01c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)