গল্ফ দ্য সিকোয়েন্স যার এক্সপেনশনাল জেনারেটিং ফাংশনটি স্পর্শকাতর


15

প্রায় প্রতিটি ফাংশন অসীম শর্তাবলী দিয়ে বহুপদী হিসাবে প্রকাশ করা যেতে পারে।

উদাহরণ স্বরূপ, e^x = 1 + x + x^2/2! + x^3/3! + x^4/4! + ...

উদাহরণ স্বরূপ, sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ...

এর কোফিসিয়েন্টস n-th পদ একটি অনুক্রম গঠন, এবং সংশ্লিষ্ট ফাংশন বলা হয় জেনারেট ফাংশন ক্রম।

এর কোফিসিয়েন্টস n-th পদ একটি অনুক্রম গঠন করে।

প্রায়শই, nতৃতীয় পদটির একটি ডিনোমিনেটর থাকে n!। অতএব, আমরা n!অন্য ক্রমটি পাওয়ার জন্য সহগকে গুণিত করি , যার এক্সপেনসিয়াল জেনারেটিং ফাংশনটি মূল ফাংশন হবে।

উদাহরণস্বরূপ, ক্রম যার সূচকীয় জেনারেট ফাংশন হয় e^xহবে 1,1,1,1,...

উদাহরণস্বরূপ, ক্রম যার সূচকীয় জেনারেট ফাংশন হয় sin(x)হবে 0,1,0,-1,0,1,0,-1,...

কার্য

আপনার টাস্ক খুঁজে পেতে nক্রম যার এর -th মেয়াদ সূচকীয় জেনারেট ফাংশন হয় tan(x)

Testcases

n result
0 0
1 1
2 0
3 2
4 0
5 16
6 0
7 272
8 0
9 7936
10 0
11 353792
12 0
13 22368256
14 0
15 1903757312
16 0
17 209865342976
18 0
19 29088885112832
20 0
21 4951498053124096
22 0
23 1015423886506852352
24 0
25 246921480190207983616
26 0

( এখান থেকে অনুলিপি করা হয়েছে ।) (সতর্কতা: 0-দ্বিতীয় শব্দটি আলাদা)

উদাহরণ বাস্তবায়ন

# copied from https://github.com/Mego/Seriously/blob/v2.0/SeriouslyCommands.py#L16
def memoized(f):
    memo = {}
    def m_fun(*args):
        if args in memo:
            return memo[args]
        else:
            res = f(*args)
            memo[args] = res
            return res
    return m_fun

# copied from https://github.com/Mego/Seriously/blob/v2.0/SeriouslyCommands.py#L169
@memoized
def binomial(n,r):
    if r > n:
        return 0
    elif r==n:
        return 1
    res = 1
    i = 1
    while i<=r:
        res *= (n+1-i)
        res /= i
        i+=1
    return int(res)

# 2*u(n+1) = Sum_{k=0..n} binomial(n, k)*u(k)*u(n-k)
# from A000111
@memoized
def u(n):
    if n<0: return 0
    if n==0: return 1
    if n==1: return 1
    return sum([binomial(n-1,k)*u(k)*u(n-1-k) for k in range(n)])//2     

def t(n):
    if n%2 == 0: return 0
    return u(n)

print('\n'.join([str(x) + ' ' + str(t(x)) for x in range(26)]))

আইডিয়ন!

তথ্যসূত্র


4
আপনি ফাংশন উৎপাদিত ও গণিত মধ্যে তাদের ব্যবহার, বিশেষ করে সংযুক্তকারিতা এবং numbertheory আমি অত্যন্ত এই "বিখ্যাত" পাঠ্যপুস্তক সুপারিশ সম্পর্কে আরো জানতে চান generatingfunctionology এইচ উইলফ দ্বারা।
flawr

5
(প্রতিরোধ করতে পারে না): আক্ষরিক অর্থে নেওয়া, আপনার প্রথম বাক্যটি অত্যন্ত মিথ্যা!
ফ্লাউন্ডারিয়ার

আপনার পিছনে পিছনে "জেনারেটিং ফাংশন" এবং "এক্সফোনেনশিয়াল জেনারেটিং ফাংশন" এর অর্থ রয়েছে। \ \ sin (x) ক্রম 0,1,0, -1,0,1,0, -1,0, ... এর ক্রিয়াকলাপ উত্পন্ন ফাংশন - এটি ক্রমটি ঘনিষ্ঠভাবে উত্পন্ন ফাংশন নয় $ \ sin (x) $ এর $ আপনি আমাদের যা করতে বলছেন তা হ'ল on \ ট্যান (এক্স) by দ্বারা তাত্ক্ষণিকভাবে উত্পাদিত ক্রমটি কোড করা $
গ্লেন ও

