адача 31. Составить программу-функцию, возвращающую коэффициенты многочлена g(x), который получается в результате перемножения биномов (x - vk) (k = 0,1,...,n-1; n³1): g(x) = (x - v0)×(x - v1)×...×(x - vn-1).
Решение. Будем считать, что свободные члены биномов заданы в виде компонентов некоторого вектора v = (v0 v1 ... vn-1)T, а результат вычислений должен возвращаться также в виде вектора. Поскольку
g(x) = [(x - v0)×(x - v1)×...×(x - vn-2)]×(x - vn-1),
то несложно организовать рекурсию по количеству перемножаемых биномов. Соответствующая программа-функция могла бы выглядеть так:
Контрольный пример:t := (1 -5 2)T, probin(t)T = [1 2 -13 10].
Замечание. Пусть по известным корням c1, c2, ... , cn унарного многочлена f(x) степени n требуется найти его коэффициенты a1, a2, ... , an:
Унарность f(x) означает, что коэффициент при старшей степени x равен единице. Этим обеспечивается единственность решения поставленной задачи и коэффициенты ak (k = 1,2,...,n) можно находить, например, с помощью формул Виета:
Однако конкретные вычисления по этим красивым формулам проводить затруднительно. Проще это делать с помощью рекурсивной функции probin(c), где с - вектор из корней f(x): c=(c1 c2 ... cn)T. А возможность эта вытекает из представления f(x) = (x - c1)×(x - c2)×...×(x - cn).