ヒュッケル分子軌道法の理論については、別項で取りあげるので、ここでは説明を省略する。
問題 エチレン、アリル、ブタジエンのヒュッケル分子軌道を計算し、固有値と波動関数の 係数を求めなさい。
10 ' Program MOBAS
20 DIM A(20,20), S(20,20) 25 ' DATA文でタイトルを指定 30 ' DATA文で炭素の原子数を指定 35 ' DATA文で永年行列の非零要素を指定 38 READ A$ ' タイトル 40 READ N ' N は行列の次元 50 FOR I=1 TO N ' 行列の読み込みルーチン 60 FOR J=1 TO N 70 A(I,J)=0 ' A は零行列として初期化 80 IF I=J THEN GOTO 110 90 S(I,J)=0 ' S は単位行列として初期化 100 GOTO 120 110 S(I,J)=1 120 NEXT J 130 NEXT I 140 I1=0 150 ' 配列の入力 160 READ I,J,F,Z ' 行, 列, 要素, 終でない時は0 を入力 170 ' 180 A(I,J)=-F : A(J,I)=-F ' 最後の要素の後に999を入力 190 IF Z=0 THEN GOTO 160 195 PRINT A$ 200 ' 初期状態の計算(非対角要素の自乗の和) 210 V=0 220 FOR I=1 TO N 230 FOR J=1 TO N 240 IF I=J THEN GOTO 260 250 V=V+A(I,J)^2 260 NEXT J 270 NEXT I 280 V=SQR(V) 290 ' 最終状態の計算 300 V1=V*1E-08 310 ' しきい値とするノルムの計算 320 V=V/N 330 ' ピボットの位置を探し,ノルムと値を比べる 340 Q=1 350 Q=Q+1 360 P=0 370 P=P+1 380 IF A(P,Q)<0 THEN GOTO 410 390 IF A(P,Q)=0 THEN GOTO 810 400 IF A(P,Q)>0 THEN GOTO 420 410 IF -A(P,Q)<V THEN GOTO 810 ELSE GOTO 430 420 IF A(P,Q)<V THEN GOTO 810 430 I1=1 440 ' 回転行列 450 L=-A(P,Q) 460 M=.5*(A(P,P)-A(Q,Q)) 470 IF M<0 THEN GOTO 490 480 GOTO 510 490 S1=-1 500 GOTO 520 510 S1=1 520 O=S1*L/SQR(L^2+M^2) 530 T=O/SQR(2+2*SQR(1-O^2)) 540 C=SQR(1-T^2) 550 ' 行列要素の変換 560 FOR I=1 TO N 570 IF I=P THEN 640 580 IF I=Q THEN 640 590 B=A(P,I)*C-A(Q,I)*T 600 B1=A(P,I)*T+A(Q,I)*C 610 A(P,I)=B 620 A(Q,I)=B1 630 ' 行列の回転 640 B=S(I,P)*C-S(I,Q)*T 650 B1=S(I,P)*T+S(I,Q)*C 660 S(I,P)=B 670 S(I,Q)=B1 680 NEXT I 690 B=A(P,P)*C^2+A(Q,Q)*T^2-2*A(P,Q)*T*C 700 B1=A(P,P)*T^2+A(Q,Q)*C^2+2*A(P,Q)*T*C 710 B2=(A(P,P)-A(Q,Q))*C*T+A(P,Q)*(C^2-T^2) 720 A(P,P)=B 730 A(Q,Q)=B1 740 A(P,Q)=B2 750 A(Q,P)=A(P,Q) 760 ' 変換行列 770 FOR I=1 TO N 780 A(I,Q)=A(Q,I) 790 A(I,P)=A(P,I) 800 NEXT I 810 IF P<Q-1 THEN GOTO 370 820 IF Q<N THEN GOTO 350 830 IF I1=0 THEN GOTO 860 840 I1=0 850 GOTO 340 860 IF V>V1 THEN GOTO 320 870 FOR I=1 TO N 880 FOR J=1 TO N 890 IF I<>J THEN GOTO 960 920 PRINT : PRINT "ROOT NO.";I;" = ";A(I,J) 930 FOR P=1 TO N 940 PRINT USING " ## ## ##.#####";P,J,S(P,J) 950 NEXT P 960 NEXT J 980 NEXT I 990 END
解答 各化合物に対するデータは次のようになる。 プログラムMOBASの該当する行を置き換えて 計算しなさい。
アリル
25 DATA "allyl"
30 DATA 3
35 DATA 1,2, 1, 0, 2, 3, 1, 999
エチレン
25 DATA "Ethylene"
30 DATA 2
35 DATA 1,2, 1, 999
ブタジエン
25 DATA "Butadiene
30 DATA 4
35 DATA 1,2, 1, 0, 2, 3, 1, 0, 3, 4, 1, 999