Ultraradical की गणना करें


24

अल्ट्रैडिकल क्या है

Ultraradical , या कट्टरपंथी ले आओ, एक वास्तविक संख्या का quintic समीकरण का ही असली जड़ के रूप में परिभाषित किया गया है ।ax5+x+a=0

यहाँ हम ultraradical फ़ंक्शन को दर्शाने के लिए का उपयोग करते हैं। उदाहरण के लिए, , ।UR()UR(100010)=10105+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
@ मुझे लगता है मैं सिर्फ पहले दो के लिए वर्गों को देखने वाला हूं, या क्या मैं किसी प्रकार के फॉन्ट को याद कर रहा हूं ...
mbrig

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बढ़ रहा है। करने के लिए सीमा निर्धारित करें -abs(x)और abs(x)पर्याप्त है, लेकिन -x*x-1और x*x+1भी कम है।

BTW पायथन की पुनरावृत्ति सीमा थोड़ी बहुत कम है, इसलिए 1e-9 होना आवश्यक है, और :=इसे वॉल्टो ऑपरेटर कहा जाता है।


क्या एक लीनियर खोज कम बाइट्स लेगी?
user202729

8

जावास्क्रिप्ट (ईएस 7), 44 बाइट्स

नीचे के समान सूत्र का उपयोग करके एक सुरक्षित संस्करण लेकिन निश्चित संख्या में पुनरावृत्तियों के साथ।

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

इसे ऑनलाइन आज़माएं!


जावास्क्रिप्ट (ईएस 7),  43  42 बाइट्स

न्यूटन की विधि का उपयोग करते हुए 5एक्स4+5 का एक अनुमान के रूप में '(एक्स)=5एक्स4+1

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

इसे ऑनलाइन आज़माएं!

कैसे?

हम एक्स0=0 शुरू करते हैं और पुनरावर्ती रूप से गणना करते हैं:

एक्सकश्मीर+1=एक्सकश्मीर-एक्सकश्मीर5+एक्सकश्मीर+n5एक्सकश्मीर4+5=एक्सकश्मीर-एक्सकश्मीर+nएक्सकश्मीर4+15

जब तक एक्सकश्मीर-एक्सकश्मीर+1 नगण्य है।


चूंकि फ्लोटिंग संख्याओं की तुलना करना गलत है, मुझे यकीन नहीं है कि कार्यक्रम की समाप्ति हर संभव इनपुट के लिए गारंटी दी जा सकती है ( सूत्र को छोटा करने का प्रयास करते समय पहले से ही अनुभवी मुद्दों के नीचे पायथन 3 उत्तर )।
जोएल

1
@Joel मैंने एक सुरक्षित संस्करण जोड़ा है।
Arnauld

7

जेली , 8 बाइट्स

