संख्यात्मक व्युत्पन्न और परिमित अंतर गुणांक: Fornberg विधि का कोई अद्यतन?


11

जब एक संख्यात्मक डेरिवेटिव की गणना करना चाहते हैं, विधि Bengt Fornberg द्वारा प्रस्तुत यहाँ (और सूचना यहाँ ) बहुत सुविधाजनक (दोनों सटीक और सरल लागू करने के लिए) है। 1988 से मूल पेपर की तारीख के रूप में, मैं जानना चाहता हूं कि क्या आज (या (लगभग) सरल और अधिक सटीक) के रूप में एक बेहतर विकल्प है?


1
आप क्या अंतर करना चाहते हैं, यह जाने बिना कहना मुश्किल है। क्या आपने स्वत: भिन्नता पर विचार किया है ?
बिस्वजीत बनर्जी

@BiswajitBanerjee: परिमित अंतर गुणांक के लिए, स्वचालित भेदभाव लागू नहीं होता है।
जियोफ ऑक्सबेरी

@GeoffOxberry: मैं वास्तविक कंप्यूटर समस्या का उल्लेख कर रहा था, अर्थात, "कम्प्यूटेशनल विज्ञान" का विज्ञान भाग।
बिस्वजीत बनर्जी 23

@Vincent: क्या आप किसी फंक्शन, या टेबल को अलग करने की कोशिश कर रहे हैं? यदि टेबल डेटा, टेबल डेटा शोर है? क्या आप एक पीडीई का विवेक करने की कोशिश कर रहे हैं?
user14717

जवाबों:


9

अवलोकन

अच्छा प्रश्न। आर बाल्टेंसपर्गर द्वारा "मनमाना टकराव बिंदुओं के लिए मैट्रिक्स विभेदन विधि की सटीकता में सुधार" नामक एक पेपर है। यह मेरी राय में कोई बड़ी बात नहीं है, लेकिन इसका एक बिंदु है (जो 2000 में उपस्थिति से पहले ही ज्ञात था): यह इस तथ्य के सटीक प्रतिनिधित्व के महत्व पर बल देता है कि स्थिर फ़ंक्शन का व्युत्पन्न f(x)=1 चाहिए शून्य हो (यह गणितीय अर्थ में बिल्कुल सही है, लेकिन संख्यात्मक प्रतिनिधित्व में जरूरी नहीं है)।

यह देखना सरल है कि इसके लिए n-th व्युत्पन्न matrices D(n) की पंक्ति sums शून्य होने की आवश्यकता है। यह विकर्ण प्रविष्टि, यानी की स्थापना द्वारा समायोजन करके इस बाधा को लागू करने के लिए आम है

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

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

संख्यात्मक परीक्षण

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

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

यह साबित करने के लिए, मैं कागज, f ( x ) = 1 के समान फ़ंक्शन का उपयोग करूंगा

(2)(एक्स)=11+एक्स2
(3)n=अधिकतममैं{0,...,n}|'(एक्समैं)-Σजे=1nडीमैंजे(एक्सजे)|
(4)डी~जेजे=डीजेजे-(Σमैं=1nडीजेमैं),सबके लिए जे

निष्कर्ष

निष्कर्ष में, फोर्बर्ग की विधि काफी सटीक प्रतीत होती है, मामले में यहां तक ​​कि परिमाण के 3 आदेशों के बारे में विश्लेषणात्मक सूत्रों के परिणामों की तुलना में अधिक सटीक है। यह अधिकांश अनुप्रयोगों के लिए पर्याप्त सटीक होना चाहिए। इसके अलावा, यह उल्लेखनीय है क्योंकि फोर्बर्ग ने स्पष्ट रूप से इस तथ्य को अपनी विधि में शामिल नहीं किया है (कम से कम दो फोरनबर्ग पत्रों में कोई उल्लेख नहीं है)।एन=512

इस उदाहरण के लिए Eq के एक सीधे समावेश के माध्यम से परिमाण का एक और आदेश प्राप्त किया जा सकता है। (4) जैसा कि यह एक बहुत ही सरल दृष्टिकोण है और प्रत्येक व्युत्पन्न के लिए केवल एक बार लागू किया जाता है, मुझे इसका उपयोग न करने का कोई कारण नहीं दिखता है।

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


