QuTIP를 사용하여 Rabi의 진동을 관찰합니다.

QuTiP 너무 편리해서 간단한 사용법을 정리했습니다.
이 보도의 대부분은 원 보도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 상태의 초기값을 바꿔서 하는 것도 있어요. 다양한 게임을 시도할 수 있을 거예요. 꼭 구해서 해보세요.

좋은 웹페이지 즐겨찾기