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


13

मैं एलन एंड टिल्डस्ले की पुस्तक कम्प्यूटर सिमुलेशन ऑफ लिक्विड पढ़ रहा हूं। पृष्ठ 71 पर शुरू, लेखक आणविक गतिशीलता (एमडी) सिमुलेशन में न्यूटन के गति के समीकरणों को एकीकृत करने के लिए उपयोग किए जाने वाले विभिन्न एल्गोरिदम पर चर्चा करते हैं। पृष्ठ 78 पर शुरू, लेखक वेरलेट एल्गोरिथ्म पर चर्चा करते हैं, जो संभवतः एमडी में कैनोनिकल एकीकरण एल्गोरिथ्म है। वे कहते हैं:

शायद गति के समीकरणों को एकीकृत करने के लिए सबसे व्यापक रूप से इस्तेमाल की जाने वाली विधि है कि शुरू में वेरलेट (1967) द्वारा अपनाई गई और स्टॉर्मर (गियर 1971) को जिम्मेदार ठहराया। इस विधि दूसरे क्रम समीकरण का एक सीधा उपाय है । Postions पर विधि आधारित है r ( टी ) , त्वरण एक ( टी ) , और पदों r ( टी - δ टी ) से पिछले चरण। पदों को आगे बढ़ाने के लिए समीकरण निम्नानुसार है:mir¨i=fir(t)a(t)r(tδt)

(3.14)r(t+δt)=2r(t)r(tδt)+δt2a(t).

Eqn (3.14) के बारे में ध्यान देने योग्य कई बिंदु हैं। यह देखा जाएगा कि वेग बिल्कुल दिखाई नहीं देते हैं। बारे में टेलर विस्तार द्वारा प्राप्त समीकरणों के अलावा उन्हें समाप्त कर दिया गया है r(t):

r(t+δt)=r(t)+δtv(t)+(1/2)δt2a(t)+...

(3.15)r(tδt)=r(t)δtv(t)+(1/2)δt2a(t)....

फिर, बाद में (पृष्ठ 80 पर), लेखक राज्य:

O(δt2)O(δt0)

δt2a(t)2r(t)r(tδt)

मेरा सवाल यह है कि संख्यात्मक अवगुण एक छोटे से शब्द को बड़े शब्दों के अंतर से जोड़ने का परिणाम क्यों है?

मैं एक बल्कि बुनियादी, वैचारिक कारण में दिलचस्पी रखता हूं, क्योंकि मैं फ्लोटिंग पॉइंट अंकगणित के विवरण से बिल्कुल परिचित नहीं हूं। इसके अलावा, क्या आप किसी भी "अवलोकन-प्रकार" संदर्भ (किताबें, लेख, या वेबसाइट) के बारे में जानते हैं जो मुझे इस प्रश्न से संबंधित फ्लोटिंग पॉइंट अंकगणित के मूल विचारों से परिचित कराएगा? आपके समय के लिए धन्यवाद।

जवाबों:


9

उनका अवलोकन '' एल्गोरिथ्म का रूप अनावश्यक रूप से कुछ संख्यात्मक अविश्वास का परिचय दे सकता है '' सही है। लेकिन उनकी व्याख्या '' यह इसलिए उठती है क्योंकि, eqn (3.14) में, एक छोटा शब्द ( ) बड़े शब्द ( ) के अंतर में जोड़ा जाता है , ताकि प्रक्षेपवक्र उत्पन्न किया जा सके। ’स्फुरित है।O(δt2)O(δt0)

Verlet एल्गोरिथ्म की मामूली संख्यात्मक अस्थिरता के लिए सच कारण यह है कि यह केवल मामूली स्थिर है, क्योंकि अंतर समीकरण है (अनिवार्य रूप से इस मामले में जहां आप उपेक्षा Verlet में) है समानुपाती घोल , जो में रैखिक रूप से विकसित होने के लिए शुरू की गई त्रुटियों का कारण बनता है, जबकि एक पूरी तरह से स्थिर मल्टीस्टेप विधि के लिए एक विघटनकारी अंतर समीकरण पर लागू किया जाता है, त्रुटि विकास बाध्य है।xk+1=2xkxk1akk