4

यह मानते हुए कि आप एक सतत कार्य के संख्यात्मक कार्यान्वयन को अलग करने की कोशिश कर रहे हैं, बड़ी संख्या में तरीके हैं:

1) स्वचालित भेदभाव। सबसे सटीक और सामान्य विधि। कोड के लिए दर्दनाक, ऑपरेटर ओवरलोडिंग और तर्क आश्रित देखने की आवश्यकता होती है। इन अवधारणाओं को समझने के लिए उपयोगकर्ता पर बोझ डालता है। हटाने योग्य विलक्षणताओं के साथ भी संघर्ष करता है, जैसे कि पर sinc को विभेदित करना ।एक्स=0

2) एक चेबीशेव रूपांतरित होता है। Chebyshev polynomials की अवधि में अपने फ़ंक्शन को प्रोजेक्ट करें और तीन टर्म पुनरावृत्ति को अलग करें। सुपर फास्ट, बहुत सटीक। लेकिन इसके लिए आवश्यक है कि आपके पास ब्याज का एक कॉम्पैक्ट समर्थित डोमेन हो; चयनित डोमेन , तीन अवधि की पुनरावृत्ति अस्थिर है।[,]

3) परिमित भिन्नता। 1 डी में कम; न्यू हैगम के टिप्स और ट्रिक्स को न्यूमेरिकल कम्प्यूटिंग में देखें । विचार यह है कि यदि आप ट्रंकेशन त्रुटि और राउंडऑफ़ त्रुटि को संतुलित करते हैं, तो आपको एक स्टेप्स चुनने की आवश्यकता नहीं है; इसे स्वचालित रूप से चुना जा सकता है। बूस्ट में, इस विचार का उपयोग प्रकार के लिए सही अंकों के 6 (7 वें) डिफ़ॉल्ट रूप से पुनर्प्राप्त करने के लिए किया जाता है। (हिघम केवल 1/2 के सरल मामले के लिए विचार दिखाता है सही अंक, लेकिन विचार आसानी से बढ़ाया गया है।) गुणांक फोर्बर्ग के समतुल्य तालिका से हैं, लेकिन चरण इस धारणा के तहत चुना जाता है कि फ़ंक्शन का मूल्यांकन 1ULP तक किया जा सकता है। सटीकता। नुकसान यह है कि इसके लिए 2 फ़ंक्शन मूल्यांकन की आवश्यकता होती है, प्रकार के आधे अंक को पुनर्प्राप्त करने के लिए, 4 को 3 / 4th अंकों को पुनर्प्राप्त करने के लिए, इत्यादि। 1 डी में, एक बुरा सौदा नहीं है। उच्च आयामों में, यह भयावह है।

4) जटिल कदम व्युत्पन्न। उपयोग। यूनिट राउंडऑफ होने के लिए लें और यह लगभग हर बिट को ठीक कर देगा। हालांकि, यह थोड़े धोखा है, क्योंकि आम तौर पर जटिल विमान में एक फ़ंक्शन को लागू करने के लिए कठिन है इसके वास्तविक व्युत्पन्न कोड को हाथ लगाने से। फिर भी कुछ परिस्थितियों में एक अच्छा विचार और उपयोगी।'(एक्स)((एक्स+मैं))


1

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


मैं इस कथन से असहमत हूं "संख्यात्मक एल्गोरिथ्म की गणना करने के तरीके के रूप में उनके एल्गोरिदम को देखना सही नहीं है"। एक बार जब आप वजन है बिंदु के लिए मूल्यांकन z , तो आप सीधे किसी भी समारोह के संख्यात्मक व्युत्पन्न गणना कर सकते हैं ( एक्स ) के माध्यम से ' ( z ) = Σ मैं डब्ल्यू मैं( एक्स मैं )wमैंz(एक्स)f(z)=iwif(xi)
दाविदिघ

