ランチョス法

ランチョス法(ランチョスほう、: Lanczos algorithm)とは、対象となる対称行列三重対角化する手法。

コルネリウス・ランチョスによって開発された反復計算法である。クリロフ部分空間法の一つ。

概要

行列 A {\displaystyle A} n × n {\displaystyle n\times n} の対称行列とする。 これが直交行列 P {\displaystyle P} によって三重対角行列 B {\displaystyle B} に直交変換されたとする。

B = P T A P {\displaystyle B=P^{\rm {T}}AP}

ここで、 A {\displaystyle A} が対称であるから B {\displaystyle B} も対称である。 そこで、三重対角化された行列 B {\displaystyle B} の成分を次のようにおくことにする。

B = ( α 1 β 1 β 1 α 2 β 2 0 β 2 α 3 β 3 0 α n 1 β n 1 β n 1 α n ) {\displaystyle B=\left({\begin{array}{ccccccc}\alpha _{1}&\beta _{1}&&&&&\\\beta _{1}&\alpha _{2}&\beta _{2}&&&0&\\&\beta _{2}&\alpha _{3}&\beta _{3}&&&\\&&\ddots &\ddots &\ddots &&\\&0&&&\ddots &\alpha _{n-1}&\beta _{n-1}\\&&&&&\beta _{n-1}&\alpha _{n}\\\end{array}}\right)}

一方、直交行列 P {\displaystyle P} の第 k {\displaystyle k} 列のベクトルを u k {\displaystyle {\boldsymbol {u}}_{k}} とすると、 P {\displaystyle P} の直交性から

u i T u j = { 0 ( i j ) , 1 ( i = j ) {\displaystyle {\boldsymbol {u}}_{i}{}^{\rm {T}}{\boldsymbol {u}}_{j}=\left\{{\begin{array}{ll}0&(i\neq j),\\1&(i=j)\end{array}}\right.}

が成立する。 また上記の直交変換はつぎのように書くことができる。

A P = P B {\displaystyle AP=PB}

ランチョス法とは、この関係から直接変換行列 P {\displaystyle P} すなわちベクトル u k {\displaystyle {\boldsymbol {u}}_{k}} を定めながら、それと同時に三重対角化を行っていく方法である。

上の等式で P = [ u 1 , u 2 , , u k , , u n ] {\displaystyle P=[{\boldsymbol {u}}_{1},{\boldsymbol {u}}_{2},\dots ,{\boldsymbol {u}}_{k},\dots ,{\boldsymbol {u}}_{n}]} とおき、 行列 B {\displaystyle B} の成分を代入して両辺の各列を比較すると、次式が得られる。

{ A u 1 = α 1 u 1 + β 1 u 2 A u 2 = β 1 u 1 + α 2 u 2 + β 2 u 3 A u k = β k 1 u k 1 + α k u k + β k u k + 1 A u n = β n 1 u n 1 + α n u n {\displaystyle \left\{{\begin{array}{l}A{\boldsymbol {u}}_{1}=\alpha _{1}{\boldsymbol {u}}_{1}+\beta _{1}{\boldsymbol {u}}_{2}\\A{\boldsymbol {u}}_{2}=\beta _{1}{\boldsymbol {u}}_{1}+\alpha _{2}{\boldsymbol {u}}_{2}+\beta _{2}{\boldsymbol {u}}_{3}\\\cdots \\A{\boldsymbol {u}}_{k}=\beta _{k-1}{\boldsymbol {u}}_{k-1}+\alpha _{k}{\boldsymbol {u}}_{k}+\beta _{k}{\boldsymbol {u}}_{k+1}\\\cdots \\A{\boldsymbol {u}}_{n}=\beta _{n-1}{\boldsymbol {u}}_{n-1}+\alpha _{n}{\boldsymbol {u}}_{n}\end{array}}\right.}

k {\displaystyle k} 行目の式に左から u k T {\displaystyle {\boldsymbol {u}}_{k}{}^{\rm {T}}} を乗じると、直交性より以下のように α k {\displaystyle \alpha _{k}} が求められる。

α k = u k T A u k {\displaystyle \alpha _{k}={\boldsymbol {u}}_{k}{}^{\rm {T}}A{\boldsymbol {u}}_{k}}

また、 u k 1 , u k {\displaystyle {\boldsymbol {u}}_{k-1},{\boldsymbol {u}}_{k}{}} がすでに求められているとすると、 u k + 1 {\displaystyle {\boldsymbol {u}}_{k+1}} はつぎのように計算することができる。 まず v k + 1 = β k u k + 1 {\displaystyle {\boldsymbol {v}}_{k+1}=\beta _{k}{\boldsymbol {u}}_{k+1}}

v k + 1 = A u k β k 1 u k 1 α k u k {\displaystyle {\boldsymbol {v}}_{k+1}=A{\boldsymbol {u}}_{k}-\beta _{k-1}{\boldsymbol {u}}_{k-1}-\alpha _{k}{\boldsymbol {u}}_{k}}

によって求める。つぎに u k + 1 {\displaystyle {\boldsymbol {u}}_{k+1}} 正規化条件 u k + 1 T u k + 1 = 1 {\displaystyle {\boldsymbol {u}}_{k+1}{}^{\rm {T}}{\boldsymbol {u}}_{k+1}=1} を満足させるために β k {\displaystyle \beta _{k}}

β k = | | v k + 1 | | 2 {\displaystyle \beta _{k}=||{\boldsymbol {v}}_{k+1}||_{2}}

と定める。そして、

u k + 1 = 1 β k v k + 1 {\displaystyle {\boldsymbol {u}}_{k+1}={\dfrac {1}{\beta _{k}}}{\boldsymbol {v}}_{k+1}}

とすればよい。

このようにして、 | | u 1 | | 2 = 1 {\displaystyle ||{\boldsymbol {u}}_{1}||_{2}=1} なる任意の初期ベクトル u 1 {\displaystyle {\boldsymbol {u}}_{1}} からはじめて順次 α k , β k {\displaystyle \alpha _{k},\beta _{k}} を計算することにより三重対角行列 B {\displaystyle B} を求めることができる。

特徴

もとの行列 A {\displaystyle A} は変形を受けず、 A {\displaystyle A} とベクトルの積だけで計算が行われるのがランチョス法の長所である。 このため、行列要素にゼロの割合が多い疎行列の対角化法として有力なものである。 また、直交性から、3項のみから成る漸化関係によって逐次求める量が得られていくのがこの方法の大きな特徴である。

しかし計算を進めていくうちに丸め誤差の累積によって u k {\displaystyle {\boldsymbol {u}}_{k}} の直交性がくずれてしまう可能性も持っている。

参考文献

  • 森正武『数値解析』共立出版、2002年2月。ISBN 4-320-01701-3。 
  • 夏目雄平、小川建吾、鈴木敏彦『計算物理3』朝倉書店、2002年11月。ISBN 978-4-254-13715-6。 
  • Louis Komzsik: "The Lanczos Method: Evolution and Application", SIAM, ISBN 978-0-898715-37-8 (2003).
  • Ge'rard Meurant: "The Lanczos and Conjugate Gradient Algorithms: From Theory to Finite Precision Computations", SIAM, ISBN 978-0-898716-16-0(2006年)。

関連項目

連立一次方程式
ベクトル
ベクトル空間
計量ベクトル空間
行列線型写像
演算・操作
不変量
クラス
行列式
多重線型代数
数値線形代数
基本的な概念
ソフトウェア
ライブラリ
反復法・技法
人物
行列値関数
その他
カテゴリ カテゴリ