問題タブ [ejml]
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 - EJML は行列固有ベクトルの実数値を取得します
コレスキー分解を行うために、非正定行列から正定行列への変換を試みています。良いライブラリだと思うEJMLを使って作業していると、行列の固有ベクトルを取得しようとするときに問題が発生しました。
EJMLは、虚数が存在する固有ベクトルごとに null 値を返します。JBlasのような他のJavaライブラリとは異なり、実際の値を抽出するための機能 (少なくとも明白なものではない) は提供しません。
EJML javadocによると( here ):
MatrixType getEigenVector (int インデックス)
実数値の固有ベクトルを取得するために使用されます。固有ベクトルが複素固有値に関連付けられている場合は、代わりに null が返されます。
パラメーター:
index - 固有値固有ベクトル ペアのインデックス。
戻り値:
関連付けられた固有値が実数の場合は固有ベクトルが返され、それ以外の場合は null が返されます。
私の問題を再現するには、次のアルゴリズムを検討してください。
私が理解していることでは、固有ベクトル行列の最初の 2 つの列は、 EJMLが NULL 値を返すようにする既存の虚数のために null です。プロセスですべてのベクトルを失うことなく、虚数の値をマージして実数の値を抽出できる方法または手法が必要です。
java - EJML を使用した線形システムの計算
コードを正確にフォーマットするにはどうすればよいですか
そして戻りx,y,z,w
ますか?
私はこの回答で説明されている形式に従おうとしていました.現在、私が持っているのはIllegalArgumentException: "java.lang.IllegalArgumentException: Can't solve for wide systems. More variables than equations.
、4つの結果を計算しようとするとスローされる次のコードです:
私は何を間違っていますか?
java - EJML で行列を配列に戻す
行列を表すために EJML ライブラリを使い始めました。を使用しSimpleMatrix
ます。私が必要とする2つの重要なものが見つかりませんでした。おそらく、誰かが次の操作が可能かどうかを特定するのを手伝ってくれるでしょう。可能であれば、これを行う方法を教えてください。
非常に非効率的なすべての要素をループすることなく、マトリックスを 1D double 配列 (
double[]
) または 2D double 配列 ( )に戻すことは可能ですか?double[][]
そのための方法が見つかりませんでした。たとえば、Jeigen ライブラリは 1D 配列への変換を提供します (ただし、これが内部でどのように行われるかはわかりません)。行または列を削除することはできますか?
ところで、EJML と大規模行列の実行時間の点で Jeigen との比較を知っている人はいますか? EJML はより多くの機能を提供し、文書化されていますが、ランタイムに関しては少し心配です。
java - EJML を使用した LM アルゴリズム
ここでは、Levenberg Marquardt 最適化ソース コードを使用する EJML wiki の例を使用してみます。
関数モデルのパラメーターを指定できるこの.Net バージョンと比較します。
例:a*x^2+b*x+c
モデルのすべてのパラメータを入力として与えることができます。
しかし、EJML LM コードの場合、これらのモデル パラメータをどこで指定できるかわかりません。
LM EJML クラスの使用方法を以下に貼り付けます。
では、これらのモデル パラメータを指定するにはどうすればよいでしょうか。
java - Linear EquationSystem を解くときの SingularMatrixException
EJML を使用して線形方程式系を解きます。
EJML は double を使用します。私の入力 (および期待される出力) は整数です。toString() から .000 を省略します。
私のマトリックスAは次のようになります(ただし、〜1000x1000です):
私の b は、最初と最後のインデックスに値を持つ単なるベクトルで、残りは 0 です。
サイズが 5x5 の場合は EJML を問題なく使用できますが、1000x1000 のマトリックスの場合はエラーが発生しSolution contains uncountable numbers
ます。
結果は次のようになります。
私のコードは次のようになります (行列は正しいです。Sysout とデバッガーで確認しました):
今、私のシステムがどういうわけか悪い振る舞いをしていると思います。悲しいことに、私はマトリックスにあまり興味がないので、この特定の問題を解決するために間違った方法を使用している可能性があると思います。もう 1 つ考えられるのは、倍精度が邪魔になるということです。
私にできることはありますか、それとも EJML は適切なツールではありませんか?