আল্ট্রাড্রাডিক্যাল গণনা করুন


24

আল্ট্রাড্রাডিক্যাল কি

Ultraradical , অথবা আমূল আনুন, একটি বাস্তব সংখ্যার a quintic সমীকরণের শুধুমাত্র বাস্তব রুট হিসাবে সংজ্ঞায়িত করা হয় x5+x+a=0

এখানে আমরা আল্ট্রাড্রাডিকাল ফাংশন বোঝাতে UR() ব্যবহার করি । উদাহরণস্বরূপ, UR(100010)=10 , যেহেতু 105+10100010=0

চ্যালেঞ্জ

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

আবশ্যকতা

কোনও স্ট্যান্ডার্ড লুফোলের অনুমতি নেই। নীচের পরীক্ষার কেসের ফলাফলগুলি অবশ্যই কমপক্ষে 6 টি উল্লেখযোগ্য সংখ্যার সাথে সঠিক হতে হবে তবে সাধারণভাবে প্রোগ্রামটি কোনও বৈধ আসল সংখ্যার ইনপুটগুলির জন্য সংশ্লিষ্ট মানগুলি গণনা করা উচিত।

পরীক্ষার মামলা

0 দশমিক 9 টি দশমিক স্থান রেফারেন্সের জন্য দেওয়া হয়েছে। কিছু পরীক্ষার ক্ষেত্রে ব্যাখ্যা যুক্ত করা হয়।

 a                         | UR(a)
---------------------------+---------------------
             0             |   0.000 000 000        # 0
             1             |  -0.754 877 (666)      # UR(a) < 0 when a > 0
            -1             |   0.754 877 (666)      # UR(a) > 0 when a < 0
             1.414 213 562 |  -0.881 616 (566)      # UR(sqrt(2))
            -2.718 281 828 |   1.100 93(2 665)      # UR(-e)
             3.141 592 653 |  -1.147 96(5 385)      # UR(pi)
            -9.515 716 566 |   1.515 71(6 566)      # 5th root of 8, fractional parts should match
            10             |  -1.533 01(2 798)
          -100             |   2.499 20(3 570)
         1 000             |  -3.977 89(9 393)
      -100 010             |  10.000 0(00 000)      # a = (-10)^5 + (-10)
 1 073 741 888             | -64.000 0(00 000)      # a = 64^5 + 64

বিজয়ী মানদণ্ড

প্রতিটি ভাষায় স্বল্পতম বৈধ জমা জেতে।

উত্তর:


12

ওল্ফ্রাম ভাষা (গণিত) , 20 বাইট

