« Python+NumbaでWikipediaのList of chaotic mapsを1つずつ描く(その5) Cliford attractor | トップページ | Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使う(その1) まずは準備編 »

2020年6月25日 (木)

Pythonの3Dのscatter+cmap+SciPyの特殊関数で水素原子の波動関数の電子分布を描いてみる。

Pythonのmatplotlib.pyplotの散布図を描くscatter, 色として実数を入れてcmapを設定すると値に応じて色の濃淡がつけられることを知った。

それなら実験的に水素原子の波動関数を描いてみよう。

https://ja.wikipedia.org/wiki/%E6%B0%B4%E7%B4%A0%E5%8E%9F%E5%AD%90%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%B7%E3%83%A5%E3%83%AC%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%AC%E3%83%BC%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%AE%E8%A7%A3

波動関数は、、、ああめんどくさいなと思ったら関数を作ってくれている方がいたのでこのCalcPsiを使わしてもらった。

https://amorphous.tf.chiba-u.jp/lecture.files/chem_computer/11_scipy%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%A8%E5%BF%9C%E7%94%A8/11.html

表示はこんな感じで。nlmによってLmaxの値とpsi2maxを割る値を変えないとうまく行かない。

Nmax=100
Lmax=5
Lmin=-5
nlm=[2,1,0]
L = (Lmin, Lmax, Nmax)
psi2=CalcPsi(nlm,L)
x=np.zeros(Nmax**3)
y=np.zeros(Nmax**3)
z=np.zeros(Nmax**3)
c=np.zeros(Nmax**3)

n=0
psi2max=np.max(psi2)
for i in range(len(xi)):
    for j in range(len(yi)):
        for k in range(len(zi)):
i          f np.abs(psi2[i,j,k])>psi2max/8:
              x[n]=xi[i]
              y[n]=yi[j]
              z[n]=zi[k]
              c[n]=psi2[i,j,k]
              n+=1

fig = plt.figure(figsize=(8,8))
ax = fig.gca(projection='3d')
ax.scatter3D(x,y,z,c=c,s=1,alpha=0.5,cmap=cm.Spectral)
plt.show()

 

結果:

さっきのサイトに出ていたnlm=653

Hydrogen_653

nlm=430

Hydrogen_430

nlm=320

Hydrogen_320png

nlm=210

Hydrogen_210png

うーん、もう一声かな、、、黄色いのを何とか消さないとうまくない。

« Python+NumbaでWikipediaのList of chaotic mapsを1つずつ描く(その5) Cliford attractor | トップページ | Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使う(その1) まずは準備編 »

学問・資格」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« Python+NumbaでWikipediaのList of chaotic mapsを1つずつ描く(その5) Cliford attractor | トップページ | Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使う(その1) まずは準備編 »

最近の記事

最近のコメント

2021年9月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
フォト
無料ブログはココログ