Matlab / Octaveで大きな行列の条件数を計算する最速のアルゴリズム


9

条件数の定義から、それを計算するために行列反転が必要であるように思われます、私は一般的な正方行列(または対称正定値の場合はより良い)がいくつかの行列分解を利用して条件数を計算することが可能かどうか疑問に思っていますより速い方法。

回答:


7

条件数の計算(2倍以内で近似することも)は、因数分解の計算と同じ複雑さのようですが、この方向に定理はありません。

対称正定行列のスパースコレスキーファクター、または一般正方行列のスパース分解(暗黙の)から、スパース逆サブセットを計算することにより、フロベニウスノルムの条件数を取得できます。、完全な逆を計算するよりもはるかに高速です。(これに関連するのは私の論文です。過決定線形システムのハイブリッドノルムと境界、Linear Algebra Appl。216(1995)、257-266。http ://www.mat.univie.ac.at/~neum/scan/74 .pdfRQRQRTR1

編集:場合、任意の単一不変ノルンに関して、スパースQR分解の計算については、たとえばhttp://dl.acm.org/citation.cfm?id=174408を参照してください。 スパースインバースの計算については、たとえば、私の論文を参照してください:スパース線形モデルにおける共分散の制限付き最尤推定、Genetics Selection Evolution 30(1998)、1-24。https://www.mat.univie.ac.at/~neum/ms/reml.pdf コストは、因数分解のコストの約3倍です。=QR

cod=codR=codRTR




したがって、次のことを提案します。与えられた行列は、形式 QRを計算しますここで、 は上三角行列であり、は直交行列であり、条件番号はによって与えられます。 ここでのポイントは、QR分解を計算する高速な方法を見つける方法です。私は正しいですか?A = Q R R Q condA= | | A | | | | A 1 | | R T R 1=QRRQcond=||||||1||RTR1
リネロ2012年

@linello:まったくない; 私の編集を参照してください。
Arnold Neumaier

ありがとう!私はそれをチェックするつもりですが、このステップのコストは何ですか?
リネロ2012年

@linello:完全な行列の場合、 ; スパース行列の場合、スパース構造に大きく依存します。O
アーノルドノイマイヤー2012年

4

対称行列の固有値/固有ベクトル分解または一般行列のSVDを使用して条件数を計算することは確かに簡単ですが、これらは特に高速な方法ではありません。

計算作業のすべてに行くことなく、ほとんどの目的に役立つ条件数の推定値を計算できる反復アルゴリズムがあります。たとえば、MATLAB の関数を参照してください。 1condest


しかし、見積もりが大幅に小さすぎる場合があります。条件数の計算(2倍以内で近似することも)は、因数分解の計算と同じ複雑さのようですが、この方向に定理はありません。
アーノルドノイマイヤー2012年

1

HHHTH

最大および最小の固有値/特異値は非常に高速に見つけることができるため(三重対角化が完了する前に)、ランチョス法は条件数の計算に特に役立ちます。


私は常に、最小または最大の固有値を取得する方法を明確にする、lanczos反復用の読み取り可能なmatlabコードをどこに見つけるのか疑問に思っていました。提案してもらえますか?
リネロ2012年

Lanczosアルゴリズム用のMATLABコードがありません。
chaohuang 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.