;17B¤ÆrḢ

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है:

  • के बाइनरी प्रतिनिधित्व के लिए तैयार [a, 1, 0, 0, 0, 1]करके सूची का निर्माण aकरता है 17। यह सूची क्यों? क्योंकि यह उन गुणांकों से मेल खाता है जिनकी हम तलाश कर रहे हैं:

    [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 बाइट्स एसबीसीएस

-दिजिमा को धन्यवाद

बेनामी tacit उपसर्ग समारोह।

(--*∘5)⍣¯1

इसे ऑनलाइन आज़माएं!

()⍣¯1 एक समय के बाद नकारात्मक कार्य को लागू करें:

- नकारात्मक तर्क

- ऋण

*∘5 तर्क 5 की शक्ति के लिए उठाया गया

संक्षेप में, यह पूछता है: मुझे कौन सी x को f(x)=xx5 से फीड करने की आवश्यकता है ताकि परिणाम y हो जाए ।


यह बहुत अच्छा है। दुख की बात है कि जे इस उलटा प्रदर्शन करने में सक्षम नहीं है
योना

@dzaima मैंने ऐसा क्यों नहीं देखा za धन्यवाद।
आदम

5

आर , 43 बाइट्स

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

इसे ऑनलाइन आज़माएं!

nlmएक्स|एक्स5+एक्स+|nlma


@ TheSimpliFire गणितीय रूप से, यह समकक्ष है, लेकिन संख्यात्मक रूप से, यह नहीं है: पूर्ण मान के बजाय वर्ग का उपयोग करने से बड़े इनपुट के लिए गलत मान होता है। ( इसे ऑनलाइन आज़माएं। )
रोबिन राइडर

4

आर , 56 बाइट्स

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

इसे ऑनलाइन आज़माएं!

polyrootpolyroot



@RobinRyder यह पर्याप्त रूप से भिन्न है कि मुझे लगता है कि आपको अपना उत्तर पोस्ट करना चाहिए। हालांकि धन्यवाद!
निक केनेडी

1
ठीक है धन्यवाद। यहाँ यह है
रॉबिन राइडर

"दुर्भाग्य से", polyrootसभी जटिल जड़ों को लौटाता है ... अन्यथा यह जीत जाएगा।
रोलैंड

3

जे , 14 बाइट्स

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

इसे ऑनलाइन आज़माएं!

जम्मू में बहुपदों को हल करने के लिए बनाया गया है ... p.

अंतिम 4 टेस्ट केस TIO पर टाइमआउट करते हैं, लेकिन सिद्धांत रूप में अभी भी सही हैं।

किस तरह

जे के बिलिन के लिए बहुपद गुणांक को संख्यात्मक सूची के रूप में लिया जाता है, x^0पहले गुणांक के साथ । इसका मतलब सूची है:

a 1 0 0 0 1

1 0 0 0 117 बाइनरी में है, इसलिए हम इसका प्रतिनिधित्व करते हैं #:@17, फिर इनपुट संलग्न करते हैं ,, फिर आवेदन करते हैं p., फिर परिणाम को raze से अनबॉक्स करते हैं ;, फिर अंतिम तत्व लेते हैं{:



2

परी / जीपी , 34 32 26 24 बाइट्स

a->-solve(X=0,a,a-X-X^5)

इसे ऑनलाइन आज़माएं!


अच्छा जवाब, लेकिन जिज्ञासा से बाहर: s(-100010)परिणाम -8.090... - 5.877...*Iसिर्फ के बजाय क्यों होता है 10? क्या यह बड़े परीक्षण मामलों के लिए भाषा की एक सीमा है? पुनश्च: आप दोनों को बदलने 2 बाइट्स बचा सकते हैं 0.2करने के लिए .2। :)
केविन क्रूज़सेन

आर-

आप एक अनाम फ़ंक्शन का उपयोग कर सकते हैं a->solve(X=-a,a,X^5+X+a):।
एलेफल्फा

साभार @alephalpha
TheSimpliFire


2

k4, 33 31 बाइट्स

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

न्यूटन-रफसन ने क्रमिक रूप से गणना की, जब तक कि एक संख्या को परिवर्तित नहीं किया गया

संपादित करें: -2 ngn के लिए धन्यवाद!


जो, यह सब गलत हो गया ...

के (ओके), 10 बाइट्स

{-x+*/5#x}

@ngn lol, लापरवाह ... नवीनीकृत किया गया था लेकिन वह अब K4 के रूप में मैं भी NGN / k या ठीक :) में यह करने के लिए आलसी हूँ में
घसीट

ठंडा! के अंतिम जोड़ी [ ]अनावश्यक लगता है
NGN

हम्म, तुम सही हो। मैं पहले अजीब व्यवहार का सामना कर चुका हूं, जहां अधिक / बाहरी (एक या दूसरे, मैं भूल जाता है) कोष्ठक के कारण अनंत लूप में परिणाम / अभिसरण। इसलिए मैंने उन्हें छोड़ दिया लेकिन मुझे जाँच करनी चाहिए थी। धन्यवाद!
मैल


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=...काम करना चाहेंगे ?
user202729


0

स्वच्छ , 61 60 बाइट्स

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

इसे ऑनलाइन आज़माएं!

न्यूटन की विधि, पहले उपयोगकर्ता 202729 के उत्तर में लागू की गई ।

क्लीन , 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

इसे ऑनलाइन आज़माएं!

एक "बाइनरी" खोज, खोज क्षेत्र को ऊपरी और निचले 99.6% तक सीमित करती है, जो 50% के बजाय प्रत्येक पुनरावृत्ति पर उच्च और निम्न सीमा के बीच होती है।




0

मेपलसॉफ्ट मेपल , 23 बाइट्स

f:=a->fsolve(x^5+x+a=0)

दुर्भाग्य से, वहाँ कोई ऑनलाइन मेपल संकलक / कैलकुलेटर बाहर AFAIK नहीं है। लेकिन कोड बहुत सीधा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.