‘14일 만에 만드는 양자 컴퓨터’를 읽어 본다. 3일째

소개



이번은 중첩의 원리와 전자파속에 대해 정리한다.

3 전자파속의 관찰



중첩의 원리



겹치는 원리는 슈레딩거 방정식을 채우는 복수의 해를 더한 함수도 슈레딩거 방정식의 해가 되고 있다고 하는 원리입니다. 예를 들어, 다음과 같은 특정 분포에 따라 $\psi_k $를 겹친 파동 함수를 준비합니다.

$$
\psi(x,t)=\int_{-\infty}^{\infty}a(k)\varphi_k(x)e^{-i\omega(k)t}dk=\int_{-\infty} ^{\infty}a(k)e^{ikx-i\omega(k)t}dk
$$

이것을 슈레딩거 방정식에 대입해 보는, 이때 자유 공간이므로 포텐셜은 0 따라서

$$
i\hbar\frac{\partial}{\partial t}\int_{-\infty}^{\infty}a(k) e^{ikx-i\omega(k)t}dk=\frac{\hbar ^2}{2m}\frac{\partial^2}{\partial x^2}\int_{-\infty}^{\infty}a(k)e^{ikx-i\omega(k)t} dk
$$

$$
\int_{-\infty}^{\infty}a(k)\hbar\omega(k) e^{ikx-i\omega(k)t}dk=\int_{-\infty}^{\infty} a(k)\frac{\hbar^2k^2}{2m}e^{ikx-i\omega(k)t}dk
$$

$$
\int_{-\infty}^{\infty}a(k)\left[\hbar\omega(k)-\frac{\hbar^2 k^2}{2m}\right] e^{ikx-i\omega(k)t}dk=0
$$

모든 위치와 시간에 관계없이 좌변은 제로가 될 때 중첩의 원리는 성립하게 되므로, 괄호의 내용이 제로가 되는 조건에 대해 조사하면

$$
\omega(k)=\frac{\hbar k^2}{2m}
$$

이것은 $\omega$ 자체의 정의와 같기 때문에, 항상 성립한다. 즉, 항상 중첩의 원리가 성립되는 것으로 나타났다.

3.2 전자파속의 관찰



$a(k)$는 어떠한 분포라도 좋기 때문에, 적당한 정수$k_0$를 중심으로 하는 가우스 분포라고 하면 a(k)는

$$
a(k)=e^{-(\frac{k-k_0}{2\sigma})^2}
$$

이 때의 파동 함수를 플롯해 본다.

3.2.1 상수



여기서 새로 필요한 상수는
# 空間の分割数
NX = 500
# 空間分割サイズ
dx = 1.0e-9
# 計算区間
x_min = -10.0 * dx
x_max = 10.0 * dx
# 重ね合わせる数
NK = 200
# kの偏差
sigma = math.sqrt(math.log(2.0)) * 1.0e9
# kの分割
dk = 20.0 / NK
# 波束の中心エネルギー
E0 = 10.0 * eV
# 波束の中心
k0 = math.sqrt(2.0 * me * E0 / hbar ** 2)
omega0 = hbar / (2.0 * me) * k0 ** 2
# 計算時間の幅
ts = -50
te = 50
# 時間間隔
dt = 1.0e-16
# 虚数単位
I = 1.0j

3.2.2 함수 정의



플롯을 만드는 데 필요한 것은 어느 시점 t에서 그래프의 배열을 출력하는 함수가 필요하기 때문에,
def dist_t(xl, t):
    psi_real = []
    psi_imag = []
    psi_abs = []
    for x in xl:
        # スケーリング
        psi_c = psi(x, t) * dx * dk / 10.0
        psi_real.append(psi_c.real)
        psi_imag.append(psi_c.imag)
        psi_abs.append(abs(psi_c))
    return psi_real, psi_imag, psi_abs

그리고, (x, t)가 주어졌을 때의 확률 분포를 출력하는 함수 psi를 정의한다.
def psi(x, t):
    psi_sum = 0.0 + 0.0j
    for kn in range(NK):
        # 定数を取得
        k = k0 + dk * (kn - NK/2)
        omega = hbar / (2.0 * me) * k ** 2
        # 重ね合わせ
        psi_sum += cmath.exp(I * (k * x - omega * t)) * cmath.exp(-((k - k0) / (2.0 * sigma)) ** 2)
    return psi_sum

3.2.3 애니메이션 플롯



이들을 이용하여 플롯을 실시한다.
xl = np.linspace(x_min, x_max, NX)
# アニメーション作成用の配列
ims = []
fig1 = plt.figure(figsize=(10, 6))

for t in range(ts, te + 1):
    t_real = t * dt
    psi_real, psi_imag, psi_abs = dist_t(xl * dx, t)
    # コマの描写
    img = plt.plot(xl, psi_real, 'red')
    img += plt.plot(xl, psi_imag, 'green')
    img += plt.plot(xl, psi_abs, 'blue')
    # コマの追加
    ims.append(img)

# グラフの描画
plt.title("Gaussian wave packet(Spatial distribution)")
plt.xlabel("Position[nm]", fontsize=16)
plt.ylabel("Probability amplitude", fontsize=16)
# 描画範囲
plt.xlim([-10.0, 10.0])
plt.ylim([-0.3, 0.3])
# アニメーション生成
ani = animation.ArtistAnimation(fig1, ims, fontsize=16)
ani.save("g_wave_packet.html", writer=animation.HTMLWriter())

plt.show()

3.3 완성된 애니메이션



↓가 완성된 동영상. 시간이 갈수록 분포의 폭이 넓어지는 것을 관찰할 수 있다.

좋은 웹페이지 즐겨찾기