私は有理数の線形システムを解くためにJscience線形代数モジュールを使用しています。これは期待どおりに機能し、正しい結果が得られます。
public static void main(String[] args) {
DenseMatrix<Rational> m = DenseMatrix.valueOf(
DenseVector.valueOf(r(1, 1), r(-1, 1), r(0, 1), r(0, 1), r(1, 1), r(0, 1)),
DenseVector.valueOf(r(0, 1), r(0, 1), r(1, 1), r(-1, 1), r(0, 1), r(2, 1)),
DenseVector.valueOf(r(0, 1), r(0, 1), r(0, 1), r(0, 1), r(-1, 1), r(1, 1)),
DenseVector.valueOf(r(1, 1), r(0, 1), r(0, 1), r(0, 1), r(0, 1), r(0, 1)),
DenseVector.valueOf(r(0, 1), r(0, 1), r(0, 1), r(1, 1), r(0, 1), r(0, 1)),
DenseVector.valueOf(r(0, 1), r(-1, 1), r(1, 1), r(0, 1), r(0, 1), r(0, 1)));
DenseVector<Rational> v = DenseVector.valueOf(r(0, 1), r(0, 1), r(0, 1), r(0, 1), r(1, 1), r(1, 2));
Vector<Rational> sol = m.solve(v);
System.out.println(sol);
}
private static Rational r(int n, int d) {
return Rational.valueOf(n, d);
}
コードは{0/1, 1/6, 2/3, 1/1, 1/6, 1/6}
実行時に出力されます。
私の意図は、 のコンポーネントの 1 つの多くの異なる値でこのシステムを解決することです。そのため、 の代わりにv
使用するようにコードを変換しました。最初のステップでは、まだ a を導入しておらず、everyは定数です。私の理解では、これにより以前と同じ結果が得られるはずです。RationalFunction<Rational>
Rational
Variable
RationalFunction<Rational>
public static void main(String[] args) {
DenseMatrix<RationalFunction<Rational>> m = DenseMatrix.valueOf(
DenseVector.valueOf(r(1, 1), r(-1, 1), r(0, 1), r(0, 1), r(1, 1), r(0, 1)),
DenseVector.valueOf(r(0, 1), r(0, 1), r(1, 1), r(-1, 1), r(0, 1), r(2, 1)),
DenseVector.valueOf(r(0, 1), r(0, 1), r(0, 1), r(0, 1), r(-1, 1), r(1, 1)),
DenseVector.valueOf(r(1, 1), r(0, 1), r(0, 1), r(0, 1), r(0, 1), r(0, 1)),
DenseVector.valueOf(r(0, 1), r(0, 1), r(0, 1), r(1, 1), r(0, 1), r(0, 1)),
DenseVector.valueOf(r(0, 1), r(-1, 1), r(1, 1), r(0, 1), r(0, 1), r(0, 1)));
DenseVector<RationalFunction<Rational>> v = DenseVector.valueOf(r(0, 1), r(0, 1), r(0, 1), r(0, 1), r(1, 1), r(1, 2));
Vector<RationalFunction<Rational>> sol = m.solve(v);
System.out.println(sol);
}
private static RationalFunction<Rational> r(int n, int d) {
return RationalFunction.valueOf(Polynomial.valueOf(Rational.valueOf(n, d), Term.ONE), Polynomial.valueOf(Rational.ONE, Term.ONE));
}
ただし、これは実行時に、つまり0/0
各コンポーネントに対して次を出力します。
{([0/1])/([0/1]), ([0/1])/([0/1]), ([0/1])/([0/1]), ([0/1])/([0/1]), ([0/1])/([0/1]), ([0/1])/([0/1])}
Matrix.solve()
実際に使用をサポートしていRationalFunction
ますか? 1 対 1 のマトリックスでテストしたところ、うまくいきました。
この問題を解決するには、次にどこを見ればよいでしょうか?