@davidhigh: यदि आप Fornberg के पेपर पढ़ते हैं, तो वे परिमित-अंतर सन्निकटन के लिए वज़न की गणना के बारे में बात करते हैं, न कि स्वयं सन्निकटन की गणना करने के बारे में। बेशक आप एल्गोरिथ्म का उपयोग डेरिवेटिव की गणना करने के लिए भी कर सकते हैं, लेकिन यह वज़न की गणना करने, उन्हें स्टोर करने और फिर अनुमानित डेरिवेटिव की गणना करने के लिए बार-बार उपयोग करने के लिए अधिक समझ में आता है। अन्यथा जब आप कोई आवश्यकता नहीं है तो बार-बार वजन माप रहे हैं।
ब्रायन ज़ाटापैटिक

1

एक सरल योजना

मेरे अन्य उत्तर के अलावा जो फॉरनबर्ग पद्धति के विस्तार के बारे में अधिक है, मैं यहां और अधिक सरल विकल्पों के लिए प्रश्न को संबोधित करूंगा।

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

f(x) = 1hIm(f(x+ih)),
hh0

Li(x){x1,,xN}

Li(z) = {1if z=xi μizxkkμkzxkotherwise.
μमैं=1Πमैं(एक्समैं-एक्स)zमैं=(एक्समैं)(एक्स1,मैं)
P(x;f)=i=1NfiLi(x)


कलन विधि

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

इनपुट:

  • एक्स
  • आर
  • z: एक बिंदु जिस पर व्युत्पन्न का मूल्यांकन किया जाना है
  • (एक्स)मैं

प्रारंभ

  • एल
  • एन×एनडी()=0,...,आर
  • डी(0): =मैंएनएन×एन
  • : =0

कलन विधि

<आर

  • डीमैं(+1)=सीएसडी(पी(एक्स;डीमैं()))सीएसडीमैं
    डीमैं()मैंडी()

  • सेट ओ = ओ + 1;

तय करें कि आउटपुट क्या है :

  1. (आर)zमैं=पी(z;डीमैं(आर))

  2. पी(आर)(एक्स)=Σमैं=1एन(एक्समैं)पी(एक्स;डीमैं(आर))(आर)(एक्स)आरमैंएक्समैं

  3. diff(पूर्णांक आर,समारोह जी)जी

व्यक्तिगत रूप से, मुझे वेरिएंट 3. सबसे ज्यादा पसंद है।


एल्गोरिथ्म का विश्लेषण

हे(आरएन2)


0

संख्यात्मक विभेदन की शुद्धता बढ़ाने के लिए निम्नलिखित कार्य करें:

1) कुछ कदम आकार एच के आधार पर अपने पसंदीदा उच्च परिशुद्धता "मानक" विधि का चयन करें ।

2) 1 में चुनी गई विधि के साथ व्युत्पन्न के मूल्य की गणना करें) अलग-अलग लेकिन उचित कदम के आकार एच के साथ कई बार । हर बार जब आप अंतराल (0.5 * एच / 10, 1.5 * एच / 10) से यादृच्छिक संख्या के रूप में एच चुन सकते हैं , जहां एच आपके द्वारा उपयोग की जाने वाली विधि के लिए एक उपयुक्त कदम आकार है।

3) औसत परिणाम।

आपका परिणाम पूर्ण त्रुटि wrt में परिमाण के 2-3 आदेश प्राप्त कर सकता है। गैर-औसत परिणाम।

https://arxiv.org/abs/1706.10219


3
SciComp.SE में आपका स्वागत है! यह उत्तर और भी बेहतर होगा यदि आप संक्षेप में विधि को संक्षेप में प्रस्तुत करेंगे।
क्रिश्चियन क्लैसन

2
इसके अलावा आपके उपयोगकर्ता नाम से पता चलता है कि आपने उस कागज पर लिखा है। कृपया आत्म-प्रचार पर हमारे दिशानिर्देश पढ़ें और तदनुसार अपनी पोस्ट संपादित करें।
Wrzlprmft

मैं ईमानदारी से सोचता हूं कि यदि मेरा उत्तर वास्तव में वैध उत्तर की ओर इशारा करता है तो नकारात्मक मतदान अनुचित है।
एफ। जटपिल

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