問題タブ [determinants]
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.
c++ - cuSolver でデバイスの LU 分解が見つからない
cuda を使用して行列式 (double の配列) を計算する必要があり、これを行うために LU 分解を使用したいと考えています。デバイス機能は見つかりませんがcusolverSp.h
、ホスト機能のみですcusolverSpDcsrlsvluHost
。私はcuda 7.0とcuda 7.5を見ています。
公式ドキュメントに記載されているため、なぜ見つからないのかわかりません: http://docs.nvidia.com/cuda/cusolver/index.html#api
デバイス上のコレスキー分解などの他の機能は機能します。
実装されていますか?はいの場合、どこで見つけることができますか?
ご協力ありがとうございました!
determinants - 展開が与えられた行列式を見つける
拡張が ab(a + b)^2 である a と b (およびその他の実数) を含む 3 行 3 列の行列式を考えられる人がいるかどうか疑問に思っていました。おそらく多くの可能性がありますが、1つだけで十分です。ありがとう。
matlab - matlab for-loop のベクトル化
forループを排除し、マルチスレッド化によって速度を上げるために、次のmatlab関数の適切なベクトル化を探しています。
size(A)
= N
-by- N
、ここで30 <= N <= 60
1e4 <= numIter <= 1e6
c++ - 行列式計算関数の最適化
私が見つけた最適なアルゴリズムを検索すると、トレードオフがあります。一方では実装の複雑さと大きな定数であり、他方ではランタイムの複雑さです。実装が非常に簡単で、十分なパフォーマンスがあるため、LU 分解ベースのアルゴリズムを選択します。
det()
function は、一部として使用するアルゴリズムで最もホットな関数です。アルゴリズム全体の実装を参照するdet()
ための実行時パフォーマンスの比較( google-pprofを使用)は、 .det()
機能のパフォーマンスを向上させるにはdet()
? すぐに適用できる明白な最適化は何ですか? インデックス作成とメモリ アクセスの順序などを変更する必要がありますか? コンテナタイプ?プリフェッチ?
の典型的な値はdimension_
3 から 10 の範囲です (ただし、value_type
mpfr などの場合は 100 にすることもできます)。
python - テンソルフローの行列式微分
TensorFlow を使用して行列式の導関数を計算することに興味があります。実験から、TensorFlow が行列式による微分方法を実装していないことがわかります。
もう少し調べてみると、導関数を実際に計算できることがわかりました。たとえば、ヤコビの公式を参照してください。関数デコレータを使用する必要がある行列式を介して差別化するこの手段を実装するために、
しかし、私はこれがどのように達成されるかを理解できるほどテンソルフローに精通していません。誰かがこの問題について何か洞察を持っていますか?
この問題に遭遇した例を次に示します。
r - c() をオーバーロードするか、base::det を変更しますか?
determinant
R で S4 クラスの関数をオーバーロードしました。基本determinant
関数は、要素modulus
とsign
;を含むリストを返します。ただし、値は私のS4オブジェクトです(*
オーバーロードされています)。次に、自分の環境に合わせて関数を再定義しました(これを行う方法を理解するためdet
に、パッケージのソース コードを掘り下げる必要がありました。これは、それ自体がホラーショーでした)。Matrix
base::det
私が理解していない理由により、base::det
は次のように定義されます。
私のオブジェクトで呼び出されると、z
期待どおりに計算され、問題z$sign
ありz$modulus
ません。私はオーバーロード*
しexp
たので、それz$sign * exp(z$modulus)
は私のオブジェクトの1つに評価されます。
しかし、なぜ c
?
戻り値がラップされるとc()
、スカラー数値ではなく、1 つの要素 (my object) を含むリストになります。これは私が望んでいるものではなく、単体テストに違反しています。いくつかのオプションの回避策:
- を書き直し
det
て、 の使用に必要なものを破壊する可能性がありc()
ます。 - どういうわけか、オブジェクトをオーバーロードします
c()
(またはそれですか?)。as.vector
私はそれを行う方法さえわかりません。 - 他の何か?
推奨される解決策は何ですか? また、どのように進めればよいですか? でこの混乱を文書化する適切な方法についての追加のポイントroxygen2
。
(参考までに、パッケージはhttps://github.com/shabbychef/madnessの github にあります)
EDIT MWE は次のようになります。