দেখতে দেখতে সুন্দর লাগছে, "এটিকে সেই ফাংশনের জেনারেটিং ফাংশনও বলা হয় the সংশ্লিষ্ট ফাংশনটিকে বলা হয় ক্রমের জেনারেটিং ফাংশন "।
গ্লেন ও

@ গ্লেনো সম্পাদিত
ফাঁস নুন

উত্তর:


8

সিজেএম ( 33 32 27 26 23 20 বাইট)

2,{ee::*_(@+.+}ri*0=

অনলাইন ডেমো

ব্যবচ্ছেদ

এটি মূলত xnor দ্বারা বর্ণিত পুনরাবৃত্তিটি প্রয়োগ করে ।

2,        e# [0 1] represents the base case f(0,j) = j==1
{         e# Loop...
  ee::*   e#   Multiply each array element by its index
  _(@+.+  e#   Sum the array shifted left and the array shifted right
}ri*      e# ... n times
0=        e# Evaluate at j=0

অথবা 23 বাইটের জন্য বরং ভিন্ন পদ্ধতির সাথে:

ri_1&a{{1$+}*]W%0+}@*0=

অনলাইন ডেমো । ডেনিসকে 3 বাইটের জন্য ধন্যবাদ

ব্যবচ্ছেদ

1a         e# Push [1]
{          e# Repeat...
  {1$+}*]  e#   Compute array of partial sums
  W%0+     e#   Reverse and append 0
}qi:A*     e# ... A times, where A is the input value
0=A1&*     e# Result is first element if A odd, and 0 otherwise

বা 29 টি বাইটের জন্য খুব আলাদা পদ্ধতির সাথে:

qie!Ma-{W\+W+3ew{_$.=1=},!},,

অনলাইন ডেমো

দুর্ভাগ্যক্রমে ইনপুট জন্য একটি বিশেষ ক্ষেত্রে প্রয়োজন 0

ব্যবচ্ছেদ

qi            e# Take an integer n from stdin
e!            e#   Compute all permutations of [0 ... n-1]
Ma-           e#   Special-case n=0
{             e#   Filter...
  W\+W+       e#     Prepend and postpend -1
  3ew         e#     Take slices of 3 consecutive elements
  {           e#     Filter...
    _$.=1=    e#       Test whether the middle element is the second largest
  },!         e#     ... and require no matches
},,           e#   ... and count

আপনি "ডব্লিউটিএফ? ভাবছেন?! তিনি ভুল প্রশ্নের উত্তর দিচ্ছেন।" যদি তা হয় তবে এটি বোধগম্য, তবে উভয় পদ্ধতিরই সত্যিকারের সঠিক ফলাফল দেয়


যদি ওটি সহায়তা করে, টিআইওতে রাতের বেলা বিল্ডিং একটি খালি অ্যারে প্রদান করে [WW]3ew
ডেনিস

@ ডেনিস, ধন্যবাদ যাইহোক, এটি দেখা যাচ্ছে যে 0যাই হোক না কেন এটি একটি বিশেষ ক্ষেত্রে হওয়া প্রয়োজন, কারণ এটি মূল্যায়ন করে 1
পিটার টেলর

1
একজন কেবল তখনই ভাবেন যে আপনি যদি আমার লিঙ্কগুলিতে ক্লিক না করেন তবে আপনি ভুল প্রশ্নের জবাব দিচ্ছেন।
ফাঁস নুন

ri_1&a{{1$+}*]W%0+}@*0=3 বাইট সঞ্চয়
ডেনিস

2
@ ল্যাকিয়ুন, তাই সবাই তখন থাকুক। আমি লিঙ্কগুলির তালিকা এবং টিএল; ড।
পিটার টেলর

7

জুলিয়া, 40 38 32 বাইট

!n=2(2*4^n-2^n-0^n)abs(zeta(-n))

ইনপুট এবং আউটপুট BigFloatগুলি আকারে ।এটি অনলাইন চেষ্টা করুন!

পটভূমি

স্পর্শকাতর ক্রিয়াকলাপের ম্যাক্লাউরিন সিরিজটি পরিচয়টিকে সন্তুষ্ট করে

যখনই এক্স এর অভিমুখে ব্যাসার্ধের মধ্যে থাকে, যেখানে বি এন একটি বার্নোল্লি সংখ্যা।

