問題タブ [colt]
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.
java - 並列 colt で行列ランクが API 仕様どおりに機能しない
行列のランクを見つける必要がある並列コルトを使用しています。APIドキュメントには、次について次のように記載されていますDoubleAlgebra#rank
。
ランク(DoubleMatrix2D A)
特異値分解から取得した行列 A の有効数値ランクを返します。
しかし、コードで使用すると、実行時に IllegalArgumentException が発生します。
API は、行列が密である必要があることを述べていません。私の IDE (私は Intellij IDEA を使用しています) で、コード内のメソッド名を ctrl キーを押しながらクリックすると、ソースが表示されます。
DoubleMatrix2D
要するに、オブジェクトではなく、オブジェクトの要件がどこにでもありDenseDoubleMatrix2D
ます。実行時例外が発生する理由は何ですか?
java - Colt を使用したヌルスペースのサンプル
私は Java を書いていて、colt をマトリックス ライブラリとして使用しており、マトリックスのカーネルで (任意の) ベクトルを見つけたいと考えています。次のようにsympyを使用してpythonでこれを行うことができます:
sympy を使用すると、nullspace を呼び出して nullspace 全体を取得したり、rref を使用して行エシュロン形式に縮小するときに使用されるピボットを取得したり、そこから nullspace で単一のベクトルを見つけたりすることができます。Colt で nullspace を計算する関数を見つけることができず、trapezoidalLower はピボットを返しません。
私は自分の rref を書くことを余儀なくされていますか、それとも Colt でこれを達成するためのより高いレベルの方法を誰かが知っていますか?
java - Colt は「d 次元」行列を提供しますか?
Colt ライブラリは、「密および疎の固定サイズ (サイズ変更不可) の 1、2、3、および d 次元行列」を提供するふりをしています (セクションの機能 / テンプレート化された多次元行列)。
しかし、API自体には、3を超える実装はありません: http://acs.lbl.gov/ACSSoftware/colt/api/cern/colt/matrix/package-summary.html
私の疲れた目を治してください:)
java - Java Colt を使用して 1000000 x 1000000 疎行列を作成するにはどうすればよいですか?
これが私が得ているエラーです:
colt - Java colt libを使用して2つのsparsematrixを結合するには?
疎行列に Java colt ライブラリを使用しています。入力は、同じ行番号を持つ 2 つの疎行列です。たとえば、
v1 と v2 を計算した後。v2 の結果を v1 に追加したい、または別の新しい行列に割り当てることもできます。
coltでこれを達成する方法を知っている人はいますか? そのための既存の方法はありますか?
java - Java での大きな疎行列のコレスキー分解
Java で大規模な疎行列のコレスキー分解を実行したいと考えています。現在、Parallel Coltライブラリ クラスSparseDoubleCholeskyDecompositionを使用していますが、JNI を使用して Java で使用する高密度行列用に C で記述したコードを使用するよりもはるかに遅いです。
たとえば、SparseDoubleCholeskyDecomposition を使用した 0.25% の非ゼロ密度の 5570x5570 行列の場合、因数分解に26.6 秒かかり、高密度ストレージを使用する同じ行列の自分のコードは1.12 秒しかかかりません。ただし、密度を 0.025% に設定すると、colt ライブラリは 0.13 秒しかかかりません。
また、圧縮された行ストレージと OpenMPを使用して、C で独自の疎行列コレスキー分解を作成しました。これは、SparseDoubleCholeskyDecomposition よりもかなり高速ですが、密なストレージを使用するアルゴリズムよりも遅いです。おそらくさらに最適化することもできますが、いずれにしてもコレスキー因子が密集しているため、速度もストレージの問題も解決されません。
しかし、ミリ秒単位の時間が必要であり、最終的には 10000x10000 を超えるマトリックスにスケーリングする必要があるため、密なマトリックス用の独自の密なコードでさえ遅くなり、メモリを使いすぎます。
疎行列のコレスキー分解は、はるかに高速に実行でき、メモリ使用量も少ないと信じる理由があります。たぶん、より良い Java BLAS ライブラリが必要ですか? 疎行列のコレスキー分解を効率的に行うJava用のライブラリはありますか? Parallel Colt を最適に使用していない可能性があります。
java - Java 8以降の古いライブラリの並行コンパイルの失敗
数学ライブラリcolt (バージョン 1.2) はライブラリEDU.oswego.cs.dl.util.concurrent (gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro. html)。並行コンパイル(バージョン 1.3.4) は、Java バージョン 7 以前のリリースで機能しました。ただし、Java 8 (javac バージョン 1.8) ではコンパイルに失敗します。コンパイラ オプション-source 1.4 -target 1.4
は問題を解決しません。
その理由は、Java 8 がインターフェース java.util.Map: に新しいメソッド「remove」を導入したためですdefault boolean remove(Object key, Object value)
。この新しいメソッドは、 java.util.Map: を実装するライブラリ クラス ConcurrentHashMap.java のメソッド「remove」と衝突しますprotected Object remove(Object key, Object value)
。
問題の原因が特定されたら、ライブラリ クラス ConcurrentHashMap.javaのメソッドの名前を変更することで問題を解決できました。これは、ライブラリ メソッドが保護されている (公開されていない) だけだったため、受け入れられました。
Java 8 の互換性を確保する他の可能性はありますか?
- コンパイラオプション?
- 注釈 ("@ForceOverride") ?