IOMにおいて問題となるのは,&ref(ls_arnoldi4_diom.eq1.gif,nolink,70%);の計算ですべての&ref(ls_arnoldi4_diom.eq2.gif,nolink,70%);が必要になることである.
そこで,&ref(ls_arnoldi4_diom.eq3.gif,nolink,70%);を&ref(ls_arnoldi4_diom.eq4.gif,nolink,70%);からでなく,&ref(ls_arnoldi4_diom.eq5.gif,nolink,70%);から計算するように修正したのがDIOM(Direct IOM)である.

IOMでi=j-k+1〜jとしたことで,&ref(ls_arnoldi4_diom.eq6.gif,nolink,70%);は値を持つ部分の幅がk+1な行列になる.以下にm=5, k=3の場合の例を示す.
#ref(ls_arnoldi4_diom.eq7.gif,nolink,70%)

まず&ref(ls_arnoldi4_diom.eq8.gif,nolink,70%);とLU分解する.
ピボッティングがなければ,分解した行列は以下のようになる.
#ref(ls_arnoldi4_diom.eq9.gif,nolink,70%)

DIOMでは&ref(ls_arnoldi4_diom.eq5.gif,nolink,70%);から&ref(ls_arnoldi4_diom.eq10.gif,nolink,70%);を求める形にしたい.
DIOMでは&ref(ls_arnoldi4_diom.eq5.gif,nolink,70%);から&ref(ls_arnoldi4_diom.eq10.gif,nolink,70%);を求める形にする.
FOMの&ref(ls_arnoldi4_diom.eq3.gif,nolink,70%);に関する式は,
#ref(ls_arnoldi4_diom.eq11.gif,nolink,70%)

であり,&ref(ls_arnoldi4_diom.eq6.gif,nolink,70%);をLU分解した行列で置き換える.
#ref(ls_arnoldi4_diom.eq12.gif,nolink,70%)

いま,
#ref(ls_arnoldi4_diom.eq13.gif,nolink,70%)

とおくと以下のように変形できる.
#ref(ls_arnoldi4_diom.eq14.gif,nolink,70%)

&ref(ls_arnoldi4_diom.eq15.gif,nolink,70%);,&ref(ls_arnoldi4_diom.eq16.gif,nolink,70%);それぞれの中身について考えてみる.

-&ref(ls_arnoldi4_diom.eq15.gif,nolink,70%);について~
&ref(ls_arnoldi4_diom.eq15.gif,nolink,70%);の式は&ref(ls_arnoldi4_diom.eq17.gif,nolink,70%);となり,&ref(ls_arnoldi4_diom.eq15.gif,nolink,70%);の各列を&ref(ls_arnoldi4_diom.eq18.gif,nolink,70%);とすると,&ref(ls_arnoldi4_diom.eq19.gif,nolink,70%);が上三角行列であることから,
&ref(ls_arnoldi4_diom.eq20.gif,nolink,70%);はガウスの消去法の後退代入を使って以下のように計算される.
#ref(ls_arnoldi4_diom.eq21.gif,nolink,70%)
よって,&ref(ls_arnoldi4_diom.eq20.gif,nolink,70%);はm-1までの&ref(ls_arnoldi4_diom.eq18.gif,nolink,70%);を使って算出される.ここで&ref(ls_arnoldi4_diom.eq15.gif,nolink,70%);を以下のように書くことにする.
#ref(ls_arnoldi4_diom.eq22.gif,nolink,70%)
-&ref(ls_arnoldi4_diom.eq16.gif,nolink,70%);について~
&ref(ls_arnoldi4_diom.eq16.gif,nolink,70%);についても&ref(ls_arnoldi4_diom.eq23.gif,nolink,70%);であり,例えば,m=5の場合,
#ref(ls_arnoldi4_diom.eq24.gif,nolink,70%)
よって,
#ref(ls_arnoldi4_diom.eq25.gif,nolink,70%)
ただし,&ref(ls_arnoldi4_diom.eq26.gif,nolink,70%);である.
このように&ref(ls_arnoldi4_diom.eq27.gif,nolink,70%);もm-1以下の&ref(ls_arnoldi4_diom.eq28.gif,nolink,70%);から計算される.こちらも&ref(ls_arnoldi4_diom.eq15.gif,nolink,70%);の時と同様に以下のように書く.
#ref(ls_arnoldi4_diom.eq29.gif,nolink,70%)


これらのことを使って式を書き換えると,
#ref(ls_arnoldi4_diom.eq30.gif,nolink,70%)
ここで,&ref(ls_arnoldi4_diom.eq31.gif,nolink,70%);は&ref(ls_arnoldi4_diom.eq5.gif,nolink,70%);なので,
#ref(ls_arnoldi4_diom.eq32.gif,nolink,70%)

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS