বিপরীত পাই ফাংশন


17

পাই ফাংশনটি বাস্তবের (বা এমনকি জটিল সংখ্যার) উপরের কল্পিত একটি এক্সটেনশন। পূর্ণসংখ্যার জন্য n , Π (n) = n! , কিন্তু বাস্তবের উপর একটি সংজ্ঞা পেতে আমরা একটি অখণ্ড ব্যবহার করে এটি সংজ্ঞায়িত করি:

পাই (জেড) = 0 থেকে অনন্ত ই ^ -tt ^ z ডিটি অবধি d

এই চ্যালেঞ্জে আমরা Π ফাংশনটি উল্টে দেব ।

একটি বাস্তব সংখ্যা z ≥ 1 দেওয়া , ইতিবাচক সন্ধান করুন x যেমন Π (x) = z সন্ধান করুন । আপনার উত্তরটি অবশ্যই কমপক্ষে 5 দশমিক অঙ্কের জন্য সঠিক হওয়া উচিত।


উদাহরণ:

120 -> 5.0000
10 -> 3.39008
3.14 -> 2.44815
2017 -> 6.53847
1.5 -> 1.66277

4
মনে রাখবেন যে প্রায়শই লোকেরা গামা (Γ) ফাংশন ব্যবহার করে। Π (x) = Γ (x + 1) । তবে আইএমও a হ'ল স্থানান্তরিত জঘন্যতা এবং Π ঘটনাটির সত্যিকারের প্রসার।
orlp

1
ওয়েলপ, সেই সিরিজটির বিস্তৃতি আমাকে ভয় দেখানোর
ম্যাজিক অক্টোপাস

1
উদাহরণস্বরূপ, আপনি যে উদাহরণগুলি দিয়েছেন তার সমস্তগুলির অন্যান্য সমাধানও রয়েছে 120 -> -0.991706। এটি কারণ ডান থেকে x -1 এ যাওয়ার সাথে Π (x) অনন্তে চলে যায়। সম্ভবত আপনি x> 0 টিও জোর দিয়ে বোঝাতে চাইছেন।
গ্রেগ মার্টিন

@ গ্রেগমার্টিন যোগ করা হয়েছে।
orlp

1
অপ্রাকৃত মনে হলেও স্থানান্তরিত সংস্করণটিকে প্রাধান্য দেওয়ার কয়েকটি কারণ রয়েছে। যেমন উত্তরটি ম্যাথওভারফ্লোতে এবং সেই পৃষ্ঠায় অন্যদের দেখুন।
রুসলান

উত্তর:


8

গণিত, 17 15 27 বাইট

FindInstance[#==x!&&x>0,x]&

আউটপুট দেখে মনে হচ্ছে {{x -> n}}, কোথায় nসমাধান রয়েছে, যা অনুমোদিত হতে পারে না।


7

পাইথ, 4 বাইট

.I.!

এমন একটি প্রোগ্রাম যা কোনও সংখ্যার ইনপুট নেয় এবং ফলাফল মুদ্রণ করে।

পরীক্ষা স্যুট

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

.I.!    Program. Input: Q
.I.!GQ  Implicit variable fill
.I      Find x such that:
  .!G    gamma(x+1)
     Q   == Q
        Implicitly print

5

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

1`1e-5+tQYgG<

এটি 1e-5শুরু করার ধাপগুলিতে রৈখিক সীচ ব্যবহার করে 1। সুতরাং এটি মারাত্মকভাবে ধীর এবং অনলাইন সংকলকটির সময়সীমা শেষ।

এটি পরীক্ষা করতে, নীচের লিঙ্কটি যথাযথতার 1e-5প্রয়োজনীয়তার দ্বারা প্রতিস্থাপন করে 1e-2এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

1        % Push 1 (initial value)
`        % Do...while
  1e-5   %   Push 1e-5
  +      %   Add
  t      %   Duplicate
  QYg    %   Pi function (increase by 1, apply gamma function)
  G<     %   Is it less than the input? If so: next iteration
         % End (implicit)
         % Display (implicit)

3

জিওজেব্রা , 25 বাইট

NSolve[Gamma(x+1)=A1,x=1]

সিএএস ইনপুট প্রবেশ করানো হয়েছে এবং স্প্রেডশিট ঘরে একটি সংখ্যার ইনপুট আশা করে A1। ফর্মের এক-এলিমেন্ট অ্যারে প্রদান করে {x = <result>}

এখানে মৃত্যুদন্ড কার্যকর করার একটি জিআইএফ:

প্রোগ্রামার এক্সিকিউশন

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

Numerically Solveনিম্নলিখিত সমীকরণ: Gamma(x+1)=A1, মান শুরু সঙ্গে x=1


এটি কি কোনও ইতিবাচক নম্বর ফেরত দেওয়ার গ্যারান্টিযুক্ত এবং এটি 1.5 এর জন্য কাজ করে যা বেশ কয়েকটি উত্তর ভেঙে দিয়েছে?
পাভেল

@ পাভেল আমি নিশ্চিত করতে পারি যে এটি কাজ করে 1.5। জিওজেব্রা কোন সংখ্যার সমাধানের জন্য কোন অ্যালগরিদম ব্যবহার করে তা সন্ধান করতে পারিনি, তবে এর প্রাথমিক x=1মানটি আমি চেষ্টা করেছি এমন প্রতিটি মানের জন্য খাঁটি ইতিবাচক উত্তর দিয়েছে।
দ্য বাইকিংভিাইকিং

2

ম্যাটল্যাব, 59 বাইট

@(x)fminsearch(@(t)(gamma(t+1)-x)^2,1,optimset('TolF',eps))

এটি একটি বেনাম ফাংশন 1যা খুব কম সহনশীলতার সাথে শুরু করে পাই ফাংশনটি এবং তার ইনপুটটি বর্গক্ষেত্রের পার্থক্যের মিনিমাইজারটি সন্ধান করে (দ্বারা প্রদত্তeps পছন্দসই নির্ভুলতা অর্জনের জন্য ) থেকে ।

পরীক্ষার কেসগুলি (মতলব আর ২০১৫ বিতে চালিত):

>> @(x)fminsearch(@(t)(gamma(t+1)-x)^2,1,optimset('TolF',eps))
ans = 
    @(x)fminsearch(@(t)(gamma(t+1)-x)^2,1,optimset('TolF',eps))
>> f = ans; format long; f(120), f(10), f(3.14), f(2017)
ans =
   5.000000000000008
ans =
   3.390077650547032
ans =
   2.448151165246967
ans =
   6.538472664321318

আপনি এটি অ্যাকতাভে অনলাইনে চেষ্টা করে দেখতে পারেন , তবে দুর্ভাগ্যক্রমে কয়েকটি ফলাফলের প্রয়োজনীয় নির্ভুলতার অভাব রয়েছে।


2

জে, 86 33 বাইট

((]-(-~^.@!)%[:^.@!D.1])^:_>:)@^.

