साइंस / इंजीनियरिंग में फ़्लोटिंग पॉइंट नंबर का इस्तेमाल अक्सर क्यों किया जाता है?


33

फ्लोटिंग पॉइंट नंबरों की सटीकता की जांच करते हुए, मैंने कुछ स्थानों पर एक स्टेटमेंट के समान देखा है

" इंजीनियरिंग और वैज्ञानिक गणना में फ्लोट और डबल ( अक्सर उपयोग किए जाने वाले / डिज़ाइन किए जाते हैं ) "

मेरी समझ से, फ़्लोट्स और डबल्स की ताकत स्मृति की मात्रा है जो वे अपनी (अच्छी, लेकिन सही नहीं) परिशुद्धता के लिए उपयोग करते हैं।

मुझे ऐसा लगता है कि मैं इस उत्तर से लगभग समझ पा रहा हूं

"फ्लोटिंग पॉइंट नंबर आपको निरंतर मात्रा में मॉडल बनाते हैं"

मुझे अभी भी समझ नहीं आ रहा है कि मैं समझूं। इंजीनियरिंग और विज्ञान दोनों ही उन क्षेत्रों की तरह लगते हैं जहाँ आप अपनी गणना से सटीक परिणाम चाहते हैं , जो कि मेरी समझ से, फ्लोटिंग पॉइंट नहीं देते हैं। मुझे यकीन नहीं है कि मैं एक "निरंतर मात्रा" का पालन कर रहा हूं, बिल्कुल।

क्या कोई इस स्पष्टीकरण पर विस्तार कर सकता है और शायद एक उदाहरण दे सकता है?



47
Engineering and Science both sound like fields where you would want precise results from your calculations, which, from my understanding, floating points do not give.विज्ञान और इंजीनियरिंग दोनों में आप केवल एक निश्चित बिंदु तक सटीक के बारे में परवाह करते हैं। हर गणना के लिए अनंत सटीकता का उपयोग करना अक्सर अनावश्यक रूप से महंगा होता है। फ़्लोटिंग पॉइंट जो तय बिंदु से अलग होता है, वह यह है कि आपको निश्चित संख्या में दशमलव स्थानों के लिए प्रतिबद्ध नहीं होना पड़ेगा - आपके पास वास्तव में बहुत कम मात्रा में दशमलव स्थान हो सकते हैं या सीमित परिशुद्धता के साथ वास्तव में बड़ी मात्रा में हो सकते हैं।
डोभाल

24
ऊपर दिए गए बिंदुओं को जोड़ने के लिए, न केवल आप एक निश्चित बिंदु से परे परिशुद्धता के बारे में परवाह नहीं करते हैं, आप मनमाने ढंग से सटीक परिणाम प्राप्त नहीं कर सकते हैं क्योंकि आपके कई इनपुटों को मापी गई मात्रा में कुछ अंतर्निहित त्रुटि है।

2
यह भी इंगित करता है कि यह एक दिया नहीं है कि गोलाई की त्रुटियां या तो जमा होती रहेंगी। यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं और कैसे कर रहे हैं; उस के लिए समर्पित एक संपूर्ण क्षेत्र है।
डोभाल

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

जवाबों:


77

विज्ञान और इंजीनियरिंग में संगणना के लिए सटीक, सीमा और गति में ट्रेडऑफ की आवश्यकता होती है। फिक्स्ड पॉइंट अंकगणित सटीक और सभ्य गति प्रदान करता है, लेकिन यह बलिदान रेंज है। BigNum, मनमाने ढंग से सटीक पुस्तकालय, रेंज और परिशुद्धता पर जीतते हैं, लेकिन गति पर हार जाते हैं।

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

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


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