संपादित करें: ध्यान दें कि पुस्तक आणविक गतिशीलता के संख्यात्मक सिमुलेशन के बारे में है, और जिसके परिणामस्वरूप उम्मीदों एक की जरूरत है एक बड़ी संख्या का एक उचित सटीकता प्राप्त करने के लिए के साथ, कदम की सटीकता तराजू के रूप में केवल । (अक्सर समय का चरण पिकोसकंड में आंतरिक दोलन पैमाने का पालन करने के लिए होता है। लेकिन जैविक रूप से प्रासंगिक समय के पैमाने मिलीसेकंड या बड़े ( ) में होते हैं, हालांकि आमतौर पर कोई भी अब तक गणना नहीं करता है।)NO(N1/2)N109

अधिक जानकारी के लिए, http://en.wikipedia.org/wiki/Linear_multistep_method#Stability_and_convergence देखें


10

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

यदि आपको एक अच्छी लाइब्रेरी मिल गई है, तो मैं सुझाव दूंगा कि माइकल ओवर्टन की न्यूमेरिकल कम्प्यूटिंग आईईईई फ्लोटिंग पॉइंट अरिथमेटिक के साथ , या निक हिघम की सटीकता और न्यूमेरिकल एल्गोरिदम की स्थिरता के पहले कुछ अध्याय ।

एलेन और टिल्डस्ले विशेष रूप से संख्यात्मक रद्द करने की बात कर रहे हैं । इसकी कमी यह है कि यदि आपके पास, केवल तीन अंक हैं और आप इससे घटाते 100हैं 101, तो आप प्राप्त करते हैं 1.00(तीन अंकों में)। ऐसा लगता है कि यह तीन अंकों के लिए सटीक है, लेकिन वास्तव में, केवल पहला अंक सत्य है और अनुगामी .00कचरा हैं। क्यों? ठीक है, 100और 101केवल निरूपण का प्रतिनिधित्व करते हैं, कहते हैं 100.12345और 101.4321, लेकिन आप केवल उन्हें तीन अंकों की संख्या के रूप में संग्रहीत कर सकते हैं।


-1: कैंसलेशन को आप वर्लेट फॉर्मूला के लिए कहां कहते हैं? आमतौर पर छोटा होता है, जो बनाता है , जिसके परिणामस्वरूप कोई भी रद्द नहीं होता है। आज़माएं ! δtr(\tδt)r(t)r(t)=1
अर्नोल्ड न्यूमैयर

@AnnoldNeumaier: हाँ, एलन और टिल्डस्ले के उदाहरण से कोई मतलब नहीं है, मैं केवल "छोटी अवधि [..] को बड़ी शर्तों के अंतर में जोड़े जाने पर आने वाली समस्याओं के लिए कुछ संदर्भ प्रदान करना चाहता था" ओपी ने पूछा, नहीं कि यह दिए गए मामले में कोई समस्या है या नहीं।
पेड्रो

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

@AnnoldNeumaier: जैसा कि, मुझे लगता है, मेरे उत्तर से काफी स्पष्ट है, मैं अंतर की गणना करने की समस्या का उल्लेख कर रहा था, योग का नहीं।
पेड्रो

1
@AnnoldNeumaier: प्वाइंट लिया गया, लेकिन मुझे उम्मीद है कि आप समझ गए होंगे कि मैं एक "-1" के लिए काफी क्षुद्र मानता हूं।
पेड्रो

5

पेड्रो के उदाहरण को समीकरण लागू करने के लिए , मान लें कि आपके चर निम्नलिखित मानों के साथ संग्रहीत हैं:(3.14)

