Если дан многочлен p(x)
с целыми коэффициентами и постоянным членом p(0) = 1 or -1
, а также неотрицательное целое число N
, вернуть N
-й коэффициент степенной степени (иногда называемый "ряд Тейлора"), полученный f(x) = 1/p(x)
при x0 = 0
, т. Е. Коэффициент монома степени N
.
Данные условия гарантируют, что степенной ряд существует и что его коэффициенты являются целыми числами.
Детали
Как всегда, многочлен может быть принят в любом удобном формате, например, список коэффициентов, например, p(x) = x^3-2x+5
может быть представлен как [1,0,-2,5]
.
Powerseries функции, f
разработанной в 0
дается
а N
-й коэффициент (коэффициент x^N
) определяется как
где обозначает n
-й производную отf
Примеры
Результатом полинома
p(x) = 1-x
является геометрический ряд,f(x) = 1 + x + x^2 + ...
поэтому вывод должен быть1
для всехN
.p(x) = (1-x)^2 = x^2 - 2x + 1
приводит к производной геометрических рядовf(x) = 1 + 2x + 3x^2 + 4x^3 + ...
, поэтому выход заN
этоN+1
.p(x) = 1 - x - x^2
приводит к производящей функции последовательности Фибоначчиf(x) = 1 + x + 2x^2 + 3x^3 + 5x^4 + 8x^5 + 13x^6 + ...
p(x) = 1 - x^2
приводит к производящей функции1,0,1,0,...
т.е.f(x) = 1 + x^2 + x^4 + x^6 + ...
p(x) = (1 - x)^3 = 1 -3x + 3x^2 - x^3
приводит к производящей функции треугольных чисел,f(x) = 1 + 3x + 6x^6 + 10x^3 + 15x^4 + 21x^5 + ...
что означает, чтоN
-й коэффициент является биномиальным коэффициентом(N+2, N)
p(x) = (x - 3)^2 + (x - 2)^3 = 1 + 6x - 5x^2 + x^3
результаты вf(x) = 1 - 6x + 41x^2 - 277x^3 + 1873x4 - 12664x^5 + 85626x^6 - 57849x^7 + ...
источник
[1,-1,0,0,0,0,...]
?Ответы:
Mathematica,
2423 байтаСохранено 1 байт благодаря Грегу Мартину
Чистая функция с двумя аргументами
#
и#2
. Предполагается, что полином#2
удовлетворяетPolynomialQ[#2,x]
. Конечно, есть встроенное для этого:источник
#
это целое числоN
и#2
полином.Matlab,
81 7975 байтВ отличие от двух предыдущих ответов, здесь не используются символические вычисления. Идея состоит в том, что вы можете итеративно рассчитать коэффициенты:
Попробуйте онлайн!
объяснение
источник
GeoGebra , 28 байт
Ввод берется из ячеек электронной таблицы A1 и B1 полинома и целого числа соответственно, и каждая строка вводится отдельно в строку ввода. Выход через присвоение переменной
a
.Вот рисунок, показывающий исполнение:
Использование встроенных функций намного дольше - 48 байт:
источник
Haskell, 44 байта
Прямое вычисление без алгебраических встроенных функций. Принимает ввод как бесконечный список коэффициентов степенных рядов, например,
p = [1,-2,3,0,0,0,0...]
(p = [1,-2,3] ++ repeat 0
для)1-2*x+x^2
. Назовите это какp%3
, что дает-4.0
.Идея состоит в том, что если p - это многочлен, а q = 1 / p , если он обратный, то мы можем выразить равенство p · q = 1 поэлементно. Коэффициент x n в p · q задается сверткой коэффициентов в p и q :
p 0 · q n + p 1 · q n-1 + ... + p n · q 0
Для выполнения p · q = 1 вышеприведенное должно быть равно нулю для всех n> 0 . Ибо здесь мы можем выразить q n рекурсивно через q 0 , ..., q n-1 и коэффициенты p .
q n = - 1 / p 0 · (p 1 · q n-1 + ... + p n · q 0 )
Это именно то, что рассчитывается в выражении
sum[p!!i*p%(n-i)|i<-[1..n]]/head p
сhead p
ведущим коэффициентом p 0 . Начальный коэффициент q 0 = 1 / p 0 обрабатывается арифметически в том же выражении с использованием0^n
в качестве индикатора дляn==0
.источник
J, 12 байт
Использует наречие,
t.
которое принимает полиномp
в форме глагола на LHS и неотрицательное целое числоk
на RHS и вычисляетk
th-й коэффициент ряда Тейлораp
atx = 0
. Чтобы получить степенной ряд,p
перед его применением берется обратная величина .Попробуйте онлайн!
источник
Клен,
5826 байтовЭто безымянная функция, которая принимает полином от
x
и целое числоN
.РЕДАКТИРОВАТЬ: Я только что заметил, что есть встроенный:
источник
MATL , 19 байт
Перевод @ Flawr большой ответ Matlab .
Попробуйте онлайн!
Как это работает
источник
JavaScript (ES6), 57 байт
Порт ответа @ xnor's Haskell. Первоначально я попробовал итеративную версию, но оказалось, что она составляет 98 байт, но для больших N это будет намного быстрее, поскольку я эффективно запоминаю рекурсивные вызовы:
n+1
необходимы условия, которые сохраняются в массивеr
. Изначально это нули, которые позволяют сократить весь массивr
сразу, так как нули не влияют на результат. Последний рассчитанный коэффициент является окончательным результатом.источник
PARI / GP,
3127 байтисточник