磁気工学特論

1999/7/30


状態の電子軌道の概形をコンピュータを用いて描きなさい。

ここでは、水素原子について考える。
水素原子の定常状態に対する波動関数を考える。ここで、3d状態について 波動関数を求める。

Ψ 3dz2 = (1/81√6π)(1/r0)3/2(r/r0)2e-r/3r0(3cos 2θ-1)
Ψ 3dx2-y2 = √15/16π( 1/r0)3/2(r/r0)2 e-r/3r0cos 2φ sin 2 θ )
Ψ 3dxy= √15/4π(1/r0) 3/2 (r/r0) 2 e-r/3r0sin 2θ sin φ cos φ)
Ψ 3dxz= √15/4π( 1/r0) 3/2(r/r0) 2 e-r/3r0(sin θ cos θ cos φ)
Ψ 3dyz=√15/4π(1/r0) 3/2 (r/r0) 2 e-r/3r0(sin θ cos θ sin φ)

のようにあらわされる。ここで、電子が体積素片r2drsin θ dθ dφ のなかに存在する確率は Ψ 2 r2 drsin θ dθ dφ である。θおよびφについて積分すると、(θ については0からπ、φについては0から2π)電子が原子核からrとr+drの距離にある確率は 4π r2 Ψ 2drで与えられる。そこで確率密度関数f(r)=4π r2 Ψ 2をrの関数としてグラフに 描くと、動径方向の電子の確率密度がどのように分布しているかがわかる。それぞれの3d軌道に対する確率密度 関数は次のようになる。

f3dz2(r) = 2/(3×812)(1/r0)r6 e-2r/3r0
f3dx2-y2(r) = 2/81( 1/r0 ) r6 e-2r/3r0
f3dxy(r) = 8/812(1/r0) r6 e-2r/3r0
f3dxz(r) = 8/812( 1/r0) r6 e-2r/3r0
f3dyz(r) = 8/812( 1/r0 ) r6 e-2r/3r0

また、この関数をグラフとしてあらわすと図1のようになる。具体的に原子内の電子の確率密度の分布状態を表すには f(r)=4π r2 Ψ 2の密度関数にしたがって分布する点列を数多く発生させ、それを描画すればよい。 動径方向にf(r)=4π r2 Ψ 2の密度関数にしたがって分布する点列は棄却法によって発生させることができる。

確率密度関数
図1 確率密度関数

ここで、棄却法について説明する。確率密度関数f(x)の変数xの変域が、図2に示すように0からx0の 範囲にあるとみなされるものとし、その区間でのf(x)の最大値より少し大きな数をMとする。

棄却法の原理
図2 棄却法の原理

rand(L)を区間[0,1]での一様乱数とすると、x0 * rand(L)によって区間[0,x0]における一様乱数 xiを発生させることができる。また、M * rand(L)によって区間[0,M]における一様乱数yjを発生 させることができる。そこで、このようにして発生させた乱数xi、yjがf(xi)>yjなる条件を満足する 場合には、乱数xiは与えられた確率密度分布に従うものとして採用し、もし満足しないならば再び 最初に戻って乱数xi、yjを発生させることを繰り返す。このようにして多くの乱数xi、yjを 発生させ、条件に適合した乱数xiを密度関数に従う点列として扱えばよいことになる。 また、φ、θについても同様の操作を行い、3次元的な点列を発生させればよい。ここで、1例として、 3dz2の電子軌道を描くプログラムを示す。ここでは、POV-Ray ver3.2を用いて描画した。

//Distribution of electron clouds for 3dz2 state in hydrogen atom 
//  Programmed by Iidama
#include "colors.inc"

//背景を黒に指定 
background { color Black } 
//視点を設定
camera { 
 location <120, 120,-100 > 
    look_at  <0, 0,  0> 
  } 
//座標軸を描画 
cylinder { 
   <-1000,0,0> <1000,0,0>, 0.3 
   texture { 
           pigment { color Red } 
           }
    }
cylinder { 
   <0,-1000,0> <,1000,0>, 0.3 
   texture { 
           pigment { color Red } 
           }
    }
cylinder { 
   <0,0,-10000> <0,0,1000>, 0.3 
   texture { 
           pigment { color Red } 
           }
    }
//光源を設定 
light_source { 
    <100,100,-100> 
    color Gray50 
    fade_distance 250 
    fade_power 50 
    shadowless 
  }
//乱数を初期化
#declare K=0.35 
#declare L = seed(K) 

#declare PI = 3.14
//ボーア半径=0.529Å 
#declare RO = 0.529 
//確率が存在するだいたいの区間 
#declare XO = 13 
//その間の最大値 
#declare M = 0.26 
//表示の拡大率
#declare S = 10 

#declare i = 1 
#while(i<100000) 
//xi、yjを発生 
#declare X = XO * rand(L) 
#declare Y = M * rand(L) 
//確率密度の分布にあっているか照合。他の軌道を描くときはここを変更 
#if (((2/(81*81*3))*pow((1/RO),7)*pow(X,6)*exp(-(2*X)/(3*RO))) > Y) 
    #declare RR = S * X 
    //φ、θの乱数を発生させる。
    #declare A = 2* PI * rand(L) 
    #declare TH = A 
    #declare B = 2 * PI * rand(L) 
    #declare PH = B 
    #declare XX = RR * cos(PH) * sin(TH) 
    #declare YY = RR * sin(PH) * sin(TH) 
    #declare ZZ = RR * cos(TH) 
    //θでの密度分布にあっているかどうか。
    #declare FF = pow(3*pow(cos(A),2)-1,2) 
    #declare Y1 = rand(L) * 4 
    #if ( FF > Y1 ) 
    //すべてにあっていたら、その点に球を描画 
    sphere {
            0.5 
           texture { 
                   pigment { color Yellow } 
                   }
            } 
     #else 
     #end 
  #else 
#end
#declare i = i + 1 
#end 
このようにして描いた各電子軌道を図3〜図7に示す。

3dz2
図3 3dz2

3dx2y2
図4 3dx2-y2

3dxy
図5 3dxy

3dxz
図6 3dxz

3dyz
図7 3dyz