निश्चित-बिंदु और मनमानी परिशुद्धता संगणना की प्रासंगिकता


10

मुझे आसपास बहुत कम गैर-फ़्लोटिंग पॉइंट कंप्यूटिंग लाइब्रेरी / पैकेज दिखाई देते हैं। फ़्लोटिंग पॉइंट प्रतिनिधित्व के विभिन्न अशुद्धियों को देखते हुए, सवाल उठता है कि कम से कम कुछ फ़ील्ड क्यों नहीं हैं जहां यह बढ़ी हुई सटीकता निश्चित बिंदु के साथ काम करने की जटिलताओं के लायक हो सकती है।

क्या कोई निश्चित बिंदु, एक निश्चित बिंदु प्रतिध्वनि सॉलेवर का उपयोग करने में कोई प्रमुख कठिनाई है? वे कितने धीमे / तेज, गलत / सटीक होंगे?

संबंधित: यह और यह


मिलिंद आर, आपके सवाल के लिए धन्यवाद। मुझे लगता है कि आपका प्रश्न दिलचस्प है, लेकिन शायद साइट के लिए अनुपयुक्त है। मैं आपसे मार्गदर्शन के लिए साइट एफएक्यू देखने का आग्रह करता हूं । जब मैं आपके प्रश्न को देखता हूं, तो मुझे आभास होता है कि यह एक शेख़ी की शुरुआत है, हालांकि मुझे लगता है कि साइट-उपयुक्त प्रश्न के तत्व मौजूद हैं। यह पूछने योग्य है कि कम्प्यूटेशनल विज्ञान में पूर्णांक अंकगणितीय और नियत-बिंदु अंकगणित के कई अनुप्रयोग हैं, और उन अंकगणित की तुलना फ्लोटिंग बिंदु से करने के लिए कह रहे हैं। मैं आपकी पोस्ट को संपादित करने के लिए प्रोत्साहित करता हूं।
ज्योफ ऑक्सबेरी

हाँ, यह एक शेख़ी से पैदा हुआ था, लेकिन मैंने इसे यथास्थिति के औचित्य की तलाश के रूप में चित्रित किया। मेरा सवाल है, जैसा कि आप समझ सकते हैं, इस बारे में है कि हम गहन संख्यात्मक में पूर्णांक और निश्चित बिंदु गणित की ओर एक बड़ी बदलाव क्यों नहीं कर सकते हैं। क्या आप कृपया इसे मेरी ओर से संपादित कर सकते हैं? मैंने वास्तव में कोशिश की, लेकिन मुझे नहीं पता कि मेरा सवाल कैसे उचित नहीं है।
मिलिंद आर

5
मुझे लगता है कि इसका एक उद्देश्य तकनीकी उत्तर है: यदि आप लगभग किसी भी वैज्ञानिक संगणना (कहते हैं, एक रैखिक समाधान), सटीक भंडारण के लिए आवश्यक बिट्स की संख्या समय में तेजी से बढ़ती है। इस प्रकार, उपयोगी कार्य के लिए अनुभवहीनता के लिए मजबूत समर्थन की आवश्यकता होती है।
जेफ्री इरविंग

@MilindR: कम्प्यूटेशनल ज्यामिति समुदाय की वास्तविक संख्या अभिकलन में रुचि रही है जो एक ही समय में अत्यधिक प्रदर्शन और सटीक है। मुझे लगता है कि अनुसंधान के इस क्षेत्र में आपके लिए प्रासंगिक सभी व्यावहारिक मुद्दों को देखा जा सकता है। एक उदाहरण जिसे आप खोज सकते हैं, वह है पुस्तकालय LEDA।
शुहलो

@GeoffreyIrving त्रिकोणीय matrices में शून्य के बारे में क्या? क्या उन्हें फ़्लोटिंग पॉइंट प्रॉब्लम फ़्लोटिंग पॉइंट के अलावा किसी अन्य चीज़ के रूप में संग्रहीत नहीं किया जा सकता है ?
मिलिंद आर

जवाबों:


5

