問題タブ [matrix-decomposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5939 参照

math - LDL形式のコレスキー分解の時間計算量

コレスキー分解には 2 つの異なる形式があります。

および LDL フォーム

ここで、ctranspose は複素転置です。

フォームごとの浮動小数点演算回数を知りたい。ウィキペディアは、コレスキー分解を使用した行列反転という論文を参照しています。

効率的に実装された場合、LDL 分解の複雑さはコレスキー分解と同じです (原文のまま)。

この論文によると、コレスキー分解にはn^3/6 + O(n^2)操作が必要です。ただし、ウィキペディアによると、浮動小数点演算の数は でn^3/3あり、私自身の計算では最初の形式でもそれが得られます。基本的には、次の三角形の数の合計になります。

それが紙が得られると私が思うところn^3/6です。しかし、最初の形式では、最も内側の三重和の項は、a[i][k]*a[j][k]基本的に内積です。これは、合計で 2*n の浮動小数点演算です。したがって、浮動ポインタ操作はn^3/3 + O(n^2). そして、LDL 形式を見ると、最も内側の和の項は ですa[i][k]*a[j][k]*d[k]。これは、3*n の浮動ポインター演算 (2 つの乗算と 1 つの加算) です。したがって、浮動小数点演算はn^3/2 + O(n^2).

つまり、LDL 形式では浮動小数点演算が 50% 必要になります。 私は正しいですか? この論文は間違っていると思います (ただし、操作の意味は定義されていません)。LDL 形式に基づいて修正された形式のコレクシー分解を実装しており、アルゴリズムの効率を推定したいので、これは重要です。

たぶん、この質問はhttps://math.stackexchange.com/に適しています

0 投票する
1 に答える
1825 参照

opencv - OpenCV における行列のコレスキー分解

行列にコレスキー分解を適用するために使用できる OpenCV の関数はありますか?

0 投票する
2 に答える
449 参照

r - R: irlba のエラー

R パッケージで正方行列を分解しようとしてirlbaいますが、次のメッセージが表示されます。

"V[, 1:(k + dim(F)[2])] のエラー <- cbind(V[, 1:(dim(Bsvd$v)[1]), drop = FALSE] %*% : 数値置換するアイテムの数が置換長さの倍数ではありません」

ただし、svdまたは作業で行列を分解します。同じ問題をほのめかしているこの投稿を他eigenの場所で見つけました(応答なし)。

これを理解するのを手伝ってくれる人に感謝します!

コード:

0 投票する
2 に答える
915 参照

c - PETSc - MatLUFactor - このオブジェクト タイプの操作はサポートされていません

PETSc で LU 分解アプリをプログラムしようとしています。私の考えは、プログラムが因数分解されていない行列を出力し、次に因数分解された行列を出力し、因数分解自体にかかった時間をカウントするというものでした。

インターネットで見つけたほとんどの情報に従ってコードを作成しました (この投稿の情報を使用してマトリックスを初期化しました) が、残念ながらそれだけでは十分ではありません。コードはコンパイルされますが、実行しようとすると、次のエラーが表示されます。

このエラーは、インプレース LU 因数分解に使用したいMatLUFactor関数が原因です。問題は、私にはわかりませんが、コードの何が問題なのかということです。おそらく割り当てが悪いために、中心的な問題は行列変数自体にあると思いますが(私は MatMPIAIJSetPreallocation 関数について考えています)、よくわかりません。

MatLUFactor 関数をMatLUFactorNumericおよびMatLUFactorSymbolicに置き換えようとしましたが、MatLUFactor よりもさらにうまく機能しません。エラーははるかに「大きい」:-)

最後に、次のコマンドでプログラムを起動してみます。

ですから、何か解決策をご存知でしたら、よろしくお願いします;-) ありがとうございます!

追伸: 私はかなり長い間可能な解決策を探していました.これまでに見つけた最も近い記事はこのメールリストでしたが、質問者は私が知る限り、私が使用していない ParMETIS および SuperLU パッケージを使用しています.


これは私のソースコードです:

これは、MatLUFactorNumeric および MatLUFactorSymbolic 関数を使用した場合のエラーです。

0 投票する
2 に答える
471 参照

c - C - スタック破壊が検出されました

行列 A の非常に簡単なインプレース LU 分解を実装する必要があります。ガウス消去法を使用しており、3x3 行列でテストしたいと考えています。問題は、stack smashingエラーが発生し続け、その理由がわかりません。これを実行できるコードに問題はありません。何か考えはありますか?

問題はおそらく因数分解ブロックにあります。


0 投票する
2 に答える
1247 参照

python - Pythonでmax、xrange、lambda関数を組み合わせて使用​​ する

正方行列をピボットして LU 分解するコードを見つけたのですが、理解できないものがあります。

まず、ID の行は単なる恒等行列ではないでしょうか。これを行う利点はありますか?

第二に、行の行がよくわかりません。ラムダはテキスト内の関数を定義するために使用され、i の値が提供されると M_ij の値を返すだけであることは知っています (j の値は for ループに依存します)。しかし、i とは何ですか?

xrange は range に似ていませんか? しかし、それはここで何を返しますか?

関数 max と組み合わせるとどうなるでしょうか。比較されている max 関数内のものが何であるかはわかりません。

この質問が愚かに聞こえる場合は申し訳ありません。私はプログラミングにかなり慣れていません

0 投票する
1 に答える
3823 参照

matlab - MATLAB LU 分解 部分ピボット

私は、主に部分ピボットMatlabを使用したLU分解に基づいて、私のlu分解を操作しようとしています

ほとんどの行列 (matlab lu 関数と同等) で機能するようですが、次の行列は異なる結果を生成するようです。

何が問題なのかわかりません。リンクされた投稿に記載されている行列ではうまくいくようです