問題タブ [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.
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 形式に基づいて修正された形式のコレクシー分解を実装しており、アルゴリズムの効率を推定したいので、これは重要です。
opencv - OpenCV における行列のコレスキー分解
行列にコレスキー分解を適用するために使用できる OpenCV の関数はありますか?
r - R: irlba のエラー
R パッケージで正方行列を分解しようとしてirlba
いますが、次のメッセージが表示されます。
"V[, 1:(k + dim(F)[2])] のエラー <- cbind(V[, 1:(dim(Bsvd$v)[1]), drop = FALSE] %*% : 数値置換するアイテムの数が置換長さの倍数ではありません」
ただし、svd
または作業で行列を分解します。同じ問題をほのめかしているこの投稿を他eigen
の場所で見つけました(応答なし)。
これを理解するのを手伝ってくれる人に感謝します!
コード:
c - PETSc - MatLUFactor - このオブジェクト タイプの操作はサポートされていません
PETSc で LU 分解アプリをプログラムしようとしています。私の考えは、プログラムが因数分解されていない行列を出力し、次に因数分解された行列を出力し、因数分解自体にかかった時間をカウントするというものでした。
インターネットで見つけたほとんどの情報に従ってコードを作成しました (この投稿の情報を使用してマトリックスを初期化しました) が、残念ながらそれだけでは十分ではありません。コードはコンパイルされますが、実行しようとすると、次のエラーが表示されます。
このエラーは、インプレース LU 因数分解に使用したいMatLUFactor関数が原因です。問題は、私にはわかりませんが、コードの何が問題なのかということです。おそらく割り当てが悪いために、中心的な問題は行列変数自体にあると思いますが(私は MatMPIAIJSetPreallocation 関数について考えています)、よくわかりません。
MatLUFactor 関数をMatLUFactorNumericおよびMatLUFactorSymbolicに置き換えようとしましたが、MatLUFactor よりもさらにうまく機能しません。エラーははるかに「大きい」:-)
最後に、次のコマンドでプログラムを起動してみます。
ですから、何か解決策をご存知でしたら、よろしくお願いします;-) ありがとうございます!
追伸: 私はかなり長い間可能な解決策を探していました.これまでに見つけた最も近い記事はこのメールリストでしたが、質問者は私が知る限り、私が使用していない ParMETIS および SuperLU パッケージを使用しています.
これは私のソースコードです:
これは、MatLUFactorNumeric および MatLUFactorSymbolic 関数を使用した場合のエラーです。
c - C - スタック破壊が検出されました
行列 A の非常に簡単なインプレース LU 分解を実装する必要があります。ガウス消去法を使用しており、3x3 行列でテストしたいと考えています。問題は、stack smashing
エラーが発生し続け、その理由がわかりません。これを実行できるコードに問題はありません。何か考えはありますか?
問題はおそらく因数分解ブロックにあります。
python - Pythonでmax、xrange、lambda関数を組み合わせて使用 する
正方行列をピボットして LU 分解するコードを見つけたのですが、理解できないものがあります。
まず、ID の行は単なる恒等行列ではないでしょうか。これを行う利点はありますか?
第二に、行の行がよくわかりません。ラムダはテキスト内の関数を定義するために使用され、i の値が提供されると M_ij の値を返すだけであることは知っています (j の値は for ループに依存します)。しかし、i とは何ですか?
xrange は range に似ていませんか? しかし、それはここで何を返しますか?
関数 max と組み合わせるとどうなるでしょうか。比較されている max 関数内のものが何であるかはわかりません。
この質問が愚かに聞こえる場合は申し訳ありません。私はプログラミングにかなり慣れていません
matlab - MATLAB LU 分解 部分ピボット
私は、主に部分ピボットMatlabを使用したLU分解に基づいて、私のlu分解を操作しようとしています
ほとんどの行列 (matlab lu 関数と同等) で機能するようですが、次の行列は異なる結果を生成するようです。
何が問題なのかわかりません。リンクされた投稿に記載されている行列ではうまくいくようです