Scratchプログラミング

副プログラムの利用・自由電子模型

非局在化電子を持つ化合物の軌道の作図ついては,BASIC言語による自由電子模型(FEM)法プログラムを用いる方法を紹介してきた.今回は.時代の変化に対応して,老化防止を兼ねてScratchプログラミングを試みた.基本になる方程式は以下である.

ψn (x) = (2/L)1/2sin(npix/L)

n = 1, 2, 3, 4 ----, Lは n+1である. 長さがLの線分の始点と終点に, sin カー ブの180度までの半周期の「弧」を1個, 2個と増やしながら, それぞれについて各点で波高値を求めると考えればよい.

ブタジエンの場合,π電子数4を入力すると,実行結果として以下の黄色で示す数値を与えるプロブラムである.


4 0.372 -0.602 0.601 -0.372

3 0.602 -0.372 -0.372 0.601 ---- LUMO

2 0.601 0.372 -0.372 -0.602 ---- HOMO

1 0.372 0.601 0.602 0.372


各行の計算値の自乗を足し合わせると1.0になるように調整されている.

Scratchでは二次元配列は用意されていない.n の値と計算結果を,以下に示すようにリスト(Sctatchでは一次元配列をリストという)に算出順に記憶させてみた.後でスクロールして見ることができる.

1 0.372 0.601 0.602 0.372 2 0.601 0.372 -0.372 -0.602 3 0.602 -0.372 -0.372 0.601 4 0.372 -0.602 0.601 -0.372

また,各値を横にずらしながら二次元配列的に図示するため,円を描く副プログラムを作ってみた.

主プログラム

基本構造は二重ループである.外側はπの数,内側は原子位置の変化である.1行書いて2行目に移る際はペンを上げる必要がある.メインプログラムの最後のブロックはそのために追加したものである.

右上へ続く

副プログラム(円を描くプログラム)

円は半径を与えて原理に基づいて描く必要がある.360°にわたって1°毎にsin cosを計算してその座標をプロットする方式であるので,一つの円を描くのにかなり時間がかかる.そこで2°毎に180回計算させて多角形で近似した.エチレンの場合は4回,ブタジエンの場合は16回メインプログラムから呼び出される.実行はターボモード(編集で選択可能)で行えば,瞬きする時間内に終了する.正負は色で区別した,ペンで描く方式であるため,ペンの上げ下ろし命令が必要である.

右上へ続く

実行結果

n=4 ブタジエンの場合

結果の表示

プログラミングの経験はあるので,目的とするプログラムはできたが,ブロック上に記載されている文字が小さいので,変数を取り間違えるミスで大変苦労した.私としては,Python言語によるプログラミングの方が楽である.別稿で紹介したい.猫は対話型の質問や作図の際に動いてくれるが計算には関係ない.

画面収録 2021-05-05 11.31.03.mov

ターボモードによる実行

追記

副プログラム中のX1とY1は円を描く処理の前にゼロに初期化した方が無駄な計算をしない.描画結果は変わらない.

x1=0

y1=0

自由電子模型法

非局在化電子を持つ化合物の分子軌道に電子がどのように分布しているかは簡単な波の式で表わすことができる. 定常波と呼ばれ, 波の両端は「節」になっている. Sinカー ブの180度までの半周期の「弧」を考えればよい. 1番目の軌道は弧が1個(節0個),2番目の軌道は弧(中心に節1個)が2個である.弧が1.5個など中途半端な波は存在しない.

波の高さ(振幅)は二乗した値の合計が1になるように決めればよい. 振幅を二乗した値は電子の存在確率すなわち電子密度を表す. 1個の電子の電子密度は全空間にわたって積分した値は1であることからも容易に理解できる. したがってエチレンの軌道係数は0.707である. 安定な軌道はψ1=0.707φ1+0.707φ2, 不安定な軌道はψ2=0.707φ1-0.707φ2で表される.

(2021.5.11)