Diberikan polinomial p(x)
dengan koefisien integral dan istilah konstan p(0) = 1 or -1
, dan bilangan bulat non-negatif N
, kembalikan N
koefisien ke-20 dari seris daya (kadang-kadang disebut "deret Taylor") f(x) = 1/p(x)
dikembangkan pada x0 = 0
, yaitu koefisien monomial derajat N
.
Kondisi yang diberikan memastikan bahwa seri daya ada dan bahwa koefisiennya adalah bilangan bulat.
Detail
Seperti biasa, polinom dapat diterima dalam format apa pun yang nyaman, misalnya daftar koefisien, misalnya p(x) = x^3-2x+5
dapat direpresentasikan sebagai [1,0,-2,5]
.
Powereries dari fungsi yang f
dikembangkan di 0
diberikan oleh
dan N
koefisien -th (koefisien x^N
) diberikan oleh
di mana menunjukkan n
turunan ke-10 darif
Contohnya
Hasil polinomial
p(x) = 1-x
dalam deret geometrif(x) = 1 + x + x^2 + ...
sehingga output harus1
untuk semuaN
.p(x) = (1-x)^2 = x^2 - 2x + 1
menghasilkan turunan dari deret geometrif(x) = 1 + 2x + 3x^2 + 4x^3 + ...
, sehingga output untukN
adalahN+1
.p(x) = 1 - x - x^2
menghasilkan fungsi penghasil urutan Fibonaccif(x) = 1 + x + 2x^2 + 3x^3 + 5x^4 + 8x^5 + 13x^6 + ...
p(x) = 1 - x^2
menghasilkan fungsi menghasilkan1,0,1,0,...
yaituf(x) = 1 + x^2 + x^4 + x^6 + ...
p(x) = (1 - x)^3 = 1 -3x + 3x^2 - x^3
menghasilkan fungsi menghasilkan angka segitigaf(x) = 1 + 3x + 6x^6 + 10x^3 + 15x^4 + 21x^5 + ...
yang berartiN
koefisien -th adalah koefisien binomial(N+2, N)
p(x) = (x - 3)^2 + (x - 2)^3 = 1 + 6x - 5x^2 + x^3
hasil dalamf(x) = 1 - 6x + 41x^2 - 277x^3 + 1873x4 - 12664x^5 + 85626x^6 - 57849x^7 + ...
sumber
[1,-1,0,0,0,0,...]
?Jawaban:
Mathematica,
2423 byteDisimpan 1 byte berkat Greg Martin
Fungsi murni dengan dua argumen
#
dan#2
. Diasumsikan polinom#2
memenuhiPolynomialQ[#2,x]
. Tentu saja ada built-in untuk ini:sumber
#
adalah bilangan bulatN
dan#2
polinomial.Matlab,
81 7975 byteBerbeda dengan dua jawaban sebelumnya, ini tidak menggunakan perhitungan simbolik. Idenya adalah Anda dapat menghitung koefisien secara iteratif:
Cobalah online!
Penjelasan
sumber
GeoGebra , 28 byte
Input diambil dari sel spreadsheet A1 dan B1 masing-masing dari polinomial dan integer, dan setiap baris dimasukkan secara terpisah ke dalam bilah input. Output adalah melalui penugasan ke variabel
a
.Berikut adalah gif yang menunjukkan eksekusi:
Menggunakan builtin jauh lebih lama, pada 48 byte:
sumber
Haskell, 44 byte
Perhitungan langsung tanpa built-in aljabar. Mengambil input sebagai daftar koefisien deret daya tak terbatas, seperti
p = [1,-2,3,0,0,0,0...]
(yaitup = [1,-2,3] ++ repeat 0
) untuk1-2*x+x^2
. Sebut saja sepertip%3
, yang memberi-4.0
.Idenya adalah jika p adalah polinomial dan q = 1 / p itu terbalik, maka kita dapat mengekspresikan kesetaraan p · q = 1 istilah per kata. Koefisien x n dalam p · q diberikan oleh konvolusi koefisien dalam p dan q :
p 0 · q n + p 1 · q n-1 + ... + p n · q 0
Agar p · q = 1 bertahan, di atas harus sama dengan nol untuk semua n> 0 . Untuk di sini, kita dapat mengekspresikan q n secara rekursif dalam hal q 0 , ..., q n-1 dan koefisien p .
q n = - 1 / p 0 · (p 1 · q n-1 + ... + p n · q 0 )
Ini persis apa yang dihitung dalam ekspresi
sum[p!!i*p%(n-i)|i<-[1..n]]/head p
, denganhead p
koefisien terkemuka p 0 . Koefisien awal q 0 = 1 / p 0 ditangani secara hitung dalam ekspresi yang sama menggunakan0^n
sebagai indikator untukn==0
.sumber
J, 12 byte
Menggunakan kata keterangan
t.
yang mengambil polinomialp
dalam bentuk kata kerja pada LHS dan bilangan bulat negatifk
pada RHS dan menghitung koefisienk
th dari seri Taylorp
atx = 0
. Untuk mendapatkan seri daya, timbal balikp
diambil sebelum menerapkannya.Cobalah online!
sumber
Maple,
5826 byteIni adalah fungsi tanpa nama yang menerima polinomial dalam
x
dan bilangan bulatN
.EDIT: Saya baru memperhatikan bahwa ada builtin:
sumber
MATL , 19 byte
Terjemahan dari jawaban Matlab @ flawr yang luar biasa .
Cobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6), 57 byte
Port of @ xnor's jawaban Haskell. Saya awalnya mencoba versi berulang tetapi ternyata menjadi 98 byte, namun akan jauh lebih cepat untuk N besar, karena saya secara efektif memoising panggilan rekursif:
n+1
persyaratan diperlukan, yang disimpan dalam arrayr
. Ini awalnya nol yang memungkinkan pengurangan seluruh arrayr
sekaligus, karena nol tidak akan mempengaruhi hasilnya. Koefisien perhitungan terakhir adalah hasil akhir.sumber
PARI / GP,
3127 bytesumber