पावर सीरीज गुणांक की गणना करें


24

एक बहुपद को देखते हुए p(x)अभिन्न गुणांक के साथ और के एक निरंतर अवधि p(0) = 1 or -1, और ग़ैर-ऋणात्मक पूर्णांक N, लौट Nवें शक्ति seris के गुणांक (कभी कभी "टेलर श्रृंखला" कहा जाता है) के f(x) = 1/p(x)द्वारा विकसित x0 = 0, यानी, डिग्री के एकपद के गुणांक N

दी गई शर्तें यह सुनिश्चित करती हैं कि बिजली श्रृंखला मौजूद है और इसके गुणांक पूर्णांक हैं।

विवरण

हमेशा की तरह बहुपद को किसी भी सुविधाजनक प्रारूप में स्वीकार किया जा सकता है, उदाहरण के लिए गुणांक की एक सूची, उदाहरण के p(x) = x^3-2x+5लिए प्रतिनिधित्व किया जा सकता है [1,0,-2,5]

fपर विकसित एक समारोह की शक्तियों 0द्वारा दिया जाता है

और N-th गुणांक (गुणांक x^N) द्वारा दिया गया है

जहां से n-th व्युत्पन्न को दर्शाता हैf

उदाहरण

  • p(x) = 1-xज्यामितीय श्रृंखला में बहुपद परिणाम होता है f(x) = 1 + x + x^2 + ...इसलिए आउटपुट 1सभी के लिए होना चाहिए N

  • p(x) = (1-x)^2 = x^2 - 2x + 1ज्यामितीय श्रृंखला के व्युत्पन्न में परिणाम होता है f(x) = 1 + 2x + 3x^2 + 4x^3 + ..., इसलिए इसके लिए आउटपुट Nहै N+1

  • p(x) = 1 - x - x^2 फाइबोनैचि अनुक्रम के निर्माण कार्य में परिणाम f(x) = 1 + x + 2x^2 + 3x^3 + 5x^4 + 8x^5 + 13x^6 + ...

  • p(x) = 1 - x^21,0,1,0,...यानी के जनरेटिंग फंक्शन में परिणामf(x) = 1 + x^2 + x^4 + x^6 + ...

  • p(x) = (1 - x)^3 = 1 -3x + 3x^2 - x^3त्रिकोणीय संख्याओं के उत्पन्न होने वाले कार्य में परिणाम का f(x) = 1 + 3x + 6x^6 + 10x^3 + 15x^4 + 21x^5 + ...अर्थ है कि N-th गुणांक द्विपद गुणांक है(N+2, N)

  • p(x) = (x - 3)^2 + (x - 2)^3 = 1 + 6x - 5x^2 + x^3 का परिणाम f(x) = 1 - 6x + 41x^2 - 277x^3 + 1873x4 - 12664x^5 + 85626x^6 - 57849x^7 + ...


क्या यह बहुपद को शक्ति-श्रृंखला गुणांक की अनंत सूची के रूप में लेना स्वीकार्य होगा [1,-1,0,0,0,0,...]?
xnor

हां, मुझे लगता है कि यह एक स्वीकार्य प्रारूप है।
दोष

अच्छे उदाहरण चुने गए!
ग्रेग मार्टिन

मुझे खुशी है कि आप इसकी सराहना करते हैं, धन्यवाद =)
दोषपूर्ण

जवाबों:


9

गणितज्ञ, २४ २३ बाइट्स

ग्रेग मार्टिन को 1 बाइट धन्यवाद दिया

