2002.3.11日更新 関谷トップページへ 数値計算2001s トップページへ   作者へのメッセージ

数値解析・数値計算実習2001s
 No.19 行列の固有値、ヤコビ法による対称行列の固有値計算

1.前回学習事項の確認と実習・レポートへのコメント

実習・レポートへのコメント

 考察について:皆さんが実習してみての理解(アルゴリズム、プログラム作成)したことをそれぞれ,皆さんの言葉で表現すること。

1)アルゴリズム:擬似乱数の計算とその評価では、統計的な手法が使われた。

2)プログラム:乱数では、ライブラリ関数を使うほかに、自作の擬似乱数関数を作って、評価することもできる。モンテカルロ法では、 繰返し数を増やすことで、πの近似値の精度が上がることが分かる。それを図示すると、収束の傾向がより、良く分かる。

 この数値解析・数値計算実習の授業も今回が最後です。理解し、計算が出来ることが目的であるので、皆さんがそれぞれに理解した結果の分かるレポートをアップロードすること。

2 今日の学習(行列の固有値、ヤコビ法による対称行列の固有値計算)

 ( 使用中のテキストには, 出ていないので, 以下の参考書を参照します。1のみプリントで配布)
 1.戸川隼人, 情報処理入門コース7 数値計算, 岩波書店,1991,pp.113-124 
 2.鈴木誠道ほか,Cによる数値計算,オーム社,1997,pp.62-63 
 3.明星大学理工学部数学研究室編, 数学の基礎と応用, 明星大学出版部,1998,pp.48-51
 4.小池慎一,Cによる科学技術計算,CQ出版社,1987,pp.295-303 

2.1 固有値, 固有ベクトルとは?

6.1 固有値問題とは

 n ×n 行列 Aに対して, 
       Ax = λx,  x ≠0
 を満たす数λをAの固有値,ベクトルxをλに対する固有ベクトルという。
 与えられた行列A の固有値, 固有ベクトルを求める問題を行列の固有値問題という。

 [ 直感的に理解するための例] 
 □  固有振動数( 振動系の解析)  Aa=−ω2 a (−ω2 :固有値,a:固有ベクトル)
 	例 弦の固有振動

 □ 主成分分析 例 8.3 主成分分析 

 □  線形変換          y=Ax
   もしも,λがAの固有値で,xがλに対する固有ベクトルであるとすれば,xはこの変換
  によって,自分自身のスカラ(λ)倍に移されるようなベクトルである。

固有値の基本的な性質

 性質1〜6までに,数値計算法を理解するのに必要な基本的な性質が要約してある。
性質1 n×n 行列は,一般に n個の固有値を持つ。ただし,いくつかの固有値は重複する場合がある。
性質2 xがAの固有ベクトルならば,その任意スカラー倍αxもAの固有ベクトルになる。
性質3 実対称行列の固有値は実数で,相異なる固有値に対応する固有ベクトルは互いに直交する。
性質4 Mが正則行列ならば,MAM-1はAと同じ固有値を持つ。特にMが直交行列ならば,
    MAM-T がAと同じ固有値を持つ。
(以下は省略)

6.2 実対称行列の固有値の計算法−ヤコビ(Jacobi)法

原理
 2×2の行列の場合
 n×nの行列の場合への拡張 M(p行,q列)−コピー 1のp.(1/6)の左下の図参照

計算手順の概要
 [1]から[5]までに述べてある。
 それを処理手順にしたものが, 1のp.119 の下の部分である。

固有ベクトルの求め方-p.120

2.2 FORTRAN言語とそのプログラム例について

プログラム仕様と実行例の解説 p.121
FORTRAN のプログラム例 p.122-123
実行例 p.124 (p.(1/6) の左側) 
 科学技術計算用に開発され,相当に使われていた。
(ワークステーションやパソコンでは,C言語でのプログラムが多くなったが。)

WebでのFORTRANサイトを3つ紹介する。
1.Fortran90プログラミング- 講義ノート。 
  京都大学総合人間学部基礎科学科 冨田博之 (Tomita Hiroyuki)先生による。
2.Fortran ResQ - 初心者向け解説
   北海道大学工学部土木工学科水圏工学講座向けの倉林 弘志先生による。
3.基礎的Fortran文法のまとめ 
   武蔵工業大学 工学部 情報処理センター 教育用電子掲示板から
  
C言語との比較
 演算そのものの記述は,c言語とよく似ている。配列の書きかたは,[ ]でなく( )である。
 入出力文なども似ている所はある。

2.3 C言語のJacobi法プログラムについて

1)プログラムのモジュール化−これは, 従来のプログラムを利用する。
2)ヤコビ法で, 最大の非対角要素の選択を行い、それについて変換を行う。
3)結果について,いくつかの確認の計算( 検算) をしている。

2.4  実習の課題とWebサイトでのレポート提出

  実対称行列aを読込み,ヤコビ法で固有値, 固有ベクトルを求め,表示するプログラムを作れ。
(戸川参照)
[ 戸川との違い] 最大の非対角要素の選択を行い、それについて変換を行う。
                結果について,いくつかの確認の計算( 検算) をしている。

  実際には, 例プログラムをコピーして, その空白の部分( 左・右からの乗算) を追加のこと。
  (yacobipq.c,  データは, 戸川のp.121 の例−4 次−を各自で作成のこと。) 

1)  手順を見て, 自分で考えること。 (プログラム例をみるとしても。) 
  ( 単に, 結果を出せば良いのではなく, どうして, そうするのかが分かること。) 
  ( そのためには,ヤコビ法での計算方法とその処理手順を参照する。) 

2) レポートのためには,まず, プログラムタイトルの行で自分の名前の表示に変更のこと。
 そして、最初の部分に, 考察を追加する。
 考察の内容は、
	1)固有値と固有ベクトルについて。
	2)ヤコビ法のプログラムとその実行結果について
		プログラムの構造は、どうなっているか
		固有値が求まったら、何を検算しているのか?何が分ったのか?
	3)FORTRAN言語とC言語の比較など
 実行結果を, 最後に付ける。( 小生の実行している分を削除して良い) 

3)  レポートファイルは、Webページとして編集して、レポート目次からリンクすること。