आर ( टी - δ टी ) = 100 δ टी 2 एक ( टी ) = 1.49

r(t)=101
r(tδt)=100
δt2a(t)=1.49

से यह है कि का पालन करना चाहिए(3.14)

r(t+δt)=103.49

लेकिन, चूंकि हम केवल तीन अंकों का उपयोग कर सकते हैं, इसलिए इसका परिणाम छोटा हो जाता है

r(t+δt)=103

यह त्रुटि का प्रचार करेंगे ताकि 20 चरणों के बाद, यह मानते हुए, अपरिवर्तित रहता है, आप प्राप्त के बजाय ,आर ( टी + 20 δ टी ) = 331 433.90a(t)r(t+20δt)=331433.90


लेकिन प्रभाव यह है कि केवल 3-अंक दशमलव अंकगणित में बड़ा है।
अर्नोल्ड न्यूमैयर

3

पेड्रो पहले से ही महत्वपूर्ण तथ्य देता है, अर्थात् रद्द करना। मुद्दा यह है कि आपके द्वारा गणना की जाने वाली प्रत्येक संख्या में एक संबद्ध सटीकता है; उदाहरण के लिए, एक एकल सटीक फ्लोटिंग पॉइंट संख्या केवल सटीकता के लगभग 8 अंकों तक की चीजों का प्रतिनिधित्व कर सकती है। यदि आपके पास दो संख्याएँ हैं जो लगभग समान हैं लेकिन 7 वें अंक में भिन्न हैं, तो अंतर फिर से एक 8-अंकीय एकल सटीक फ़्लोटिंग पॉइंट संख्या होगी और ऐसा लगता है कि यह 8 अंकों के लिए सटीक है, लेकिन वास्तव में केवल पहले 1 या 2 अंक सटीक होते हैं क्योंकि आपने जिन मात्राओं से इसकी गणना की है, वे इस अंतर के पहले 1 या 2 अंकों से अधिक सटीक नहीं हैं।

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


डबल सटीक अंकगणित में रद्दीकरण एकल परिशुद्धता में बड़ी समस्या हो सकती है। बिंदु में एक मामला बिना धुरी के गॉसियन उन्मूलन है, जो अक्सर रद्द करने के कारण बहुत खराब परिणाम देता है, यहां तक ​​कि दोहरे परिशुद्धता में भी।
अर्नोल्ड न्यूमैयर

-1: वेरलेट फॉर्मूला आमतौर पर सटीकता के सभी अंकों को बरकरार रखता है, न कि एकल परिशुद्धता में 8 का 1 या 2।
अर्नोल्ड न्यूमैयर

@AnnoldNeumaier: निश्चित रूप से, आपको दोहरी सटीकता में एक ही तरह की समस्याएं मिल सकती हैं। मैंने कहा है कि एक उन्हें अक्सर के रूप में सामना नहीं करता है।
वोल्फगैंग बंगर्थ

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

सही। लेकिन मेरा मतलब यह है कि यदि आपके पास रद्द करने के बिना एक एल्गोरिथ्म है, तो आप अभी भी एकल परिशुद्धता में 1e-8 के आदेश पर एक त्रुटि उत्पन्न करते हैं, और यदि आप 1e8 समय के चरण करते हैं तो आपको समस्या हो सकती है, भले ही बाकी सब कुछ सटीक हो। 1e8 समय के कदम आप ODE के लिए हो सकता है परिमाण का एक आदेश है। दूसरी ओर, दोहरी सटीकता में, प्रत्येक चरण में आपकी अशुद्धि 1e-16 है और सटीकता की पूर्ण हानि प्राप्त करने के लिए 1e16 समय चरणों की आवश्यकता होगी। यह कई चरणों में है, जिनका आप अभ्यास में सामना नहीं करेंगे ।
वुल्फगैंग बैंगर्थ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.