4
@JonathanEunice आप वास्तव में वास्तविकता का मॉडल नहीं बना सकते हैं। मॉडल के लिए इनपुट माप से आता है और आप शायद चीजों को कभी ठीक से माप नहीं पाएंगे कि आधुनिक कंप्यूटर / सॉफ्टवेयर (उस समय) में एक मूल वास्तविक संख्या इसे सीमित कर देगी। दूसरे शब्दों में, आपके पास आदर्श मॉडल, सॉफ्टवेयर या गणितीय हो सकते हैं, इससे कोई फर्क नहीं पड़ता। उदाहरण के लिए एक बॉक्स की मात्रा की गणना करें। a*b*cआसान सामान, हालांकि आपको उन आयामों को मापने की आवश्यकता है जो आप पूर्ण निश्चितता के साथ नहीं कर सकते हैं, इस प्रकार आपको गणना की अनिश्चितता की अनंत सटीकता की आवश्यकता नहीं है, बस माप त्रुटि से बाध्य होने के लिए पर्याप्त है।
luk32

2
@ luk32 हम उन बिंदुओं के बारे में हिंसक रूप से सहमत हैं। व्यक्ति किसी चीज़ को बिल्कुल (जैसे एक गोले का आयतन) मॉडल कर सकता है, लेकिन कभी भी माप नहीं सकता। और वास्तविकता कभी भी पूरी तरह से एक आदर्श मॉडल नहीं होती है। पूर्ण माप या अभिकलन की प्रतीक्षा की तुलना में थोड़ा संस्कारित, उपयोगी मूल्य / मॉडल प्राप्त करने के लिए बेहतर है - कुछ ऐसा जो हमेशा एक कदम दूर होगा।
जोनाथन यूनिस

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

@ माइकलग्रुवेनल्ड, हम वास्तव में वास्तविक संख्याओं का प्रतिनिधित्व नहीं कर सकते हैं, लेकिन हम समस्याओं को हल करने में सक्षम हैं कि हम एक पर्याप्त करीब सन्निकटन का निर्माण कर सकें, जो कि एक हज़ार फीट ऊँची संरचनाओं का निर्माण कर सकें, डीएनए में जीन की पहचान कर सकें, और दो साल के लिए धूमकेतु के साथ एक उपग्रह का मिलान कर सकें। अंतरिक्ष में। रैंडी न्यूमैन को परास्त करने के लिए, यह सटीक नहीं हो सकता है, लेकिन यह सब ठीक है। वास्तव में हम तर्कसंगत रूप से मनमाने ढंग से सटीक पुस्तकालयों (स्मृति की सीमाओं के अधीन) का उपयोग करके तर्कसंगतता का प्रतिनिधित्व कर सकते हैं।
चार्ल्स ई। ग्रांट

30

आप किस विकल्प का प्रस्ताव करते हैं?

गणित में वास्तविक संख्याओं का उपयोग करके निरंतर मात्राओं का प्रतिनिधित्व किया जाता है। कोई डेटा प्रकार नहीं है जो हर संभव वास्तविक संख्या को सांकेतिक शब्दों में बदलना कर सकता है (क्योंकि reals बेशुमार हैं), तो इसका मतलब है कि हम केवल उन वास्तविक संख्याओं का सबसेट चुन सकते हैं जिनमें हम सबसे अधिक रुचि रखते हैं।

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

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

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

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


1
सबसे अच्छे जवाबों में से एक, मैंने इसे लिखने से पहले अनदेखा कर दिया।
माइकल ले बारबियर ग्रुएनवाल्ड

8
इसके अलावा, थोड़ा असुविधाजनक तथ्य यह है कि आप यह भी नहीं बता सकते हैं कि दो कम्प्यूटेबल रियल समान हैं।
जोर्ग डब्ल्यू मित्तग

1
तुलना के साथ एक समस्या में चलाने के सभी कम्प्यूटेशनल reals का उपयोग नहीं करेगा? मुझे पूरा यकीन है कि आप रुकने की समस्या को हल किए बिना मनमाने ढंग से गणना योग्य वास्तविक की तुलना नहीं कर सकते।
कास्परड

