Catastrophic cancellation
संख्यात्मक विश्लेषण में, विनाशकारी रद्दीकरण एक ऐसी घटना है कि दो निकटवर्ती संख्याओं के लिए अच्छे सन्निकटन को घटाने से मूल संख्याओं के अंतर के लिए बहुत खराब सन्निकटन हो सकता है। उदाहरण के लिए, यदि दो स्टड हैं, एक लंबा और दूसरा लंबा, और उन्हें एक शासक के साथ मापा जाता है जो केवल सेंटीमीटर के लिए अच्छा है, तो अनुमान और हो सकते हैं। ये सही लंबाई के लिए, सापेक्ष त्रुटि में, अच्छे अनुमान हो सकते हैंः अनुमान सही लंबाई के 2 प्रतिशत से भी कम त्रुटि में हैं। हालाँकि, यदि अनुमानित लंबाई को घटाया जाता है, तो अंतर होगा, भले ही लंबाई के बीच सही अंतर है। अनुमानों का अंतर, सही मूल्यों के अंतर के परिमाण के 100% द्वारा त्रुटि में है। विनाशकारी रद्दीकरण इस बात से प्रभावित नहीं होता है कि निवेश कितना बड़ा है-यह उतना ही बड़े और छोटे निवेश पर लागू होता है। यह केवल इस बात पर निर्भर करता है कि अंतर कितना बड़ा है और निवेश की त्रुटि पर निर्भर करता है। वास्तव में वही त्रुटि सन्निकटन से और में घटाने से, या सन्निकटन से और में घटाने से उत्पन्न होगी। विनाशकारी रद्दीकरण तब भी हो सकता है जब अंतर की ठीक से गणना की जाए, जैसा कि उपरोक्त उदाहरण में है-यह किसी विशेष प्रकार के अंकगणित का गुण नहीं है जैसे कि फ्लोटिंग-पॉइंट अंकगणित; बल्कि, यह घटाव के लिए अंतर्निहित है, जब इनपुट स्वयं सन्निकटन होते हैं। वास्तव में, फ्लोटिंग-पॉइंट अंकगणित में, जब इनपुट पर्याप्त रूप से करीब होते हैं, तो फ्लोटिंग-पॉइंट अंतर की गणना बिल्कुल, स्टर्बेंज़ लेम्मा द्वारा की जाती है-फ्लोटिंग-पॉइंट घटाव ऑपरेशन द्वारा कोई गोल त्रुटि नहीं होती है। औपचारिक विश्लेषण औपचारिक रूप से, विनाशकारी रद्दीकरण इसलिए होता है क्योंकि पास के निवेशों पर घटाव खराब स्थिति में होता हैः भले ही सन्निकटन और छोटी सापेक्ष त्रुटियां हों और सही मूल्यों से और, क्रमशः, सही मूल्यों के अंतर से सन्निकटन के अंतर की सापेक्ष त्रुटि सही मूल्यों के अंतर के विपरीत आनुपातिक होती हैः इस प्रकार, सही मूल्यों के अंतर से सन्निकटन के सटीक अंतर की सापेक्ष त्रुटि वह है जो मनमाने ढंग से बड़ी हो सकती है यदि सही मूल्य और करीब हों। संख्यात्मक एल्गोरिदम में फ्लोटिंग-पॉइंट अंकगणित में आस-पास की संख्याओं को घटाने से हमेशा विनाशकारी रद्दीकरण नहीं होता है, या यहां तक कि कोई त्रुटि भी नहीं होती है-स्टेरबेंज़ लेम्मा के अनुसार, यदि संख्याएं पर्याप्त रूप से करीब हैं तो फ्लोटिंग-पॉइंट अंतर सटीक होता है। लेकिन रद्दीकरण अन्य फ्लोटिंग-पॉइंट अंकगणित में गोल करने से उत्पन्न इनपुट में त्रुटियों को बढ़ा सकता है। उदाहरण के लिएः वर्गों का अंतर दी गई संख्याएँ और, फ्लोटिंग-पॉइंट अंकगणित द्वारा गणितीय फलन की गणना करने का सरल प्रयास विनाशकारी रद्दीकरण के अधीन है जब और परिमाण में करीब होते हैं, क्योंकि घटाव वर्ग में गोलाकार त्रुटियों को उजागर कर सकता है। वैकल्पिक फैक्टरिंग, जिसका मूल्यांकन फ्लोटिंग-पॉइंट अंकगणित द्वारा किया जाता है, विनाशकारी रद्दीकरण से बचाता है क्योंकि यह घटाव की ओर ले जाने वाली गोल त्रुटि को पेश करने से बचाता है। उदाहरण के लिए, यदि और, तो अंतर का सही मूल्य है। आई. ई. ई. ई. 754 द्विआधारी 64 अंकगणित में, वैकल्पिक गुणनखंडन का मूल्यांकन करने से सही परिणाम मिलता है (बिना किसी गोल के), लेकिन सरल अभिव्यक्ति का मूल्यांकन करने से फ्लोटिंग-पॉइंट संख्या मिलती है, जिसमें से आधे से भी कम अंक सही होते हैं और अन्य (रेखांकित) अंक लापता शब्दों को दर्शाते हैं, जो मध्यवर्ती वर्ग मानों की गणना करते समय गोल करने के कारण खो जाते हैं। उदाहरण-जटिल आर्क्साइन फलन की गणना करते समय, व्यक्ति को सीधे लघुगणक सूत्र का उपयोग करने के लिए लुभाया जा सकता हैः हालाँकि, मान लीजिए। फिर और; उनके बीच के अंतर को कहें-एक बहुत छोटा अंतर, लगभग शून्य। यदि फ्लोटिंग-पॉइंट अंकगणित में किसी भी त्रुटि के साथ मूल्यांकन किया जाता है, जहां फ्लोटिंग-पॉइंट राउंडिंग को दर्शाया जाता है, तो दो निकटवर्ती संख्याओं के अंतर की गणना, दोनों के बहुत करीब, एक इनपुट में त्रुटि को एक कारक द्वारा बढ़ा सकते हैं-एक बहुत बड़ा कारक क्योंकि लगभग शून्य था। उदाहरण के लिए, यदि का सही मान लगभग है, लेकिन आई. ई. ई. ई. 754 द्विआधारी 64 अंकगणित में सरल लघुगणक सूत्र का उपयोग करने से सोलह अंकों में से केवल पाँच सही हो सकते हैं और शेष (रेखांकित) सभी कचरा हो सकते हैं। के मामले में, पहचान का उपयोग रद्द करने से बचाता है क्योंकि लेकिन, इसलिए घटाव प्रभावी रूप से उसी संकेत के साथ जोड़ा जाता है जो रद्द नहीं होता है। उदाहरण-मूलांक रूपांतरण सॉफ्टवेयर कार्यक्रमों में संख्यात्मक स्थिरांक अक्सर दशमलव में लिखे जाते हैं, जैसे कि सी खंड में डबल x = 1.000000000000001; x नामक एक IEEE 754 द्विआधारी 64 चर को घोषित करने और आरंभ करने के लिए। हालाँकि, यह एक द्विआधारी 64 फ़्लोटिंग-पॉइंट संख्या नहीं है; निकटतम एक, जिसे इस टुकड़े में x से आरंभ किया जाएगा, है। यद्यपि दशमलव फ्लोटिंग-पॉइंट से द्विआधारी फ्लोटिंग-पॉइंट में मूलांक रूपांतरण में केवल एक छोटी सापेक्ष त्रुटि होती है, लेकिन विनाशकारी रद्दीकरण इसे बहुत बड़ी त्रुटि में विस्तारित कर सकता हैः डबल x = 1.000000000000001;// 1 + 5 * 2 ^ {-52} डबल y = 1.000000000000002;// 1 + 9 * 2 ^ {-52} डबल z = y-x;// अंतर बिल्कुल 4 * 2 ^ {-52} है। x से और y से दोनों की सापेक्ष त्रुटियाँ नीचे दी गई हैं, और फ्लोटिंग-पॉइंट घटाव y-x की गणना बिल्कुल स्टेरबेंज़ लेम्मा द्वारा की जाती है। लेकिन भले ही निवेश अच्छे सन्निकटन हैं, और भले ही घटाव की गणना ठीक से की जाती है, सन्निकटन के अंतर में मूल मूल्यों के अंतर से अधिक की सापेक्ष त्रुटि होती है जैसा कि दशमलव में लिखा गया हैः विनाशकारी रद्दीकरण ने मूलांक में एक छोटी सी त्रुटि को उत्पादन में एक बड़ी त्रुटि में परिवर्तित कर दिया। सौम्य रद्दीकरण रद्द करना कभी-कभी संख्यात्मक एल्गोरिदम में उपयोगी और वांछनीय होता है। उदाहरण के लिए, 2सम और फास्ट2सम एल्गोरिदम दोनों एक फ़्लोटिंग-पॉइंट नंबर के रूप में एक फ़्लोटिंग-पॉइंट एडिशन ऑपरेशन में त्रुटि की सटीक गणना करने के लिए एक गोल त्रुटि के बाद इस तरह के रद्दीकरण पर भरोसा करते हैं। फलन, यदि अंकों पर सरलता से मूल्यांकन किया जाता है, तो गोल में अधिकांश अंक खो देंगे। हालांकि, कार्य स्वयं पास के निवेश पर अच्छी तरह से वातानुकूलित है। इसे शोषण के रूप में फिर से लिखना रद्द करना है ताकि त्रुटि का सीधे मूल्यांकन न किया जा सके। यह काम करता है क्योंकि अंश में रद्द करना और भाजक में रद्द करना एक दूसरे का विरोध करते हैं; फलन शून्य के पास अच्छी तरह से वातानुकूलित है जो एक अच्छा सन्निकटन देता है, और इस प्रकार एक अच्छा सन्निकटन देता है। संदर्भ संख्यात्मक विश्लेषण