कंप्यूट निकट


13

फ़ंक्शन में पास विलक्षणता है । उस विलक्षणता को उठाया जा सकता है, हालाँकि: , किसी के पास होना चाहिए , क्योंकि और इस प्रकार हालाँकि, प्रपत्र केवल पर परिभाषित नहीं है , यह उस बिंदु के आसपास के क्षेत्र में संख्यात्मक रूप से अस्थिर भी है; संख्यात्मक रूप से बहुत छोटे लिए का मूल्यांकन करने के लिए , कोई टेलर विस्तार का उपयोग कर सकता है, अर्थात पूर्वोक्त शक्ति श्रृंखला का एक छंटनी।f:x(ex1)/xx=0x=1f(x)=1

ex=k=0xkk!
(ex1)/x=k=1xk1k!
(ex1)/xx=0f(x)x

प्रश्न : फ़ंक्शन का कोई नाम है? दूसरे शब्दों में, क्या यह एक आम समस्या है?f

प्रश्न : क्या कोई C / C ++ लाइब्रेरी के बारे में जानता है जो इस स्थिति को अच्छी तरह से संभालता है, अर्थात 0 के पास एक उचित डिग्री के टेलर विस्तार और शून्य से दूर अन्य प्रतिनिधित्व का उपयोग करता है?

जवाबों:


19

संभवतः कोई फ़ंक्शन शुरू हो सकता है, जो C99 मानक का हिस्सा है, और पास सटीक गणना करता है ।expm1ex1x=0


17

यह रद्दीकरण त्रुटि का एक उदाहरण है। C मानक लाइब्रेरी (C99 के रूप में) में एक फ़ंक्शन शामिल होता है, जिसे expm1इस समस्या से बचा जाता है। यदि आप expm1(x) / xइसके बजाय उपयोग करते हैं (exp(x) - 1.0) / x, तो आप इस समस्या का अनुभव नहीं करेंगे (नीचे ग्राफ़ देखें)। <code> fabs (expm1 (x) / x - (exp (x) - 1.0) / x) </ code>

इस विशेष समस्या के विवरण और समाधान की चर्चा न्यूमेरिकल एल्गोरिदम की सटीकता और स्थिरता की धारा 1.14.1 में लंबाई पर की गई है । इसी समाधान को डब्ल्यू कहन के पेपर के पेज 19 में भी बताया गया है कि फ्लोटिंग-पॉइंट कंपीटिशन में राउंडऑफ के माइंडलेस असेस्मेंट कैसे हैं? expm1GNU C लाइब्रेरी का वास्तविक कार्यान्वयन उपरोक्त संदर्भों में वर्णित दृष्टिकोण से अलग है और स्रोत कोड में पूरी तरह से प्रलेखित है


1
धन्यवाद, बस यही मुझे चाहिए था! दुर्भाग्य से, मैं केवल एक उत्तर को स्वीकार कर सकता हूं ...
अनाम

बेशक! कोई समस्या नहीं :-)
जुआन एम। बेलो-रिवास

3

आपके पहले प्रश्न का उत्तर देने के लिए, नहीं, फ़ंक्शन का नाम नहीं है (कम से कम ऐसा नहीं है जो व्यापक रूप से ज्ञात हो)।

जैसा कि दूसरों ने उल्लेख किया है, फ़ंक्शन की गणना करने का सबसे अच्छा तरीका कई विशेष मामलों का इलाज करना है। इस तरह से कोई भी लाइब्रेरी फंक्शन की गणना करेगी।

  1. केस 0: x = 0, वापसी 1।
  2. केस 1: , वापसी । अपनी संख्यात्मक परिशुद्धता और डेटा प्रकार के लिए रूप से चुनें । के लिए , इसके बारे में होना चाहिए । फ्लोट के लिए, यह के बारे में है ।1 + एक्स / 2 δ|x|<δ1+x/2δdouble2e-85e-4
  3. बाकी मामला: वापसी expm1(x)/x

आप अधिक परिष्कृत और विशेष रूप से टेलर की श्रृंखला वाली चीजों के साथ विशेष मामले हो सकते हैं, लेकिन यह इसके लायक नहीं है। वास्तव में, यह पूरी तरह से स्पष्ट नहीं है कि केस 1 को अलग से नियंत्रित करने की आवश्यकता है, क्योंकि के 20 के रूप में बताया गया है, रद्दीकरण सुरक्षित है। हालाँकि, इसे अलग से संभालने से मुझे इसके बारे में अधिक आत्मविश्वास महसूस होगा।


2

मुझे याद है कि यह प्रश्न इस साइट पर पहले भी पूछा जा चुका है, और आश्चर्यजनक रूप से इसका उत्तर यह है कि आपको केवल शून्य पर विशेष-समानता की आवश्यकता है। त्रुटियाँ शून्य के पास रद्द हो जाती हैं। मेरे पास लिंक नहीं है।

हाँ यह जवाब पूरी तरह से गलत था। मुझे यकीन नहीं है कि इसे इतना अधिक क्यों उखाड़ा गया, शायद इसलिए कि इसे आधिकारिक रूप से कहा गया था। मुझे वह लिंक मिल गया था जो मेरे दिमाग में था। यह यहां गणित स्टैकएक्सचेंज पर था, न कि स्कैकोम्पिक स्टेक्सएक्सचेंज पर। expm1-Free त्रुटि रद्द सूत्र जेएम द्वारा जवाब में दी गई है और एक का उपयोग करता है u = exp(x)परिवर्तन।


+ सही है। यदि = infinitessimal , = = । d x ( e d x - 1 ) / d x ( 1 + d x - 1 ) / d x xdx(edx1)/dx(1+dx1)/dx1
माइक डनलैवी

1
मुझे नहीं लगता कि यह लिए काफी छोटा है क्योंकि तब से फ्लोटिंग पॉइंट सटीकता में, और पूरी बात चल रही है। 1 + d x = 1dx1+dx=1
वोल्फगैंग बैंगर्थ

0

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


यह एक दिलचस्प संबंध है, इस ओर इशारा करने के लिए धन्यवाद। दुर्भाग्य से, मुझे विश्वास है कि ट्रिपल योग इस निषेधात्मक रूप से महंगा प्रदान करेगा। इसके अलावा, यह तुरंत स्पष्ट नहीं है कि वांछित सटीकता प्राप्त करने के लिए प्रत्येक राशि को कहां से काट दिया जाए।
गुमनाम

@ नाम: आप कौन सा त्रिगुण योग मानते हैं? आपको केवल बर्नौली नंबरों की बर्नौली बहुपद की आवश्यकता नहीं है, और आप उन लोगों को पहले से सूचीबद्ध कर सकते हैं। लेकिन हां, यह अभी भी टेलर श्रृंखला से बेहतर नहीं है।
निकोलज-के

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

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