@kasperd: मुझे लगता है कि गणना में किसी एक ऑपरेशन के उपयोग की अनुमति देने के लिए कुछ उपायों पर निर्भर करेगा, हालांकि मुझे यकीन नहीं है कि गणना प्रकारों का एक सेट कितना समृद्ध हो सकता है और अभी भी गारंटी दे सकता है कि कोई भी दो मनमाने परिणाम हो सकते हैं सीमित समय में परिचालनों की एक सीमित संख्या में उत्पादन किया जा सकता है। बीजगणितीय प्रकार लगभग निश्चित रूप से उस मानदंड को पूरा करते हैं, लेकिन मुझे नहीं पता कि ln (x) और exp (x) फ़ंक्शन जोड़े जा सकते हैं और फिर भी इसे पूरा कर सकते हैं।
सुपरकैट

आप मनमाने ढंग से सटीक अंकगणित (जोड़, गुणा, घटाना, विभाजित), अपरिमेय (जैसे known2), अच्छी तरह से ज्ञात ट्रान्सेंडेंट (जैसे पाई और ई), ट्रिगर फ़ंक्शन आदि का समर्थन जारी अंशों का उपयोग करके कर सकते हैं। HAKMEM में गोस्पर का एल्गोरिदम देखें। समाप्त होने पर, आप वांछित सटीकता के लिए एक अस्थायी बिंदु सन्निकटन प्राप्त करने के लिए आलसी मूल्यांकन कर सकते हैं।
पॉल चेरोच

14

विज्ञान के बारे में आपका प्रस्ताव गलत है, इंजीनियरिंग और विज्ञान अन्य तो गणित सटीक सटीक परिणामों के साथ काम नहीं करता है। वे एक सटीक कारक के साथ काम करते हैं जो आपके द्वारा दिखाए गए कितने अंकों में बनाया जाता है।

यहां आपको समझने के लिए महत्वपूर्ण शब्द है: महत्वपूर्ण आंकड़े । किसी संख्या के महत्वपूर्ण आंकड़े वे अंक होते हैं जो अर्थ को अपनी सटीकता में योगदान देते हैं।

जिसका मूल रूप से मतलब है कि अगर मैं कहता हूं कि कुछ 12 सेंटीमीटर लंबा है, तो यह वास्तव में 11,5 और 12,5 सेंटीमीटर लंबा हो सकता है। यदि मैं कहता हूं कि कोई चीज 12,00 सेंटीमीटर लंबी है, तो यह कहीं 11,995 और 12,005 सेंटीमीटर लंबी हो सकती है।

चित्रण के रूप में, यदि आप माप टेप लेते हैं और अपने लिविंग रूम को मापते हैं। भले ही आप पा सकते हैं कि यह 6 मीटर 25 सेंटीमीटर चौड़ा है, लेकिन आप जानते हैं कि आपका टेप माप मिलीमीटर-सटीकता या नैनो-मीटर-सटीकता के बारे में कुछ भी बताने के लिए सटीक नहीं था।


@leftractionabout का क्या मतलब है गणित (जैसा गणित में है) विज्ञान नहीं है? मेरी किताब में यह है
पीटर बी

2
@ पीटर: मैथ्स साइंस नहीं है। यह दर्शन है। विज्ञान इसे हमारी भौतिक दुनिया की समझ बनाने का कार्य करता है। दर्शन यह समझने की क्रिया है कि विचार एक आदर्श दुनिया में कैसे काम करते हैं।
स्लीपबेटमैन

मुझे लगता है कि विज्ञान आम तौर पर महत्वपूर्ण आंकड़े के बजाय स्पष्ट आत्मविश्वास पर्वतमाला के साथ काम करना पसंद करता है।
तैमूर

@slebetman इसके अलावा कि मेरी पोस्ट में इसका मेरी बात से कोई लेना-देना नहीं है, अगर गणित एक विज्ञान है या नहीं, तो मैं एक उद्धरण छोड़ने में मदद नहीं कर सकता: प्रकृति सहज रूप से गणितीय है, और वह हमसे गणित में बात करती है। हमें केवल सुनना है। क्योंकि प्रकृति गणितीय है, कोई भी विज्ञान जो प्रकृति का वर्णन करना चाहता है वह पूरी तरह से गणित पर निर्भर है। इस बिंदु को अधिक करना असंभव है, और यही कारण है कि कार्ल फ्रेडरिक गॉस ने गणित को "विज्ञान की रानी" कहा है।
पीटर बी

