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

您的算法似乎与多项式相乘时使用的算法不太相似。如果您有两个多项式并将它们视为单项式序列(正如您似乎正在做的那样),那么您有 (A1,A2) * (B1,B2),那么您想要的结果看起来像 (A1*B1, A1 *B2, A2*B1, A2*B2) 简化前。请注意,乘积是原始多项式的叉积,包含的单项式比任何一个多项式开始时都多。您使用简单的for循环永远不会产生这样的产品。

沿着嵌套for循环线的东西可能是有意义的,其中您迭代第一个多项式中的所有单项式,然后在该循​​环中运行一个内部for循环,该循环产生一个新的单项式,该单项式是该单项式和每个单项式的乘积依次来自第二个多项式的单项式。

毕竟,您可以比较度数以通过组合单项式来简化结果。

于 2013-03-10T01:42:42.663 回答