Root[xx^5+x+#,1]&

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

এখনও একটি অন্তর্নির্মিত, তবে কমপক্ষে এটি হয় না UltraRadical

(চরিত্রটি ম্যাথামেটিকায় যেমন জেএসের মতো প্রদর্শিত |->হয় =>)


9
আমি ভাবতে থাকি যে গণিত কেন ব্যবহার করে এবং এর পরিবর্তে এবং
অ্যাডাম

2
@ আদম আমার প্রথম দু'জনের জন্য কেবল স্কোয়ারগুলি দেখার কথা, বা আমি কোনও ধরণের ফন্ট মিস করছি ...
এমবিআরবি

6
@ এমবিগ্রি জাস্ট স্কোয়ার এটাই আমার বক্তব্য। ম্যাথমেটিকা ব্যক্তিগত ব্যবহারের ক্ষেত্রে অক্ষর ব্যবহার করে যদিও ইউনিকোডের বেশিরভাগ অংশ রয়েছে।
অ্যাডাম

8

পাইথন 3.8 (প্রাক রিলিজ) , 60 বাইট

f=lambda n,x=0:x!=(a:=x-(x**5+x+n)/(5*x**4+1))and f(n,a)or a

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

নিউটন পুনরাবৃত্তি পদ্ধতি। x=xf(x)f(x)=xx5+x+n5x4+1

4 x 5 - এন ব্যবহার করার সময়4x5n5x4+1 গাণিতিক সমতুল্য, এটি প্রোগ্রামটিকে চিরতরে লুপ করে দেয়।


অন্যান্য পদ্ধতি:

পাইথন 3.8 (প্রাক রিলিজ) , 102 বাইট

lambda x:a(x,-x*x-1,x*x+1)
a=lambda x,l,r:r<l+1e-9and l or(m:=(l+r)/2)**5+m+x>0and a(x,l,m)or a(x,m,r)

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

বাইনারি অনুসন্ধান, প্রদত্ত ক্রিয়াকলাপটি x^5+x+aবাড়ছে given সীমানা সেট করুন -abs(x)এবং abs(x)যথেষ্ট তবে -x*x-1এবং x*x+1খাটো।

বিটিডাব্লু পাইথনের পুনরাবৃত্তির সীমাটি কিছুটা কম, সুতরাং এটির 1e-9 হওয়া দরকার এবং :=এটিকে ওয়ালরাস অপারেটর বলা হয়।


রৈখিক অনুসন্ধানে কি কম বাইট লাগবে?
ব্যবহারকারী 202729

8

জাভাস্ক্রিপ্ট (ES7), 44 বাইট

নীচের মতো একই নির্দিষ্ট সূত্র ব্যবহার করে একটি নিরাপদ সংস্করণ যা নির্দিষ্ট সংখ্যক পুনরাবৃত্তি সহ।

n=>(i=1e3,g=x=>i--?g(.8*x-n/(5*x**4+5)):x)``

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


জাভাস্ক্রিপ্ট (ES7),  43  42 বাইট

নিউটনের পদ্ধতি, f ( x ) = 5 x 4 + 1 এর অনুমান হিসাবে 5x4+5 ব্যবহার করে ।f(x)=5x4+1

n=>(g=x=>x-(x-=(x+n/(x**4+1))/5)?g(x):x)``

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

কিভাবে?

আমরা x0=0 দিয়ে শুরু করি এবং পুনরাবৃত্তভাবে গণনা:

xk+1=xkxk5+xk+n5xk4+5=xkxk+nxk4+15

xkxk+1 তুচ্ছ না হওয়া পর্যন্ত ।


যেহেতু ভাসমান সংখ্যার সমতুল্যের তুলনা ভুল, তাই আমি নিশ্চিত নই যে প্রতিটি সম্ভাব্য ইনপুটটির জন্য প্রোগ্রামটির সমাপ্তির গ্যারান্টি দেওয়া যায় কিনা ( সূত্রটি সংক্ষিপ্ত করার চেষ্টা করার সময় ইতিমধ্যে অভিজ্ঞ সমস্যার নীচে পাইথন 3 উত্তর )।
জোয়েল

1
@ জোয়েল আমি একটি নিরাপদ সংস্করণ যুক্ত করেছি।
আর্নৌল্ড

7

জেলি , 8 বাইট

;17B¤ÆrḢ

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

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

  • এর বাইনারি উপস্থাপনের জন্য অর্থ প্রদান করে তালিকাটি তৈরি [a, 1, 0, 0, 0, 1]করে । কেন এই তালিকা? কারণ এটি যে সহগের সাথে আমরা অনুসন্ধান করছি তার সাথে এটি মিলছে:a17

    [a, 1, 0, 0, 0, 1] -> P(x) := a + 1*x^1 + 0*x^2 + 0*x^3 + 0*x^4 + 1*x^5 = a + x + x^5
    
  • তারপরে, Ærএমন একটি অন্তর্নির্মিত যা বহুগুণীয় সমীকরণকে সমাধান করে P(x) = 0, সহগের একটি তালিকা দেওয়া (যা আমরা আগে নির্মাণ করেছি)।

  • আমরা কেবল আসল সমাধানে আগ্রহী তাই আমরা সমাধানের তালিকায় প্রথম এন্ট্রি নিই


6

এপিএল (ডায়ালগ ইউনিকোড) , 11 10 বাইট এসবিসিএস

-1 ধন্যবাদ তাইজাইমা

বেনামে ট্যাসিট প্রিফিক্স ফাংশন।

(--*∘5)⍣¯1

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

()⍣¯1 নীচের tacit ফাংশন নেতিবাচক একবার প্রয়োগ করুন:

- অবহেলিত যুক্তি

- ঋণচিহ্ন

*∘5 যুক্তি 5 শক্তি উত্থাপন

সংক্ষেপে, এই জিজ্ঞাসা: যাএক্স আমার কি খাওয়াতে হবে? (এক্স)=-এক্স-এক্স5 ফলাফল যে হয়ে যায় Y


এটি খুব দুর্দান্ত। দুঃখজনকভাবে জে এই বিপরীতটি সম্পাদন করতে সক্ষম বলে মনে হচ্ছে না
জোনা

@জাইমা কেন আমি তা দেখিনি। ধন্যবাদ আপনাকে‽
অ্যাডাম

5

আর , 43 বাইট

function(a)nlm(function(x)abs(x^5+x+a),a)$e

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

nlm একটি অপ্টিমাইজেশন ফাংশন, তাই এটি ফাংশনের সর্বনিম্ন জন্য অনুসন্ধান করে এক্স|এক্স5+ +এক্স+ +একটি|অর্থাৎ একমাত্র শূন্য। এর দ্বিতীয় প্যারামিটারটি nlmহল আরম্ভের বিন্দু। মজার বিষয় হল, 0 এ শুরু করা শেষ পরীক্ষার ক্ষেত্রে ব্যর্থ হয় (সম্ভবত সংখ্যার যথার্থতার কারণে) তবে প্রাথমিকভাবে শুরু করা a(যা সঠিক চিহ্নও নয়) সফল হয়।


@ থিম্প্লিফায়ার গাণিতিকভাবে এটি সমান, তবে সংখ্যার দিক থেকে এটি হয় না: পরম মানের পরিবর্তে বর্গ ব্যবহার করা বড় ইনপুটটির জন্য ভুল মান বাড়ে। ( এটি অনলাইনে চেষ্টা করুন ))
রবিন রাইডার

