EJML を使用して線形方程式系を解きます。
EJML は double を使用します。私の入力 (および期待される出力) は整数です。toString() から .000 を省略します。
私のマトリックスAは次のようになります(ただし、〜1000x1000です):
1 0 0 0 0
1 -1 1 0 0
0 1 -1 1 0
0 0 1 -1 1
0 0 0 0 1
私の b は、最初と最後のインデックスに値を持つ単なるベクトルで、残りは 0 です。
{-10 0 0 0 10}'
サイズが 5x5 の場合は EJML を問題なく使用できますが、1000x1000 のマトリックスの場合はエラーが発生しSolution contains uncountable numbers
ます。
結果は次のようになります。
{NaN NaN NaN ... NaN -Infinity -Infinity 1}'
私のコードは次のようになります (行列は正しいです。Sysout とデバッガーで確認しました):
// Setup A
// Setup b
SimpleMatrix x = A.solve(b);
今、私のシステムがどういうわけか悪い振る舞いをしていると思います。悲しいことに、私はマトリックスにあまり興味がないので、この特定の問題を解決するために間違った方法を使用している可能性があると思います。もう 1 つ考えられるのは、倍精度が邪魔になるということです。
私にできることはありますか、それとも EJML は適切なツールではありませんか?