0

皆さん、私はこのコードに取り組んできましたが、現在の問題は、多項式 1 に多項式 2 の最初の項を掛けているだけだということです。

したがって、2x + 2 * 5x + 5 = 10x2 + 10x

10x2 + 20x + 10 の代わりに

乗算を行うコードは次のとおりです。

public Polynomial multiply( )
{
    Polynomial res = clone();
    for(Monomial tmp = res.head; tmp != null; tmp = tmp.next)
        res.addTerm(tmp.coeff *= head.coeff, tmp.deg += head.deg);
    double num = 0.5;
    for(Monomial tmp = res.head; tmp != null; tmp = tmp.next)
        tmp.coeff *= num;
    return res;
}
4

1 に答える 1

0

あなたのアルゴリズムは、多項式を乗算するときに使用するアルゴリズムとあまり似ていないようです。2 つの多項式があり、それらを一連の単項式として (実際に行っているように) 扱うと、(A1,A2) * (B1,B2) となり、必要な結果は (A1*B1, A1 *B2, A2*B1, A2*B2) 簡略化前。この積は元の多項式の外積であり、元の多項式よりも多くの単項を含んでいることに注意してください。単純なforループを使用しても、そのような結果になることはありません。

最初の多項式のすべての単項式を反復し、そのループ内で、その単項式とそれぞれの積である新しい単項式を生成するfor内部ループを実行する、入れ子になったループの線に沿った何かが理にかなっています。 for2 番目の多項式からの単項式。

その後、次数を比較して、単項式を組み合わせて結果を単純化できます。

于 2013-03-10T01:42:42.663 に答える