सी / सी ++ में रनगे-कुट्टा 8 वें क्रम की तलाश


10

मैं एक celestial यांत्रिकी / astrodynamics एप्लिकेशन में Runge-Kutta 8th ऑर्डर विधि (89) का उपयोग करना चाहता हूं, जो C ++ में लिखा गया है, विंडोज मशीन का उपयोग कर रहा है। इसलिए मुझे आश्चर्य है कि अगर किसी को एक अच्छी लाइब्रेरी / कार्यान्वयन पता है जो प्रलेखित और उपयोग करने के लिए स्वतंत्र है? यह तब तक ठीक है जब तक कि इसे C में नहीं लिखा जाता है, जब तक कि उम्मीद की जाने वाली कोई भी संकलन समस्याएं नहीं हैं।

अब तक मुझे यह पुस्तकालय (मैमथालिब) मिल चुका है । कोड ठीक लगता है, लेकिन मुझे लाइसेंस के बारे में कोई जानकारी नहीं मिली है।

क्या आप कुछ ऐसे विकल्प बताकर मेरी मदद कर सकते हैं जो आप जानते होंगे और मेरी समस्या के अनुरूप होंगे?

संपादित करें:
मैं देखता हूं कि वास्तव में कई C / C ++ स्रोत कोड उपलब्ध नहीं हैं जैसा कि मुझे उम्मीद थी। इसलिए एक मैटलैब / ऑक्टेव संस्करण भी ठीक होगा (अभी भी उपयोग करने के लिए स्वतंत्र होना चाहिए)।

जवाबों:


8

दोनों जीएनयू वैज्ञानिक लाइब्रेरी (GSL) (सी) और बूस्ट Odeint (C ++) सुविधा 8 क्रम रुंग-कुता विधियाँ।

दोनों ओपन सोर्स हैं, और लिनक्स और मैक के तहत वे सीधे पैकेज मैनेजर से उपलब्ध होने चाहिए। विंडोज़ के तहत, जीएसएल के बजाय बूस्ट का उपयोग करना आपके लिए संभवतः आसान होगा।

जीएसएल को जीपीएल लाइसेंस के तहत और बूस्ट ओडिन्ट को बूस्ट लाइसेंस के तहत प्रकाशित किया जाता है।

संपादित करें: ठीक है, बूस्ट ओडिन्ट में केवल 78 का रन-कुट्टा 89 विधि नहीं है, लेकिन यह मनमाने ढंग से रन-कुट्टा स्टेपर बनाने के लिए एक नुस्खा प्रदान करता है ।

8 वीं आदेश विधियां काफी उच्च हैं, और आपकी समस्या के लिए सबसे अधिक संभावना है।

प्रिंस-डॉरमंड एक विशेष प्रकार के रनगे-कुट्टा को संदर्भित करता है, और सीधे आदेश से संबंधित नहीं है, लेकिन सबसे आम 45 है। मैटलैब्स ode45, जो कि उनकी सिफारिश की गई है ओडीई एल्गोरिदम एक प्रिंस-डॉरमंड 45 कार्यान्वयन है। यह Boost Odeint Runge_Kutta_Dopri5 में कार्यान्वित के समान ही एल्गोरिदम है ।


1
उत्तर देने के लिए आपका शुक्रिया। ठीक है जो अब शर्मनाक है, मैंने यहां पूछने से पहले भी बूस्ट ओडिंट पर एक नज़र डाली है, और केवल "रनगे_कुट्टा_फ्लेबर्ग78" पाया है। क्या यह सही बात है? वास्तव में जब मैं प्रैक्टिस में इस्तेमाल किया जाता है, तो मैंथों के बीच अंतर नहीं जानता, लेकिन मैं एक आरके 989 की तलाश कर रहा था (जिसे मैं डॉरमंड-प्रिंस भी कहता हूं क्योंकि मैं इंटरनेट खोजता हूं)। क्या आप कृपया इस मामले के बारे में अपना जवाब बता सकते हैं या उसका विस्तार कर सकते हैं? धन्यवाद।
जेम्स सी

आपके सवालों के जवाब देने के लिए अपडेट की गई पोस्ट। प्रिंस-डॉरमंड 45 सबसे अधिक आपकी समस्याओं को अच्छी तरह से हल करेगा।
LKlevin

