数値固有値計算
ランチョス 法は、 コーネリウス・ランチョス が考案した 反復法 であり、 べき乗法を 応用して、 エルミート行列 の 「最も有用な」(極端に高い/低い傾向にある) 固有値と固有ベクトルを 見つけるものである 。ここで、 は より小さいことが多いが、必ずしも より小さいとは限らない 。 [1]原理的には計算効率は良いが、当初定式化された方法は 数値的に不安定 であるため、有用ではなかった 。
メートル
{\displaystyle m}
ん
×
ん
{\displaystyle n\times n}
メートル
{\displaystyle m}
ん
{\displaystyle n}
1970年、オジャルボとニューマンは、この方法を数値的に安定させる方法を示し、動的荷重を受ける非常に大規模な工学構造物の解法に適用しました。 [2] これは、ランチョスベクトルを精製する方法(つまり、新しく生成された各ベクトルを以前に生成された すべての ベクトルと繰り返し再直交化すること) [2] を使用して達成されましたが、これを実行しなかった場合、最も低い固有振動数に関連するベクトルによって大幅に汚染された一連のベクトルが生成されました。
オリジナルの研究で、これらの著者は、開始ベクトルの選択方法(つまり、開始ベクトルの各要素を選択するために乱数ジェネレータを使用する)と、 ベクトルの削減数を決定するための経験的に決定された方法(つまり、必要な正確な固有値の数の約1.5倍になるように選択する必要がある)も提案しました。その後すぐに、Paigeが彼らの研究に続き、誤差分析も提供しました。 [3] [4] 1988年に、Ojalvoはこのアルゴリズムのより詳細な歴史と効率的な固有値誤差テストを作成しました。 [5]
メートル
{\displaystyle m}
アルゴリズム
サイズ の エルミート行列 を 入力し 、オプションで反復回数を指定 します (デフォルトでは とします )。
あ
{\displaystyle A}
ん
×
ん
{\displaystyle n\times n}
メートル
{\displaystyle m}
メートル
=
ん
{\displaystyle m=n}
厳密に言えば、アルゴリズムは明示的な行列にアクセスする必要はなく、 行列と任意のベクトルの積を計算する関数だけが必要です。この関数はほとんどの場合呼び出されます 。
ヴ
↦
あ
ヴ
{\displaystyle v\mapsto Av}
メートル
{\displaystyle m}
正規 直交列を持つ行列 と 、 サイズ の 三重対角 実対称行列 を出力します 。 の場合 、 は ユニタリ となり 、 となります 。
ん
×
メートル
{\displaystyle n\times m}
五
{\displaystyle V}
T
=
五
∗
あ
五
{\displaystyle T=V^{*}AV}
メートル
×
メートル
{\displaystyle m\times m}
メートル
=
ん
{\displaystyle m=n}
五
{\displaystyle V}
あ
=
五
T
五
∗
{\displaystyle A=VTV^{*}}
警告 Lanczos 反復法は数値的に不安定になりやすい傾向があります。非正確な計算で実行する場合は、結果の妥当性を確保するために追加の対策 (後のセクションで概説) を講じる必要があります。
ユークリッドノルム を持つ任意のベクトル とし ます 。
ヴ
1
∈
C
ん
{\displaystyle v_{1}\in \mathbb {C} ^{n}}
1
{\displaystyle 1}
省略された初期反復ステップ:
させて 。
わ
1
′
=
あ
ヴ
1
{\displaystyle w_{1}'=Av_{1}}
させて 。
α
1
=
わ
1
′
∗
ヴ
1
{\displaystyle \alpha _{1}=w_{1}'^{*}v_{1}}
させて 。
わ
1
=
わ
1
′
−
α
1
ヴ
1
{\displaystyle w_{1}=w_{1}'-\alpha _{1}v_{1}}
行う場合 :
じ
=
2
、
…
、
メートル
{\displaystyle j=2,\dots ,m}
( ユークリッドノルム ともいう)とします 。
β
じ
=
‖
わ
じ
−
1
‖
{\displaystyle \beta _{j}=\|w_{j-1}\|}
ならば 、 とします 。
β
じ
≠
0
{\displaystyle \beta _{j}\neq 0}
ヴ
じ
=
わ
じ
−
1
/
β
じ
{\displaystyle v_{j}=w_{j-1}/\beta _{j}}
それ以外の場合は、のすべてに直交する ユークリッドノルムを持つ任意のベクトル として選択します 。
ヴ
じ
{\displaystyle v_{j}}
1
{\displaystyle 1}
ヴ
1
、
…
、
ヴ
じ
−
1
{\displaystyle v_{1},\dots ,v_{j-1}}
させて 。
わ
じ
′
=
あ
ヴ
じ
{\displaystyle w_{j}'=Av_{j}}
させて 。
α
じ
=
わ
じ
′
∗
ヴ
じ
{\displaystyle \alpha _{j}=w_{j}'^{*}v_{j}}
させて 。
わ
じ
=
わ
じ
′
−
α
じ
ヴ
じ
−
β
じ
ヴ
じ
−
1
{\displaystyle w_{j}=w_{j}'-\alpha _{j}v_{j}-\beta _{j}v_{j-1}}
を列を持つ行列と します 。 とします 。
五
{\displaystyle V}
ヴ
1
、
…
、
ヴ
メートル
{\displaystyle v_{1},\dots ,v_{m}}
T
=
(
α
1
β
2
0
β
2
α
2
β
3
β
3
α
3
⋱
⋱
⋱
β
メートル
−
1
β
メートル
−
1
α
メートル
−
1
β
メートル
0
β
メートル
α
メートル
)
{\displaystyle T={\begin{pmatrix}\alpha _{1}&\beta _{2}&&&&0\\\beta _{2}&\alpha _{2}&\beta _{3}&&&\\&\beta _{3}&\alpha _{3}&\ddots &&\\&&\ddots &\ddots &\beta _{m-1}&\\&&&\beta _{m-1}&\alpha _{m-1}&\beta _{m}\\0&&&&\beta _{m}&\alpha _{m}\\\end{pmatrix}}}
に関する 注意事項 。
あ
ヴ
じ
=
わ
じ
′
=
β
じ
+
1
ヴ
じ
+
1
+
α
じ
ヴ
じ
+
β
じ
ヴ
じ
−
1
{\displaystyle Av_{j}=w_{j}'=\beta _{j+1}v_{j+1}+\alpha _{j}v_{j}+\beta _{j}v_{j- 1}}
2
<
じ
<
メートル
{\displaystyle 2<j<m}
反復手順を記述する方法は、原理的には4つあります。ペイジと他の研究は、上記の演算順序が最も数値的に安定していることを示しています。 [6] [7]
実際には、初期ベクトルは 手順の別の引数として取られ、 数値の不正確さの指標が追加のループ終了条件として含められます。
ヴ
1
{\displaystyle v_{1}}
β
じ
=
0
{\displaystyle \beta _{j}=0}
行列とベクトルの乗算を除いて、各反復では算術演算が行われます。行列とベクトルの乗算 は算術演算 で実行できます。 ここで、は行内の非ゼロ要素の平均数です。したがって、全体の計算量は 、または の場合です 。Lanczos アルゴリズムは、疎行列に対して非常に高速です。数値安定性を向上させるスキームは、通常、この高いパフォーマンスに対して評価されます。
お
(
ん
)
{\displaystyle O(n)}
お
(
d
ん
)
{\displaystyle O(dn)}
d
{\displaystyle d}
お
(
d
メートル
ん
)
{\displaystyle O(dmn)}
お
(
d
ん
2
)
{\displaystyle O(dn^{2})}
メートル
=
ん
{\displaystyle m=n}
ベクトルは、 ランチョス ベクトル と呼ばれます 。ベクトルは 、が計算された 後には使用されず、ベクトルは、が計算された 後には使用されません 。したがって、3 つすべてに同じストレージを使用できます。同様に、三角行列のみを求める場合は、 を計算した後は 生の反復は必要ありません が、数値安定性を向上させるためのいくつかのスキームでは、後で必要になることがあります。後続のランチョス ベクトルは、 必要に応じて から再計算されることがあります。
ヴ
じ
{\displaystyle v_{j}}
わ
じ
′
{\displaystyle w_{j}'}
わ
じ
{\displaystyle w_{j}}
わ
じ
{\displaystyle w_{j}}
ヴ
じ
+
1
{\displaystyle v_{j+1}}
T
{\displaystyle T}
ヴ
じ
−
1
{\displaystyle v_{j-1}}
わ
じ
{\displaystyle w_{j}}
ヴ
1
{\displaystyle v_{1}}
固有問題への応用
ランチョス アルゴリズムは、行列の 固有値 と 固有ベクトルを 求める文脈で最もよく取り上げられますが、通常の 行列の対角化 では固有ベクトルと固有値が検査によって明らかになりますが、ランチョス アルゴリズムによって実行される三重対角化では同じことが当てはまりません。つまり、1 つの固有値または固有ベクトルを計算するだけでも、重要な追加手順が必要になります。それでも、ランチョス アルゴリズムを適用すると、固有分解の計算において大きな前進となることがよくあります。
が の固有値であり 、 その固有ベクトル ( ) である 場合 、 は 同じ固有値を持つ
の対応する固有ベクトルです。
λ
{\displaystyle \lambda}
T
{\displaystyle T}
x
{\displaystyle x}
T
x
=
λ
x
{\displaystyle Tx=\lambda x}
ええ
=
五
x
{\displaystyle y=Vx}
あ
{\displaystyle A}
あ
ええ
=
あ
五
x
=
五
T
五
∗
五
x
=
五
T
私
x
=
五
T
x
=
五
(
λ
x
)
=
λ
五
x
=
λ
ええ
。
{\displaystyle {\begin{aligned}Ay&=AVx\\&=VTV^{*}Vx\\&=VTIx\\&=VTx\\&=V(\lambda x)\\&=\lambda Vx\\&=\lambda y.\end{aligned}}}
したがって、Lanczos アルゴリズムは、 の固有値分解問題を の固有値 分解問題に変換します 。
あ
{\displaystyle A}
T
{\displaystyle T}
三角行列の場合、多くの特殊なアルゴリズムが存在し、多くの場合、汎用アルゴリズムよりも計算複雑度が低くなります。たとえば、が 三角対称行列
である場合、次のようになります。
T
{\displaystyle T}
メートル
×
メートル
{\displaystyle m\times m}
継続的再帰により、 操作 における 特性多項式 を計算し 、 操作中のある時点でそれを評価することができます。
お
(
メートル
2
)
{\displaystyle O(m^{2})}
お
(
メートル
)
{\displaystyle O(m)}
分割 統治固有値アルゴリズムは、 操作における の固有値分解全体を計算するために使用できます 。
T
{\displaystyle T}
お
(
メートル
2
)
{\displaystyle O(m^{2})}
高速多重極法 [8] は、たったの操作ですべての固有値を計算できる 。
お
(
メートル
ログ
メートル
)
{\displaystyle O(m\log m)}
いくつかの一般的な固有値分解アルゴリズム、特に QR アルゴリズムは 、一般行列よりも三角行列の方が収束が速いことが知られています。三角 QR の漸近的複雑性は、 分割統治アルゴリズムと同じです (定数係数は異なる場合があります)。固有ベクトルには 要素が一緒にあるため、これは漸近的に最適です。
お
(
メートル
2
)
{\displaystyle O(m^{2})}
メートル
2
{\displaystyle m^{2}}
べき乗法 や 逆反復法 など、収束率がユニタリ変換の影響を受けないアルゴリズムでも、 元の行列 ではなく 三重対角行列 に適用することで、低レベルのパフォーマンス上の利点を享受できる場合があります 。 は非常にスパースで、すべての非ゼロ要素の位置が非常に予測しやすいため、 キャッシュ と比較して優れたパフォーマンスでコンパクトな格納が可能です 。同様に、は すべての固有ベクトルと固有値が実数である実数行列ですが、 一般 に は複素要素と複素固有ベクトルを持つことができるため、 の固有ベクトルと固有値を求めるには実数演算で十分です 。
T
{\displaystyle T}
あ
{\displaystyle A}
T
{\displaystyle T}
T
{\displaystyle T}
あ
{\displaystyle A}
T
{\displaystyle T}
が非常に大きい場合 、 を 扱いやすいサイズに縮小しても、 のより極端な固有値と固有ベクトルを見つけることができます 。 領域では、ランチョス アルゴリズムは、極端な固有値の保存に重点を置いたエルミート行列の 非可逆圧縮 方式と見なすことができます 。
ん
{\displaystyle n}
メートル
{\displaystyle m}
T
{\displaystyle T}
あ
{\displaystyle A}
メートル
≪
ん
{\displaystyle m\ll n}
疎行列に対する優れたパフォーマンスと、いくつかの(すべての固有値を計算せずに)固有値を計算できる機能の組み合わせが、Lanczos アルゴリズムの使用を選択する主な理由です。
三角対角化への応用
ランチョス法を適用する動機は固有値問題であることが多いが、この法が主に行う演算は行列の三角対角化であり、数値的に安定した ハウスホルダー変換が 1950 年代から好まれてきた。1960 年代にはランチョス法は無視された。カニエル・ペイジ収束理論と数値的不安定性を防ぐ方法の開発によってランチョス法への関心が再燃したが、ランチョス法はハウスホルダー法が満足のいくものでない場合にのみ試される代替法として残っている。 [9]
2 つのアルゴリズムの相違点は次のとおりです。
Lanczos は疎行列であること の利点を活用しますが、Householder はそれを利用せず、 埋め込み を 生成します。
あ
{\displaystyle A}
Lanczos は最初から最後まで元の行列を操作します (暗黙的にのみ認識されることに問題はありません)。一方、生の Householder は計算中に行列を変更しようとします (ただし、これは回避できます)。
あ
{\displaystyle A}
Lanczos アルゴリズムの各反復では、最終的な変換行列 の別の列が生成されます が、Householder の反復では、 のユニタリ因数分解の別の因子が生成されます 。ただし、各因子は単一のベクトルによって決定されるため、両方のアルゴリズムのストレージ要件は同じであり、時間 内に計算できます 。
五
{\displaystyle V}
質問
1
質問
2
…
質問
ん
{\displaystyle Q_{1}Q_{2}\dots Q_{n}}
五
{\displaystyle V}
五
=
質問
1
質問
2
…
質問
ん
{\displaystyle V=Q_{1}Q_{2}\dots Q_{n}}
お
(
ん
3
)
{\displaystyle O(n^{3})}
Householder は数値的に安定していますが、生の Lanczos はそうではありません。
Lanczos は高度に並列化されており、同期 ポイント( および の計算) のみがあります 。Householder は並列化が低く、計算されるスカラー量のシーケンスは それぞれシーケンス内の前の量に依存します。
お
(
ん
)
{\displaystyle O(n)}
α
じ
{\displaystyle \alpha_{j}}
β
じ
{\displaystyle \beta_{j}}
お
(
ん
2
)
{\displaystyle O(n^{2})}
アルゴリズムの導出
Lanczos アルゴリズムに至る推論はいくつかあります。
より賢明な電力供給方法
行列の最大の大きさの固有値とそれに対応する固有ベクトルを求めるべき乗法は、 おおよそ次のようになる。
あ
{\displaystyle A}
ランダムなベクトルを選択します 。
あなた
1
≠
0
{\displaystyle u_{1}\neq 0}
(の方向が収束するまで)次 のように します。
じ
⩾
1
{\displaystyle j\geqslant 1}
あなた
じ
{\displaystyle u_{j}}
させて
あなた
じ
+
1
′
=
あ
あなた
じ
。
{\displaystyle u_{j+1}'=Au_{j}.}
させて
あなた
じ
+
1
=
あなた
じ
+
1
′
/
‖
あなた
じ
+
1
′
‖
。
{\displaystyle u_{j+1}=u_{j+1}'/\|u_{j+1}'\|.}
大きな 極限では、 最大の大きさの固有値に対応するノルムされた固有ベクトルに近づきます。
じ
{\displaystyle j}
あなた
じ
{\displaystyle u_{j}}
この方法に対して挙げられる批判は、無駄が多いというものです。行列 から情報を抽出するために多くの作業 (ステップ 2.1 の行列とベクトルの積) を費やします が、最後の結果のみに注意を払います。実装では通常、すべてのベクトル に同じ変数を使用し 、新しい反復ごとに前の反復の結果を上書きします。代わりに、すべての中間結果を保持してデータを整理することが望ましい場合があります。
あ
{\displaystyle A}
あなた
じ
{\displaystyle u_{j}}
ベクトルから自明に得られる情報の1つは、 クリロフ部分空間 の連鎖である 。アルゴリズムに集合を導入せずにそれを述べる1つの方法は、次のように計算すると主張することである。
あなた
じ
{\displaystyle u_{j}}
の基底の 部分集合で あり 、すべて の
{
ヴ
じ
}
じ
=
1
メートル
{\displaystyle \{v_{j}\}_{j=1}^{m}}
C
ん
{\displaystyle \mathbb {C} ^{n}}
あ
x
∈
スパン
(
ヴ
1
、
…
、
ヴ
じ
+
1
)
{\displaystyle Ax\in \operatorname {span} (v_{1},\dotsc ,v_{j+1})}
x
∈
スパン
(
ヴ
1
、
…
、
ヴ
じ
)
{\displaystyle x\in \operatorname {span} (v_{1},\dotsc ,v_{j})}
1
⩽
じ
<
メートル
;
{\displaystyle 1\leqslant j<m;}
これは、 が から線形独立である 限り 、 によって自明に満たされます (そして、そのような依存関係がある場合には、 から 線形独立な任意のベクトルとして を選択することによってシーケンスを継続することができます )。ただし、ベクトルを含む基底は、 このベクトルシーケンスが の固有ベクトルに収束するように設計されているため、数値的に 悪条件に なる可能性があります 。これを回避するには、べき乗反復を グラム–シュミット過程 と組み合わせることで、代わりにこれらのクリロフ部分空間の正規直交基底を生成することができます。
ヴ
じ
=
あなた
じ
{\displaystyle v_{j}=u_{j}}
あなた
じ
{\displaystyle u_{j}}
あなた
1
、
…
、
あなた
じ
−
1
{\displaystyle u_{1},\dotsc ,u_{j-1}}
ヴ
じ
{\displaystyle v_{j}}
あなた
1
、
…
、
あなた
じ
−
1
{\displaystyle u_{1},\dotsc ,u_{j-1}}
あなた
じ
{\displaystyle u_{j}}
あ
{\displaystyle A}
ユークリッドノルムの ランダムなベクトルを選択します 。 とします 。
あなた
1
{\displaystyle u_{1}}
1
{\displaystyle 1}
ヴ
1
=
あなた
1
{\displaystyle v_{1}=u_{1}}
行う場合 :
じ
=
1
、
…
、
メートル
−
1
{\displaystyle j=1,\dotsc ,m-1}
させて 。
あなた
じ
+
1
′
=
あ
あなた
じ
{\displaystyle u_{j+1}'=Au_{j}}
すべてについて と します。(これらは 基底ベクトル に対する の座標です 。)
け
=
1
、
…
、
じ
{\displaystyle k=1,\dotsc,j}
グ
け
、
じ
=
ヴ
け
∗
あなた
じ
+
1
′
{\displaystyle g_{k,j}=v_{k}^{*}u_{j+1}'}
あ
あなた
じ
=
あなた
じ
+
1
′
{\displaystyle Au_{j}=u_{j+1}'}
ヴ
1
、
…
、
ヴ
じ
{\displaystyle v_{1},\dotsc ,v_{j}}
とします。( に含まれる の成分を消去します 。)
w
j
+
1
=
u
j
+
1
′
−
∑
k
=
1
j
g
k
,
j
v
k
{\displaystyle w_{j+1}=u_{j+1}'-\sum _{k=1}^{j}g_{k,j}v_{k}}
u
j
+
1
′
{\displaystyle u_{j+1}'}
span
(
v
1
,
…
,
v
j
)
{\displaystyle \operatorname {span} (v_{1},\dotsc ,v_{j})}
ならば、 と し 、
w
j
+
1
≠
0
{\displaystyle w_{j+1}\neq 0}
u
j
+
1
=
u
j
+
1
′
/
‖
u
j
+
1
′
‖
{\displaystyle u_{j+1}=u_{j+1}'/\|u_{j+1}'\|}
v
j
+
1
=
w
j
+
1
/
‖
w
j
+
1
‖
{\displaystyle v_{j+1}=w_{j+1}/\|w_{j+1}\|}
それ以外の場合は、 のすべてに直交する ユークリッドノルムの任意のベクトル として を選択します 。
u
j
+
1
=
v
j
+
1
{\displaystyle u_{j+1}=v_{j+1}}
1
{\displaystyle 1}
v
1
,
…
,
v
j
{\displaystyle v_{1},\dotsc ,v_{j}}
べき乗反復ベクトル と直交ベクトルの関係 は、
u
j
{\displaystyle u_{j}}
v
j
{\displaystyle v_{j}}
A
u
j
=
‖
u
j
+
1
′
‖
u
j
+
1
=
u
j
+
1
′
=
w
j
+
1
+
∑
k
=
1
j
g
k
,
j
v
k
=
‖
w
j
+
1
‖
v
j
+
1
+
∑
k
=
1
j
g
k
,
j
v
k
{\displaystyle Au_{j}=\|u_{j+1}'\|u_{j+1}=u_{j+1}'=w_{j+1}+\sum _{k=1}^{j}g_{k,j}v_{k}=\|w_{j+1}\|v_{j+1}+\sum _{k=1}^{j}g_{k,j}v_{k}}
。
ここで、これらの を計算するためにベクトルは 実際には必要ないことに気づくかもしれない 。なぜなら、 であり、したがって と の 差は にあり 、これは直交化プロセスによって相殺されるからである。したがって、クリロフ部分空間の連鎖に対する同じ基底は次のように計算される。
u
j
{\displaystyle u_{j}}
v
j
{\displaystyle v_{j}}
u
j
−
v
j
∈
span
(
v
1
,
…
,
v
j
−
1
)
{\displaystyle u_{j}-v_{j}\in \operatorname {span} (v_{1},\dotsc ,v_{j-1})}
u
j
+
1
′
=
A
u
j
{\displaystyle u_{j+1}'=Au_{j}}
w
j
+
1
′
=
A
v
j
{\displaystyle w_{j+1}'=Av_{j}}
span
(
v
1
,
…
,
v
j
)
{\displaystyle \operatorname {span} (v_{1},\dotsc ,v_{j})}
ユークリッドノルムの ランダムなベクトルを選択します 。
v
1
{\displaystyle v_{1}}
1
{\displaystyle 1}
行う場合 :
j
=
1
,
…
,
m
−
1
{\displaystyle j=1,\dotsc ,m-1}
させて 。
w
j
+
1
′
=
A
v
j
{\displaystyle w_{j+1}'=Av_{j}}
すべて と します 。
k
=
1
,
…
,
j
{\displaystyle k=1,\dotsc ,j}
h
k
,
j
=
v
k
∗
w
j
+
1
′
{\displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'}
させて 。
w
j
+
1
=
w
j
+
1
′
−
∑
k
=
1
j
h
k
,
j
v
k
{\displaystyle w_{j+1}=w_{j+1}'-\sum _{k=1}^{j}h_{k,j}v_{k}}
させて 。
h
j
+
1
,
j
=
‖
w
j
+
1
‖
{\displaystyle h_{j+1,j}=\|w_{j+1}\|}
ならば 、
h
j
+
1
,
j
≠
0
{\displaystyle h_{j+1,j}\neq 0}
v
j
+
1
=
w
j
+
1
/
h
j
+
1
,
j
{\displaystyle v_{j+1}=w_{j+1}/h_{j+1,j}}
それ以外の場合は、 のすべてに直交する ユークリッドノルムの任意のベクトル として を選択します 。
v
j
+
1
{\displaystyle v_{j+1}}
1
{\displaystyle 1}
v
1
,
…
,
v
j
{\displaystyle v_{1},\dotsc ,v_{j}}
事前に係数は以下 を満たす
h
k
,
j
{\displaystyle h_{k,j}}
A
v
j
=
∑
k
=
1
j
+
1
h
k
,
j
v
k
{\displaystyle Av_{j}=\sum _{k=1}^{j+1}h_{k,j}v_{k}}
すべてに対して ;
j
<
m
{\displaystyle j<m}
この定義は 少し奇妙に思えるかもしれないが、一般的なパターンに当てはまる 。
h
j
+
1
,
j
=
‖
w
j
+
1
‖
{\displaystyle h_{j+1,j}=\|w_{j+1}\|}
h
k
,
j
=
v
k
∗
w
j
+
1
′
{\displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'}
v
j
+
1
∗
w
j
+
1
′
=
v
j
+
1
∗
w
j
+
1
=
‖
w
j
+
1
‖
v
j
+
1
∗
v
j
+
1
=
‖
w
j
+
1
‖
.
{\displaystyle v_{j+1}^{*}w_{j+1}'=v_{j+1}^{*}w_{j+1}=\|w_{j+1}\|v_{j+1}^{*}v_{j+1}=\|w_{j+1}\|.}
この再帰から除去された べき乗反復ベクトルは、 ベクトル と係数が をすべて計算するの に十分な情報を含んでいることを満たすため 、ベクトルを切り替えることで何も失われません。(実際、ここで収集されたデータは、べき乗法で同じ回数の反復から得られるものよりも、最大固有値の近似値として大幅に優れていることがわかりますが、この時点では必ずしも明らかではありません。)
u
j
{\displaystyle u_{j}}
u
j
∈
span
(
v
1
,
…
,
v
j
)
,
{\displaystyle u_{j}\in \operatorname {span} (v_{1},\ldots ,v_{j}),}
{
v
j
}
j
=
1
m
{\displaystyle \{v_{j}\}_{j=1}^{m}}
h
k
,
j
{\displaystyle h_{k,j}}
A
{\displaystyle A}
u
1
,
…
,
u
m
{\displaystyle u_{1},\ldots ,u_{m}}
この最後の手順は、 アーノルディ反復法 です。 がエルミートである場合に自明であることが判明した計算ステップを排除することで得られる簡略化として、ランチョス アルゴリズムが生まれます。 特に、 係数のほとんどがゼロになります。
A
{\displaystyle A}
h
k
,
j
{\displaystyle h_{k,j}}
基本的に、 がエルミートならば
A
{\displaystyle A}
h
k
,
j
=
v
k
∗
w
j
+
1
′
=
v
k
∗
A
v
j
=
v
k
∗
A
∗
v
j
=
(
A
v
k
)
∗
v
j
.
{\displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'=v_{k}^{*}Av_{j}=v_{k}^{*}A^{*}v_{j}=(Av_{k})^{*}v_{j}.}
というのは 、 で あることが分かっており、 は構成上この部分空間に直交するので、この内積はゼロで なけれ
ばならない。(これは本質的に、直交多項式の列に常に 3項再帰関係 が与えられる理由でもある 。)
k
<
j
−
1
{\displaystyle k<j-1}
A
v
k
∈
span
(
v
1
,
…
,
v
j
−
1
)
{\displaystyle Av_{k}\in \operatorname {span} (v_{1},\ldots ,v_{j-1})}
v
j
{\displaystyle v_{j}}
k
=
j
−
1
{\displaystyle k=j-1}
h
j
−
1
,
j
=
(
A
v
j
−
1
)
∗
v
j
=
v
j
∗
A
v
j
−
1
¯
=
h
j
,
j
−
1
¯
=
h
j
,
j
−
1
{\displaystyle h_{j-1,j}=(Av_{j-1})^{*}v_{j}={\overline {v_{j}^{*}Av_{j-1}}}={\overline {h_{j,j-1}}}=h_{j,j-1}}
後者はベクトルのノルムであるので実数である 。
k
=
j
{\displaystyle k=j}
h
j
,
j
=
(
A
v
j
)
∗
v
j
=
v
j
∗
A
v
j
¯
=
h
j
,
j
¯
,
{\displaystyle h_{j,j}=(Av_{j})^{*}v_{j}={\overline {v_{j}^{*}Av_{j}}}={\overline {h_{j,j}}},}
つまりこれも本物だということです。
より抽象的に言えば、 が 列を持つ行列である場合 、数値は 行列 の要素として識別でき 、 行列 の場合、は 上ヘッセンベルク である 。
V
{\displaystyle V}
v
1
,
…
,
v
m
{\displaystyle v_{1},\ldots ,v_{m}}
h
k
,
j
{\displaystyle h_{k,j}}
H
=
V
∗
A
V
{\displaystyle H=V^{*}AV}
h
k
,
j
=
0
{\displaystyle h_{k,j}=0}
k
>
j
+
1
;
{\displaystyle k>j+1;}
H
{\displaystyle H}
H
∗
=
(
V
∗
A
V
)
∗
=
V
∗
A
∗
V
=
V
∗
A
V
=
H
{\displaystyle H^{*}=\left(V^{*}AV\right)^{*}=V^{*}A^{*}V=V^{*}AV=H}
この行列 はエルミート行列です。これは、 も下ヘッセンベルグ行列であることを意味します。したがって、この行列は実際には三重対角行列でなければなりません。エルミート行列であるため、この行列の主対角要素は実数であり、この行列の最初の副対角要素は構成上実数であるため、この行列の最初の上対角要素についても同じことが言えます。したがって、この行列は 実数の対称行列であり、これは Lanczos アルゴリズム仕様の行列です。
H
{\displaystyle H}
H
{\displaystyle H}
H
{\displaystyle H}
T
{\displaystyle T}
極限固有値の同時近似
エルミート行列の固有ベクトルを特徴付ける一つの方法は、 レイリー商 の 定常点 として表すことである。
A
{\displaystyle A}
r
(
x
)
=
x
∗
A
x
x
∗
x
,
x
∈
C
n
.
{\displaystyle r(x)={\frac {x^{*}Ax}{x^{*}x}},\qquad x\in \mathbb {C} ^{n}.}
特に、最大の固有値は のグローバル最大値であり 、最小の固有値 は のグローバル最小値です 。
λ
max
{\displaystyle \lambda _{\max }}
r
{\displaystyle r}
λ
min
{\displaystyle \lambda _{\min }}
r
{\displaystyle r}
の低次元部分空間内では 、 の最大値 と最小値 を 見つけることは可能です 。 増加チェーンについてこれを繰り返すと、 2つのベクトル列が生成されます。 および であり 、 および
L
{\displaystyle {\mathcal {L}}}
C
n
{\displaystyle \mathbb {C} ^{n}}
x
{\displaystyle x}
y
{\displaystyle y}
r
{\displaystyle r}
L
1
⊂
L
2
⊂
⋯
{\displaystyle {\mathcal {L}}_{1}\subset {\mathcal {L}}_{2}\subset \cdots }
x
1
,
x
2
,
…
{\displaystyle x_{1},x_{2},\ldots }
y
1
,
y
2
,
…
{\displaystyle y_{1},y_{2},\dotsc }
x
j
,
y
j
∈
L
j
{\displaystyle x_{j},y_{j}\in {\mathcal {L}}_{j}}
r
(
x
1
)
⩽
r
(
x
2
)
⩽
⋯
⩽
λ
max
r
(
y
1
)
⩾
r
(
y
2
)
⩾
⋯
⩾
λ
min
{\displaystyle {\begin{aligned}r(x_{1})&\leqslant r(x_{2})\leqslant \cdots \leqslant \lambda _{\max }\\r(y_{1})&\geqslant r(y_{2})\geqslant \cdots \geqslant \lambda _{\min }\end{aligned}}}
次に、これらのシーケンスが最適な速度で収束するようにサブスペースをどのように選択するかという疑問が生じます。
から 、 のより大きな値を求める最適な方向は 勾配 の方向であり 、同様に から、 のより小さな値を求める最適な方向は 負の勾配 の方向である 。一般に、
x
j
{\displaystyle x_{j}}
r
{\displaystyle r}
∇
r
(
x
j
)
{\displaystyle \nabla r(x_{j})}
y
j
{\displaystyle y_{j}}
r
{\displaystyle r}
−
∇
r
(
y
j
)
{\displaystyle -\nabla r(y_{j})}
∇
r
(
x
)
=
2
x
∗
x
(
A
x
−
r
(
x
)
x
)
,
{\displaystyle \nabla r(x)={\frac {2}{x^{*}x}}(Ax-r(x)x),}
したがって、関心のある方向は行列演算で簡単に計算できますが、 と の両方を改良したい場合は 、 次の 2 つの新しい方向を考慮する必要があります。 および は線形独立ベクトルになる可能性がある ため (実際、 は直交に近い)、 と が一般に平行である とは期待できません。 を クリロフ部分空間とすると、すべて のに対して になる ため、すべてのステップで によって の次元を増やす必要はありません。したがって 、特に と の両方に対して です 。
x
j
{\displaystyle x_{j}}
y
j
{\displaystyle y_{j}}
A
x
j
{\displaystyle Ax_{j}}
A
y
j
;
{\displaystyle Ay_{j};}
x
j
{\displaystyle x_{j}}
y
j
{\displaystyle y_{j}}
A
x
j
{\displaystyle Ax_{j}}
A
y
j
{\displaystyle Ay_{j}}
L
j
{\displaystyle {\mathcal {L}}_{j}}
2
{\displaystyle 2}
{
L
j
}
j
=
1
m
{\displaystyle \{{\mathcal {L}}_{j}\}_{j=1}^{m}}
A
z
∈
L
j
+
1
{\displaystyle Az\in {\mathcal {L}}_{j+1}}
z
∈
L
j
,
{\displaystyle z\in {\mathcal {L}}_{j},}
z
=
x
j
{\displaystyle z=x_{j}}
z
=
y
j
{\displaystyle z=y_{j}}
言い換えれば、任意の初期ベクトルから ベクトル空間を構築する
ことができる。
x
1
=
y
1
,
{\displaystyle x_{1}=y_{1},}
L
j
=
span
(
x
1
,
A
x
1
,
…
,
A
j
−
1
x
1
)
{\displaystyle {\mathcal {L}}_{j}=\operatorname {span} (x_{1},Ax_{1},\ldots ,A^{j-1}x_{1})}
そして 、
x
j
,
y
j
∈
L
j
{\displaystyle x_{j},y_{j}\in {\mathcal {L}}_{j}}
r
(
x
j
)
=
max
z
∈
L
j
r
(
z
)
and
r
(
y
j
)
=
min
z
∈
L
j
r
(
z
)
.
{\displaystyle r(x_{j})=\max _{z\in {\mathcal {L}}_{j}}r(z)\qquad {\text{and}}\qquad r(y_{j})=\min _{z\in {\mathcal {L}}_{j}}r(z).}
べき乗法反復は に属している ため、 と を生成する反復は べき乗法よりも遅く収束することはなく、両方の固有値の極値を近似することでより多くの成果が得られます。 上の最適化の部分問題では 、このベクトル空間の正規直交基底があると便利です 。したがって、クリロフ部分空間のシーケンスの基底を反復的に計算するという問題に再び直面します。
j
{\displaystyle j}
u
j
{\displaystyle u_{j}}
L
j
,
{\displaystyle {\mathcal {L}}_{j},}
x
j
{\displaystyle x_{j}}
y
j
{\displaystyle y_{j}}
r
{\displaystyle r}
L
j
{\displaystyle {\mathcal {L}}_{j}}
{
v
1
,
…
,
v
j
}
{\displaystyle \{v_{1},\ldots ,v_{j}\}}
収束とその他のダイナミクス
アルゴリズムのダイナミクスを分析する場合、 の固有値と固有ベクトルは 、ユーザーには明示的に知らされていなくても、既知であるとみなすと便利です。表記を固定するには、 を固有値(これらはすべて実数であることがわかっているため、順序付けが可能です)とし、 を すべての に対して となるような固有ベクトルの正規直交集合とします 。
A
{\displaystyle A}
λ
1
⩾
λ
2
⩾
⋯
⩾
λ
n
{\displaystyle \lambda _{1}\geqslant \lambda _{2}\geqslant \dotsb \geqslant \lambda _{n}}
z
1
,
…
,
z
n
{\displaystyle z_{1},\dotsc ,z_{n}}
A
z
k
=
λ
k
z
k
{\displaystyle Az_{k}=\lambda _{k}z_{k}}
k
=
1
,
…
,
n
{\displaystyle k=1,\dotsc ,n}
また、この固有基底に関する 初期ランチョス ベクトルの係数の表記を固定することも便利です。 すべての について とし 、 となるようにします 。開始ベクトル から一部の固有成分が失われると、対応する固有値への収束が遅れます。これは誤差範囲の定数因子としてしか出てこないとしても、依然として失われることは望ましくありません。これに常に悩まされることを避ける一般的な手法の 1 つは、まず 平均 の同じ 正規分布 に従って要素をランダムに抽出して選択し 、次にベクトルをノルム に再スケーリングする ことです。再スケーリングの前は、これにより係数 も同じ正規分布からの独立した正規分布の確率変数になり (座標の変更はユニタリであるため)、再スケーリング後はベクトルは の単位球面上に 一様分布 します 。これにより、たとえば となる確率を制限できます 。
v
1
{\displaystyle v_{1}}
d
k
=
z
k
∗
v
1
{\displaystyle d_{k}=z_{k}^{*}v_{1}}
k
=
1
,
…
,
n
{\displaystyle k=1,\dotsc ,n}
v
1
=
∑
k
=
1
n
d
k
z
k
{\displaystyle \textstyle v_{1}=\sum _{k=1}^{n}d_{k}z_{k}}
v
1
{\displaystyle v_{1}}
v
1
{\displaystyle v_{1}}
0
{\displaystyle 0}
1
{\displaystyle 1}
d
k
{\displaystyle d_{k}}
(
d
1
,
…
,
d
n
)
{\displaystyle (d_{1},\dotsc ,d_{n})}
C
n
{\displaystyle \mathbb {C} ^{n}}
|
d
1
|
<
ε
{\displaystyle |d_{1}|<\varepsilon }
Lanczos アルゴリズムは座標に依存しない (演算ではベクトルの内積のみが考慮され、ベクトルの個々の要素は考慮されない) ため、既知の固有構造を持つ例を簡単に作成してアルゴリズムを実行できます。 対角線上に目的の固有値を持つ対角行列を作成します。開始ベクトルに十分な数の非ゼロ要素がある限り 、アルゴリズムは一般的な三重対角対称行列を として出力します 。
A
{\displaystyle A}
v
1
{\displaystyle v_{1}}
T
{\displaystyle T}
カニエル・ペイジ収束理論
ランチョス法の反復ステップ の後、は実対称行列 となり 、上記と同様に 固有値を持つ。収束とは、第一に、 が大きくなるにつれて が に 収束すること(および が に 対称的に収束すること )を意味し 、第二に の 固有値のある範囲が の 対応するに収束すること である。ランチョス法の収束は、べき乗反復法の収束よりも桁違いに速いことが多い。 [9] : 477
m
{\displaystyle m}
T
{\displaystyle T}
m
×
m
{\displaystyle m\times m}
m
{\displaystyle m}
θ
1
⩾
θ
2
⩾
⋯
⩾
θ
m
.
{\displaystyle \theta _{1}\geqslant \theta _{2}\geqslant \dots \geqslant \theta _{m}.}
θ
1
{\displaystyle \theta _{1}}
λ
1
{\displaystyle \lambda _{1}}
θ
m
{\displaystyle \theta _{m}}
λ
n
{\displaystyle \lambda _{n}}
m
{\displaystyle m}
θ
1
,
…
,
θ
k
{\displaystyle \theta _{1},\ldots ,\theta _{k}}
T
{\displaystyle T}
λ
1
,
…
,
λ
k
{\displaystyle \lambda _{1},\ldots ,\lambda _{k}}
A
{\displaystyle A}
に対する境界は、 固有値をレイリー商 の極値として解釈することから得られます 。は 全体にわたって の 最大値で あり、 は単に 次元クリロフ部分空間上の最大値であるため 、 が自明に得られます 。逆に、そのクリロフ部分空間内の任意の点は の 下限値を提供する ため、 に対して が小さい点を示すことができる場合 、これは に対する厳密な境界を提供します 。
θ
1
{\displaystyle \theta _{1}}
r
(
x
)
{\displaystyle r(x)}
λ
1
{\displaystyle \lambda _{1}}
r
{\displaystyle r}
C
n
,
{\displaystyle \mathbb {C} ^{n},}
θ
1
{\displaystyle \theta _{1}}
m
{\displaystyle m}
λ
1
⩾
θ
1
{\displaystyle \lambda _{1}\geqslant \theta _{1}}
x
{\displaystyle x}
r
(
x
)
{\displaystyle r(x)}
θ
1
{\displaystyle \theta _{1}}
λ
1
−
r
(
x
)
{\displaystyle \lambda _{1}-r(x)}
θ
1
{\displaystyle \theta _{1}}
次元 クリロフ部分空間は
m
{\displaystyle m}
span
{
v
1
,
A
v
1
,
A
2
v
1
,
…
,
A
m
−
1
v
1
}
,
{\displaystyle \operatorname {span} \left\{v_{1},Av_{1},A^{2}v_{1},\ldots ,A^{m-1}v_{1}\right\},}
したがって、その任意の要素は、最大次数の 多項式 について と表すことができます 。その多項式の係数は、ベクトル の線形結合の係数に過ぎません 。必要な多項式は実係数を持つことになりますが、ここでは複素係数も考慮し、 のすべての係数を複素共役にして得られる多項式について と書きます 。このクリロフ部分空間のパラメータ化では、
p
(
A
)
v
1
{\displaystyle p(A)v_{1}}
p
{\displaystyle p}
m
−
1
{\displaystyle m-1}
v
1
,
A
v
1
,
A
2
v
1
,
…
,
A
m
−
1
v
1
{\displaystyle v_{1},Av_{1},A^{2}v_{1},\ldots ,A^{m-1}v_{1}}
p
∗
{\displaystyle p^{*}}
p
{\displaystyle p}
r
(
p
(
A
)
v
1
)
=
(
p
(
A
)
v
1
)
∗
A
p
(
A
)
v
1
(
p
(
A
)
v
1
)
∗
p
(
A
)
v
1
=
v
1
∗
p
(
A
)
∗
A
p
(
A
)
v
1
v
1
∗
p
(
A
)
∗
p
(
A
)
v
1
=
v
1
∗
p
∗
(
A
∗
)
A
p
(
A
)
v
1
v
1
∗
p
∗
(
A
∗
)
p
(
A
)
v
1
=
v
1
∗
p
∗
(
A
)
A
p
(
A
)
v
1
v
1
∗
p
∗
(
A
)
p
(
A
)
v
1
{\displaystyle r(p(A)v_{1})={\frac {(p(A)v_{1})^{*}Ap(A)v_{1}}{(p(A)v_{1})^{*}p(A)v_{1}}}={\frac {v_{1}^{*}p(A)^{*}Ap(A)v_{1}}{v_{1}^{*}p(A)^{*}p(A)v_{1}}}={\frac {v_{1}^{*}p^{*}(A^{*})Ap(A)v_{1}}{v_{1}^{*}p^{*}(A^{*})p(A)v_{1}}}={\frac {v_{1}^{*}p^{*}(A)Ap(A)v_{1}}{v_{1}^{*}p^{*}(A)p(A)v_{1}}}}
の式を 固有ベクトルの線形結合として用いると、次の式が得られる。
v
1
{\displaystyle v_{1}}
A
v
1
=
A
∑
k
=
1
n
d
k
z
k
=
∑
k
=
1
n
d
k
λ
k
z
k
{\displaystyle Av_{1}=A\sum _{k=1}^{n}d_{k}z_{k}=\sum _{k=1}^{n}d_{k}\lambda _{k}z_{k}}
そしてより一般的には
q
(
A
)
v
1
=
∑
k
=
1
n
d
k
q
(
λ
k
)
z
k
{\displaystyle q(A)v_{1}=\sum _{k=1}^{n}d_{k}q(\lambda _{k})z_{k}}
任意の多項式に対して 。
q
{\displaystyle q}
したがって
λ
1
−
r
(
p
(
A
)
v
1
)
=
λ
1
−
v
1
∗
∑
k
=
1
n
d
k
p
∗
(
λ
k
)
λ
k
p
(
λ
k
)
z
k
v
1
∗
∑
k
=
1
n
d
k
p
∗
(
λ
k
)
p
(
λ
k
)
z
k
=
λ
1
−
∑
k
=
1
n
|
d
k
|
2
λ
k
p
(
λ
k
)
∗
p
(
λ
k
)
∑
k
=
1
n
|
d
k
|
2
p
(
λ
k
)
∗
p
(
λ
k
)
=
∑
k
=
1
n
|
d
k
|
2
(
λ
1
−
λ
k
)
|
p
(
λ
k
)
|
2
∑
k
=
1
n
|
d
k
|
2
|
p
(
λ
k
)
|
2
.
{\displaystyle \lambda _{1}-r(p(A)v_{1})=\lambda _{1}-{\frac {v_{1}^{*}\sum _{k=1}^{n}d_{k}p^{*}(\lambda _{k})\lambda _{k}p(\lambda _{k})z_{k}}{v_{1}^{*}\sum _{k=1}^{n}d_{k}p^{*}(\lambda _{k})p(\lambda _{k})z_{k}}}=\lambda _{1}-{\frac {\sum _{k=1}^{n}|d_{k}|^{2}\lambda _{k}p(\lambda _{k})^{*}p(\lambda _{k})}{\sum _{k=1}^{n}|d_{k}|^{2}p(\lambda _{k})^{*}p(\lambda _{k})}}={\frac {\sum _{k=1}^{n}|d_{k}|^{2}(\lambda _{1}-\lambda _{k})\left|p(\lambda _{k})\right|^{2}}{\sum _{k=1}^{n}|d_{k}|^{2}\left|p(\lambda _{k})\right|^{2}}}.}
ここでの分子と分母の主な違いは、項が分子では消えるが、分母では消えないこと です。したがって、 で 大きく 、他のすべての固有値で小さくなるように選択できれば、誤差の厳しい境界が得られます 。
k
=
1
{\displaystyle k=1}
p
{\displaystyle p}
λ
1
{\displaystyle \lambda _{1}}
λ
1
−
θ
1
{\displaystyle \lambda _{1}-\theta _{1}}
の固有値は係数よりはるかに多い ので 、これは難しいように思えるかもしれませんが、これを満たす方法の 1 つは チェビシェフ多項式 を使用することです。次数 1 種チェビシェフ多項式 ( すべての に対して を 満たすもの) について と書くと、 既知の区間の 範囲内にとどまり、その外側では急速に増加する多項式が得られます。引数をいくらかスケーリングすると、 を 除くすべての固有値を にマッピングできます 。
A
{\displaystyle A}
p
{\displaystyle p}
c
k
{\displaystyle c_{k}}
k
{\displaystyle k}
c
k
(
cos
x
)
=
cos
(
k
x
)
{\displaystyle c_{k}(\cos x)=\cos(kx)}
x
{\displaystyle x}
[
−
1
,
1
]
{\displaystyle [-1,1]}
[
−
1
,
1
]
{\displaystyle [-1,1]}
λ
1
{\displaystyle \lambda _{1}}
[
−
1
,
1
]
{\displaystyle [-1,1]}
p
(
x
)
=
c
m
−
1
(
2
x
−
λ
2
−
λ
n
λ
2
−
λ
n
)
{\displaystyle p(x)=c_{m-1}\left({\frac {2x-\lambda _{2}-\lambda _{n}}{\lambda _{2}-\lambda _{n}}}\right)}
( の場合は 、 より小さい最大の固有値を使用してください)、 に対する の 最大値は であり 、 の最小値は である ため、
λ
2
=
λ
1
{\displaystyle \lambda _{2}=\lambda _{1}}
λ
1
{\displaystyle \lambda _{1}}
|
p
(
λ
k
)
|
2
{\displaystyle |p(\lambda _{k})|^{2}}
k
⩾
2
{\displaystyle k\geqslant 2}
1
{\displaystyle 1}
0
{\displaystyle 0}
λ
1
−
θ
1
⩽
λ
1
−
r
(
p
(
A
)
v
1
)
=
∑
k
=
2
n
|
d
k
|
2
(
λ
1
−
λ
k
)
|
p
(
λ
k
)
|
2
∑
k
=
1
n
|
d
k
|
2
|
p
(
λ
k
)
|
2
⩽
∑
k
=
2
n
|
d
k
|
2
(
λ
1
−
λ
k
)
|
d
1
|
2
|
p
(
λ
1
)
|
2
⩽
(
λ
1
−
λ
n
)
∑
k
=
2
n
|
d
k
|
2
|
p
(
λ
1
)
|
2
|
d
1
|
2
.
{\displaystyle \lambda _{1}-\theta _{1}\leqslant \lambda _{1}-r(p(A)v_{1})={\frac {\sum _{k=2}^{n}|d_{k}|^{2}(\lambda _{1}-\lambda _{k})|p(\lambda _{k})|^{2}}{\sum _{k=1}^{n}|d_{k}|^{2}|p(\lambda _{k})|^{2}}}\leqslant {\frac {\sum _{k=2}^{n}|d_{k}|^{2}(\lambda _{1}-\lambda _{k})}{|d_{1}|^{2}|p(\lambda _{1})|^{2}}}\leqslant {\frac {(\lambda _{1}-\lambda _{n})\sum _{k=2}^{n}|d_{k}|^{2}}{|p(\lambda _{1})|^{2}|d_{1}|^{2}}}.}
さらに
p
(
λ
1
)
=
c
m
−
1
(
2
λ
1
−
λ
2
−
λ
n
λ
2
−
λ
n
)
=
c
m
−
1
(
2
λ
1
−
λ
2
λ
2
−
λ
n
+
1
)
;
{\displaystyle p(\lambda _{1})=c_{m-1}\left({\frac {2\lambda _{1}-\lambda _{2}-\lambda _{n}}{\lambda _{2}-\lambda _{n}}}\right)=c_{m-1}\left(2{\frac {\lambda _{1}-\lambda _{2}}{\lambda _{2}-\lambda _{n}}}+1\right);}
数量
ρ
=
λ
1
−
λ
2
λ
2
−
λ
n
{\displaystyle \rho ={\frac {\lambda _{1}-\lambda _{2}}{\lambda _{2}-\lambda _{n}}}}
(つまり、最初の固有ギャップと スペクトル の残りの直径の 比 )は、ここでの収束速度にとって非常に重要である。また、
R
=
e
arcosh
(
1
+
2
ρ
)
=
1
+
2
ρ
+
2
ρ
2
+
ρ
,
{\displaystyle R=e^{\operatorname {arcosh} (1+2\rho )}=1+2\rho +2{\sqrt {\rho ^{2}+\rho }},}
我々は次のように結論づけることができる。
λ
1
−
θ
1
⩽
(
λ
1
−
λ
n
)
(
1
−
|
d
1
|
2
)
c
m
−
1
(
2
ρ
+
1
)
2
|
d
1
|
2
=
1
−
|
d
1
|
2
|
d
1
|
2
(
λ
1
−
λ
n
)
1
cosh
2
(
(
m
−
1
)
arcosh
(
1
+
2
ρ
)
)
=
1
−
|
d
1
|
2
|
d
1
|
2
(
λ
1
−
λ
n
)
4
(
R
m
−
1
+
R
−
(
m
−
1
)
)
2
⩽
4
1
−
|
d
1
|
2
|
d
1
|
2
(
λ
1
−
λ
n
)
R
−
2
(
m
−
1
)
{\displaystyle {\begin{aligned}\lambda _{1}-\theta _{1}&\leqslant {\frac {(\lambda _{1}-\lambda _{n})\left(1-|d_{1}|^{2}\right)}{c_{m-1}(2\rho +1)^{2}|d_{1}|^{2}}}\\[6pt]&={\frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(\lambda _{1}-\lambda _{n}){\frac {1}{\cosh ^{2}((m-1)\operatorname {arcosh} (1+2\rho ))}}\\[6pt]&={\frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(\lambda _{1}-\lambda _{n}){\frac {4}{\left(R^{m-1}+R^{-(m-1)}\right)^{2}}}\\[6pt]&\leqslant 4{\frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(\lambda _{1}-\lambda _{n})R^{-2(m-1)}\end{aligned}}}
したがって、収束率は主に によって制御されます。これは、この境界が 各追加反復ごとに
係数で縮小するためです。
R
{\displaystyle R}
R
−
2
{\displaystyle R^{-2}}
比較のために、べき乗法の収束率が にどのように依存するかを検討することもできます が、べき乗法は主に固有値の絶対値間の商に敏感であるため、 と 間の固有ギャップが 支配的なものである必要があります。その制約の下では、べき乗法が最も有利なケースは であるため 、 を検討します。べき乗法の後半では、反復ベクトル:
ρ
{\displaystyle \rho }
|
λ
n
|
⩽
|
λ
2
|
{\displaystyle |\lambda _{n}|\leqslant |\lambda _{2}|}
λ
1
{\displaystyle \lambda _{1}}
λ
2
{\displaystyle \lambda _{2}}
λ
n
=
−
λ
2
{\displaystyle \lambda _{n}=-\lambda _{2}}
u
=
(
1
−
t
2
)
1
/
2
z
1
+
t
z
2
≈
z
1
+
t
z
2
,
{\displaystyle u=(1-t^{2})^{1/2}z_{1}+tz_{2}\approx z_{1}+tz_{2},}
[注 1]
ここで、各新しい反復は、実質的に 振幅
を
z
2
{\displaystyle z_{2}}
t
{\displaystyle t}
λ
2
λ
1
=
λ
2
λ
2
+
(
λ
1
−
λ
2
)
=
1
1
+
λ
1
−
λ
2
λ
2
=
1
1
+
2
ρ
.
{\displaystyle {\frac {\lambda _{2}}{\lambda _{1}}}={\frac {\lambda _{2}}{\lambda _{2}+(\lambda _{1}-\lambda _{2})}}={\frac {1}{1+{\frac {\lambda _{1}-\lambda _{2}}{\lambda _{2}}}}}={\frac {1}{1+2\rho }}.}
最大固有値の推定値は
u
∗
A
u
=
(
1
−
t
2
)
λ
1
+
t
2
λ
2
,
{\displaystyle u^{*}Au=(1-t^{2})\lambda _{1}+t^{2}\lambda _{2},}
したがって、ランチョスアルゴリズムの収束率の上限は、
λ
1
−
u
∗
A
u
=
(
λ
1
−
λ
2
)
t
2
,
{\displaystyle \lambda _{1}-u^{*}Au=(\lambda _{1}-\lambda _{2})t^{2},}
これは、各反復で 倍に縮小します 。したがって、違いは と の違いに帰着します 。 領域では、後者は に近くなり 、固有ギャップが 2 倍大きいべき乗法と同様のパフォーマンスを発揮します。これは顕著な改善です。ただし、 の場合の方が難しく、 では が さらに大きな固有ギャップの改善となります。 領域では、Lanczos アルゴリズムの収束に関して べき乗法の改善が
最も小さくなります。
(
1
+
2
ρ
)
−
2
{\displaystyle (1+2\rho )^{-2}}
1
+
2
ρ
{\displaystyle 1+2\rho }
R
=
1
+
2
ρ
+
2
ρ
2
+
ρ
{\displaystyle R=1+2\rho +2{\sqrt {\rho ^{2}+\rho }}}
ρ
≫
1
{\displaystyle \rho \gg 1}
1
+
4
ρ
{\displaystyle 1+4\rho }
ρ
≪
1
,
{\displaystyle \rho \ll 1,}
R
≈
1
+
2
ρ
{\displaystyle R\approx 1+2{\sqrt {\rho }}}
ρ
≫
1
{\displaystyle \rho \gg 1}
数値安定性
安定性とは、小さな数値誤差が導入されて蓄積された場合に、アルゴリズムがどの程度影響を受けるか (つまり、元の結果に近い近似結果が生成されるかどうか) を意味します。数値安定性は、丸め機能を備えたコンピューターでアルゴリズムを実装することの有用性を判断するための中心的な基準です。
Lanczos アルゴリズムでは、 正確な演算 により、ベクトルのセットが 正規直交 基底を構成し 、解かれた固有値/ベクトルが元の行列の固有値/ベクトルの良好な近似値になることが証明されています。ただし、実際には (計算は不正確さが避けられない浮動小数点演算で実行されるため)、直交性はすぐに失われ、場合によっては新しいベクトルが既に構築されているセットに線形に依存することさえあります。その結果、結果として得られる三角行列の固有値の一部は、元の行列の近似値ではない可能性があります。したがって、Lanczos アルゴリズムはあまり安定していません。
v
1
,
v
2
,
⋯
,
v
m
+
1
{\displaystyle v_{1},v_{2},\cdots ,v_{m+1}}
このアルゴリズムのユーザーは、これらの「偽の」固有値を見つけて除去できなければなりません。ランチョスアルゴリズムの実際の実装は、この安定性の問題に対処するために3つの方向に進みます。 [6] [7]
直交性の喪失を防ぐ、
基底が生成された後、直交性を回復します。
正しい固有値と「誤った」固有値がすべて識別されたら、誤った固有値を削除します。
バリエーション
Lanczos アルゴリズムのバリエーションとして、関係するベクトルがベクトルではなく縦長の狭い行列であり、正規化定数が小さな正方行列であるものがあります。これらは「ブロック」Lanczos アルゴリズムと呼ばれ、レジスタの数が多くメモリ フェッチ時間が長いコンピュータでは、はるかに高速になります。
ランチョスアルゴリズムの多くの実装は、一定回数の反復後に再開します。最も影響力のある再開バリエーションの1つは、暗黙的に再開されたランチョス法です 。 [10]これは ARPACK に実装されています。 [11] これにより、再開されたランチョス二重対角化など、他の多くの再開バリエーションが生まれました。 [12] もう一つの成功した再開バリエーションは、厚い再開ランチョス法です。 [13] これはTRLanと呼ばれるソフトウェアパッケージに実装されています。 [14]
有限体上の零空間
1995年、 ピーター・モンゴメリーは 、ランチョス法に基づいて、 GF(2) 上の大規模疎行列の 零空間 の要素を見つけるアルゴリズムを発表しました。有限体上の大規模疎行列に関心のある人々の集合と大規模固有値問題に関心のある人々の集合はほとんど重複しないため、これは不当な混乱を招くことなく、 ブロックランチョス法 とも呼ばれます。 [ 要出典 ]
アプリケーション
Lanczos アルゴリズムは、 による乗算が 唯一の大規模な線形演算であるため、非常に魅力的です。加重用語テキスト検索エンジンはこの演算のみを実装するため、Lanczos アルゴリズムはテキスト ドキュメントに効率的に適用できます ( 潜在的意味インデックス作成を参照)。固有ベクトルは 、Jon Kleinberg によって開発された HITS アルゴリズム や、 Google が使用する PageRank アルゴリズムなどの大規模なランキング手法でも重要です 。
A
{\displaystyle A\,}
ランチョスアルゴリズムは、凝縮系物理学において 強相関電子系 の ハミルトニアンを 解く方法として 使用されているほか 、 [15] 原子核物理学の 殻模型 コード にも使用されている 。 [16]
実装
NAG ライブラリには、 ランチョスアルゴリズムを使用する大規模線形システムおよび固有値問題を解くための
いくつかのルーチン [17]が含まれています。
MATLAB と GNU Octave には ARPACK が組み込まれています。格納された行列と暗黙的な行列の両方を eigs() 関数 (Matlab/Octave)
で分析できます。
同様に、 Python では、 SciPy パッケージに scipy.sparse.linalg.eigsh が含まれています。これは、暗黙的に再開された Lanczos 法を使用する
ARPACK の SSEUPD および DSEUPD 関数のラッパーでもあります。
LanczosアルゴリズムのMatlab実装(精度の問題に注意)は、Gaussian Belief Propagation Matlabパッケージの一部として利用できます。GraphLab [ 18] 協調フィルタリング ライブラリには、マルチコア用のLanczosアルゴリズム(C++)の大規模な並列実装が組み込まれています。
PRIMME ライブラリは Lanczos のようなアルゴリズムも実装します。
注記
^ 係数は両方とも実数である必要はありませんが、位相はあまり重要ではありません。他の固有ベクトルの成分が完全に消えている必要もありませんが、少なくとも の成分と同じ速さで縮小するため 、 最悪のケースを表します。
z
2
{\displaystyle z_{2}}
u
≈
z
1
+
t
z
2
{\displaystyle u\approx z_{1}+tz_{2}}
参考文献
^ Lanczos, C. (1950). 「線形微分および積分演算子の固有値問題の解法のための反復法」 (PDF) . 米国国立標準局研究ジャーナル . 45 (4): 255–282. doi : 10.6028/jres.045.026 .
^ ab Ojalvo, IU; Newman, M. (1970). 「自動マトリックス削減法による大規模構造の振動モード」. AIAA Journal . 8 (7): 1234–1239. Bibcode :1970AIAAJ...8.1234N. doi :10.2514/3.5878.
^ Paige, CC (1971). 非常に大きな疎行列の固有値と固有ベクトルの計算 (博士論文). ロンドン大学. OCLC 654214109.
^ Paige, CC (1972). 「固有値問題に対するランチョス法の計算変種」 J. Inst. Maths Applics . 10 (3): 373–381. doi :10.1093/imamat/10.3.373.
^ Ojalvo, IU (1988). 「大規模動的システムにおける Lanczos ベクトルの起源と利点」. Proc. 6th Modal Analysis Conference (IMAC)、キシミー、フロリダ州 。pp. 489–494。
^ ab Cullum; Willoughby (1985). 大規模対称固有値計算のためのLanczosアルゴリズム . 第1巻. ISBN 0-8176-3058-9 。
^ ab Yousef Saad (1992-06-22). 大規模固有値問題の数値解析法. ISBN 0-470-21820-7 。
^ Coakley, Ed S.; Rokhlin, Vladimir (2013). 「実対称三角行列のスペクトルを計算するための高速分割統治アルゴリズム」. 応用および計算調和解析 . 34 (3): 379–414. doi :10.1016/j.acha.2012.06.003.
^ ab Golub, Gene H.; Van Loan, Charles F. (1996). 行列計算 (第3版). ボルチモア: ジョンズ・ホプキンス大学出版局. ISBN 0-8018-5413-X 。
^ D. Calvetti 、L. Reichel 、DC Sorensen (1994)。「大規模対称固有値問題に対する暗黙的に再開されたLanczos法」。 数値解析に関する電子取引 。2 :1–21。
^ RB Lehoucq; DC Sorensen; C. Yang (1998). ARPACK ユーザーズ ガイド: 暗黙的に再開された Arnoldi 法による大規模固有値問題の解決 。SIAM。doi : 10.1137/1.9780898719628。ISBN 978-0-89871-407-4 。
^ E. Kokiopoulou; C. Bekas; E. Gallopoulos (2004). 「暗黙的に再開された Lanczos 二重対角化による最小特異三重項の計算」 (PDF) . Appl. Numer. Math . 49 : 39–61. doi :10.1016/j.apnum.2003.11.011.
^ Kesheng Wu; Horst Simon (2000). 「大規模対称固有値問題に対するThick-Restart Lanczos法」 SIAM Journal on Matrix Analysis and Applications . 22 (2). SIAM: 602–616. doi :10.1137/S0895479898334605.
^ Kesheng Wu、Horst Simon (2001)。「TRLan ソフトウェア パッケージ」。2007 年 7 月 1 日時点のオリジナルよりアーカイブ。2007 年 6 月 30 日 閲覧 。
^ Chen, HY; Atkinson, WA; Wortis, R. (2011 年 7 月). 「アンダーソン-ハバード モデルにおける無秩序誘起ゼロバイアス異常: 数値計算と解析計算」. Physical Review B. 84 ( 4): 045113. arXiv : 1012.1031 . Bibcode :2011PhRvB..84d5113C. doi :10.1103/PhysRevB.84.045113. S2CID 118722138.
^ 清水 則孝 (2013年10月21日). 「大規模並列計算のための核殻モデルコード「KSHELL」」 ". arXiv : 1310.5431 [nucl-th].
^ 数値アルゴリズムグループ。「キーワード索引: Lanczos」。NAG ライブラリマニュアル、Mark 23。2012 年 2 月 9 日 閲覧 。
^ GraphLab 2011-03-14 に Wayback Machineでアーカイブ
さらに読む
Golub, Gene H. ; Van Loan, Charles F. (1996)。「Lanczos 法」。 行列計算。 ボルチモア : Johns Hopkins University Press。pp. 470–507。ISBN 0-8018-5414-8 。
Ng, Andrew Y. ; Zheng, Alice X.; Jordan, Michael I. (2001). 「リンク解析、固有ベクトル、安定性」 (PDF) . IJCAI'01 Proceedings of the 17th International Joint Conference on Artificial Intelligence . 2 : 903–910.
エリック・コッホ (2019)。 「正確な対角化とランチョス法」 (PDF) 。 E.パヴァリーニでは。 E. コッホ; S. チャン (編)。 実際のマテリアルの多体法 。ユーリッヒ。 ISBN 978-3-95806-400-3 。