क्या C के लिए ODE सॉल्वर का एक खुला स्रोत सेट है जो मूल C99 जटिल प्रकार का उपयोग करता है?


12

मैं अपने कई सिमुलेशनों की नींव के रूप में जीएसएल का उपयोग कर रहा हूं, लेकिन यह मेरे उद्देश्यों के लिए थोड़ा अधिक है और यह विरासत के कारणों के लिए अपने स्वयं के जटिल प्रकार को परिभाषित करता है। कोड के बजाय मेरे स्वयं के रूज-कुट्टा ODE सॉल्वर, जो शायद बहुत कुशल नहीं होगा, क्या कोई खुला स्रोत ODE सॉल्वर है जो मूल C99 जटिल प्रकार का उपयोग करता है?


मुझे नहीं पता कि आप इसका उपयोग कहां करना चाहते हैं, लेकिन सामान्य तौर पर आरके को गैर-कुशल तरीके से लागू किया जाना काफी कठिन है ... क्या आपने कोई ऐसा मानदंड बनाया है जिससे पता चले कि आपको यह समस्या है?
mbq

2
कोई नहीं। मैंने अपना खुद का लिखा नहीं है क्योंकि मैं पहिया को फिर से नहीं बनाना चाहता। अगर मुझे करना है तो मैं करूंगा, लेकिन जो चीज टूटी नहीं है उस पर खर्च करने का समय ढूंढना अभी मेरे लिए कार्ड पर नहीं है। अगर एक जवाब आता है कि मैं क्या देख रहा हूं, तो मैं वास्तव में कुछ महीनों के लिए उपयोग नहीं कर पाऊंगा। इसके अलावा, आरके हमेशा वह नहीं होता है जिसकी मुझे आवश्यकता होती है, बस मैं जो जानता हूं उसके लिए एल्गोरिथ्म है।
qubyte

संयोग से, मैं ज्यादातर समय छोटे क्वांटम सिस्टम के सिमुलेशन कर रहा हूं। हालांकि विशेष रूप से नहीं।
qubyte

मैं स्वयं चर चरण-आकार RK को लागू करने के लिए सलाह दूंगा (शैक्षिक उद्देश्यों को छोड़कर)। इष्टतम कदम के आकार को खोजने में बहुत अधिक संख्याएँ शामिल हैं।
जितसेन निसें

जैसा कि मैंने कहा, कोई भी मैं जल्दी से लिखूंगा या तो गलत होगा, या धीमा। क्या जटिल इनपुट / आउटपुट के साथ आरके को लागू करना विशेष रूप से कठिन है? मुझे पता है कि आप इसे दो वास्तविक भागों में विभाजित कर सकते हैं, लेकिन यह कष्टप्रद है!
क्वेटा

जवाबों:


10

आप इसे "ओवरकिल" मान सकते हैं, लेकिन पेट्स के समय एकीकरण पैकेज का उपयोग C99 कॉम्प्लेक्स (कॉन्फ़िगर --with-scalar-type=complex) के साथ किया जा सकता है । समर्थित विधियों में शामिल हैं

ये कार्यान्वयन उच्च-आयामी समस्याओं जैसे अर्ध-विच्छिन्न आंशिक अंतर समीकरणों (लाइनों की विधि) के लिए सबसे उपयुक्त हैं।


यह थोड़ा बड़ा है, लेकिन मुझे इसके बारे में पता नहीं था इसलिए +1। आदर्श रूप से मैं जो भी उपयोग करता हूं वह जीएसएल से बड़ा नहीं होगा। मैं मैनुअल पर एक नज़र डालूंगा और देखूंगा कि मुझे क्या लगता है।
qubyte

बस स्पष्ट होने के लिए, आप इन पुस्तकालयों के खिलाफ संकलन समय पर लिंक करते हैं। क्या वह सही है?
qubyte

संकलन के समय कुछ भी नहीं जुड़ा है। कभी। लिंकिंग संकलन के बाद भी किया जाता है (भले ही कंपाइलर लिंकर को चालान करता है)। आप लाइब्रेरी को गतिशील रूप से लोड कर सकते हैं, लेकिन आपको हेडर को लाइब्रेरी में कॉल करने के लिए अपने कोड को संकलित करने की आवश्यकता होगी। यदि वह आपके प्रश्न का उत्तर नहीं देता है, तो कृपया बताएं कि आप क्या करना चाहते हैं।
जेड ब्राउन

तुम बिल्कुल सही हो। मूर्खतापूर्ण त्रुटि, लेकिन आप जानते थे कि मेरा क्या मतलब है। मेरे प्रश्न को "क्या मैं इन पुस्तकालयों से जोड़ता हूं?" बिट्स को संकलित करने का विरोध करने के लिए मुझे अपने कोड के रूप में उसी समय की आवश्यकता होती है जैसा कि बूस्ट के मामले में होता है। मुझे पता है कि लाइब्रेरी से कॉलिंग फ़ंक्शन के लिए हेडर की आवश्यकता होगी, मैं कुछ समय से ऐसा कर रहा हूं।
क्वेटी

हां, आप अपने आवेदन से स्वतंत्र रूप से पेट्सक संकलन करते हैं। यह हेडर नहीं है केवल बूस्ट की तरह है।
जेड ब्राउन

1

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


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