15

यदि आप लंबे समय के तराजू पर आकाशीय यांत्रिकी कर रहे हैं, तो एक शास्त्रीय रन-कुट्टा इंटीग्रेटर का उपयोग करने से ऊर्जा संरक्षित नहीं होगी। उस मामले में, एक सहानुभूति इंटीग्रेटर का उपयोग करना बेहतर होगा। Boost.odeint भी 4-क्रम सहानुभूतिपूर्ण रन-कुट्टा योजना को लागू करता है जो लंबे समय के अंतराल के लिए बेहतर काम करेगा। जीएसएल किसी भी सहानुभूति विधियों को लागू नहीं करता है, जहां तक ​​मैं बता सकता हूं।


उत्तर देने के लिए आपका शुक्रिया। यदि पृथ्वी उपग्रहों (कम कक्षा के साथ-साथ गहरे अंतरिक्ष की कक्षा) में उपयोग किया जाता है, तो शायद 1-3 कक्षाओं की अवधि में आरकेएफ78 की तुलना में 4-क्रम वाला सहानुभूतिपूर्ण रन-कुट्टा बेहतर परिणाम देगा?
जेम्स सी

@ जेम्स सी। जी। लंबी अवधि में, सहानुभूति विधि ज्यादा बेहतर होती है।
eccstartup

@ takstartup - आप यहां एक लंबी अवधि पर क्या विचार करेंगे? क्योंकि यह सूर्य के आस-पास किसी ग्रह की एक कक्षा या पृथ्वी के चारों ओर मौसम उपग्रह की कुछ परिक्रमाएं जितनी लंबी हो सकती हैं ..
जेम्स सी

@JamesC मैंने उस बड़ी समस्या का अवलोकन नहीं किया है। लेकिन मेरी मॉडल समस्याओं के लिए, कई कक्षाओं की गणना के साथ, सहानुभूति के तरीके बहुत ही परिक्रमा देते हैं।
eccstartup

तो, यह एक सलाह है कि आप निहित रन-कुट्टा विधि का एक संस्करण तैयार करें, जिसमें उतने ही उच्चतर क्रम के साथ कई सहानुभूति विधियां शामिल हैं जैसा आप चाहते हैं।
eccstartup

4

कुछ बिंदुओं का सारांश:

  1. यदि यह एक गैर-विघटनकारी मॉडल का दीर्घकालिक एकीकरण है, तो एक सहानुभूति समन्वक वह है जिसे आप खोज रहे हैं।
  2. अन्यथा, चूंकि यह गति का एक समीकरण है, रनगे-कुट्टा निस्ट्रॉम के तरीके पहले आदेश प्रणाली में परिवर्तन की तुलना में अधिक कुशल होंगे। DP के कारण उच्च क्रम RKN विधियाँ हैं। कुछ कार्यान्वयन हैं, जैसे जूलिया में वे प्रलेखित हैं और यहाँ एक MATLAB है
  3. यदि आप एक उच्च सटीकता समाधान चाहते हैं तो उच्च आदेश रन-कुट्टा विधियों की आवश्यकता है। यदि यह कम सहिष्णुता है तो 5 वें क्रम आरके की संभावना तेज होगी (उसी त्रुटि के लिए)। सबसे अच्छी बात अगर आपको इसे हल करने की आवश्यकता है, तो विभिन्न तरीकों का एक गुच्छा परीक्षण करना है। 3-बॉडी समस्याओं पर बेंचमार्क के इस सेट में हम देखते हैं कि (एक ही त्रुटि के लिए) उच्च क्रम आरके विधियाँ केवल गति में मामूली सुधार हैं, हालांकि त्रुटि के रूप में -> 0 आप देख सकते हैं कि सुधार पहले से ही डोरमैन्ड के खिलाफ> 5x पर जाता है -Prince 45 ( DP5) जब आप सटीकता के 4 अंकों को देख रहे हों (सहनशीलता इसके लिए बहुत कम होती है, हालांकि। सहिष्णुता किसी भी समस्या में केवल एक बॉलपार्क है)। जैसा कि आप सहिष्णुता को खींचते हैं, उच्च क्रम से सुधार को कम करते हैं आरके विधि बढ़ती है, लेकिन आपको उच्च परिशुद्धता संख्याओं का उपयोग शुरू करने की आवश्यकता हो सकती है।
  4. डोरमंड-प्रिंस ऑर्डर 7/8 एल्गोरिथ्म में हेयरर dop853और डिफरेंशियल ईक्शंस के डीपी 853 विधि की तुलना में एक अलग 8 वीं ऑर्डर झांकी है। जेएल DP8(जो समान हैं)। बाद की 853 विधि एक रन-कुत्ता विधि के मानक झांकी संस्करण में लागू नहीं की जा सकती क्योंकि यह त्रुटि अनुमानक गैर-मानक है। लेकिन यह विधि बहुत अधिक कुशल है और मैं पुराने फेहलबर्ग 7/8 या डीपी 7/8 तरीकों का उपयोग करने की भी सिफारिश नहीं करूंगा।
  5. उच्च क्रम आरके विधियों के लिए, वर्नर "कुशल" तरीके सोने के मानक हैं। लिंक किए गए बेंचमार्क में यह दिखाता है। आप उन लोगों को खुद को बढ़ावा दे सकते हैं, या उन 2 पैकेजों में से एक का उपयोग कर सकते हैं जो उन्हें लागू करते हैं यदि आप चाहते हैं कि वे आसान हों (गणितज्ञ या विभेदक शिक्षा। जेडएल)।

