যৌক্তিক উত্পন্ন ফাংশনের সহগ খুঁজে বের করুন


12

যদি আমরা একটি পাওয়ার সিরিজের সহগ হিসাবে সংখ্যার ক্রম লিখি, তবে সেই পাওয়ার সিরিজটিকে সেই অনুক্রমের (সাধারণ) উত্পন্ন ফাংশন (বা জিএফ) বলা হয়। এটি হ'ল যদি কিছু ফাংশন F(x)এবং সিরিজের পূর্ণসংখ্যার জন্য a(n)আমাদের কাছে থাকে:

a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x)

তারপরে F(x)হ'ল জেনারেটিং ফাংশন a। উদাহরণস্বরূপ, জ্যামিতিক সিরিজ আমাদের জানায় যে:

1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x)

সুতরাং উত্পাদক ফাংশন 1, 1, 1, ...হয় 1/(1-x)। যদি আমরা উপরের সমীকরণের উভয় দিককে পৃথক করি এবং xআমরা নীচের সাম্যতাটি পাই:

x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2

সুতরাং উত্পাদক ফাংশন 1, 2, 3, ...হয় x/(1-x)^2। উত্পন্ন ফাংশন একটি খুব শক্তিশালী সরঞ্জাম, এবং আপনি তাদের সাথে অনেক দরকারী জিনিস করতে পারেন। একটি সংক্ষিপ্ত ভূমিকা এখানে পাওয়া যাবে , কিন্তু একটি সত্যই বিশদ ব্যাখ্যা জন্য সেখানে আশ্চর্যজনক বই উত্পন্নকরণের কাজ আছে।


এই চ্যালেঞ্জটিতে আপনি একটি যুক্তিযুক্ত ফাংশন (পূর্ণসংখ্যার সহগ সহ দুটি বহুভুজের ভাগফল) ইনপুট হিসাবে দুটি পূর্ণসংখ্যার গুণফলের অ্যারে হিসাবে ইনপুট হিসাবে গ্রহণ করবেন, প্রথমে সংখ্যার পরে ডিনোমিনেটর। উদাহরণস্বরূপ ফাংশনটি ইনপুট f(x) = x / (1 - x - x^2)হিসাবে এনকোড করা হবে [0, 1], [1, -1, -1]

এই ইনপুটটি দেওয়া আপনার প্রোগ্রামটিকে অবশ্যই অসম্পূর্ণভাবে পাওয়ার সিরিজের সহগগুলি মুদ্রণ করতে হবে যা জেনারেটিং ফাংশনের সমান, প্রতি লাইনে একটি করে x, তারপর x^2, এর সহগ থেকে শুরু হবে etc.


উদাহরণ:

[1], [1, -1] -> 1, 1, 1, 1, 1, 1, 1, ...
[1], [2, -2] -> 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ...
[0, 1], [1, -2, 1] -> 1, 2, 3, 4, 5, 6, 7, 8, ...
[0, 1], [1, -1, -1] -> 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
[1], [1, -2] -> 1, 2, 4, 8, 16, 32, 64, 128, ...
[0, 1, 1], [1, -3, 3, -1] -> 1, 4, 9, 16, 25, 36, ...

