Чебы Чебышёва (চেবিশেভ বহুবচন)


26

চেবিশেভ পলিনোমিয়ালগুলি অরথোগোনাল বহুবচনগুলির একটি পরিবার যা গণিতের সমস্ত ধরণের পপ আপ হয় এবং তাদের বেশ আকর্ষণীয় বৈশিষ্ট্য রয়েছে। তাদের মধ্যে একজন চরিত্রায়ন যে, তারা যে সন্তুষ্ট অনন্য polynomials হয় ।Tn(cos(x)) = cos(n*x)

চ্যালেঞ্জ

একটি নন-নেগেটিভ পূর্ণসংখ্যা দেওয়া n, আপনার nচতুর্থ শেভেশিভ বহুবর্ষীয় আউটপুট করা উচিত । ।Tn(x)

সংজ্ঞা

দ্য nচেবিশেভ বহুবর্ষটি নিম্নলিখিত তিনটি মেয়াদী পুনরাবৃত্তি দ্বারা প্রদত্ত:

T0(x) = 1
T1(x) = x
Tn+1(x) = 2*x*Tn(x) - Tn-1(x)

বিস্তারিত

যদি আপনার ভাষাতে একটি স্থানীয় বহুবর্ষীয় প্রকার থাকে, আপনি সেইটিকে আউটপুট হিসাবে ব্যবহার করতে পারেন, অন্যথায় আপনার আরোহী- বা অবতরণ ক্রমে সহগের একটি তালিকা আউটপুট করা উচিত, বা একটি বহুবর্ষের প্রতিনিধিত্বকারী স্ট্রিং হিসাবে।

উদাহরণ

T0(x) = 1
T1(x) = x 
T2(x) = 2x^2 - 1
T3(x) = 4x^3 - 3 x
T4(x) = 8x^4 - 8x^2 + 1
T5(x) = 16x^5 - 20x^3 + 5x
T10(x) = 512x^10 - 1280x^8 + 1120x^6 - 400x^4 + 50x^2 - 1

অবতরণ ডিগ্রি তালিকার বিন্যাসে আমরা পেয়ে যাব এবং আরোহী ডিগ্রি ফর্ম্যাটে আমরা পেয়ে যাবT3(x) = [4,0,-3,0]T3(x) = [0,-3,0,4]


আমি যদি একটি তালিকা আউটপুট করি তবে আমি কি আউটপুট 0 1(ie 0*x+1) করতে পারি T_0?
লুইস মেন্ডো

মনমোমিয়ালগুলির ক্রমটি যথাযথ যে ঠিক!
flawr

পলিনোম 2*x*(2*x**2 - 1) - xসহায়ক ল্যাংয়ের জন্য @ ফ্লোয়ার 3 আউটপুট হিসাবে ঠিক আছে, বা আমাদের কী ডেস্ক কোফ হিসাবে প্রতিনিধিত্বের প্রয়োজন?
Uriel


2
ভাসমান-পয়েন্টের ভুলগুলি গ্রহণযোগ্য? অর্থাতT_5(n) = [0, 5, 3.55271e-15, -20, 0, 16]
মাইল

উত্তর:


15

গণিত, 15 বাইট

#~ChebyshevT~x&

অবশ্যই গণিতের একটি বিল্টিন রয়েছে।

যদি বিকল্প ইনপুট ফর্মটি অনুমোদিত হয় (10 বাইট):

ChebyshevT

একটি পূর্ণসংখ্যা nএবং একটি পরিবর্তনশীল লাগে ।


3
অনুমান করতে পারিনি, হু। : পি
হাইপারনিউট্রিনো

14

অক্টাভা , 39 বাইট

@(n)round(2^n/2*poly(cos((.5:n)/n*pi)))

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

ব্যাখ্যা

cos((.5:n)/n*pi)বহুত্বের মূল দিয়ে একটি ভেক্টর তৈরি করে , প্রদত্ত

এখানে চিত্র বর্ণনা লিখুন

polyসেই শিকড়গুলির সাথে মনিককে বহুপদী দেয়। প্রয়োজনীয় গুণাগুণগুলি 2^n/2স্কেল দ্বারা গুণন করা । roundসংখ্যাগত নির্ভুলতা সত্ত্বেও ফলাফলগুলি পূর্ণসংখ্যার বিষয়টি নিশ্চিত করে।