D[1/#2,{x,#}]/#!/.x->0&

दो तर्कों के साथ शुद्ध कार्य #और #2। बहुपद को #2संतुष्ट करता है PolynomialQ[#2,x]। बेशक इसमें एक बिल्ट-इन है:

SeriesCoefficient[1/#2,{x,0,#}]&

1
अच्छी तरह से निर्मित में पिटाई की! मुझे लगता है कि आप एक बाइट को यह मानकर बचा सकते हैं कि #पूर्णांक Nऔर #2बहुपद है।
ग्रेग मार्टिन

6

मतलाब, 81 79 75 बाइट्स

पिछले दो उत्तरों के विपरीत यह प्रतीकात्मक गणनाओं का उपयोग नहीं करता है। विचार यह है कि आप गुणांक की गणना कर सकते हैं:

function C=f(p,N);s=p(end);for k=1:N;q=conv(p,s);s=[-q(end-k),s];end;C=s(1)

इसे ऑनलाइन आज़माएं!

व्याख्या

function C=f(p,N);
s=p(end);            % get the first (constant coefficient)
for k=1:N;           
    q=conv(p,s);     % multiply the known coefficients with the polynomial
    s=[-q(end-k),s]; % determine the new coefficient to make the the product get "closer" 
end;
C=s(1)           % output the N-th coefficient

4

जप , 28 बाइट्स

Derivative[1/A1,B1]/B1!
f(0)

इनपुट क्रमशः एक बहुपद और एक पूर्णांक के स्प्रेडशीट कोशिकाओं A1 और B1 से लिया जाता है, और प्रत्येक पंक्ति को इनपुट बार में अलग से दर्ज किया जाता है। आउटपुट वेरिएबल को असाइनमेंट के माध्यम से होता है a

यहाँ एक gif निष्पादन दिखा रहा है:

टेलर गुणांक

48 बाइट्स में बिलिन का उपयोग करना अधिक लंबा होता है:

First[Coefficients[TaylorPolynomial[1/A1,0,B1]]]

4

हास्केल, 44 बाइट्स

p%n=(0^n-sum[p!!i*p%(n-i)|i<-[1..n]])/head p

बीजीय निर्मित बग के बिना एक प्रत्यक्ष गणना। इनपुट को बिजली श्रृंखला गुणांक की अनंत सूची के रूप में लेता है, जैसे p = [1,-2,3,0,0,0,0...](यानी p = [1,-2,3] ++ repeat 0) के लिए 1-2*x+x^2p%3जो जैसा है , उसे वैसा ही बुलाओ-4.0

विचार यह है कि यदि p एक बहुपद है और q = 1 / p है तो इसका उलटा है, तो हम समानता p · q = 1 शब्द-दर-शब्द व्यक्त कर सकते हैं । के गुणांक एक्स एन में पी · क्ष में गुणांकों के घुमाव के द्वारा दिया जाता है पी और क्यू :

p 0 · q n + p 1 · q n-1 + ... + p n · q 0

धारण करने के लिए p · q = 1 के लिए, उपरोक्त सभी n> 0 के लिए समान शून्य होना चाहिए । यहाँ के लिए, हम q 0 , ..., q n-1 और p के गुणांक के संदर्भ में q n को पुनरावर्ती रूप से व्यक्त कर सकते हैं ।

q n = - 1 / p 0 · (p 1 · q n-1 + ... + p n · q 0 )

यह वही है जो अभिव्यक्ति में गणना की जाती है sum[p!!i*p%(n-i)|i<-[1..n]]/head p, head pअग्रणी गुणांक पी 0 के साथ । प्रारंभिक गुणांक q 0 = 1 / p 00^n को एक संकेतक के रूप में उपयोग करके समान अभिव्यक्ति में अंकगणित किया जाता है n==0


3

जे, 12 बाइट्स

1 :'(1%u)t.'

उपयोग क्रिया विशेषण t.जो एक बहुपद लेता pएलएचएस और ग़ैर-ऋणात्मक पूर्णांक पर एक क्रिया के रूप में kआरएचएस पर और गणना करता kवीं की टेलर श्रृंखला के गुणांक pमें x = 0। बिजली श्रृंखला प्राप्त करने के लिए, pइसे लागू करने से पहले पारस्परिक रूप से लिया जाता है।

इसे ऑनलाइन आज़माएं!


2

मेपल, ५le 26 बाइट्स

यह एक अनाम फ़ंक्शन है जो एक बहुपद xऔर एक पूर्णांक को स्वीकार करता है N

संपादित करें: मैंने अभी देखा कि एक बिलिन है:

(p,N)->coeftayl(1/p,x=0,N)

1

MATL , 19 बाइट्स

0)i:"1GY+@_)_8Mh]1)

@ मल्लर के महान मतलाब जवाब का अनुवाद ।

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

0)      % Implicitly input vector of polynomial coefficients and get last entry
i       % Input N
:"      % For k in [1 2 ... N]
  1G    %   Push vector of polynomial coefficients
  Y+    %   Convolution, full size
  @     %   Push k
  _     %   Negate
  )     %   Index. This produces the end-k coefficient
  _     %   Negate
  8M    %   Push first input of the latest convolution
  h     %   Concatenate horizontally
]       % End
1)      % Get first entry. Implicitly display

1

जावास्क्रिप्ट (ईएस 6), 57 बाइट्स

(a,n)=>a.reduce((s,p,i)=>!i|i>n?s:s-p*f(a,n-i),!n)/a[0]

पोर्ट ऑफ @ xnor हैस्केल उत्तर। मैंने मूल रूप से पुनरावृत्त संस्करण की कोशिश की, लेकिन यह 98 बाइट्स निकला, हालांकि यह बड़े एन के लिए बहुत तेज़ होगा, क्योंकि मैं प्रभावी रूप से पुनरावर्ती कॉल को याद कर रहा हूं:

(a,n)=>[...Array(n+1)].fill(0).map((_,i,r)=>r[i]=r.reduce((s,p,j)=>s-p*(a[i-j]||0),!i)/a[0]).pop()

n+1शर्तों की आवश्यकता होती है, जो सरणी में सहेजी जाती हैं r। यह शुरू में शून्य है जो rएक बार में पूरे सरणी को कम करने की अनुमति देता है , क्योंकि शून्य परिणाम को प्रभावित नहीं करेगा। अंतिम गणना गुणांक अंतिम परिणाम है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.