Arnoldi法では非対称行列を扱ったが,Aが対称行列だった場合, アルゴリズムを簡素化できる. これがランチョス(Lanczos)法である.

まず,Arnoldi法でAが実対称行列だったとき, ls_lanzcos1.eq1.gifも対称行列になる. さらにls_lanzcos1.eq2.gifはヘッセンベルグ行列であり,ls_lanzcos1.eq3.gif,ただし i > j+1 である. よって,ls_lanzcos1.eq2.gifが対称行列ならば,i < j-1 でもls_lanzcos1.eq3.gifとなる. つまり,以下のような三重対角行列(対角成分とその左右のみに値がある行列)となる.

ls_lanzcos1.eq4.gif

ここで,ls_lanzcos1.eq5.gifとした.

ls_lanzcos1.eq6.gifの代わりにls_lanzcos1.eq7.gifを使って, Arnoldi法(修正グラム・シュミットを用いたもの)を書き換える.

今,i < j-1でls_lanzcos1.eq6.gifが0となることから,i=j-1,jについてのみ考えればよい. i=j-1では,ls_lanzcos1.eq8.gifなので,ls_lanzcos1.eq9.gifと置き換えることができる. ただし,ls_lanzcos1.eq10.gifと置いておく. 次に,i=jでは,ls_lanzcos1.eq11.gifなので,ls_lanzcos1.eq12.gifと置き換えることができる. 最後にls_lanzcos1.eq13.gifと置き換え,ls_lanzcos1.eq14.gifは次の反復においてls_lanzcos1.eq15.gifとして用いられる. これらのことを適用するとアルゴリズムは以下のようになる.

任意のベクトルls_lanzcos1.eq16.gifを設定(ただしls_lanzcos1.eq17.gif)
ls_lanzcos1.eq18.gifを設定
for(j = 1,2,...,m){
  ls_lanzcos1.eq9.gif
  ls_lanzcos1.eq19.gif
  ls_lanzcos1.eq12.gif
  ls_lanzcos1.eq20.gif
  if(ls_lanzcos1.eq21.gif) 反復終了
  ls_lanzcos1.eq22.gif
}

これがLanczos法である.


添付ファイル: filels_lanzcos1.eq3.gif 612件 [詳細] filels_lanzcos1.eq18.gif 608件 [詳細] filels_lanzcos1.eq21.gif 591件 [詳細] filels_lanzcos1.eq7.gif 586件 [詳細] filels_lanzcos1.eq11.gif 561件 [詳細] filels_lanzcos1.eq16.gif 575件 [詳細] filels_lanzcos1.eq13.gif 542件 [詳細] filels_lanzcos1.eq15.gif 582件 [詳細] filels_lanzcos1.eq20.gif 591件 [詳細] filels_lanzcos1.eq10.gif 584件 [詳細] filels_lanzcos1.eq14.gif 525件 [詳細] filels_lanzcos1.eq6.gif 563件 [詳細] filels_lanzcos1.eq9.gif 499件 [詳細] filels_lanzcos1.eq5.gif 553件 [詳細] filels_lanzcos1.eq2.gif 558件 [詳細] filels_lanzcos1.eq1.gif 576件 [詳細] filels_lanzcos1.eq22.gif 554件 [詳細] filels_lanzcos1.eq4.gif 582件 [詳細] filels_lanzcos1.eq12.gif 647件 [詳細] filels_lanzcos1.eq19.gif 560件 [詳細] filels_lanzcos1.eq17.gif 551件 [詳細] filels_lanzcos1.eq8.gif 572件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-07-13 (金) 11:06:36 (3307d)