Polinomios autorreferenciales

12

Para cada grado dado nes posible construir (al menos uno) un polinomio integral ptal que p(k)( pevaluado en k) sea el coeficiente del término x^ken el polinomio para todos 0 <= k <= n. Para hacerlos únicos, requerimos que el coeficiente principal (el coeficiente de x^n) sea positivo y mínimo.

Estos polinomios tienen algunas propiedades interesantes, puede encontrar algunas referencias en el hilo que me inspiraron a hacer este desafío . También puede encontrar esos polinomios en https://oeis.org/A103423

Una de las propiedades inesperadas a priori es cómo se comportan las raíces dependiendo de n:

ingrese la descripción de la imagen aquí

fuente (por / u / zorngov y / u / EpicSauceSc2)

Tarea

Dado un nresultado entero no negativo , el polinomio integral autoreferencial de grado ncon un coeficiente inicial positivo mínimo.

Detalles

La salida puede estar en cualquier forma legible por humanos, como una cadena x^2-x-1, o también como una lista de coeficientes [1,-1,-1]. (El orden de los coeficientes también puede ser al revés, solo debe ser coherente).

Primeras pocas salidas

n=0: 1
n=1: x
n=2: x^2-x-1
n=3: 10*x^3-29*x^2-6*x+19
n=4: 57*x^4-325*x^3+287*x^2+423*x-19
n=5: 12813*x^5-120862*x^4+291323*x^3+44088*x^2-355855*x-227362 
falla
fuente
¡Felicidades por tu insignia de oro!
Luis Mendo
@LuisMendo Gracias, aparentemente soy un fanático.
flawr 01 de

Respuestas:

2

Sabio , 74 bytes

lambda n:kernel(matrix(n+1,[j^-i-(-i==j)for i in[-n..0]for j in[0..n]])).0

El -iy [-n..0]podría ser iy [0..n], si no fuera por el requisito de coeficiente principal positivo.

Pruébalo en Sage Cell

Anders Kaseorg
fuente
2

Mathematica, 55 bytes

NullSpace@Table[x^c-Boole[r==c]/.x->r,{r,0,#},{c,0,#}]&

La salida es la lista de coeficientes, comenzando desde el término constante. Ejemplo:

In[1084] := Do[Print[%1077[n] // StandardForm], {n, 0, 7}]

{{1}}

{{0,1}}

{{-1,-1,1}}

{{19,-6,-29,10}}

{{-19,423,287,-325,57}}

{{-227362,-355855,44088,291323,-120862,12813}}

{{145991969,64989065,-123338281,-85635661,79841909,-18146731,1286795}}

{{-5958511844199,3384370785404,8437850634901,489428412300,-4499161007143,1776194531596,-258931801371,13131073916}}

Esto simplemente encuentra el vector tal que (A - I)v = 0, similar al código MAPLE en OEIS. El NullSpacemétodo parece elegir siempre el número positivo mínimo para el último elemento, que coincide con la descripción de la tarea.

La x^c-…/.x->rindirección es evitar tener 0^0 == Indeterminate.

kennytm
fuente
0

Pari / GP , 64 bytes

n->a=matkerint(Mat([powers(i,n)|i<-[0..n]]~)-1);a*sign(a[n+1,1])

Devuelve los coeficientes como un vector de columna.

Pruébalo en línea!

alephalpha
fuente