যেহেতু বি 2 (এন + 1) এবং (-1) এন এর একই চিহ্ন রয়েছে, বি 2 এন + 1 = 0 যদি এন> 0 এবং বি 1 = 1/2 হয় , আমরা নীচের মত উপরের পুনর্লিখন করতে পারি।

তদ্ব্যতীত, যখনই এন একটি অ-নেতিবাচক পূর্ণসংখ্যা হয়, তখন আমাদের থাকে

যেখানে R রিমন জেটা ফাংশন বোঝায় ।

এটি থেকে, সম্মেলন 0 সহ 0 = 1এটি অনুসরণ করে

সূত্র যা বাস্তবায়ন ব্যবহার করে।


6

পাইথন, 57 বাইট

f=lambda i,j=0:~-j*f(i-1,j-1)-~j*f(i-1,j+1)if i else j==1

কম গল্ফড:

f=lambda i,j=0:j==1 if i==0 else (j-1)*f(i-1,j-1)+(j+1)*f(i-1,j+1)

iট্যানজেন্ট ফাংশন iসময়কে আলাদা করে এবং মূল্যায়নের মাধ্যমে আমরা এক্সফোনেনশিয়াল জেনারিং ফাংশনটির তম সহগকে গণনা করতে পারি0 । প্রতিটি ডেরাইভেটিভ হ'ল একটি বহুপদী tan(x), এবং 0 এর মান এটির ধ্রুবক শব্দ।

আমরা যাও recursively সহগ প্রকাশ tan(x)**jমধ্যে iএর ম ব্যুৎপন্ন tanফাংশনf(i,j) । পুনরাবৃত্ত প্রকাশ প্রকাশ থেকে আসে tan(x)' = 1 + tan(x)**2

সুতরাং, এর ডেরাইভেটিভ tan(x)**jহয়

j*tan(x)**(j-1)*(tan(x)**2+1), or equivalently
j*tan(x)**(j+1) + j*tan(x)**(j-1)

সুতরাং, এর অবদানকারী tan(x)**jমধ্যে iতম ব্যুৎপন্ন হয় tan(x)**(j-1)এবং tan(x)**(j+1)এর মধ্যে (i-1)St ব্যুৎপন্ন, সহগ সঙ্গে প্রতিটি ক্ষমতা সমান। এটি পুনরাবৃত্তিমূলক অভিব্যক্তি দেয়

f(i,j) = (j-1)*f(i-1,j-1) + (j+1)*f(i-1,j+1)

নোট করুন যে আমাদের নেতিবাচক উদ্ঘাটনগুলি বাদ দেওয়ার দরকার নেই jকারণ তারা যাইহোক শূন্যের মূল্যায়ন করে এবং অবদান রাখে না কারণ ক্রসিংয়ের j=0একটি গুণক দেয় 0

এর বেস i==0কেসটি tan(x)নিজের সাথে j==1এবং অন্যথায় শূন্য সহগের সাথে মিলে যায় । চূড়ান্ত মূল্যায়ন স্থির মেয়াদে ঘটে j=0, যা একটি ডিফল্ট মান হিসাবে রাখা হয়।


সিজেমে 20 বাইটে এই পোর্টগুলি। আমি যদি আমার প্রাথমিক উত্তরটি তৈরি করি তবে আপনি কি আপত্তি করছেন বা আপনি এটি বন্দর এবং পোস্ট করতে চান?
পিটার টেলর

আপনার এটি পোস্ট করা উচিত, আমি সিজেম জানি না।
xnor

4

গণিত, 20 বাইট

