基本方針:プログラムの各行の意味を順に追っていきましょう。解析手法がただしく行われていれば、自分なりに書き換えることは問題ありません。

0.EOF解析の手順


a. データを読み込み、行列で表現する。
b. 共分散行列を求める。
c. 共分散行列の固有値、固有ベクトルを求める。
d. 固有値の大きい順に並べ替える。
e. 各モードの寄与率を求める。
f. 各モードの時間関数を求める。
g. 結果をファイルに保存・図化

1.統計パッケージを使いこなす---LAPACKを用いて,簡単な固有値分解を行う.

enshu02.f
LAPACKのdsyevルーチンを用いて,3x3の行列の固有値分解を行う.
LAPACKとは固有値計算のパッケージで,無償で提供されている.
rpmが(http://www.netlib.org/lapack/)から入手できる.
日本語の解説書は「LAPACK利用の手引き」(小国力著,丸善)がある.
これは本専攻の図書室にある.ただし,1冊なので占有しないこと.



1.0 -0.5 -0.5
-0.5 1.0 -0.5
-0.5 -0.5 1.0

の行列を分解して,結果を出力しなさい.
答えは?

プログラムのコンパイルは
f77 program.f -llapack -lblas
と行えばよい.

2.実際にデータセットを切り出して,分散共分散行列を作成する.

enshu01_jan.fのdread, covarの部分

 具体的には,月平均北大西洋海面水温偏差データセットから1-3月のいずれかの月の
冬季平均偏差を求め,北大西洋全体の分散共分散行列を求める.

分散共分散行列は何X何の行列となるのか,事前に対称となる格子点の数を確認する.

その上で,求められた分散共分散行列が対称行列であることを確かめなさい.
対角成分の総和とそれ以外の非対角成分の総和をそれぞれ求めなさい.

データセットは, smpc*:/home/tanimoto/05datakiso_enshu/dataset/sst.gisst.1900-1996.1x1.monthly.n_atl.datをコピーして使うこと.このデータの概要はそのctlファイルを見て確認すること.

参考URL:GrADS形式の書式なし直接アクセスについては下記のサイトが参考になる。

Fortranのファイル入出力のページ(故沼口さん作成)

3.LAPACKを用いて,その分散共分散行列の固有値展開を行う.

enshu01_jan.fのeigenの部分

1.で作成した行列をLAPACK を用いて分解する.
dsyev中の”INFO”を出力させて,ゼロとなることを確認.
dsyev中の”eval”を出力させて,evalの最大値を求める.

以上で,今回は終了.