Biorąc pod uwagę wielomian p(x)
ze współczynnikami całkowymi i stałym składnikiem p(0) = 1 or -1
oraz nieujemną liczbą całkowitą N
, zwraca N
-ty współczynnik szeregu potęgowego (czasami nazywany „szeregiem Taylora”) f(x) = 1/p(x)
opracowany przy x0 = 0
, tj. Współczynniku monomialu stopnia N
.
Podane warunki gwarantują istnienie szeregu mocy, a jego współczynniki są liczbami całkowitymi.
Detale
Jak zawsze wielomian można zaakceptować w dowolnym dogodnym formacie, np. Listę współczynników można na przykład p(x) = x^3-2x+5
przedstawić jako [1,0,-2,5]
.
Potęgi funkcji f
opracowanej 0
przez podano przez
a N
-ty współczynnik (współczynnik x^N
) jest określony przez
gdzie oznacza n
-tą pochodnąf
Przykłady
Wielomian
p(x) = 1-x
daje wynik w szeregu geometrycznym,f(x) = 1 + x + x^2 + ...
więc wynik powinien być1
dla wszystkichN
.p(x) = (1-x)^2 = x^2 - 2x + 1
daje pochodną szeregu geometrycznegof(x) = 1 + 2x + 3x^2 + 4x^3 + ...
, więc wynikiemN
jestN+1
.p(x) = 1 - x - x^2
skutkuje funkcją generowania sekwencji Fibonacciegof(x) = 1 + x + 2x^2 + 3x^3 + 5x^4 + 8x^5 + 13x^6 + ...
p(x) = 1 - x^2
skutkuje funkcją generującą1,0,1,0,...
tjf(x) = 1 + x^2 + x^4 + x^6 + ...
p(x) = (1 - x)^3 = 1 -3x + 3x^2 - x^3
skutkuje funkcją generowania liczb trójkątnych,f(x) = 1 + 3x + 6x^6 + 10x^3 + 15x^4 + 21x^5 + ...
co oznacza, żeN
-ty współczynnik jest współczynnikiem dwumianowym(N+2, N)
p(x) = (x - 3)^2 + (x - 2)^3 = 1 + 6x - 5x^2 + x^3
prowadzi dof(x) = 1 - 6x + 41x^2 - 277x^3 + 1873x4 - 12664x^5 + 85626x^6 - 57849x^7 + ...
źródło
[1,-1,0,0,0,0,...]
?Odpowiedzi:
Mathematica,
2423 bajtyZaoszczędzono 1 bajt dzięki Gregowi Martinowi
Czysta funkcja z dwoma argumentami
#
i#2
. Zakłada, że wielomian#2
spełniaPolynomialQ[#2,x]
. Oczywiście jest do tego wbudowana:źródło
#
jest on liczbą całkowitąN
i#2
jest wielomianem.Matlab,
81 7975 bajtówW przeciwieństwie do dwóch poprzednich odpowiedzi nie korzysta z obliczeń symbolicznych. Chodzi o to, że można iteracyjnie obliczyć współczynniki:
Wypróbuj online!
Wyjaśnienie
źródło
GeoGebra , 28 bajtów
Dane wejściowe są pobierane z komórek arkusza kalkulacyjnego A1 i B1 odpowiednio wielomianu i liczby całkowitej, a każda linia jest wprowadzana osobno w pasku wprowadzania. Wyjście odbywa się poprzez przypisanie do zmiennej
a
.Oto gif przedstawiający wykonanie:
Korzystanie z wbudowanych jest znacznie dłuższe i wynosi 48 bajtów:
źródło
Haskell, 44 bajty
Bezpośrednie obliczenia bez wbudowanych algorytmów algebraicznych. Pobiera dane wejściowe jako nieskończoną listę współczynników szeregu mocy, takich jak
p = [1,-2,3,0,0,0,0...]
(tj.p = [1,-2,3] ++ repeat 0
) Dla1-2*x+x^2
. Nazwij to jakp%3
, co daje-4.0
.Chodzi o to, że jeśli p jest wielomianem, a q = 1 / p jest odwrotne, to możemy wyrazić równość p · q = 1 termin po terminie. Współczynnik x n w p · Q jest przez splot tych współczynników p i q :
p 0 · q n + p 1 · q n-1 + ... + p n · q 0
Aby p · q = 1 utrzymało się, powyższe musi być równe zero dla wszystkich n> 0 . W tym przypadku możemy wyrazić q n rekurencyjnie w kategoriach q 0 , ..., q n-1 i współczynników p .
q n = - 1 / p 0 · (p 1 · q n-1 + ... + p n · q 0 )
To jest dokładnie to, co obliczono w wyrażeniu
sum[p!!i*p%(n-i)|i<-[1..n]]/head p
, zhead p
wiodącym współczynnikiem p 0 . Początkowy współczynnik q 0 = 1 / p 0 jest traktowany arytmetycznie w tym samym wyrażeniu przy użyciu0^n
jako wskaźnika dlan==0
.źródło
J, 12 bajtów
Wykorzystuje przysłówek,
t.
który przyjmuje wielomianp
w postaci czasownika na LHS i nieujemną liczbę całkowitąk
na RHS, i oblicza współczynnikk
th z serii Taylorap
nax = 0
. Aby uzyskać serię mocy, należy zastosować odwrotnośćp
przed zastosowaniem.Wypróbuj online!
źródło
Klon,
5826 bajtówJest to funkcja bez nazwy, która akceptuje wielomian w
x
i liczbę całkowitąN
.EDYCJA: Właśnie zauważyłem, że jest wbudowany:
źródło
MATL , 19 bajtów
Tłumaczenie świetnej odpowiedzi Matlaba na @ flawr .
Wypróbuj online!
Jak to działa
źródło
JavaScript (ES6), 57 bajtów
Port odpowiedzi Haskell @ xnora. Początkowo próbowałem wersji iteracyjnej, ale okazało się, że ma 98 bajtów, jednak dla dużych liczb N będzie znacznie szybsza, ponieważ skutecznie zapamiętywam rekurencyjne wywołania:
n+1
warunki są wymagane, które są zapisywane w tablicyr
. Początkowo są to zera, co pozwala na zmniejszenie całej tablicyr
jednocześnie, ponieważ zera nie wpłyną na wynik. Ostatni obliczony współczynnik to wynik końcowy.źródło
PARI / GP,
3127 bajtówźródło