4

আর , 56 বাইট

function(x)(y=polyroot(c(x,1,0,0,0,1)))[abs(Im(y))<1e-9]

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

চিহ্নিত করার জন্য @ রোল্যান্ডকে ধন্যবাদ polyroot। আমি বুঝতে পারি আমার আগের উত্তরটি শূন্য বা নেতিবাচক জন্য একটি জটিল মূল বেছে নিয়েছেএকটিসুতরাং এখন polyrootজটিল শিকড়গুলি ব্যবহার করে এবং ফিল্টার করে পুনরায় লেখা ।



@ রবিনরাইডার এটি সম্পূর্ণরূপে পৃথক যে আমার ধারণা আপনার নিজের উত্তর পোস্ট করা উচিত। ধন্যবাদ যদিও!
নিক কেনেডি

1
ঠিক আছে ধন্যবাদ. এটি এখানে
রবিন রাইডার

"দুর্ভাগ্যক্রমে", polyrootসমস্ত জটিল শিকড় ফিরিয়ে দেয় ... অন্যথায় এটি জিততে পারে।
রোল্যান্ড

3

জে , 14 বাইট

{:@;@p.@,#:@17

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

বহুবর্ষগুলি সমাধানের জন্য জে এর একটি অন্তর্নির্মিত ... p.

টিআইওতে চূড়ান্ত 4 পরীক্ষার মামলার সময়সীমা শেষ, তবে তত্ত্বের ক্ষেত্রে এখনও সঠিক।

কিভাবে

জে এর বিল্টিনের বহুত্ববৃত্ত সহগগুলি x^0প্রথমে সহগ সহ একটি সংখ্যার তালিকা হিসাবে নেওয়া হয় । এর অর্থ তালিকাটি হ'ল:

a 1 0 0 0 1

1 0 0 0 1বাইনারি 17 হয়, তাই আমরা এটি হিসাবে প্রতিনিধিত্ব করি #:@17, তারপরে ইনপুট সংযোজন করুন ,, তারপরে প্রয়োগ করুন p., তারপরে রাজেজ সহ ফলাফলগুলি আনবক্স করুন ;, তারপরে শেষ উপাদানটি নিন{:



2

উত্তম উত্তর, কিন্তু কৌতূহলের বাইরে: কেন কেবল ন্যায়বিচারের পরিবর্তে s(-100010)ফলাফল আসে ? এটি কি বড় পরীক্ষার ক্ষেত্রে ভাষার সীমাবদ্ধতা? পিএস: আপনি দুটি বাইট দুটিতে পরিবর্তন সাশ্রয় করতে পারেন । :)-8.090... - 5.877...*I100.2.2
কেভিন ক্রুইজসেন

Thanks for the tip @KevinCruijssen. The issue is actually for the whole of R, তবে অনুগ্রহ করে দেখুন :)
থিম্প্লিফায়ার