অতিরিক্ত প্রবাহ এড়াতে লগ পাই সহ নিউটনের পদ্ধতিটি ব্যবহার করে।

এটি পূর্ববর্তী সংস্করণ যা স্ট্রিলিংয়ের সান্নিধ্য ব্যবহার করে লগ গ্যামার গণনা করে। পারফরম্যান্সের ব্যয়ে সম্ভবত উচ্চতর নির্ভুলতার জন্য পদক্ষেপের আকার (1e3) এবং লগ গামা (3) এ পদগুলির সংখ্যা বাড়ানো যেতে পারে।

3 :'(-(k-~g)%%&1e3(g=:((%~12 _360 1260 p.&:%*:)+-+^~-&^.%:@%&2p1)@>:)D:1])^:_>:k=:^.y'

অন্য একটি সংস্করণ যা ফ্লাইতে সহগ শর্তগুলি গণনা করে

3 :'(-((-^.y)+g)%%&1e3(g=:((%~(((%1-^@-)t:%]*<:)+:>:i.3)p.%@*:)+(*^.)-]+-:@^.@%&2p1)@>:)D:1])^:_>:^.y'

এটি অনলাইন চেষ্টা করুন! এবং শর্তাবলী একত্রিত দেখতে

ব্যাখ্যা

((]-(-~^.@!)%[:^.@!D.1])^:_>:)@^.  Input: float y
(                            )@^.  Operate on log(y)
                           >:        Increment, the initial guess is log(y)+1
 (                     )^:_          Repeat until convergence starting with x = log(y)+1
                      ]                Get x
               ^.@!                    The log Pi verb
             [:    D.1                 Approximate its first derivative at x
       ^.@!                            Apply log Pi to x
     -~                                Subtract log(y) from it
            %                          Divide it by the derivative
  ]-                                   Subtract it from x and use as next value of x

2

গণিত, 21 বাইট

