1

私は有理数の線形システムを解くために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>RationalVariableRationalFunction<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 のマトリックスでテストしたところ、うまくいきました。

この問題を解決するには、次にどこを見ればよいでしょうか?

4

1 に答える 1