निश्चित बिंदु अंकगणित का उपयोग कुछ परिस्थितियों में उचित हो सकता है। आम तौर पर वैज्ञानिक कंप्यूटिंग के लिए (कम से कम इस अर्थ में कि ज्यादातर लोग इसके बारे में सोचते हैं) यह उस बड़े गतिशील उपकरण को व्यक्त करने की आवश्यकता के कारण उचित नहीं है। आप एक उदाहरण के रूप में आइगेनवल्यू समस्याओं का उल्लेख करते हैं, लेकिन विज्ञान में बहुत बार, एक मैट्रिक्स के सबसे छोटे ईजेन्यूवल में रुचि रखते हैं (जैसे, एक क्वांटम सिस्टम की जमीन की स्थिति की गणना करने में)। यदि आप निर्धारित बिंदु का उपयोग करते हैं, तो छोटे eigenvalues ​​की सटीकता आम तौर पर बड़े eigenvalues ​​के सापेक्ष काफी खराब हो जाएगी। यदि आपके मैट्रिक्स में ऐसी प्रविष्टियाँ हैं जो बड़े अनुपातों से भिन्न होती हैं, तो छोटे eigenvalues ​​पूरी तरह से काम करने की सटीकता में अनपेक्षित हो सकते हैं। यह संख्याओं के प्रतिनिधित्व के साथ एक समस्या है; इन तर्कों की परवाह किए बिना कि आप मध्यवर्ती संगणना कैसे करते हैं। आप संभवतः गणना किए गए परिणामों पर लागू करने के लिए स्केलिंग का काम कर सकते हैं, लेकिन अब आपने फ्लोटिंग पॉइंट का आविष्कार किया है। ऐसे मेट्रिसेस का निर्माण करना आसान है जिनके तत्वों को अच्छी तरह से व्यवहार किया जाता है, लेकिन जिनके आइजनवेल्स बहुत खराब व्यवहार करते हैं जैसे -विल्किंसन मैट्रिसेस , या यहां तक ​​कि पूरी तरह से पूर्णांक प्रविष्टियों के साथ मैट्रिस )। ये उदाहरण उतने पैथोलॉजिकल नहीं हैं जितने कि लग सकते हैं, और विज्ञान की अत्याधुनिक समस्याओं में बहुत खराब व्यवहार वाले मेट्रिसेस शामिल हैं, इसलिए इस संदर्भ में निश्चित बिंदु का उपयोग करना एक खराब आइडिया (टीएम) है।

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

एक क्षेत्र जहां निश्चित बिंदु चमक सकता है वह ज्यामितीय कंप्यूटिंग के कुछ क्षेत्रों में है। खासकर यदि आपको सटीक अंकगणित की आवश्यकता है या पहले से सभी नंबरों की गतिशील सीमा को जानते हैं, तो निश्चित बिंदु आपको अपने प्रतिनिधित्व में सभी बिट्स का लाभ उठाने देता है। उदाहरण के लिए, मान लें कि आप दो लाइनों के प्रतिच्छेदन की गणना करना चाहते थे, और किसी तरह दो रेखाओं के अंतिम बिंदु को इकाई वर्ग में बैठने के लिए सामान्यीकृत किया जाता है। इस मामले में, चौराहे बिंदु को एक समान फ्लोटिंग पॉइंट संख्या (जो कि सीमा पर बिट्स को बर्बाद कर देगा) का उपयोग करने की तुलना में अधिक सटीकता के बिट्स के साथ दर्शाया जा सकता है। अब, यह लगभग निश्चित रूप से मामला है कि इस गणना में आवश्यक मध्यवर्ती संख्याओं को उच्च परिशुद्धता की गणना करने की आवश्यकता है, या कम से कम बहुत सावधानी से (जैसे जब दो संख्याओं के उत्पाद को किसी अन्य संख्या से विभाजित करते हैं, तो आपको इसके बारे में बहुत सावधान रहने की आवश्यकता होती है )। इस संबंध में, निर्धारित बिंदु कम्प्यूटेशनल दृष्टिकोण से बजाय प्रतिनिधित्व के दृष्टिकोण से अधिक फायदेमंद है, और मैं यह कहना चाहूंगा कि यह आम तौर पर सच है जब आप अपने एल्गोरिथ्म आउटपुट की गतिशील सीमा पर निश्चित ऊपरी और निचले सीमा स्थापित कर सकते हैं। । ऐसा कम ही होता है।

मुझे लगता है कि फ्लोटिंग पॉइंट अभ्यावेदन कच्चे या गलत थे (एक घातांक पर बेकार बिट क्यों?)। लेकिन समय के साथ मुझे पता चला है कि यह वास्तव में वास्तविक संख्याओं के लिए सर्वोत्तम संभव अभ्यावेदन में से एक है। प्रकृति में चीजें लॉग तराजू पर दिखाई देती हैं, इसलिए वास्तविक डेटा एक्सपोजर की एक बड़ी सीमा को समाप्त करता है। उच्चतम संभव सापेक्ष सटीकता प्राप्त करने के लिए लॉग स्केल पर काम करने की आवश्यकता होती है, जिससे एक घातांक की ट्रैकिंग अधिक प्राकृतिक हो जाती है। "प्राकृतिक" प्रतिनिधित्व के लिए एकमात्र अन्य दावेदार सममित स्तर सूचकांक है । हालाँकि, जोड़ और घटाव उस प्रतिनिधित्व में बहुत धीमे हैं, और इसमें IEEE 754 के हार्डवेयर समर्थन का अभाव है। विचार की जबरदस्त मात्रा फ्लोटिंग पॉइंट मानकों में डाल दी गई, संख्यात्मक रैखिक बीजगणित के एक स्तंभ द्वारा। मुझे लगता है कि वह जानता है कि संख्याओं का "सही" प्रतिनिधित्व क्या है।