वो बोली यहाँ से जा रही हूँ । एक अच्छा पढ़ा और इस बारे में चर्चा करने के लिए बहुत कुछ है, लेकिन यहाँ नहीं वास्तव में इसका आपके पोस्ट या इस सवाल से कोई लेना-देना नहीं है।
१२:३२ पर १२

7

ध्यान दें कि फ्लोटिंग पॉइंट नंबर मूल रूप से वैज्ञानिक और इंजीनियरिंग नोटेशन के समान हैं, मनुष्यों के लिए गणित और विज्ञान में नंबर लिखने का मानक तरीका है। इन क्षेत्रों में, अत्यधिक परिशुद्धता की बहुत आवश्यकता नहीं है, लेकिन अक्सर एक बड़ी सीमा होती है।

अपने भौतिकी के होमवर्क से एक यादृच्छिक उदाहरण लेने के लिए, मुझे हाल ही में एक इलेक्ट्रॉन के द्रव्यमान के साथ काम करना पड़ा, जो लगभग 9.11 * 10 ^ -31 किग्रा है। मैं परिशुद्धता के बारे में बहुत परवाह नहीं करता; यह आसानी से मैं सभी देखभाल के लिए 9.12 हो सकता है। लेकिन मैं प्रतिपादक के बारे में परवाह करता हूं और 0.0000 ... 911 किलोग्राम लिखना नहीं चाहता, इसलिए मैं वैज्ञानिक संकेतन का उपयोग करता हूं।

इसी तरह का तर्क वैज्ञानिक और इंजीनियरिंग कंप्यूटिंग में लागू होता है: एक बहुत बड़ी सीमा होती है, लेकिन हम बहुत बड़ी संख्या के साथ स्टोर और काम नहीं करना चाहते हैं, इसलिए हम एक सामान्यीकृत मूल्य और एक घातांक को स्टोर करते हैं, जो काम करने के लिए छोटा और तेज है।


6

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

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

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


मैंने काहान का पूरा पेपर अभी तक नहीं पढ़ा है, लेकिन वह मुझसे ज्यादा विनम्र है। जावा में न्यूमेरिक्स हो सकते थे जो अधिक उपयोगी थे और जो वास्तव में होता है, उससे कहीं अधिक तेजी से प्रदर्शन किया है अगर इसमें एक realप्रकार जोड़ा गया है जो स्टोर करने के लिए तीन स्टैक एंट्री लेगा, और मशीन की प्राकृतिक कम्प्यूटेशनल परिशुद्धता का प्रतिनिधित्व करेगा; मान को एक 80-बिट फ्लोट + 16 बिट्स के रूप में संग्रहीत किया जा सकता है, जो 64-बिट फ्लोट + 32 बिट्स पैडिंग, या 64 बिट मैन्टिसा, 16 बिट एक्सपेंटर और साइन और फ्लैग के लिए 16 बिट्स [गैर-एफपीयू कार्यान्वयन के लिए] होता है।
सुपरकट

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

2

TL; DR हम नहीं जानते कि सही सटीकता के साथ अधिकांश कार्यों की गणना कैसे की जाती है, इसलिए पूर्ण सटीकता के साथ संख्याओं का प्रतिनिधित्व करने का कोई मतलब नहीं है।

अब तक के सभी उत्तर सबसे महत्वपूर्ण बिंदु याद करते हैं: हम अधिकांश संख्याओं के सटीक मानों की गणना नहीं कर सकते हैं। एक महत्वपूर्ण विशेष मामले के रूप में, हम घातीय फ़ंक्शन के सटीक मानों की गणना नहीं कर सकते - केवल सबसे महत्वपूर्ण अपरिमेय फ़ंक्शन का हवाला देते हैं।

भोले सवाल का भोला जवाब

