Dado un polinomio p(x)con coeficientes integrales y un término constante de p(0) = 1 or -1, y un entero no negativo N, devuelve el Ncoeficiente enésimo del seris de potencia (a veces llamado "serie de Taylor") de f(x) = 1/p(x)desarrollado en x0 = 0, es decir, el coeficiente del monomio de grado N.
Las condiciones dadas aseguran que la serie de potencias exista y que sus coeficientes sean enteros.
Detalles
Como siempre, el polinomio puede aceptarse en cualquier formato conveniente, por ejemplo, una lista de coeficientes, por ejemplo, p(x) = x^3-2x+5podría representarse como [1,0,-2,5].
La serie de poderes de una función fdesarrollada en 0está dada por
y el Nenésimo coeficiente (el coeficiente de x^N) viene dado por
donde denota la
nenésima derivada def
Ejemplos
El polinomio
p(x) = 1-xda como resultado la serie geométrica,f(x) = 1 + x + x^2 + ...por lo que la salida debería ser1para todosN.p(x) = (1-x)^2 = x^2 - 2x + 1da como resultado la derivada de la serie geométricaf(x) = 1 + 2x + 3x^2 + 4x^3 + ..., por lo que la salida paraNesN+1.p(x) = 1 - x - x^2da como resultado la función generadora de la secuencia de Fibonaccif(x) = 1 + x + 2x^2 + 3x^3 + 5x^4 + 8x^5 + 13x^6 + ...p(x) = 1 - x^2da como resultado la función generadora de1,0,1,0,...ief(x) = 1 + x^2 + x^4 + x^6 + ...p(x) = (1 - x)^3 = 1 -3x + 3x^2 - x^3da como resultado la función generadora de los números triangularesf(x) = 1 + 3x + 6x^6 + 10x^3 + 15x^4 + 21x^5 + ...que significa que elNenésimo coeficiente es el coeficiente binomial(N+2, N)p(x) = (x - 3)^2 + (x - 2)^3 = 1 + 6x - 5x^2 + x^3resultados enf(x) = 1 - 6x + 41x^2 - 277x^3 + 1873x4 - 12664x^5 + 85626x^6 - 57849x^7 + ...
fuente

[1,-1,0,0,0,0,...]?Respuestas:
Mathematica,
2423 bytesGuardado 1 byte gracias a Greg Martin
Función pura con dos argumentos
#y#2. Asume que el polinomio#2satisfacePolynomialQ[#2,x]. Por supuesto, hay una función incorporada para esto:fuente
#es el enteroNy#2el polinomio.Matlab,
81 7975 bytesA diferencia de las dos respuestas anteriores, esto no hace uso de cálculos simbólicos. La idea es que puede calcular iterativamente los coeficientes:
Pruébalo en línea!
Explicación
fuente
GeoGebra , 28 bytes
La entrada se toma de las celdas A1 y B1 de la hoja de cálculo de un polinomio y un número entero respectivamente, y cada línea se ingresa por separado en la barra de entrada. La salida es por asignación a la variable
a.Aquí hay un gif que muestra la ejecución:
Usar builtins es mucho más largo, a 48 bytes:
fuente
Haskell, 44 bytes
Un cálculo directo sin incorporaciones algebraicas. Toma de entrada como una lista infinita de coeficientes de series de potencias, como
p = [1,-2,3,0,0,0,0...](es decirp = [1,-2,3] ++ repeat 0) para1-2*x+x^2. Llámalo comop%3, que da-4.0.La idea es que si p es un polinomio y q = 1 / p es inverso, entonces podemos expresar la igualdad p · q = 1 término por término. El coeficiente de x n en p · q es dada por la convolución de los coeficientes de p y q :
p 0 · q n + p 1 · q n-1 + ... + p n · q 0
Para que p · q = 1 se mantenga, lo anterior debe ser igual a cero para todo n> 0 . Por aquí, podemos expresar q n recursivamente en términos de q 0 , ..., q n-1 y los coeficientes de p .
q n = - 1 / p 0 · (p 1 · q n-1 + ... + p n · q 0 )
Esto es exactamente lo que se calcula en la expresión
sum[p!!i*p%(n-i)|i<-[1..n]]/head p, conhead pel coeficiente principal p 0 . El coeficiente inicial q 0 = 1 / p 0 se maneja aritméticamente en la misma expresión usando0^ncomo indicador paran==0.fuente
J, 12 bytes
Utiliza el adverbio
t.que toma un polinomiopen forma de verbo en el LHS y un entero no negativoken el RHS y calcula el coeficientekth de la serie Taylor depatx = 0. Para obtener la serie de potencia,pse toma el recíproco de antes de aplicarlo.Pruébalo en línea!
fuente
Arce,
5826 bytesEsta es una función sin nombre que acepta un polinomio
xy un enteroN.EDITAR: acabo de notar que hay un incorporado:
fuente
MATL , 19 bytes
Traducción de la gran respuesta de Matlab de @flawr .
Pruébalo en línea!
Cómo funciona
fuente
JavaScript (ES6), 57 bytes
La respuesta del puerto de Haskell de @xnor. Originalmente probé una versión iterativa, pero resultó ser de 98 bytes, sin embargo, será mucho más rápido para N grande, ya que estoy recordando efectivamente las llamadas recursivas:
n+1se requieren términos, que se guardan en la matrizr. Inicialmente, son ceros lo que permite reducir toda la matrizrde una vez, ya que los ceros no afectarán el resultado. El último coeficiente calculado es el resultado final.fuente
PARI / GP,
3127 bytesfuente