対称密度行列(2000 * 2000
)の逆行列の対角を計算する最良の方法は何ですか?現在、私はsolve(x)
を使用して逆数を計算してから、対角(diag(y)
)を抽出します。それは動作しますが、コードをより速く実行できるようにするためのより良い方法があるかどうかは疑問です。私はchol2inv()
を試しましたが、私の行列は正定ではないので動作しませんでした。行列の逆行列の対角を効率的に計算する
更新: 興味のある方は、最適化された数学ライブラリIntel MKLを使用して、行列反転を高速化することができました。私のマシンで2000 * 2000行列を逆にするには3秒かかります。インテルMKLは、Microsoft R Openで利用できます。
短いGoogle検索で、この問題に関連するアルゴリズムや他の実装へのリンクがかなり見つかりました。対角線の各要素を明示的に必要としているのですか、別の計算で使用する予定ですか?さらなる計算にそれを使用したい場合、その知識は実行のスピードアップにとって重要です。 – Vandenman
私は他の計算で対角線を使います。具体的には、各要素を逆行列の対角の各要素で別のベクトルに分割し、それらを合計します。 – Katherine
逆行列の対角線の各要素が非ゼロであることをどのように知っていますか?マトリックスにはこれを保証するいくつかの特性がありますか? – dmuir