Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Полином


Автор: Alfmaster 23.10.2008, 19:49
Имеется выражение (x-c1)*(x-c2)*...*(x-cn). Как программно найти коэфициенты при иксах в полиноме, получившемся в результате решения данного выражения?

Автор: maxim1000 23.10.2008, 22:33
первый вариант: написать свой тип "полином", основанный на хранении коэффициентов, и реализовать ему операцию умножения, а потом просто перемножить заданные двучлены и вывести коэффициенты получившегося полинома
преимущество этого похода в том, что в случае необходимости произведения других операций уже будет база, от которой можно отталкиваться

второй вариант: при раскрытии каждой скобки у нас количество слагаемых удваивается - одна половина соответствует x, вторая - (-c[i]), после раскрытия получим 2^n слагаемых, каждое из которых будет произведением элементов x и c[i] во всех комбинациях. из них можно выбрать те, у которых нужная степень x-а - их будет C(n,k) (k - степень) - и поскладывать коэффициенты (т.е. привести подобные слагаемые)

честно говоря, несмотря на то, что первый вариант решает более общую задачу, мне кажется что он всё равно будет проще - программа для второго варианта, по-моему, будет сложнее
единственное исключение - какие-то простые степени:
при x^n будет 1
при x^0 будет (-1)^n*c1*c2*...*cn
при x^1 будет -c1-c2-...-cn
но в общем виде ничего простого не видно...

Автор: Alfmaster 23.10.2008, 23:07
Цитата

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


не очень понял, что значит перемножить заданные двучлены. В них же есть иксы, а мне они не известны, а следовательно программе, а как ей работать с неизвестными данными?

Автор: maxim1000 24.10.2008, 00:23
не так уж и сложно
математики очень часто оперируют формулами, в которых куча неизвестных, и зачастую успешно
например:
(4-x)*(1+x+4*x^2)=[раскрываем скобки]=4*(1+x+4*x^2)-x*(1+x+4*x^2)=4+4*x+16*x^2-x-x^2-4*x^3=[приводим подобные слагаемые]=4+3*x+15*x^2-x^3
было произведение двух полиномов, стал один
так можно сначала умножить первые два, потом результат умножить на третий и т.д. до конца

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)