2

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

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


नहीं, न्यूमेरिकल रेसिपीज़ की सिफारिश न करें। विशेष रूप से, ज्यादातर मामलों में बर्लेश-स्टोअर की सिफारिश नहीं की जानी चाहिए। यह पुस्तक के साथ एक प्रसिद्ध समस्या है। यहां क्षेत्र के शीर्ष शोधकर्ताओं से फटकार का एक गुच्छा देखें: uwyo.edu/buerkle/misc/wnotnr.html । यदि आप इस पर बेंचमार्क चाहते हैं, तो हेयरर की पहली पुस्तक देखें, जहां आप देखेंगे कि बीएस लगभग कभी भी अच्छा नहीं करता है। उच्चतर आदेश केवल तब अधिक कुशल होता है जब त्रुटियां काफी कम होती हैं, और हमने (और अन्य लोगों ने) लगातार ऐसा करने के लिए बेंचमार्किंग की है कि यह केवल उप-फ्लोटिंग पॉइंट परिशुद्धता के लिए कुशल है।
क्रिस रैकाकस

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

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

M & G आरकेएन के खिलाफ आरकेएन, और बीएस और अन्य के खिलाफ आरकेएन (पृष्ठ 123-132 और 151-154) का परीक्षण करते हैं और कहते हैं कि वे आरके विधियों के सबसे कुशल हैं (वर्नियर को शामिल नहीं करते हैं भले ही वे उसे उद्धृत करते हैं)। बीएस को 13-14 अंकों में कुशल दिखाया गया है, जो कि मेरा दावा था, मैंने इसे dop853, ABM (12), टेलर और मानक RK8 के खिलाफ परीक्षण करते हुए देखा है और यह अच्छा प्रदर्शन करता है। मुझे मानना ​​है कि मैंने इसे फिर से आरकेएन का परीक्षण नहीं देखा है, लेकिन एम एंड जी से जो मैं देख सकता हूं, वह उदाहरण के लिए FILG11 से दूर नहीं है। मैं वास्तव में वर्नर के आरके में दिलचस्पी रखता हूं और ऊपर आपके लिंक देखूंगा। क्या आपके पास एक पेपर है जो उन सभी को देखने के लिए परीक्षण करता है?
viiv

मैं वापस चला गया और कम से मानक का एक समूह फिर से भाग गया DiffEqBenchmarks.jl और odexमेले में अच्छी तरह से नहीं करता है। तो कम से कम 1 आदेश ODE के लिए और सहिष्णुता के लिए >=1e-13, एक्सट्रपलेशन अच्छा नहीं लगता है और यह आमतौर पर करीब भी नहीं है। यह ऊपर दिए गए दावे के अनुरूप है।
क्रिस राकाउकास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.