Desafio
Dado um polinômio p
com coeficientes reais de ordem 1
e grau n
, encontre outro polinômio q
de grau no máximo n
tal que (p∘q)(X) = p(q(X)) ≡ X mod X^(n+1)
, ou seja, p(q(X)) = X + h(X)
ondeh
seja um polinômio arbitrário ord(h) ≥ n+1
. O polinômio q
é determinado exclusivamente por p
.
Para um polinômio p(X) = a(n)*X^n + a(n+1)*X^(n+1) + ... + a(m)*X^m
onde n <= m
e a(n) ≠ 0
, a(m) ≠ 0
dizemos que n
é a ordem de p
e m
é o grau de p
.
Simplificação : você pode assumir que p
possui coeficientes inteiros e a(1)=1
(so p(X) = X + [some integral polynomial of order 2]
). Neste caso, também q
tem coeficientes integrais.
O objetivo dessa simplificação é evitar os problemas com números de ponto flutuante. Existe, no entanto, um exemplo não integral para fins ilustrativos.
Exemplos
- Considere a série de Taylor
exp(x)-1 = x + x^2/2 + x^3/6 + x^4/24 + ...
eln(x+1) = x - x^2/2 + x^3/3 - x^4/4 + ...
então obviamenteln(exp(x)-1+1)= x
. Se considerarmos apenas os polinómios de Taylor de grau 4 dessas duas funções que obtemos com a notação de baixo (veja testcases)p = [-1/4,1/3,-1/2,1,0]
eq = [1/24, 1/6, 1/2, 1,0]
e(p∘q)(X) ≡ X mod X^5
Considere o polinômio
p(X) = X + X^2 + X^3 + X^4
. Então, paraq(X) = X - X^2 + X^3 - X^4
chegarmos(p∘q)(X) = p(q(X)) = X - 2X^5 + 3X^6 - 10X^7 +...+ X^16 ≡ X mod X^5
Casos de teste
Aqui, os polinômios de entrada e saída são escritos como listas de coeficientes (com o coeficiente do mais alto grau monomial primeiro, o termo constante último):
p = [4,3,2,0]; q=[0.3125,-.375,0.5,0]
Casos de teste integrais:
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]