1
বরাবরের মতো চতুর :)
flawr

11

পরী / জিপি , 12 বাইট

হ্যাঁ, একজন বিল্টিন ম্যাথমেটিকার চেয়ে ছোট।

polchebyshev

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


বিল্টিন ছাড়া:

পরী / জিপি , 34 বাইট

f(n)=if(n<2,x^n,2*x*f(n-1)-f(n-2))

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


না polchebyshevশুধুমাত্র একটি ইনপুট গ্রহণ করা এবং বহুপদী আসতে?
জংহওয়ান মিনি মিনিট

@ জংহওয়ানমিন হ্যাঁ xডিফল্ট অনির্দিষ্ট।
আলেফাল্ফ

10

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

t n|n<2=1:[0|n>0]|x<-(*2)<$>t(n-1)++[0]=zipWith(-)x$0:0:t(n-2)

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

flawr একটি বাইট সংরক্ষণ।


এটি খুব মার্জিত! (আমি zipWithভেক্টর ক্রিয়াকলাপগুলি ভুলে যেতে থাকি
w

1
আমি মনে করি আপনি প্রহরী ব্যবহার করে আরও একটি বাইট সংরক্ষণ t n|n<2=1:[0|n>0]|x<-(*2)<$>t(n-1)++[0]=zipWith(-)x$0:t(n-2)করতে পারেন
:,

আমি মনে করি আপনাকে পরিবর্তন 0:করতে হবে 0:0:- ওপি কেবল এই ধরণের জিরোকে এড়িয়ে যাওয়ার অনুমতি দেয় না allow
janর্জন জোহানসেন




5

এমএটিএল , 17 বাইট

lFTi:"0yhEbFFh-]x

গুণাগুণগুলি ডিগ্রির ক্রমবর্ধমান আউটপুট হয়।

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

ব্যাখ্যা

ইনপুট এন এর জন্য কোডটি পুনরাবৃত্ত সম্পর্কের জন্য n বার প্রয়োগ করে । দুটি সাম্প্রতিক দুটি বহুবচন সর্বদা স্ট্যাকের উপরে রাখা হয়। যখন একটি নতুন বহুপদী গণনা করা হয়, তখন প্রাচীনতমটি সরিয়ে ফেলা হয়।

শেষের দিকে, দ্বিতীয়-শেষ বহুভুজ প্রদর্শিত হবে (শেষ বহুবচনটি মুছে ফেলা হয়েছে), কারণ আমরা একটি অনেকগুলি পুনরাবৃত্তি করেছি।

l        % Push 1
FT       % Push [0 1]. These are the first two polynomials
i:"      % Input n. Do the following n times
  0      %   Push 0
  y      %   Duplicate most recent polynomial
  h      %   Concatenate: prepends 0 to that polynomial
  E      %   Multiply coefficients by 2
  b      %   Bubble up. This moves second-most recent polynomial to top
  FF     %   Push [0 0]
  h      %   Concatenate: appends [0 0] to that polynomial
  -      %   Subtract coefficients
]        % End
x        % Delete. Implicitly display

4

জেলি , 18 বাইট

Cr1µ’ßḤ0;_’’$ß$µỊ?

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

আরোহী ক্রমে সহগের একটি তালিকা প্রদান করে।

ভাসমান-পয়েন্টের ভুলগুলি সহ 17 বাইটের জন্য আরও একটি সমাধান রয়েছে ।

RḤ’÷Ḥ-*ḞÆṛæ«’µ1Ṡ?

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

ব্যাখ্যা

Cr1µ’ßḤ0;_’’$ß$µỊ?  Input: integer n
                Ị   Insignificant - abs(n) <= 1
                    If true, n = 0 or n = 1
   µ                  Monadic chain
C                       Complement, 1-x
 r1                     Range to 1
                    Else
               µ      Monadic chain
    ’                   Decrement
     ß                  Call itself recursively
      Ḥ                 Double
       0;               Prepend 0
         _              Subtract with
            $             Monadic chain
          ’’                Decrement twice
              $           Monadic chain
             ß              Call itself recursively



2

জে , 33 বাইট

(0>.<:)2&*1:p.@;9:o._1^+:%~1+2*i.

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