ऐसा लगता है कि आपका प्रश्न "सही अंकगणितीय पुस्तकालय हैं, हम फ्लोटिंग अंकगणित के स्थान पर उनका उपयोग क्यों नहीं करते हैं?" इसका उत्तर है कि सटीक अंकगणितीय तर्कसंगत संख्याओं पर काम करता है और वह:

  • आर्किमिडीज़ की संख्या - ped का पांडित्य नाम - तर्कसंगत नहीं है।
  • कई अन्य महत्वपूर्ण स्थिरांक तर्कसंगत नहीं हैं।
  • कई अन्य महत्वपूर्ण स्थिरांक भी तर्कसंगत या ज्ञात नहीं हैं।
  • किसी भी गैर-शून्य तर्कसंगत संख्या x के लिए संख्या ऍक्स्प (x) अपरिमेय है।
  • इसी तरह के बयान कट्टरपंथी, लघुगणक, और वैज्ञानिकों के लिए महत्वपूर्ण कार्यों का खजाना (गौस का वितरण, इसकी सीडीएफ, बेसेल फ़ंक्शंस, यूलर फ़ंक्शंस,…) को पकड़ते हैं।

तर्कसंगत संख्या एक भाग्यशाली दुर्घटना है। अधिकांश संख्याएँ तर्कसंगत नहीं हैं (बायर की प्रमेय देखें) इसलिए संख्याओं पर गणना हमेशा हमें तर्कसंगत दुनिया से बाहर लाएगी।

किसी संख्या की गणना और प्रतिनिधित्व क्या है?

हम यह कहकर प्रतिक्रिया दे सकते हैं कि "ठीक है, समस्या यह है कि तर्कसंगत संख्याएं वास्तविक संख्याओं का प्रतिनिधित्व करने के लिए इतनी बड़ी पसंद नहीं थीं।" फिर हम अपने दासों को कांटा डेबियन रोल करते हैं और वास्तविक संख्याओं के लिए एक नया प्रतिनिधित्व प्रणाली तैयार करते हैं।

यदि हम संख्याओं की गणना करना चाहते हैं तो हमें वास्तविक संख्याओं के लिए एक प्रतिनिधित्व प्रणाली चुननी होगी और उन पर महत्वपूर्ण कार्यों का वर्णन करना होगा - अर्थात परिभाषित करना होगा कि कंप्यूटिंग का क्या अर्थ है। चूंकि हम वैज्ञानिक कंप्यूटिंग में रुचि रखते हैं, हम सभी दशमलव संख्याओं (हमारे उपायों), उनके उद्धरणों (तर्कसंगत संख्याओं), घातीय कार्यों के मूल्यों और कुछ मज़ेदार स्थिरांक जैसे आर्किमिडीज़ की संख्या का प्रतिनिधित्व करना चाहते हैं।

समस्या यह है कि ऐसी प्रणाली में संख्याओं का पूरी तरह से प्रतिनिधित्व करने का एकमात्र तरीका प्रतीकात्मक रूप का उपयोग करना है, अर्थात किसी भी चीज़ की गणना करना और बीजीय अभिव्यक्तियों के साथ काम करना नहीं है। यह वास्तविक संख्याओं का एक अपंग प्रतिनिधित्व है, क्योंकि हम मज़बूती से दो संख्याओं की तुलना नहीं कर सकते हैं (जो एक से अधिक है)? हम इस प्रश्न का उत्तर आसानी से नहीं दे सकते हैं कि "क्या दी गई संख्या 0 के बराबर है?"।

यदि आप अधिक सटीक गणितीय परिभाषाओं और समस्याओं की तलाश करते हैं, तो उदाहरण के लिए, परिमेय संख्याओं, पारलौकिक संख्याओं, सर्वोत्तम सन्निकटन और बेयर के प्रमेय की तलाश करें।