Tan@x~D~{x,#}/.x->0&

সোজা-এগিয়ে পদ্ধতির। ট্যান (এক্স) এর n তম ব্যয়ের গণনা করুন এবং এটি x = 0 এ মূল্যায়ন করুন ।

ব্যবহার

উদাহরণ


3

হাস্কেল, 48 বাইট

0%1=1
0%_=0
i%j=sum[k*(i-1)%k|k<-[j+1,j-1]]
(%0)

iট্যানজেন্ট ফাংশন iসময়কে আলাদা করে এবং এটিকে নির্ধারণ করে আমরা এক্সফোনেনশিয়াল জেনারেটিং ফাংশনের তম সহগকে গণনা করতে পারি 0। প্রতিটি ডেরাইভেটিভ হ'ল একটি বহুপদী tan(x), এবং 0 এর মান এটির ধ্রুবক শব্দ।

আমরা যাও recursively সহগ প্রকাশ tan(x)^jমধ্যে iএর ম ব্যুৎপন্ন tanফাংশনi%j । পুনরাবৃত্ত প্রকাশ প্রকাশ থেকে আসে tan(x)' = 1 + tan(x)^2

সুতরাং, এর ডেরাইভেটিভ tan(x)^jহয়

j*tan(x)^(j-1)*(tan(x)^2+1), or equivalently
j*tan(x)^(j+1) + j*tan(x)^(j-1)

সুতরাং, এর অবদানকারী tan(x)^jমধ্যে iতম ব্যুৎপন্ন হয় tan(x)^(j-1)এবং tan(x)^(j+1)এর মধ্যে (i-1)St ব্যুৎপন্ন, সহগ সঙ্গে প্রতিটি ক্ষমতা সমান।


3

জেলি , 12 11 বাইট

Ṛ+\;S
ḂÇ⁸¡Ḣ

পিটার টেলরের সিজে্যাম উত্তরের মতো , এটি ইউরারের আপ / ডাউন সিকোয়েন্সের n ম পদটি গণনা করে যদি n বিজোড় এবং বিশেষ ক্ষেত্রে এমনকি n হিসাবে 0 হয়

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

কিভাবে এটা কাজ করে

ḂÇ⁸¡Ḣ  Main link. Argument: n

Ḃ       Bit; yield n's parity.
 Ç⁸¡    Apply the helper link (Ç) n (⁸) times.
    Ḣ   Head; retrieve the first element of the resulting list.


Ṛ+\;S   Helper link. Argument: A (list or 1/0)

Ṛ       Cast A to list (if necessary) and reverse the result.
 +\     Take the cumulative sum.
   ;S   Append the sum of A.


2

জে, 15 13 বাইট

এখানে বিল্টিন রয়েছে t:যা ট্যান (এক্স) এর তাত্পর্যপূর্ণ উত্পন্ন ফাংশনের n সহগের গণনা করে ।

(1&o.%2&o.)t:

জেতে টেলর সিরিজের অ্যাডওয়াকগুলি স্মরণ করিয়ে দেওয়ার জন্য @ লিকি নুনকে ধন্যবাদ জানায় যা 2 বাইট সংরক্ষণ করেছে।

15 বাইট জন্য বিকল্প ।

3 :'(3&o.d.y)0'

আর একটি পদ্ধতি হ'ল ট্যান (এক্স) এর n তম ব্যয়ের গণনা করা এবং এটি x = 0 এ মূল্যায়ন করুন ।

দ্রষ্টব্য: জে , ডেরিভেটিভ ফাংশন দ্বারা ব্যবহৃত মেমরির পরিমাণ এনd. হিসাবে দ্রুত বৃদ্ধি পায় 10 পাস করার সাথে সাথে ।

ব্যবহার

   f =: (1&o.%2&o.)t:
   f 7
272
   (,.f"0) i. 11  NB. Additional commands are just for formatting the output
 0    0
 1    1
 2    0
 3    2
 4    0
 5   16
 6    0
 7  272
 8    0
 9 7936
10    0

ব্যাখ্যা

(1&o.%2&o.)t:  Input: n
(         )    Define a monad (one argument function), call the input y
 1&o.          Get the trig function sin(x) and call it on y
      2&o.     Get the trig function cos(x) and call it on y
     %         Divide sin(y) by cos(y) to get tan(y)
           t:  Get the nth coefficient of the exponential generating series
               for that function and return

3 :'(3&o.d.y)0'  Input: n
3 :'          '  Define a monad (one argument function) with input y
     3&o.        Get the trig function tan(x)
           y     The input n
         d.      Get the nth derivative of tan(x)
             0   Evaluate the nth derivative at x = 0 and return

2

জুলিয়া, 39 37 বাইট

!n=(spdiagm((0:n,1:n+1),(1,-1))^n)[2]

ডেনিসকে ধন্যবাদ 2 বাইট সংরক্ষণ করা।

সবচেয়ে সংক্ষিপ্ত জুলিয়া সমাধান নয় (ডেনিসের সমাধান দেখুন), তবে এইটি নির্ভুলভাবে ডেরিভেটিভ লজিক ব্যবহার করে করা হয়েছে ... ম্যাট্রিক্স আকারে।

মূলত, এটি সত্যটি ব্যবহার করে যে ট্যান (এক্স) এর ডেরাইভেটিভ 1 + ট্যান (এক্স) ^ 2 is সুতরাং যেহেতু টান (এক্স) এর কোনও পাওয়ারের ডাইরিভেটিভ, ত্যান (x) say কে বলুন, কে টান (এক্স) ^ (কে-1) ট্যান (এক্স) '= কে টান (এক্স) ^ (কে -1) + কে টান (x) ^ (কে + 1), আমরা প্রসার তৈরি করতে উপযুক্ত মান সহ একটি ম্যাট্রিক্সের উপর একটি সাধারণ ম্যাট্রিক্স শক্তি ব্যবহার করতে পারি, দ্বিতীয় সারি বা কলাম (নির্মাণের উপর নির্ভরশীল) ট্যানের ডেরিভেটিভগুলি ধরে রেখে ) নিজেই।

সুতরাং আমাদের কেবল ফলস্বরূপ প্রকাশের ধ্রুবকটি অনুসন্ধান করতে হবে এবং এটি সংশ্লিষ্ট সারি বা কলামের প্রথম মান।


!n=(spdiagm((0:n,1:n+1),(1,-1))^n)[2]কাজ করা উচিত.
ডেনিস

@ ডেনিস - দুর্দান্ত ক্যাচ বুঝতে পারিনি spdiagmযে এই স্টাইলটি নির্মাণের অনুমতি দেবে - এটি দিয়ে চেষ্টা করেছিলেন diagm, তবে অবশ্যই এটি কার্যকর হয়নি।
গ্লেন ও

2

জাভাস্ক্রিপ্ট (ES6), 127 45 বাইট

f=(n,m=0)=>n?++m*f(--n,m--)+--m*f(n,m):m-1?0:1

@ Xnor এর সমাধানগুলির পোর্ট।


0

হাস্কেল, 95 93 বাইট

p=product
f n=sum[(-1)^(n`div`2+j+1)*j^n*p[k-j+1..n+1]`div`p[1..n+1-k+j]|k<-[1..n],j<-[0..k]]

এটি মূলত কিছু ছোট অপ্টিমাইজেশন সহ সাধারণ সূত্রের একটি বাস্তবায়ন।


0

সিম্বলিক টুলবক্স, 84 বাইট সহ ম্যাটল্যাব

n=input('');syms x;c=coeffs(taylor(tan(x),'Order',n+1))*factorial(n);c(end)*mod(n,2)

উদাহরণ রান:

>> n=input('');syms x;c=coeffs(taylor(tan(x),'Order',n+1))*factorial(n);c(end)*mod(n,2)
7
ans =
272

>> n=input('');syms x;c=coeffs(taylor(tan(x),'Order',n+1))*factorial(n);c(end)*mod(n,2)
8
ans =
0

>> n=input('');syms x;c=coeffs(taylor(tan(x),'Order',n+1))*factorial(n);c(end)*mod(n,2)
9
ans =
7936

0

Haskell, (অনেক বেশি বাইট)

কেবল তালিকা এবং রেমন্ড মানজোনির ফলাফলগুলিতে অপারেশন ব্যবহার করে :

c n = last $ map numerator $ zipWith (*) (scanl (*) (1) [2,3..]) (intersperse 0 $ foldr (.) id (replicate n (\xs->(xs ++ [(1%(1+2*length xs)) * (sum (zipWith (*) xs (reverse xs)))]))) [1])

দুর্ভাগ্যক্রমে, এটি সাধারণ মানের nহিসাবে এটি উপচে পড়েছে কারণ এটি Intমানগুলি ব্যবহার করে । আমি Integerমানগুলি ব্যবহার করে সমস্যাটি সমাধান করার চেষ্টা করব । ততক্ষণ পর্যন্ত পরামর্শগুলি স্বাগত।


0

অ্যাক্সিয়োম, 46 বাইট

f(n:NNI):NNI==(n=0=>0;eval(D(tan(x),x,n),x=0))

পরীক্ষা এবং ফলাফলের জন্য কোড

(32) -> [[i, f(i)] for i in 0..26]
   (32)
   [[0,0], [1,1], [2,0], [3,2], [4,0], [5,16], [6,0], [7,272], [8,0], [9,7936],
    [10,0], [11,353792], [12,0], [13,22368256], [14,0], [15,1903757312],
    [16,0], [17,209865342976], [18,0], [19,29088885112832], [20,0],
    [21,4951498053124096], [22,0], [23,1015423886506852352], [24,0],
    [25,246921480190207983616], [26,0]]
                                       Type: List List NonNegativeInteger
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.