ধরে নেওয়া যায় যে ভাসমান-পয়েন্টের ভুলগুলি গ্রহণযোগ্য এবং ইমোজি তৈরি করে (0>.<:)

জন্য 41 বাইট , আরেকটা সমাধান ভাসে এড়াতে হয়।

(0&,1:)`(-&2((-,&0 0)~2*0&,)&$:<:)@.(>&1)

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



2

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

f(n,x)==(n<2=>x^n;2*x*f(n-1,x)-f(n-2,x))

ফলাফল

(9) -> for i in [0,1,2,3,4,5,10] repeat output ["f(y)",i,"=", f(i,y)]
   ["f(y)",0,"=",1]
   ["f(y)",1,"=",y]
                   2
   ["f(y)",2,"=",2y  - 1]
                   3
   ["f(y)",3,"=",4y  - 3y]
                   4     2
   ["f(y)",4,"=",8y  - 8y  + 1]
                    5      3
   ["f(y)",5,"=",16y  - 20y  + 5y]
                      10        8        6       4      2
   ["f(y)",10,"=",512y   - 1280y  + 1120y  - 400y  + 50y  - 1]
                                                               Type: Void

অ্যাক্সিয়মের সূত্রের জন্য একটি প্রতিস্থাপন আইন সংজ্ঞায়িত করা সম্ভব যা কোস (এন * এক্স) এর প্রসারণের জন্য উপরের ফ () ফাংশন ব্যবহার করুন যেখানে এন একটি পূর্ণসংখ্যা

(9) -> o:=rule cos(n*%y)==f(n,cos(%y))
   (9)  cos(%y n) == 'f(n,cos(%y))
                    Type: RewriteRule(Integer,Integer,Expression Integer)
                                                              Time: 0 sec
(10) -> b:=o cos(20*x)
   (10)
                 20                18                16                14
     524288cos(x)   - 2621440cos(x)   + 5570560cos(x)   - 6553600cos(x)
   +
                  12                10               8              6
     4659200cos(x)   - 2050048cos(x)   + 549120cos(x)  - 84480cos(x)
   +
               4            2
     6600cos(x)  - 200cos(x)  + 1
                                                 Type: Expression Integer
                       Time: 0.48 (EV) + 0.02 (OT) + 0.10 (GC) = 0.60 sec

1

সি # (.নেট কোর) , 126 বাইট

f=n=>n==0?new[]{1}:n==1?new[]{0,1}:new[]{0}.Concat(f(n-1)).Select((a,i)=>2*a-(i<n-1?f(n-2)[i]:0)).ToArray();

বাইট গণনা এছাড়াও অন্তর্ভুক্ত:

using System.Linq;

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

ক্রিয়াকলাপটি আরোহী ক্রমে (থেকে x^0থেকে x^n) সহগের একটি অ্যারের হিসাবে বহুবর্ষকে ফেরত দেয়

ব্যাখ্যা:

f = n =>                          // Create a function taking one parameter (int)
    n == 0 ? new[] { 1 } :        // If it's 0, return collection [1]
    n == 1 ? new[] { 0, 1 } :     // If it's 1, return collection [0,1] (so x + 0)
    new[] { 0 }                   // Else create new collection, starting with 0
        .Concat(f(n - 1))         // Concatenate with f(n-1), effectively multiplying polynomial by x
        .Select((a, i) => 2 * a - (i < n - 1 ? f(n - 2)[i] : 0))
                                  // Multiply everything by 2 and if possible, subtract f(n-2)
        .ToArray();               // Change collection to array so we have a nice short [] operator
                                  // Actually omitting this and using .ElementAt(i) is the same length, but this is my personal preference

1

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

f=n=>n?n>1?[0,...f(n-1)].map((e,i)=>e+e-(f(n-2)[i]||0)):[0,1]:[1]

বড় জন্য অপ্রতুল n। আকর্ষণীয় তবে দুঃখজনকভাবে অদক্ষও:

n=>[...Array(n+1)].map(g=(m=n,i)=>i<0|i>m?0:m<2?i^m^1:g(m-1,i-1)*2-g(m-2,i))

68 বাইটের জন্য খুব দক্ষ:

f=(n,a=[1],b=[0,1])=>n?f(n-1,b,[0,...b].map((e,i)=>e+e-(a[i]||0))):a

আরোহী ক্রমে সহগের একটি অ্যারে প্রদান করে।

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