山口屋~活動日誌~

私生活で主な出来事をピックアップ

LU分解 外積形式ガウス法 内積形式ガウス法 クラウト法 残差 ピボット選択 スケーリング

2019-12-29 11:20:28 | ソフトウェア開発
LU分解のアルゴリズムは、外積形式ガウス法、内積形式ガウス法、クラウト法の3つに大別されるが、それぞれで性質が異なってくる部分があり、前進代入や後退代入での三項型演算と内積型演算でも同様に性質が異なってくる。

外積形式ガウス法、三項型演算
=更新と確定が同時でない。
→更新の加減算の順序は決められない

クラウト法、内積型演算
=更新と確定が同時である。
→更新の加減算の順序が決められる

内積形式ガウス法
=ループのアルゴリズム次第

更新が完了した値に対してピボット選択を行う場合、外積形式ガウス法のみ完全ピボット選択を行うことができる。

残差の計算と解の補正の1回分の計算コストは、
・残差の計算で、n*n回の乗除算、n*n回の加減算
・解の補正で、n*n回の乗除算、n*n回の加減算
完全スケーリングの前処理と後処理の計算コストは、
・前処理で、n*n*2回の乗除算
・後処理で、n*n*2回の乗除算
残差の計算と解の補正を行ったほうが、計算コストが低いようにも見えるが、残差を高精度で求めることが必要になり、困難を伴う。

LU分解では、ピボット選択完了後、LかUの対角要素を1にするために、行方向か列方向に対角要素の除算が行われる。
各段の処理に、スケーリングを兼ねて処理することの可否を考えてみた。どうやら可能なようであり、その場合、対角要素での除算の意味合いは下記になる。ただし、絶対値最大となる要素は、更新中は初期時と異なる可能性があり、その場合は初期時に行うスケーリングと意味が異なってくる。
・行方向(全て):行スケーリング(各段の処理での絶対値最大)
・列方向(全て):列スケーリング(各段の処理での絶対値最大)
・行方向(対角より右):Uの対角要素を1にする
・列方向(対角より下):Lの対角要素を1にする