Polynômes auto-référentiels

12

Pour chaque degré donné, nil est possible de construire (au moins un) un polynôme intégral ptel que p(k)( pévalué en k) est le coefficient du terme x^kdans le polynôme pour tous 0 <= k <= n. Pour les rendre uniques, nous avons besoin que le coefficient principal (le coefficient de x^n) soit positif et minimal.

Ces polynômes ont des propriétés intéressantes, vous pouvez trouver quelques références dans le fil qui m'a inspiré pour relever ce défi . Vous pouvez également trouver ces polynômes dans https://oeis.org/A103423

L'une des propriétés a priori inattendues est le comportement des racines en fonction n:

entrez la description de l'image ici

source (par / u / zorngov et / u / EpicSauceSc2)

Tâche

Étant donné une nsortie entière non négative, le polynôme intégral auto-référentiel de degré navec un coefficient d'attaque positif minimal.

Détails

La sortie peut être sous n'importe quelle forme lisible par l'homme, sous forme de chaîne x^2-x-1ou également sous forme de liste de coefficients [1,-1,-1]. (L'ordre des coefficients peut également être inversé, il doit simplement être cohérent.)

Premières sorties

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 
flawr
la source
Félicitations pour votre badge en or!
Luis Mendo
@LuisMendo Merci, apparemment je suis un fanatique.
flawr

Réponses:

2

Sauge , 74 octets

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

Le -iet [-n..0]pourrait être iet [0..n], si ce n'est pour l'exigence de coefficient dominant positif.

Essayez-le sur Sage Cell

Anders Kaseorg
la source
2

Mathematica, 55 octets

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

La sortie est la liste des coefficients, en commençant par le terme constant. Exemple:

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}}

Cela trouve simplement le vecteur tel que (A - I)v = 0, similaire au code MAPLE dans OEIS. La NullSpaceméthode semble toujours choisir le nombre positif minimal pour le dernier élément, qui correspond à la description de la tâche.

L' x^c-…/.x->rindirection est pour éviter d'avoir 0^0 == Indeterminate.

kennytm
la source
0

Pari / GP , 64 octets

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

Renvoie les coefficients sous forme de vecteur de colonne.

Essayez-le en ligne!

alephalpha
la source