Étant donné un polynôme p(x)
avec des coefficients intégraux et un terme constant de p(0) = 1 or -1
, et un entier non négatif N
, renvoyer le N
-ième coefficient de la série de puissance (parfois appelée "série Taylor") de f(x) = 1/p(x)
développé à x0 = 0
, c'est- à -dire le coefficient du monôme de degré N
.
Les conditions données garantissent que la série de puissances existe et que ses coefficients sont des entiers.
Détails
Comme toujours, le polynôme peut être accepté dans n'importe quel format convenable, par exemple une liste de coefficients, par exemple p(x) = x^3-2x+5
pourrait être représentée comme [1,0,-2,5]
.
La puissance d'une fonction f
développée à 0
est donnée par
et le N
-ème coefficient (le coefficient de x^N
) est donné par
où dénote la n
dérivée -ième def
Exemples
Le polynôme se
p(x) = 1-x
traduit par la série géométriquef(x) = 1 + x + x^2 + ...
, la sortie doit donc être1
pour tousN
.p(x) = (1-x)^2 = x^2 - 2x + 1
entraîne la dérivée de la série géométriquef(x) = 1 + 2x + 3x^2 + 4x^3 + ...
, donc la sortie pourN
estN+1
.p(x) = 1 - x - x^2
entraîne la fonction génératrice de la séquence de Fibonaccif(x) = 1 + x + 2x^2 + 3x^3 + 5x^4 + 8x^5 + 13x^6 + ...
p(x) = 1 - x^2
se traduit par la fonction génératrice de1,0,1,0,...
ief(x) = 1 + x^2 + x^4 + x^6 + ...
p(x) = (1 - x)^3 = 1 -3x + 3x^2 - x^3
entraîne la fonction génératrice des nombres triangulaires, cef(x) = 1 + 3x + 6x^6 + 10x^3 + 15x^4 + 21x^5 + ...
qui signifie que leN
-ème coefficient est le coefficient binomial(N+2, N)
p(x) = (x - 3)^2 + (x - 2)^3 = 1 + 6x - 5x^2 + x^3
résulte enf(x) = 1 - 6x + 41x^2 - 277x^3 + 1873x4 - 12664x^5 + 85626x^6 - 57849x^7 + ...
la source
[1,-1,0,0,0,0,...]
?Réponses:
Mathematica,
2423 octets1 octet enregistré grâce à Greg Martin
Fonction pure avec deux arguments
#
et#2
. Suppose que le polynôme#2
satisfaitPolynomialQ[#2,x]
. Bien sûr, il y a une fonction intégrée pour cela:la source
#
s'agit de l'entierN
et#2
du polynôme.Matlab,
81 7975 octetsContrairement aux deux réponses précédentes, cela n'utilise pas de calculs symboliques. L'idée est que vous pouvez calculer itérativement les coefficients:
Essayez-le en ligne!
Explication
la source
GeoGebra , 28 octets
L'entrée est tirée des cellules de feuille de calcul A1 et B1 d'un polynôme et d'un entier respectivement, et chaque ligne est entrée séparément dans la barre d'entrée. La sortie se fait par affectation à la variable
a
.Voici un gif montrant l'exécution:
L'utilisation de builtins est beaucoup plus longue, à 48 octets:
la source
Haskell, 44 octets
Un calcul direct sans intégration algébrique. Prend l'entrée comme une liste infinie de coefficients de série de puissance, comme
p = [1,-2,3,0,0,0,0...]
(iep = [1,-2,3] ++ repeat 0
) pour1-2*x+x^2
. Appelez ça commep%3
, ce qui donne-4.0
.L'idée est que si p est un polynôme et q = 1 / p est-il inverse, alors nous pouvons exprimer l'égalité p · q = 1 terme par terme. Le coefficient de x n dans p · q est donné par la convolution des coefficients dans p et q :
p 0 · q n + p 1 · q n-1 + ... + p n · q 0
Pour que p · q = 1 soit maintenu, ce qui précède doit être égal à zéro pour tout n> 0 . Car ici, on peut exprimer q n récursivement en termes de q 0 , ..., q n-1 et les coefficients de p .
q n = - 1 / p 0 · (p 1 · q n-1 + ... + p n · q 0 )
C'est exactement ce qui est calculé dans l'expression
sum[p!!i*p%(n-i)|i<-[1..n]]/head p
, avechead p
le coefficient dominant p 0 . Le coefficient initial q 0 = 1 / p 0 est traité arithmétiquement dans la même expression en utilisant0^n
comme indicateur pourn==0
.la source
J, 12 octets
Utilise l'adverbe
t.
qui prend un polynômep
sous la forme d'un verbe sur le LHS et un entier non négatifk
sur le RHS et calcule lek
e coefficient de la série de Taylor dep
atx = 0
. Afin d'obtenir la série de puissance, l'inverse dep
est pris avant de l'appliquer.Essayez-le en ligne!
la source
Érable,
5826 octetsIl s'agit d'une fonction sans nom qui accepte un polynôme
x
et un entierN
.EDIT: Je viens de remarquer qu'il y a une fonction intégrée:
la source
MATL , 19 octets
Traduction de la grande réponse Matlab de @ flawr .
Essayez-le en ligne!
Comment ça marche
la source
JavaScript (ES6), 57 octets
Réponse de Haskell de @ xnor. À l'origine, j'ai essayé une version itérative, mais elle s'est avérée être de 98 octets, mais elle sera beaucoup plus rapide pour les grands N, car je mémorise efficacement les appels récursifs:
n+1
des termes sont requis, qui sont enregistrés dans le tableaur
. Il s'agit initialement de zéros qui permettent de réduire simultanément l'ensemble du tableaur
, car les zéros n'affecteront pas le résultat. Le dernier coefficient calculé est le résultat final.la source
PARI / GP,
3127 octetsla source