4

सटीक अंकगणित / निश्चित बिंदु अंकगणितीय का उपयोग क्यों किया जाता है, इसका एक उदाहरण के रूप में इस पर विचार करें:

  • परिमित तत्व विधि में, जैसा कि वैज्ञानिक कंप्यूटिंग में उपयोग की जाने वाली लगभग हर दूसरी विधि में, हम रैखिक या गैर-रेखीय प्रणालियों में पहुँचते हैं जो केवल वास्तविक दुनिया के लिए सन्निकटन हैं। उदाहरण के लिए, एफईएम में, हल करने के लिए रैखिक प्रणाली केवल मूल आंशिक अंतर समीकरण (जो, स्वयं, केवल वास्तविक दुनिया का एक अनुमान हो सकता है) का एक अनुमान है। तो क्यों कुछ है कि केवल एक अनुमान है को हल करने में भारी प्रयास डाल दिया?

  • आज हम जिन एल्गोरिदम का उपयोग करते हैं उनमें से अधिकांश प्रकृति में पुनरावृत्त हैं: न्यूटन की विधि, संयुग्म ग्रेड, आदि। हम इन पुनरावृत्तियों को समाप्त करते हैं जब भी हम संतुष्ट होते हैं कि समस्या के समाधान के लिए पुनरावृत्त अनुमानित की सटीकता पर्याप्त है। दूसरे शब्दों में, हम सटीक समाधान होने से पहले ही समाप्त कर देते हैं। पहले की तरह, एक पुनरावृत्ति योजना के लिए सटीक अंकगणित का उपयोग क्यों करें जब हम जानते हैं कि हम केवल अनुमान लगा रहे हैं?


यह स्वीकार करने के लिए निराशाजनक है, लेकिन हाँ, आपका जवाब मूल रूप से सटीक गणना के बड़े पैमाने पर उपयोग को क्रूस पर चढ़ाता है। मुझे लगता है कि मैं floatजल्द ही किसी भी समय पीछे नहीं देखूंगा।
मिलिंद आर

@MilindR: मुझे पूरा यकीन नहीं है कि आप क्या लक्ष्य बना रहे हैं। आपको लगता है कि एक हथौड़ा है और निराश हैं कि किसी के पास एक कील नहीं है या यह नहीं सोचता है कि हथौड़ा एक उपयोगी उपकरण है। लेकिन ऐसा नहीं है क्योंकि हम आपको पसंद नहीं करते हैं - हमने लंबे समय तक इन मुद्दों के बारे में सोचा है और बस यह तय किया है कि हमारे पास जो पेचकश है वह उचित उपकरण है। मुझे इसके बारे में कुछ भी निराशाजनक नहीं लगता (जब तक कि आपके पास एक हथौड़ा नहीं है) क्योंकि यह सिर्फ एक व्यावहारिक दृष्टिकोण है - जब हम केवल अनुमान लगाते हैं तो सटीक अंकगणित का उपयोग क्यों करते हैं?
वोल्फगैंग बैंगर्थ

यह निराशाजनक है क्योंकि एक पूरी तरह से सामान्य समस्या इतनी बुरी तरह से वातानुकूलित हो सकती है कि यह प्रभावी रूप से अघुलनशील है। जैसा कि इसलिए भी है कि मनमाना परिशुद्धता का आदर्श इतना आशाजनक लग रहा था, जैसा कि मूल्य से लेकर इसे आउटपुट करने के लिए फ़्लोटिंग पॉइंट के अस्थायी प्रकृति की तुलना में।
मिलिंद आर

समस्या यह है कि गोलाई त्रुटियों का विश्लेषण करने के लिए अत्यधिक कठिन है। मुझे इस दिन एहसास हुआ कि मैंने संख्यात्मक विश्लेषण और संख्यात्मक रैखिक बीजगणित सीखना शुरू किया है। तो एक प्रणाली जो पूरी तरह से समस्या से बचाती है, कंडीशनिंग को एक गैर-मुद्दा बना रही है, क्या दुनिया को तूफान से सही लेना चाहिए? सोच थी। बेशक, मैं सीमाओं को समझता हूं, लेकिन वे डीलब्रेक की तुलना में अधिक चिड़चिड़ापन की तरह लग रहे थे। प्रोसेसर में ट्रांजिस्टर को कम करने में बढ़ी हुई कठिनाई की तरह। हाँ इसका विश्लेषण करना मुश्किल है, लेकिन इंटेल अभी भी करता है।
मिलिंद आर

