よっしゃひとりGWハッカソンやるぞ
— G2U (@G2U) April 30, 2016
目次
一人GWハッカソンとは
GW中に一人でやるハッカソンです。参加者は集中的に何かしらのソフトウェアやサービスを開発しましょう。
前回は一人年越しハッカソンと称して三重振り子の最も単純なシミュレーションやりました。
一人ハッカソン、前回は三重振り子のもっとも単純なシミュレーションをしたので、次はシュレーディンガー方程式解きます、たぶん
— G2U (@G2U) April 30, 2016
結果
ソースコードや出力したデータのサンプルはここで見られます。
0V/G2Physics | GitHub
いくつかのポテンシャルを実装して解きました。以下は解の例です。二重井戸型ポテンシャルでは、確率密度が真ん中のポテンシャル障壁を超えているのが見てとれます。たぶんトンネル効果ってやつです。図に書き出すときに詳しい値の換算の仕方でよくわからない点があったので、間違っていたらあとで直します。。
- 赤:一次元シュレーディンガー方程式(電子)の定常状態における固有関数
- 青:各点における電子の存在確率
- 緑:ポテンシャル
井戸型ポテンシャル
調和振動子型ポテンシャル
傾斜井戸型ポテンシャル
二重井戸型ポテンシャル
技術的な話
以下は技術的な蛇足です。
仮定
- 一次元上
- 粒子は電子
流れ
- シュレーディンガー方程式を無次元化
- ポテンシャルなどのパラメータを設定
- あるエネルギーEの値について四次のルンゲ・クッタ法でシュレーディンガー方程式を解く
- 境界条件を確認し、解として正しくなければエネルギーEを変化させる。ただし、前回の発散と今回の発散で正負が逆ならば変化の度合いを小さくしつつ変化させる向き(正負)を逆にする(ゆるふわ自動化シューティング法)。
- ある精度まで達したら、固有関数と固有値、パラメータ(ポテンシャルなど)、および積分値を書き出し終了する
- plotに関しては gnuplot を使用。規格化は求めた積分値を用いて plot 時に行う
こんな感じです。波動方程式ってなんだかちょっとかわいいですね。
ゆるふわ理解をもとにした数値計算なのでおかしなところがあったらご指摘ください。