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%)