मुझे लगता है कि यह एक महान जवाब है, बस इस सवाल के लिए नहीं है, मुझे विश्वास नहीं है कि पूछने वाला आपके द्वारा बनाए जा रहे बिंदुओं को समझ जाएगा। यह और आप एक परिमित डिजिटल प्रतिनिधित्व (गतिशील या स्थिर बिट चौड़ाई की परवाह किए बिना) द्वारा \ Real या \ Complex संख्याओं के निष्प्रभावी प्रतिनिधित्व के साथ काफी glib जा रहे हैं। यह सब पूरी तरह से सच है, लेकिन बिंदु के बगल में है। कुदोस ने गोल्डबर्ग के लिए रोबोटिक-सहयोगी का हवाला नहीं दिया । :) और बेयर की प्रमेय प्रोग्रामर या स्टैकऑवरफ्लो पर पाए जाने वाले सामान्य बयानबाजी का हिस्सा नहीं है।
mctylr

0

इसलिये

1) लेखक यह धारणा बनाते हैं कि "इंजीनियरिंग और वैज्ञानिक गणना" वास्तविक दुनिया की भौतिक मात्रा को मापते हैं

2) भौतिक मात्राएं निरंतर होती हैं, और जैसा कि आप कहते हैं "फ्लोटिंग पॉइंट नंबर आपको निरंतर मात्रा में मॉडल करते हैं"

.. और मेरे उत्तर के बाकी हिस्सों को रफ़लविंड ने अच्छी तरह से अभिव्यक्त किया है , इसलिए मैं यहां इसे दोहराने नहीं जा रहा हूं।


0

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

अब "सटीकता" भौतिक गुणों के माप और / या परिमाण का प्रतिनिधित्व करने वाले कई नंबरों के लिए एक उपयोगी विशेषता है।

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

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

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

इसलिए यदि आप फ्लोटिंग पॉइंट नंबरों के संचालन को मैप कर सकते हैं, तो आप इन दिनों अपने निपटान में यथोचित शक्तिशाली हार्डवेयर रखते हैं और आप आज के सामान्य प्रयोजन प्रोग्रामिंग भाषाओं में से एक में अपने एल्गोरिदम को यथोचित निर्दिष्ट कर सकते हैं।


0

मुझे लगता है कि इसका उत्तर यह पता लगाकर दिया जा सकता है कि कौन से एप्लिकेशन float/ doubleडेटा प्रकार इसके लिए उपयुक्त नहीं हैं।

जब आपको यह सुनिश्चित करने की आवश्यकता होती है कि आप किसी विशिष्ट संख्या के अंकों के साथ एक संख्या का सही प्रतिनिधित्व कर सकते हैं, तो फ़्लोटिंग पॉइंट नंबर अनुचित हैं, क्योंकि वे 10 की शक्तियों के बजाय 2 की शक्तियों के रूप में संख्याओं का प्रतिनिधित्व करते हैं, जैसे कि हम संख्याओं का प्रतिनिधित्व कैसे करते हैं। वास्तविक दुनिया।

इसलिए एक डोमेन जहां फ्लोटिंग पॉइंट डेटा प्रकारों का उपयोग नहीं किया जाना चाहिए, वह है वित्त *। जैसे बैंक की कोर प्रणाली के लिए, यह पूरी तरह से अस्वीकार्य होगा यदि एक राशि जो $ 100000.01 होनी चाहिए थी वह अचानक $ 100000.00 या $ 100000.02 हो जाती है।

फ्लोट का उपयोग करते समय ऐसी समस्या आसानी से हो सकती है, खासकर अगर संख्या एक या एक से अधिक गणनाओं का परिणाम थी, जैसे किसी खाते में सभी लेनदेन के योग की गणना करना।

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

* मैंने एक बार एक वित्तीय अनुप्रयोग पर काम किया था जहां floatमूल्यों का प्रतिनिधित्व करने के लिए उपयोग किया गया था, और परिणामस्वरूप, गोल त्रुटियों को पेश किया गया था। सौभाग्य से, यह विशिष्ट बग बिल्कुल महत्वपूर्ण नहीं था, उपयोगकर्ताओं ने कार्यक्रम में गणना त्रुटियों के बारे में शिकायत की थी। और इसके कारण एक अलग, बहुत बुरा प्रभाव पड़ा: उपयोगकर्ताओं ने सिस्टम में विश्वास खोना शुरू कर दिया।

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