問題タブ [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.
ruby - Ruby Matrix::固有値分解エラー
特定の行列の固有ベクトル行列を見ましたが、それを逆にしようとすると、エラーが発生しましたeigenvector_matrix_inv()
。
で確認したように、特異であってはなりませんMathematica
:
与える
私は何を間違っていますか?
Ruby で特に注意すべきことはありますか?
c++ - mpi 環境の c/c++ での並列分散コレスキー分解のライブラリ?
mpi 環境で C/C++ の密行列の並列分散コレスキー分解に使用できるライブラリはどれですか?
ScaLAPACK ライブラリを見つけました。これが探しているソリューションかもしれません。ただし、Fortran <-> C の多くの変換を行うには、呼び出すのが少し面倒なようです。これは、おそらく広く使用されていないため、代わりに使用される他のライブラリがいくつかあると思いますか?
あるいは、既に MPI を使用していて、プログラムで MPI が既に初期化されている場合に、C または C++ 環境で使用するのが比較的簡単になる ScaLAPACK のラッパーはありますか?
algorithm - 正方行列のLU分解matlabガウス消去法
正方 (n 行 n 列) の行列を入力として受け取るプログラムを作成しようとしています。それが可逆の場合、LU はガウス消去法を使用して行列を分解します。
これが私の問題です。クラスでは、ピボットが常にその列の最大数(絶対値)になるように行を変更する方がよいことを学びました。たとえば、行列がA = [1,2;3,4]
行を切り替えていた場合は[3,4;1,2]
、ガウスの消去法に進むことができます。
私のコードは、行の変更を必要としない行列では適切に機能しますが、行の変更を必要とする行列では機能しません。これは私のコードです:
明確化: 行を切り替えているため、入力として持っていた元のものではなく、P
(順列行列) timesを分解しようとしています。A
A
コードの説明:
- 最初に行列が可逆かどうかを確認し、そうでない場合は停止します。そうであれば、ピボットは (1,1) です
- 1列目の最大数を見つけて、行を入れ替えます
- ガウス消去法を使用して列 1 を等級付けし、スポット (1,1) 以外をすべてゼロにします。
- ピボットは (2,2) になり、列 2 で最大の数を見つけます... すすぎ、繰り返します
java - Best way to compute a truncated singular value decomposition in java
I want to benchmark the best 2 or 3 libraries to compute a truncated singular value decomposition (SVD), i.e. an SVD where only the k largest singular values are kept. Moreover, I have those constraints :
- It has to be a java library
- My matrices are sparse (around 1% non zero values)
- My matrices are quite big (typically 10k x 5k)
- My matrices can also be larger than high (5k x 10k)
I've encountered quite a large range of libraries, but for instance, with Colt, I don't even know if the SVD algorithm takes into account the fact that my matrix is sparse. Also, I did not find a single library that can directly compute the truncated solution (which is supposed to be much faster). Actually, I'm mostly interested in the approximate matrix obtained from the truncated SVD.
Thanks by advance for your help,
Romain Laroche
java - 4x4 変換行列分解
これらの変換行列の結果である同次座標変換行列を分解しようとしています (書き込み順序で適用されます): 不均一 スケール -> 回転 -> 移動 から移動座標を抽出するのに問題はありません結果の 4x4 変換行列 (最後の列の最初の 3 つの値) が得られましたが、回転行列とスケーリング行列を抽出する方法が見つかりませんでした。
Web で次の行列分解アルゴリズムを見つけました。
- 行列の最初の 3 つの基底ベクトル (列または行) の大きさとしてスケーリング係数を計算します。
- 最初の 3 つの基底ベクトルをこれらの値で割ります (したがって、それらを正規化します)。
- 行列の左上の 3x3 部分が回転を表すようになりました (これをそのまま使用することも、クォータニオン形式に変換することもできます)。
- 平行移動は、行列の 4 番目の基底ベクトルです (同次座標では、関心のある最初の 3 つの要素になります)。
これが私のJava実装です
しかし、それが取得する軸角度と倍率は正しくありません。
どうしたの?