問題タブ [matrix-inverse]

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 に答える
3754 参照

matlab - 高速で効率的な上対角行列の逆行列

ランク 1 で共分散行列を更新するプロジェクトで、多項ガウス密度を何度も計算します。共分散をゼロから計算する代わりに、cholupdate関数を使用して新しいサンプルを共分散に追加し、新しいサンプルを共分散から削除しました。このようにして、更新は、共分散行列の $O(n^3)$ コレスキー分解ではなく、$O(n^2)$ で行われるように指示されます。

実際にはコードはかなり複雑ですが、ここでは単純化しました。Rt\xMATLAB で上三角行列の逆行列 (コードの一部) を計算するより高速な方法があるかどうか疑問に思います。MATLAB でより効率的に行うためのアイデアはありますか。

この方法では、行列式の計算も高速になることに注意してください。したがって、新しい方法は、行列式の計算にも悪くありません。

0 投票する
3 に答える
19505 参照

algorithm - Matlabで行列を反転する高速な方法はありますか?

Matlab で反転する必要がある大きな (約 5000 x 5000) 行列がたくさんあります。実際には逆が必要なので、代わりに mldivide を使用することはできません。これは、1 つの b について Ax=b を解くのにはるかに高速です。

私のマトリックスは、いくつかの優れたプロパティがあることを意味する問題から来ています。まず、それらの行列式は 1 なので、間違いなく可逆です。ただし、それらは対角化できません。または、それらを対角化して反転させ、元に戻そうとします。それらのエントリはすべて実数 (実際には有理数) です。

私はこれらの行列を取得するために Matlab を使用しており、このために逆行列を処理する必要があるため、Matlab を高速化する方法が望ましいと考えています。しかし、もっと速く使える別の言語があれば教えてください。私は他の多くの言語 (C は少し、Java は少しだけ) を知らないので、他の言語で非常に複雑な場合は、使用できない可能性があります。ただし、場合によっては、先に進んで提案してください。

0 投票する
3 に答える
3389 参照

matlab - 行列の det は matlab で 0 を返します

非常に大きな行列が与えられました (行列の値を変更できません)。(共分散) 行列の逆数を計算する必要があります。

時々私は言うエラーを受け取ります

これらの状況では、det の値が 0 を返すことがわかります。

(共分散行列の)逆数を計算する前に、detの値を確認して、このようなことを実行したい

新しい det を使用して、これを使用して共分散行列の逆数を計算する方法はありますか?

0 投票する
0 に答える
2273 参照

matrix - 行列余因子計算

4 X 4 行列の逆行列を解こうとしていました (後で n X n に変わります)。そこで、行列の余因子を見つけようとしました。

補因子を見つけるために、1行を削除しました(最初の行を想定してください:現在、行列は5から始まり15で終わる3 X 4です。次のステップは、1列(左側から開始)を削除し、3 X 3行列を取得することでした次のステップは行列式を見つけることですが、最初の列 (たとえば 6、9、13) の後の列を削除するのに問題がありました。使用したコードは次のとおりです。

配列 b は既に 3 X 4 マトリックスを保持しており、3 X 3 マトリックスをマトリックス c に格納しようとしましたが、ループを実行すると、3 X 3 マトリックスは常に {6, 7, 8}, {9 になりました。 、10、11}、{13、14、15}。また、何らかの理由で (if (m+1) == J) {NULLL;} ステートメントにアクセスできません。プログラムがその状態になることはありません。

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

matlab - MATLABで逆等式が満たされないのはなぜですか?

MATLAB は逆行列演算を満たしません。

MATLABでは、

資格はありません。作ってformat longみて分かった点の差はあるのですが、作ってみると物足りませんformat rat

どうしてこんなことに?

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

matlab - 行列の対角要素のみに小さな値を追加する

私はmatlabの初心者で、非常に小さな値を持つ逆行列を見つけようとしています。逆行列を見つけようとすると、行列が特異であるというエラーが表示されます。提案された解決策の 1 つは、対角要素にいくつかの要素を追加してみることです。eye メソッドと diag メソッドを使用する必要があることはわかっていますが、正しい解決策を見つけることができません。

どんなコメントも役に立ちます。

0 投票する
0 に答える
856 参照

c++ - 行列反転法/ピボット要素での0の処理

私は現在、C++でのMatrixクラスの行列反転メソッドの実装に取り​​組んでいます。実装されていないことの1つは、ピボット要素が0の場合のチェックです。つまり、その値を別の受け入れ可能な行の値と交換する必要があります。対角要素をピボット要素として使用しています。

これが私がこれまでに反転法について持っているものです:

この機能/チェックを追加するには、どのように、またはどこに行きますか?

ありがとう。

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

r - 逆行列と乗算

私はマトリックスの世界に不慣れです。この基本的な質問で申し訳ありませんが、私は理解できませんでした:

私は4つのマトリックスを持っています(1つは不明です)。

マトリックスX

行列 B : 解決する必要がある、1 X 4 (列 x 行)、b1、b2、b3、b4 値

マトリックスG

マトリックス A

解決:

これを適切に解決する方法、特に逆行列を解決する方法がわかりませんでした。あなたの助けに感謝。

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

math - 暗号化のための逆行列乗算

暗号化アルゴリズムをまとめようとしていますが、次の問題で立ち往生しており、このようにする必要があるかどうかさえわかりません!

問題:

[16,16] 行列を掛ける 16 バイトの行列があり、結果は 16 バイトの行列です。

次に、結果のマトリックスを逆数で乗算する必要があります。ここでは、元の 16 バイトのマトリックスを取得する必要があると仮定します (アルゴリズムのデータ シートによると)。

どうすれば元のマトリックスを取り戻すことができるか教えてください。

事前に助けてくれてありがとう。

よろしく、

英文 AWS

0 投票する
5 に答える
7079 参照

python - 2x2行列の数値的に安定した逆行列

Cで作業している数値ソルバーでは、2x2行列を反転する必要があり、右側で別の行列が乗算されます。

私は逆2x2行列の次の定義を使用しています。

私のソルバーの最初の数回の反復では、これは正しい答えを与えるように見えますが、いくつかのステップの後、物事は成長し始め、最終的に爆発します。

さて、SciPyを使用した実装と比較すると、同じ数学が爆発しないことがわかりました。私が見つけることができる唯一の違いは、SciPyコードがを使用していることですscipy.linalg.inv()。これは内部でLAPACKを使用して反転を実行します。

の呼び出しを上記の計算に置き換えるとinv()、Pythonバージョンが爆発するので、これが問題であると確信しています。計算のわずかな違いが忍び寄っています。これは数値的な問題であると私に信じさせます。反転操作にとってはまったく驚くべきことではありません。

数値の問題が問題にならないことを期待して、倍精度浮動小数点数(64ビット)を使用していますが、そうではないようです。

しかし、LAPACKのようなライブラリを呼び出さなくても、Cコードでこれを解決したいと思います。これは、純粋なCに移植する理由は、ターゲットシステムで実行するためです。また、ブラックボックスを呼び出すだけでなく、問題を理解したいと思います。最終的には、可能であれば単精度でも実行したいと思います。

だから、私の質問は、そのような小さな行列の場合、Aの逆行列を計算するための数値的により安定した方法がありますか?

ありがとう。

編集:現在、を解くことによって反転を回避できるかどうかを理解しようとしていCます。