у меня есть корни унитарным полинома, т.е.Эффективное вычисление коэффициентов полинома от его корней
p(x) = (x-x_1)*...*(x-x_n)
и мне нужны коэффициенты a_n, ..., a_0 от
p(x) = x^n + a_{n-1}x^{n-1} + ... + a_0.
кого-ли знать вычислительно эффективным способом сделать это? Если кто-то знает реализацию C/C++, это будет на самом деле лучше. (Я уже посмотрел на GSL, но он не обеспечил функции.)
Конечно, я знаю, как к нему математически. Я знаю, что коэффициент a_i
является суммой всех продуктов подмножеств с элементами n-i
. Но если бы я сделал это немой путь, это означает, что для перебора всех подмножеств, я должен был бы
sum^{n-1}_{k=1} (k choose n) * (k-1)
умножений и
sum^n_{k=0} (k choose n) - n
дополнения. Следовательно, оба термина растут с O(n!)
, что является слишком большим вычислением, чтобы преобразовать список n
root в список коэффициентов n
. Я считаю, что должен быть разумный способ повторного использования большинства промежуточных результатов, но я его не нахожу.
Вы можете рекурсивно построить многочлен сверткой.Если это очень большой многочлен, в какой-то момент FFT будет бить метод O (n^2). –