Вызов
Если дан многочлен p
с действительными коэффициентами порядка 1
и степени n
, найдите другой q
не более чем n
такой многочлен степени , который (p∘q)(X) = p(q(X)) ≡ X mod X^(n+1)
, или другими словами, такой, p(q(X)) = X + h(X)
где где h
- произвольный многочлен с ord(h) ≥ n+1
. Полином q
однозначно определяется p
.
Для полинома , p(X) = a(n)*X^n + a(n+1)*X^(n+1) + ... + a(m)*X^m
где n <= m
и a(n) ≠ 0
, a(m) ≠ 0
мы говорим , n
является порядок из p
и m
является степень из p
.
Упрощение : можно предположить, что p
имеет целочисленные коэффициенты и a(1)=1
(так p(X) = X + [some integral polynomial of order 2]
). В этом случае q
тоже есть интегральные коэффициенты.
Цель этого упрощения - избежать проблем с числами с плавающей запятой. Однако для иллюстрации приведен неинтегральный пример.
Примеры
- Рассмотрим ряд Тейлора,
exp(x)-1 = x + x^2/2 + x^3/6 + x^4/24 + ...
аln(x+1) = x - x^2/2 + x^3/3 - x^4/4 + ...
затем очевидноln(exp(x)-1+1)= x
. Если мы просто рассмотрим многочлены Тейлора степени 4 из этих двух функций , которые мы получаем с обозначениями снизу (см testcases)p = [-1/4,1/3,-1/2,1,0]
иq = [1/24, 1/6, 1/2, 1,0]
и(p∘q)(X) ≡ X mod X^5
Рассмотрим полином
p(X) = X + X^2 + X^3 + X^4
. Тогдаq(X) = X - X^2 + X^3 - X^4
мы получаем(p∘q)(X) = p(q(X)) = X - 2X^5 + 3X^6 - 10X^7 +...+ X^16 ≡ X mod X^5
Testcases
Здесь входные и выходные полиномы записываются в виде списков коэффициентов (с коэффициентом монома наивысшей степени первым, с постоянным членом последним):
p = [4,3,2,0]; q=[0.3125,-.375,0.5,0]
Интегральные тестовые случаи:
p = [1,0]; q = [1,0]
p = [9,8,7,6,5,4,3,2,1,0]; q = [4862,-1430,429,-132,42,-14,5,-2,1,0]
p = [-1,3,-3,1,0]; q = [91,15,3,1,0]