আপনি একটি বেনামী ফাংশন ব্যবহার করতে পারেন: a->solve(X=-a,a,X^5+X+a)
আলেফাল্ফা

ধন্যবাদ @ এলফল্পা
থিম্প্লিফায়ার


2

k4, 33 31 বাইট

{{y-(x+y+*/5#y)%5+5*/4#y}[x]/x}

নিউটন-রাফসন একটি সংখ্যার রূপান্তর না করা অবধি পুনরাবৃত্তভাবে গণনা করা হয়

সম্পাদনা: -2 এনএনজি ধন্যবাদ!


ওফফ, এই সব ভুল হয়েছে ...

কে (ওকে), 10 বাইট

{-x+*/5#x}

@ এনএনও লওল, এটি অযত্নে ছিল ... আপডেট হয়েছে তবে এখন কে 4 তে এনজিএন / কে বা ওকে করতে আমি খুব অলস :)
স্ক্রল

শান্ত! শেষ জোড়াটি [ ]অপ্রয়োজনীয় বলে মনে হচ্ছে
এনজিএন

হুম, আপনি ঠিক বলেছেন। আমি বহিরাগত / বাদ দেওয়া (এক বা অন্য, আমি ভুলে গেছি) বন্ধনীগুলির কারণে অসীম লুপের উপর / রূপান্তরিত হওয়ার ফলাফলের আগে আমি অদ্ভুত আচরণের মুখোমুখি হয়েছি। এই কারণেই আমি তাদের এনে রেখেছিলাম তবে আমার চেক করা উচিত ছিল। ধন্যবাদ!
স্ক্রল


1

সি, 118b / 96b

#include<math.h>
double ur(double a){double x=a,t=1;while(fabs(t)>1e-6){t=x*x*x*x;t=(x*t+x+a)/(5*t+1);x-=t;}return x;}

মূল ফাংশন নাম এবং কিছু অতিরিক্ত নির্ভুলতার সাথে 118 বাইট (ডাবল)। বিট হ্যাকের সাথে আরও ভাল হতে পারে তবে অপ্রয়োজনীয়।

নির্দিষ্ট পুনরাবৃত্তি সহ 96 বাইট।

double ur(double a){double x=a,t;for(int k=0;k<99;k++){t=x*x*x*x;x=(4*x*t-a)/(5*t+1);}return x;}

আসলে, আমাদের ফাংশনটি এত ভাল যে আমরা নিউটনের পদ্ধতির আরও ভাল মানিয়ে নিতে পারি। অনেক দ্রুত এবং ব্যবহারিক প্রয়োগ (150 বাইট) হবে

#include<math.h>
double ur(double a){double x=a/5,f=1,t;while(fabs(f)>1e-6){t=x*x*x*x;f=(t*(5*t*x+5*a+6*x)+a+x)/(15*t*t-10*a*x*x*x+1);x-=f;}return x;}

আমি এটি পরীক্ষা করে দেখেছি, তবে এটি আরও দ্রুততর হবে তা জানার জন্য আমি খুব অলস। নিউটনের মতো আরও কমপক্ষে আরও একটি ক্রম দ্রুত হওয়া উচিত।


x-=t=...কাজের মতো কিছু হবে ?
ব্যবহারকারী 202729


0

পরিষ্কার , 61 60 বাইট

import StdEnv
$a=iter 99(\x=(3.0*x^5.0-a)/inc(4.0*x^4.0))0.0

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

নিউটনের পদ্ধতিটি প্রথমে ব্যবহারকারীর ২০২২২২০ এর উত্তরে প্রয়োগ করা হয়েছে

পরিষ্কার , 124 বাইট

import StdEnv
$a= ?a(~a)with@x=abs(x^5.0+x+a);?u v|u-d==u=u|v+d==v=v= ?(u+if(@u< @v)0.0d)(v-if(@u> @v)0.0d)where d=(v-u)/3E1

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

একটি "বাইনারি" অনুসন্ধান, অনুসন্ধানের ক্ষেত্রটিকে 50% পরিবর্তে প্রতিটি পুনরাবৃত্তিতে উচ্চ এবং নিম্ন সীমানার মধ্যে সীমাটি উপরের বা নীচের 99,6% সীমাবদ্ধ করে।




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