FindRoot[#-x!,{x,1}]&

FindRoot প্রাথমিক মান থাকলে নিউটনের পদ্ধতিটি অভ্যন্তরীণভাবে প্রয়োগ করে।

নীচের দুটি পদ্ধতি সরাসরি নিউটনের পদ্ধতি প্রয়োগ করে।

ফিক্সডপয়েন্ট 45 বাইট ব্যবহার করে বিকল্প

FixedPoint[#-(#!-y)/Gamma'[#+1]&,Log[y=#]+1]&

এটি সমাধানের জন্য নিউটনের পদ্ধতির আরও সঠিকভাবে বাস্তবায়ন হওয়ায় ম্যাথামেটিকার কাছাকাছি পরিবর্তে ডেরিভেটিভকে সরাসরি গণনা করতে পারে।

বারবার প্রতিস্থাপনের জন্য নিয়মগুলি ব্যবহার করা সংক্ষিপ্ত হবে, তবে এটির কতগুলি পুনরাবৃত্তি সম্পাদন করতে পারে তার সীমা রয়েছে (65536) তবে FixedPointএটির কোনও সীমা নেই।

নিয়ম ব্যবহার করে বিকল্প, 38 বাইট

Log[y=#]+1//.x_->x-(x!-y)/Gamma'[x+1]&

ভাবমূর্তি


1

জেলি , 34 বাইট

Ḋ!Æl_®
ȷİ‘×;µ!ÆlI÷I÷@Ç_@ḊḢ
Æl©‘ÇÐĿ

এটি অনলাইন চেষ্টা করুন! বা মধ্যবর্তী মানগুলি রূপান্তর করার সাথে সাথে দেখুন

Ton ( এন ) এর বিপরীতমুখী গণনা করতে নিউটনের পদ্ধতি এবং ডেরিভেটিভ আনুমানিকতা (সেকান্ট পদ্ধতি) এর জেয়ের মিশ্রণের একটি বাস্তবায়ন ) ।

এটি লগের বিপরীতের জন্য সমাধান করে ( Π ( এন) এড়ানোর ওভারফ্লো করার পরিবর্তে অনুক্রমে))।

এটি প্রাথমিক অনুমান x 0 = y +1 দিয়ে শুরু হয় যেখানে y = লগ ( Π ( n ))। তারপরে এটি x n +1 = x n - (লগ ( Π ( x n )) - y ) / (লগ (( Π (1.001 * x এন ))) - লগ ( Π ( x n ))) / ব্যবহার করে কনভারজেন্স হওয়া পর্যন্ত পুনরাবৃত্তি হবে (0.001 * x n ))।


3
ইনপুট দিয়ে আমি একটি ত্রুটি পেয়েছি1.5
লুইস মেন্ডো

@ লুইস মেন্ডো ওয়াও! মধ্যবর্তী মানেরগুলির একটি হ'ল occurs 65807 যা গামা প্রয়োগ করার পরে এবং পাইথন উপচে পড়ার পরে এটি একটি বিশাল মান It এটি একই সংখ্যার উপর নির্ভর করে যেহেতু জেতে একই ঘটে।
মাইল মাইল

1

প্যারি / জিপি, 30 বাইট

x->solve(t=1,x+1,gamma(t+1)-x)

মধ্যে সমাধান অনুসন্ধান করে 1এবং x+1। দুর্ভাগ্যক্রমে, xইনপুট লাইনের জন্য উপরের আবদ্ধ হিসাবে যথেষ্ট বড় নয় 1.5


1

গণিত, 26 বাইট

তবুও আরেকটি গণিতের সমাধান!

সমীকরণ সমাধান সর্বদা একটি মিনিমাইজেশন সমস্যায় রূপান্তরিত হতে পারে।

NArgMin[{(#-x!)^2,x>0},x]&

সমীকরণের বাম এবং ডান দিকের পার্থক্য হ্রাস করে এমন যুক্তি সন্ধান করে।

এনআরমনিমাইজের পরিবর্তে এনআরজিমিন ব্যবহার করা আউটপুটটিকে সাধারণ ভার্বোস নিয়ম-ভিত্তিক আউটপুটের পরিবর্তে আকাঙ্ক্ষিত ফলাফল হতে বাধ্য করে (এবং এটি একটি বাইট সংরক্ষণ করে!)


0

সিআইবিএম সহ, 111

আপডেট - ইনপুট 1.5 এর জন্য স্থির।

f(double *z){double u=2**z,l=0,g=u,p=0;for(;log(fabs(g-p))>-14;)p=g,g=(u+l)/2,u=tgamma(g+1)>*z?g:(l=g,u);*z=g;}

gamma(x+1)প্রশ্নে থাকা পরিসীমাটির উপরে মনোোটোনিকভাবে ক্রমবর্ধমান ফাংশন, শিিস ক্রমাগত মানগুলির মধ্যে পার্থক্য কম হওয়া অবধি কেবল একটি বাইনারি অনুসন্ধান। প্রারম্ভিক নিম্ন সীমাটি হয় 0এবং প্রারম্ভিক উপরের আবদ্ধ হয় 2*x

ইনপুট এবং আউটপুট একটি পয়েন্টার মাধ্যমে ফাংশনে ডাবল পাস হয়।

আমি আরও নিশ্চিত যে এটি আরও গভীরভাবে গল্ফ করা যেতে পারে - বিশেষত আমি মনে করি না যে আমার কাছে 4 টি স্থানীয় ডাবলসের প্রয়োজন, তবে এখন পর্যন্ত আমি এটি হ্রাস করার কোনও সহজ উপায় দেখছি না।

এটি অনলাইনে চেষ্টা করুন - বিল্ড (লিবিমের সাথে সংযুক্ত) এবং ব্যাশ স্ক্রিপ্টে চলে।

হালকা শৃঙ্খলাবদ্ধ:

f(double *z){
    double u=2**z,l=0,g=u,p=0;
    for(;log(fabs(g-p))>-14;){
        p=g;
        g=(u+l)/2;
        u=tgamma(g+1)>*z?g:(l=g,u);*z=g;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.