2
यदि कोई समस्या इतनी बुरी हालत में है कि उसे हल करना मुश्किल है, तो उसका समाधान गड़बड़ियों के लिए स्थिर नहीं है। यह मूल समस्या है, फ़्लोटिंग पॉइंट प्रतिनिधित्व नहीं है। हां, शायद आप सटीक प्रतिनिधित्व का उपयोग करके समस्या का समाधान पा सकते हैं। लेकिन समाधान स्थिर नहीं है और इसलिए संभव है कि आपके पास वास्तव में जो कुछ भी है, उससे आपको कुछ लेना-देना न हो। आप गलत पेड़ को भौंक रहे हैं यदि आपको लगता है कि संख्याओं का प्रतिनिधित्व समस्या है।
वुल्फगैंग बैंगर्थ

3

यदि आप इस लाइब्रेरी को सही राउंडिंग के लिए देखते हैं : CRlibm , तो आप दस्तावेज़ में देखेंगे कि आम तौर पर, एल्गोरिदम को सटीक (तर्कपूर्ण प्रमाण के साथ) सिद्ध किया जाना चाहिए। क्यों? किसी फ़ंक्शन के परिणाम के अभिसरण की स्थिरता और गति में "एक-आकार-फिट-सभी" उत्तर नहीं होता है। संक्षेप में, "कोई मुफ्त भोजन नहीं है" - आपको यह साबित करने के लिए काम करना होगा कि आपका तर्क सही है। यह फ़ंक्शन किए गए व्यवहार के कारण है, न कि अंतर्निहित हार्डवेयर (चाहे आप पूर्णांक या फ़्लोटिंग पॉइंट इकाइयों का उपयोग करते हैं, हालांकि हाँ, दोनों में "गोचैस" है, जैसे अतिप्रवाह / अंडरफ्लो, असामान्य संख्याएं, आदि) भले ही परिणाम हो। आप एक पूर्णांक में अभिसरण की तलाश कर रहे हैं, परिणाम को खोजने के लिए उपयोग किया जाने वाला एल्गोरिथ्म आवश्यक रूप से बहुत स्थिर नहीं है।

Eigen एक C ++ लाइब्रेरी है, जिसमें विभिन्न गुणों वाले प्रत्येक, मैट्रिसेस को हल करने के लिए कई एल्गोरिदम हैं। इस पृष्ठ में एक तालिका है जो मैट्रिक्स को हल करने के लिए उपयोग किए जाने वाले विभिन्न एल्गोरिदम के लिए गति बनाम सटीकता व्यापार-ऑफ पर चर्चा करती है। मुझे संदेह है कि Eigen पुस्तकालय वह कर सकता है जो आप चाहते हैं। :-)


धन्यवाद .. बहुत जानकारीपूर्ण, और अच्छा लिंक। लेकिन अधिक सटीक आउटपुट में सीमित परिणाम के साथ-साथ निश्चित बिंदु का उपयोग सीमित नहीं है? चूँकि प्रतिनिधित्व स्वयं के साथ शुरू करने के लिए सटीक है, फ्लोटिंग पॉइंट के विपरीत?
मिलिंद आर

1
मेरा सुझाव है कि आप अपनी समस्या पर दूसरे दृष्टिकोण से हमला करें। तर्क का परिचय देते हुए, आप सीखते हैं कि समस्या के समाधान के तीन भाग हैं: परिभाषाएँ, तर्क और निष्कर्ष / परिणाम। आप शायद (हम में से अधिकांश के रूप में) बहुत समस्या निवारण की "परिभाषा" कदम पर ज्यादातर काम करते थे - आमतौर पर आप अपनी समस्या को "परिभाषित" कर सकते हैं; हालाँकि, यदि आप निराश हो जाते हैं, तो कभी-कभी आपको अधिक कठिन प्रकार की समस्या का सामना करना पड़ता है जिसके लिए "तर्क" वाले हिस्से में अधिक काम करने की आवश्यकता होती है।
mda

मैं केवल आपको अस्पष्ट रूप से समझता हूं ... मैं यह नहीं देख सकता कि मैं इस समस्या को "कैसे दूर कर सकता हूं", यह तर्क आवश्यक है।
मिलिंद आर

कई सालों बाद, मैं वास्तव में आपको समझाता हूं :-)
मिलिंद आर।

2

जहां गणित में उच्च-परिशुद्धता अंकगणित उपयोगी रहा है, वहां कुछ अच्छे उदाहरणों के लिए, जोनाथन बोरवेइन और डेविड बेली द्वारा प्रयोग द्वारा गणित की पुस्तक पर एक नज़र डालें । यह सीक्वल भी है , जिसे मैंने पढ़ा नहीं है।

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