как умножить коэффициенты многочленов

Здравствуйте, я хочу узнать, как умножить два многочлена на эту функцию.

он используется для умножения двух многочленов

я хочу знать, что произошло в этой функции с коэффициентами в этом коде

mul(poly((10, 20, 30)), poly((1, 2, 3))).coefs == (10, 40, 100, 120, 90)

как получилось (10, 40, 100, 120, 90)?

mul() обозначает функцию умножения poly() обозначает функцию многочленов


person Mohamed Ramzy Helmy    schedule 01.04.2015    source источник
comment
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он касается математики, а не программирования (попробуйте math.stackexchange.com).   -  person Oliver Charlesworth    schedule 02.04.2015
comment
нет, это проблема программирования, мне нужно средство для умножения коэффициентов   -  person Mohamed Ramzy Helmy    schedule 02.04.2015
comment
@MohamedRamzyHelmy, у тебя есть код? или без разницы язык?   -  person xsami    schedule 02.04.2015
comment
Попробуйте написать умножение вручную для случая двух кубиков, a_3*x^2 + a_2*x^2 + a_1*x + a0, b_3*x^3 + b_2*x^2 + b _1*x + b0, и оставьте коэффициенты символическими. Шаблон должен стать очевидным; если нет, попробуйте степень 4.   -  person eigenchris    schedule 02.04.2015
comment
Я хочу знать, если я умножаю, какие будут коэффициенты?   -  person Mohamed Ramzy Helmy    schedule 02.04.2015
comment
у меня нет кода для него   -  person Mohamed Ramzy Helmy    schedule 02.04.2015
comment
подсказка: .coefs означает аргументы функции poly()   -  person Mohamed Ramzy Helmy    schedule 02.04.2015
comment
Какой язык программирования вы используете?   -  person Salix alba    schedule 02.04.2015


Ответы (2)


При умножении многочлена А N-й степени на многочлен B степени M вы получите результирующий многочлен C степени (N+M), который имеет N+M+1 коэффициентов. K-й коэффициент результата:

C[k]{k=0..N+M} = Sum(A[i] * B[k - i]){find proper range for i}

пример для N = 3 и M = 3:

C[5] = A[3]*B[2] + A[2]*B[3]

Надеюсь, что реализовать такую ​​простую формулу с циклом не составит труда ни на одном языке программирования.

person MBo    schedule 02.04.2015

Предположим, что ваши коэффициенты хранятся в двух массивах A[], B[] с coeff[0], являющимся термином нулевой степени, и сохраняют результат в C.

// degree of result
int deg=A.length+B.length-2;
int C[] = new int[deg+1];
// initialise to zero
for(i=0;i<=deg;++i) {
    C[i]=0;
}
for(i=0;i<A.length;++i) {
    for(j=0;j<B.length;++j) {
        C[i+j] += A[i] * B[j];
    }
}
person Salix alba    schedule 02.04.2015