2015-01-29 21 views
5

आपके पास 2 कार्य हैं;फ़्लोटिंग प्वाइंट; डिवीजन बनाम गुणा

f(x)= x(((x+1)^(1/2))-(x^(1/2)))  
g(x)= x/(((x+1)^(1/2))+(x^(1/2))) 

कौन सा अधिक सटीक है?

साइड नोट: यदि आप समझा सकते हैं कि यह वास्तव में मेरी मदद करेगा, तो मुझे लगता है कि यह एफ (एक्स) है क्योंकि एक संप्रदाय नहीं है लेकिन मैं 100% निश्चित नहीं हूं।

+1

SO के लिए Waaayay ऑफ-विषय, इसके बजाय [math.stackexchange] (http://math.stackexchange.com/) आज़माएं। –

+0

हैलो क्लेयर, स्टैक एक्सचेंज को विभिन्न विषयों पर केंद्रित करने, एकाधिक पृष्ठों में विभाजित किया गया है। उनमें से एक है [गणित] (http://math.stackexchange.com/)। आपको वहां अपने प्रश्न पूछना चाहिए। – Stefan

+0

धन्यवाद दोस्तों, मैं बस इतना करूंगा कि –

उत्तर

5

फ़्लोटिंग-पॉइंट अंकगणित वास्तविक गणित से काफी अलग है। विशेष रूप से, फ़्लोटिंग-पॉइंट अंकगणित सहयोगी या वितरक नहीं है। इसलिए परिमित-परिशुद्धता फ्लोटिंग-पॉइंट अंकगणित के साथ मूल्यांकन किए जाने पर गणितीय रूप से समकक्ष अभिव्यक्ति आवश्यक नहीं होती हैं। यह तब भी मामला है जब व्यक्तिगत संचालन, जैसे जोड़, घटाव, गुणा, विभाजन, और वर्ग रूट IEEE-754 floating-point standard द्वारा आवश्यक अनुसार सही ढंग से गोल किए गए परिणाम उत्पन्न करते हैं।

इस मामले में g() औसत पर f() से अधिक सटीक होगा, और x = 500 के विशिष्ट मामले के लिए भी अधिक सटीक होगा। कारण यह है कि f() घटिया रद्दीकरण से पीड़ित है। यह दो फ़्लोटिंग-पॉइंट संख्याओं के प्रभावी घटाव के दौरान होता है जो लगभग परिमाण में समान होते हैं। प्रमुख अंक घटाव के दौरान रद्द करते हैं, जो बाद के गणना में प्रवेश करने वाले कुछ शेष पीछे वाले अंक छोड़ते हैं। साथ ही, घटाए जा रहे मूल संचालन के पिछड़े अंकों में जमा की गई किसी भी गोल त्रुटि को बाद की गणना द्वारा बढ़ाया जा सकता है। उदाहरण के साथ एक विस्तारित स्पष्टीकरण this Wikipedia article में पाया जा सकता है।

इस मामले में, sqrt(x+1) और sqrt(x) लगभग समान परिमाण हैं, विशेष रूप से x की परिमाण के रूप में। x = 500 के उदाहरण का उपयोग और IEEE-754 एकल परिशुद्धता गणित को रोजगार, हम पाते हैं:

x = 500 f(x) = 0x1.659ae0p+3 (11.175156) reference = 0x1.659798p+3 (11.174755) 
x = 500 g(x) = 0x1.659798p+3 (11.174755) reference = 0x1.659798p+3 (11.174755) 

त्रुटि f(500) में 420 ulps है, जबकि g(500) बचाता है सही ढंग से एकल परिशुद्धता परिणाम गोल।

+0

जिज्ञासा से, क्या ऐसे मूल्य हैं जिनके लिए 'एफ' अधिक सटीक है? न केवल "औसत पर"? – Teepeemm

+0

ओटी: अजीब बात है कि मेरा जवाब स्वचालित रूप से एक समुदाय विकी में बदल गया। @Tpepeemm: हां, यादृच्छिक आईईईई -754 सिंगल-परिशुद्धता तर्कों के साथ एक सरसरी जांच से, ऐसे कई मामले मौजूद हैं। उदाहरण के लिए: 'x = 0x1.6fa276p-2 (3.59018177e-1); एफ (एक्स) = 0x1.a09844p-3 (2.03415424e-1); जी (एक्स) = 0x1.a09846p-3 (2.03415439e-1); रेफ = 0x1.a09844p-3 (2.03415425e-1); ulperr (च) = 6.71231e -2; ulperr (छ) = 9.32877e-1' – njuffa

संबंधित मुद्दे