স্থানীয়ভাবে একটি বহুভুজকে উল্টে দিন


20

চ্যালেঞ্জ

একটি বহুপদী দেওয়া pআদেশের বাস্তব কোফিসিয়েন্টস সঙ্গে 1এবং ডিগ্রী n, অন্য বহুপদী এটি qসর্বাধিক ডিগ্রী nযেমন যে (p∘q)(X) = p(q(X)) ≡ X mod X^(n+1), অথবা অন্য কথায় যেমন যে p(q(X)) = X + h(X)যেখানে hসঙ্গে একটি অবাধ বহুপদী হয় ord(h) ≥ n+1। বহুপদীটি qঅনন্য দ্বারা নির্ধারিত হয় p

একটি বহুপদী জন্য p(X) = a(n)*X^n + a(n+1)*X^(n+1) + ... + a(m)*X^mযেখানে n <= mএবং a(n) ≠ 0, a(m) ≠ 0, আমরা বলতে nহয় অর্ডার এর pএবং mহয় ডিগ্রী এর p

সরলীকরণ : আপনি ধরে নিতে পারেন যে pএর পূর্ণসংখ্য সহগ রয়েছে, এবং a(1)=1(তাই p(X) = X + [some integral polynomial of order 2])। এই ক্ষেত্রে qঅবিচ্ছেদ্য কোফিসিয়েন্টস খুব হয়েছে।

এই সরলকরণের উদ্দেশ্য ভাসমান পয়েন্ট সংখ্যা সহ সমস্যাগুলি এড়ানো। উদাহরণস্বরূপ উদাহরণের জন্য একটি অ-অবিচ্ছেদ্য উদাহরণ রয়েছে।

উদাহরণ

  • এর টেলর সিরিজটি বিবেচনা করুন exp(x)-1 = x + x^2/2 + x^3/6 + x^4/24 + ...এবং ln(x+1) = x - x^2/2 + x^3/3 - x^4/4 + ...তারপরে স্পষ্টতই ln(exp(x)-1+1)= x। যদি আমরা কেবলমাত্র নীচে থেকে স্বরলিপিটি পেয়েছি two দুটি ফাংশনের 4 ডিগ্রির টেলর বহুবচনগুলি বিবেচনা করি এবং p = [-1/4,1/3,-1/2,1,0]এবং q = [1/24, 1/6, 1/2, 1,0]এবং(p∘q)(X) ≡ X mod X^5

  • বহুবচন বিবেচনা করুন p(X) = X + X^2 + X^3 + X^4। তারপর q(X) = X - X^2 + X^3 - X^4আমরা পেতে

    (p∘q)(X) = p(q(X)) = X - 2X^5 + 3X^6 - 10X^7 +...+ X^16 ≡ X mod X^5
    

Testcases

এখানে ইনপুট এবং আউটপুট বহুবর্ষগুলি সহগের তালিকা হিসাবে লেখা হয় (সর্বাধিক ডিগ্রি মনমিয়ালের সহগ সহ, স্থির মেয়াদ শেষ):

p = [4,3,2,0];  q=[0.3125,-.375,0.5,0]

ইন্টিগ্রাল টেস্টেসেস:

p = [1,0]; q = [1,0]

p = [9,8,7,6,5,4,3,2,1,0]; q = [4862,-1430,429,-132,42,-14,5,-2,1,0]

p = [-1,3,-3,1,0]; q = [91,15,3,1,0]

উত্তর:


5

পাইথন 2 + সিম্পি, 128 বাইট

আমরা স্থানীয়ভাবে সেই q (x) = x ধরে, বহুগুণকে বিবর্তিত করে পি দিয়ে রচনা করে, x 2 এর সহগ পরীক্ষা করে এবং এটি Q থেকে বিয়োগ করে। ধরা যাক এর সহগটি 4 ছিল, তারপরে নতুন বহুপদীটি q (x) = x - 4x 2 হয়ে যায় । আমরা এরপরে আবার এটি পি দিয়ে রচনা করি তবে এক্স 3 এর সহগটি সন্ধান করি । ইত্যাদি ...

from sympy import*
i=input()
p=Poly(i,var('x'));q=p*0+x
n=2
for _ in i[2:]:q-=compose(p,q).nth(n)*x**n;n+=1
print q.all_coeffs()

2

গণিত, 45 বাইট

Normal@InverseSeries[#+O@x^(#~Exponent~x+1)]&

হ্যাঁ, ম্যাথামেটিকার একটি বিল্টিন রয়েছে ...

শেষ পরীক্ষার ক্ষেত্রে xযেমন চলকটিতে ইনপুটকে বহুপদী হিসাবে গ্রহণ করা -x^4+3x^3-3x^2+xএবং সর্বশেষ পরীক্ষার ক্ষেত্রে যেমন অনুরূপ সিনট্যাক্সের সাথে একটি বহুবচন ফিরিয়ে দেওয়া হয় x+3x^2+15x^3+91x^4

#+O@x^(#~Exponent~x+1)ইনপুটটিকে #একটি পাওয়ার সিরিজ অবজেক্টে রূপান্তরিত করে, এর ডিগ্রিতে কাটা #; InverseSeriesএটি যা বলে তা করে; এবং Normalফলস্বরূপ কাটা পাওয়ার সিরিজটিকে বহুবর্ষে পরিণত করে। (ফর্মের কোনও উত্তর x+3x^2+15x^3+91x^4+O[x]^5গ্রহণযোগ্য হলে আমরা সেই প্রাথমিক 7 বাইটগুলি সংরক্ষণ করতে পারতাম Indeed প্রকৃতপক্ষে, যদি তা ইনপুট এবং আউটপুট উভয়েরই গ্রহণযোগ্য বিন্যাস হয় তবে InverseSeriesএকা একা 13-বাইট সমাধান হত))


2

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

a=>a.reduce((r,_,i)=>[...r,i<2?i:a.map(l=>c=p.map((m,j)=>(r.map((n,k)=>p[k+=j]=m*n+(p[k]||0)),m*l+(c[j]||0)),p=[]),c=[],p=[1])&&-c[i]],[])

@ Orlp এর উত্তরের পোর্ট। I / O বিপরীত ক্রমে সহগের অ্যারের আকারে অর্থাৎ প্রথম দুটি সহগ সর্বদা 0 এবং 1 হয়।


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