第8回、よく使われるアルゴリズム


目次


よく使われるアルゴリズム

今回で最後となります。前回までで私のやりたかったことはほぼすんでしまって いますが、今回は今後みなさんがコンピュータプログラミングを経験する際に 知っておいても損をしないアルゴリズムの紹介をしておこうと思います。
今日の話では個々のアルゴリズムの詳しい説明はしないつもりでいます。 ”こんなのはいつやらどこかで聞いたことがあるなあ”と思い出してもらえれば 僕は満足です。

行列の対角化

行列の対角化は線形代数でも重要なテーマの1つですが、化学の中でもあちこちに 現れてきます。私は分子軌道法でめしをくっていますが、毎日行列の対角化を 行なっている、と言っても過言ではございません。分子軌道法でよく現れる 行列は”実対称行列”であって、このような行列の対角化を行なうアルゴリズムも いくつか存在します。ここでは効率は悪いのですが、そのアルゴリズムは比較的 理解しやすいヤコビ法を使います。
例題1
Huckel 近似において、直鎖ポリエン H-(CH=CH)n-H の 電子状態(軌道エネルギー、その分子軌道係数)を計算する。
解説
理論の詳細はアトキンス物理化学(上)P.611-625までを参照せよ。ちなみに n=1のときはCH2=CH2(エチレン),n=2のときは CH2=CH-CH=CH2(ブタジエン), n=3のときはCH2=CH-CH=CH-CH=CH2(ヘキサトリエン) となる。n=1, n=2の場合であれば解くべき永年方程式も次数が低いので 手で解くことも可能であるが、それ以上になるとちょっといやになってくる。 (だが行列に規則性があるため、一般的な解析解もすでに分かっている) ここでは、数値的に解いてみよう。
解答
いくつかの計算結果を示す。


高速フーリエ変換法(FFT)

分子のさまざまな性質を探るには、通常何らかの方法で摂動を与え、その後の変化を とらえることによってその分子の個性を知ることができる。例えば赤外線をあてれば 分子の振動回転状態が、また核磁気共鳴を調べれば分子の結合状態 (その他もろもろの情報)を得ることができる。これらの手法に共通して現れて くるテクニックがフーリエ変換法である。つまり観測される生データは時間に 対する減衰曲線であるが、それをフーリエ変換してやることにより波数に対する 強度分布の形に変換できる。この操作を非常に高速に行なうアルゴリズムが 高速フーリエ変換(Fast Fourier Transformation)である。
例題2
3つの波数からなる信号に対して予測される信号を全て描け。それぞれの 信号は以下の通り。
  1. 1000 cm-1 にあって強度が I ...... (a)
  2. 1100 cm-1 にあって強度が 2I ..... (b)
  3. 1150 cm-1 にあって強度が 0.5I ... (c)
また、発生させた信号をFFTを行なうサブルーチンを通してみるとどのよう になるか?
解説
アトキンス物理化学(下)P.687 例題16.1 である。例題では信号を発生 させるだけであるが、ここではさらにFFTに通してみる。
解答

やりたかったが、できなかったこと


今日の課題


今回は最後ですので、自由課題とします。ただし を条件とします。 またオプションとして をつけてもらってもかまいません。またこのような情報は他人にみられたく ないと思いますので、今回のものは考察はwebには出さないようにしておきます。
また今回の課題が今までのものと比較して一番ウェイトが 重いので、必ず提出してください。今までの課題をまだ提出していない 人がいましたら、できるだけ提出して下さい。提出していなければ0点ですが、 遅れてでも提出してくれればそれなりに評価致します。
  1. 小テスト
  2. [8-1]化学に関係することであればなんでもよい。自分で問題設定し、 プログラムを書き、自分で解け。 そのような問題設定をした理由、今後の発展性など議論せよ。

本講義の目次へ戻る