ক্র্যাপ, আমার ভাষাটি এই সিকোয়েন্সগুলির জন্য নির্মিত হয়েছে, তবে আমি সত্যিই বহুমাত্রিক অ্যারে ইনপুটটি করতে পারি না :(
স্টিফেন

2
আমি এই গণিতের পক্ষে যথেষ্ট পরিমাণে গণিত-চিন্তাভাবনা করছি না, সাধারণ লোকের জন্য আপনি কোনও সাধারণ ব্যক্তির ব্যাখ্যা পোস্ট করতে পারেন এমন কোনও সুযোগ?
স্কিডদেব


1
@ ট্রাইকোপ্লেক্স সর্বদা সংখ্যককে 1 হতে বাধ্য করে, যা একই নয়। উদাহরণস্বরূপ এটি আমার শেষ উদাহরণটি স্কোয়ারগুলি প্রকাশ করতে পারে না।
orlp

1
এটিকে বাক্য গঠনের বিকল্প উপায় হ'ল এটি একটি সাধারণ লিনিয়ার পুনরুদ্ধারের মূল্যায়ন করে। এইভাবে এটি এই প্রশ্নটিকে সাধারণীকরণ করে এবং ভবিষ্যতের পুনরাবৃত্তির প্রশ্নগুলির জন্য এটি দ্বীপের লক্ষ্য হিসাবে কাজ করে।
পিটার টেলর

উত্তর:


7

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

z=0:z
(a:b)%y@(c:d)=a/c:zipWith(-)(b++z)(map(a/c*)d++z)%y
_%_=z

এটি অনলাইন চেষ্টা করুন!

%সহগের অসীম অলস তালিকায় ফিরে আসা কোনও অপারেটরকে সংজ্ঞায়িত করে । তালিকাটি শূন্য-সূচকযুক্ত, তাই ধ্রুবক সহগ অন্তর্ভুক্ত করা হয়।


3

গণিত, 64 83 90 বাইট

Do[Echo@Limit[D[#/#2/i!&@@Fold[x#+#2&]/@#,{x,i}],x->0],{i,∞}‌​]&

@ জেঞ্জিসিস এবং @ জেনি_ম্যাথিকে ধন্যবাদ!

দুটি তালিকা হিসাবে ইনপুট নিন।

দরকার Alt+.সঞ্চালনের বিনষ্ট ফলাফল দেখতে। দ্রুত আউটপুটের কারণে সম্মুখভাগ ক্র্যাশ হতে পারে।

83 বাইট সংস্করণ (@ জেনি_মথি):

i=1;v=Tr[#*x^Range@Length@#]&;While[1<2,Echo@Limit[D[v@#/v@#2/i!,{x,i}],x->0];i++]&

83 বাইট: i = 1; v = Tr [# * x ^ ব্যাপ্তি @ দৈর্ঘ্য @ #] &; [1 <2, ইকো @ সীমা [ডি [ভি @ # / ভি @ # 2 / আই !, {এক্স, আই}], এক্স -> 0]; আমি ++] এবং
জে 212161217

@ জেনি_মথি বিরক্ত করার জন্য দুঃখিত আমি এটিকে বুঝতে পারি যে আপনার প্রথম মন্তব্যে কিছু জাঙ্ক অদৃশ্য ইউনিকোড অক্ষর রয়েছে। একবার পরিষ্কার হয়ে গেলে কোডটি ঠিক আছে।
কিয়ু গান

3
64বাইট: Do[Echo@Limit[D[#/#2/i!&@@Fold[x#+#2&]/@#,{x,i}],x->0],{i,∞}]&। এটি অনুমান করে যে ইনপুটটি দুটি তালিকার একটি তালিকা এবং সহগগণের উত্থানের ডিগ্রির ক্রম। শুধুমাত্র বিল্ট-ইন আমি কি করতে জানি vনেইInternal`FromCoefficientList
ngenisis

এই বার বার চালানো কি কাজ করে? আমি মনে করি iল্যাম্বডায় extraুকানোর জন্য বেশ কয়েকটি অতিরিক্ত বন্ধনী প্রয়োজন হতে পারে । (অন্যদিকে, আমি যখন অসীম তালিকার মুদ্রণ করা লক্ষ্য করি তখন বারবার চালনার ক্ষমতা প্রাসঙ্গিক হয় কিনা তা আমি সত্যিই নিশ্চিত নই ... এতে কি কোনও মেটা
জুলিয়ান ওল্ফ

@ এনজেনিসিস: আপনি কোন সংস্করণ ব্যবহার করছেন? V10.0 এ, আপনার সমাধান আমাকে দেয় Iterator {i,∞} does not have appropriate bounds
জুলিয়ান ওল্ফ

1

সিজেএম (22 বাইট)

{\{(W$(@\/_pW*f*.+1}g}

অনলাইন ডেমো । মনে রাখবেন যে বিদ্যমান অনেকগুলি উত্তর, এর মধ্যে আউটপুটে 0 তম সহগ রয়েছে।

ব্যবচ্ছেদ

{           e# Define a block which takes numerator N and denominator D as arguments
  \         e# Flip to put D at the bottom, since that won't change
  {         e# Infinite loop:
    (       e#   Pop the first element of (the modified) N
    W$(     e#   Copy D and pop its first element
            e#   Stack: D N[1:] N[0] D[1:] D[0]
    @\/     e#   Bring N[0] to top, flip, divide
            e#   Stack: D N[1:] D[1:] N[0]/D[0]
    _p      e#   Print a copy
    W*f*.+  e#   Multiply by -1, multiply all, pointwise add
            e#   Stack: D N[1:]-(N[0]/D[0])*D[1:]
  1}g
}

0

গণিত, 86 79 বাইট

f=x^Range@Length@#.#&;For[n=1,8>3,Print@SeriesCoefficient[f@#/f@#2,{x,0,n++}]]&

দুটি পৃথক তালিকা (সংখ্যার সহগ, ডিনোমিনেটর সহগ) হিসাবে ইনপুট নেয়। যদি ইনপুটটি সহগের তালিকাগুলির পরিবর্তে বহুবচনগুলির একটি ভগ্নাংশ হিসাবে সরাসরি নেওয়া যায়, তবে এটি উল্লেখযোগ্যভাবে সংক্ষিপ্ত করা যেতে পারে।

দেখে মনে হচ্ছে Dov11 এ অসীম সীমানা নিয়ে কাজ করতে পারে। আমি স্থানীয়ভাবে এটি পরীক্ষা করতে পারি না, তবে, যদি এটি হয় তবে এই দ্রষ্টব্যটি 75 বাইটে সংক্ষিপ্ত করা যেতে পারে :

f=x^Range@Length@#.#&;Do[Print@SeriesCoefficient[f@#/f@#2,{x,0,n}],{n,∞}]&

শেষ পরীক্ষার কেস 0 দিয়ে শুরু হয় না
J42161217

@ জেনি_ম্যাথি: গুলি করুন, মাথা উঁচু করার জন্য ধন্যবাদ। দেখে মনে হচ্ছে পরীক্ষার কেসগুলি জেরোথের প্রথম থেকে শুরু হওয়ার আশা করছে ... বেশ কিছুটা নিশ্চিত যে এটি আমাকে কয়েকটা বাইট সংরক্ষণ করতে দেয়।
জুলিয়ান ওল্ফ

@ জেনি_ম্যাথি: আমি মনে করি পরীক্ষার ঘটনাগুলি খারাপ হতে পারে। nস্থির 1 থেকে শুরু করে 0, এটি আপনার সমাধান হিসাবে একই ফলাফল দেয়; উভয়ই ব্যর্থ হয়, যদিও দ্বিতীয় থেকে শেষ পরীক্ষার ক্ষেত্রে, যা এই সমাধানটি n0 থেকে শুরু করার পরে পাস হয়
জুলিয়ান ওল্ফ

0

পাইথ , 23 বাইট

JE#
KchQhJ=t-M.t,Q*LKJ0

এটি অনলাইন চেষ্টা করুন!

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

                       Q = eval(input())
JE                     J = eval(input())
  #                    infinite loop:
 chQhJ                   Q[0]/J[0]
K                        assign that to K (and print it, because of the preceding newline)
              *LKJ       K times every element of J
            ,Q           [Q, that]
          .t      0      transpose, padding with 0s
        -M               subtract each pair
       t                 remove the first element
      =                  assign that back to Q

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.