2013-03-10 4 views
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; 
} 
+0

Начните с отладки кода, чтобы отследить, где возникла проблема. –

+0

[sscce] (http://meta.stackexchange.com/questions/22754/sscce-how-to-provide-examples-for-programming-questions) –

ответ

0

Ваш алгоритм не Appe ar, чтобы быть очень похожим на алгоритм, используемый при умножении многочленов. Если у вас есть два полинома, и вы рассматриваете их как последовательности одночленов (как вы, кажется, делаете), значит, у вас есть (A1, A2) * (B1, B2), тогда результат, который вы хотите, выглядит как (A1 * B1, A1 * B2, A2 * B1, A2 * B2) перед упрощением. Обратите внимание, что произведение является перекрестным произведением исходных многочленов, содержащих больше одночленов, чем начало полинома. Использование вами простого цикла for никогда не приведет к такому продукту.

Что-то вдоль линий вложенных for петель могут иметь смысл, в котором вы перебрать все одночлены в первом многочлене, а затем, в течение этого цикла, запустить внутренний for цикл, который производит новый одночлен, который является продуктом этот моном и каждый из одночленов от второго полинома по очереди.

После этого вы можете сравнить степень, чтобы упростить свой результат, объединив мономы.

+0

это мой полный код –

Смежные вопросы