haphysics blog - 幸福の物理ブログ

みんなに物理と工作と幸福をお届けするのだァ~!

【春休み企画第一弾】トンネルの向こうは量子の効果でした

いわゆる"トンネル効果"ってヤツだッ……!

f:id:shitaro2012:20140223220936g:plain
左から来た赤色の波動関数(動画内ではその絶対値の2乗、すなわち確率密度)が緑色のポテンシャル障壁*1に衝突後、本来左側に反射されるはずの確率密度が壁を通り抜けて右側に染み出しています。この確率密度の染み込みを「トンネル効果」といいます。量子の世界で野球ボールの壁当てをしたら、なんとたまに壁の向こうに通り抜けていく可能性がでてくるのだ!

お詫び

「ポテンシャル障壁に波動関数を当てた」と思い込んでいましたが、プログラムを見なおしたところ「谷型ポテンシャルに波動関数を落としたシミュレーション」を行っていました。したがってトップの動画、および以下の文章では「障壁に当てた」を「谷に落とした」と読み替えてください。申し訳ございません。 2014.2.24

お断り

規格化していません。ご容赦下さい。

時間に依存するシュレーディンガー方程式の数値計算

試験&レポートが終わってからの春休み第一弾、ついに完成しました!
今回作ってみたのは「時間に依存する一次元シュレーディンガー方程式の数値計算」です。
そろそろ時間発展する様子を見たくなったのでプログラムを書いてみました。

今回シミュレーションをしたのは「1次元系における壁ポテンシャルでのトンネル効果」です。

ルンゲクッタ法はだめ?

解く方程式はおなじみのあの式、
\begin{equation}
i\hbar \frac{\partial}{\partial t} \Psi(x, t)
=
\hat{H} \Psi(x, t)
\end{equation}
です。
この方程式のように時間を含んでいる場合はオイラー法やルンゲクッタ法を用いるのが(私の知っている限りでは)普通です。しかし、これらの数値解法では解がやがて発散します。理由は時間発展演算子のユニタリー性が数値計算の際に失われてしまうからです。
したがって長い時間を追いかけるようなシミュレーションには向かないのです。

時代は"PSM"!?

そこで時間発展演算子のユニタリー性を保ちながら高い速度で計算を実行してくれる計算方法、"擬(似)スペクトル法(Pseudo-spectral method)"の出番です。
Pseudo-spectral method - Wikipedia, the free encyclopedia

この擬似スペクトル法を用いることで,時間発展演算子を作用させ時刻を\( \Delta t\)だけ進めた波動関数
\begin{align*}
&\Psi(x,t+\Delta t)
\\
\approx&
\exp
\left( -\frac{1}{2}iV(x)\Delta t \right)
\mathcal{F}^{-1}\bigg\{
\exp
(-ik^2 \Delta t)
\mathcal{F} \bigg[
\exp
\left( -\frac{1}{2}iV(x)\Delta t \right)\Psi(x,t)
\bigg]
\bigg\}
\\
&+ \mathcal{O}((\Delta t)^2)
\end{align*}

と書けます
。(ただし\( \hbar, m \)などはすべて1としました。)
つまり、時間発展の項をすべてフーリエ級数の係数に押し付けるというのがこの擬似スペクトル法でやっていることです。(導出などの詳しい話はrogyゼミで話そうと思っています。その時位に資料を載せようと思います。)後はフーリエ変換、逆フーリエ変換をそれぞれ高速フーリエ変換、逆高速フーリエ変換で行えば大きな計算速度でかつユニタリー性を保ちながら計算が終わるわけです。

スペクトル法による数値計算入門

スペクトル法による数値計算入門

参考文献

はじめてのC++

使用した言語はC++です。今まで.cppを使ってきたことはありますが、オブジェクト指向っぽく書いたことはありませんでした。なので今回はその練習も兼ねてクラスを作ってみました。
f:id:shitaro2012:20140223230409p:plain
計算自体は(今振り返ってみれば)単純で、以下の通りです。

  1. 初期波束をつくる(今回はガウス波束を採用)
  2. 時間発展演算子(expの部分)を計算
  3. FFTを実行
  4. IFFTを実行
  5. 波動関数を記録
  6. 3へ。以下ループ

得られた波動関数逐次gnuplotで描画したものがこの記事トップになります。

OpenGLでアニメーションも

やはり数字だけ見ても分からない・・・。なのでGLFWを用いてアニメーションを作りました。
f:id:shitaro2012:20140223231346p:plain
f:id:shitaro2012:20140223231401p:plain
f:id:shitaro2012:20140223231409p:plain
やはり静止画だけでは伝わりませんね・・・。でもすっごい滑るよ~!

今後の利用

今回はトンネル効果を露骨に感じたいために単なる壁一枚だけを用意しました。
これから調和振動子や複数の壁ポテンシャルにおける振る舞いを見ようと思います。
特に共鳴により波動関数がトラップされているところとか。

└(՞ةڼ◔)」<Quantum Effectsゥ~!

*1:大きさはデタラメです。もっと大きいです。ポテンシャル障壁の位置だけあってます。