प्रारंभिक मूल्य और अंतिम मूल्य की बाधाओं के साथ युग्मित ODE को हल करना


12

मेरे प्रश्न का सार निम्नलिखित है: मेरे पास दो ODE की प्रणाली है। एक में प्रारंभिक मूल्य की बाधा होती है और दूसरे में अंतिम मूल्य की बाधा होती है। यह एक एकल प्रणाली के रूप में सोचा जा सकता है जिसमें कुछ चर पर प्रारंभिक मूल्य बाधा और दूसरों पर एक अंतिम मूल्य बाधा है।

यहाँ विवरण हैं:

मैं एक रैखिक गतिशील प्रणाली को चलाने के लिए एक निरंतर समय परिमित-क्षितिज एलक्यूआर नियंत्रक का उपयोग करने की कोशिश कर रहा हूं। मैं पायथन इकोसिस्टम का उपयोग जारी रखना चाहूंगा।

प्रणाली रूप में है , के अधीन एक्स ( 0 ) = एक्स 0x˙(t)=Ax(t)+Bu(t)x(0)=x0

LQR समाधान एक मैट्रिक्स उत्पन्न करता है जैसे कि इष्टतम नियंत्रण इनपुट u (t), x ( t ) में रैखिक , u ( t ) = K ( t ) x ( t ) हैK(t)x(t)u(t)=K(t)x(t)

जहां K(t)=R1BTP(t)

और एक सतत समय के समाधान है रिक्ती अंतर समीकरण (ध्यान दें कि यह पी ( टी ) एक मैट्रिक्स है)P(t)P(t)

पी केअधीन(टीएफ)=क्यूP˙(t)=ATP(t)P(t)A+P(t)BR1BTP(t)+QP(tf)=Q

, बी , एक्स 0 , क्यू , क्यू एफ , आर , टी एफ सभी दिए गए हैं।ABx0QQfRtf

x00tftf

P(t)x(t)0tfx(t)। यह मुझे चिंतित करता है क्योंकि x (t) के लिए संख्यात्मक ODE सॉल्वर आवश्यक रूप से ODE का नमूना उसी समय का नहीं होगा जैसा कि संख्यात्मक समाधान में $ P (t) के लिए है। शायद इसे लागू करने के लिए कुछ चतुर तरीका है।

दूसरे तरीके से मैं समस्या को हल करने के लिए एक साथ sytem को हल करना चाहता हूं, लेकिन मुझे नहीं पता कि प्रारंभिक-मूल्य और अंतिम-मूल्य की बाधाओं के मिश्रण से कैसे निपटना है। क्या इन समस्याओं को हल करने के लिए कम्प्यूटेशनल रूप से भारी हैं? क्या मैं इसे SciPy / Python में कर सकता हूं?

जवाबों:


8

P(t)t[0,tf]

आप आउटपुट मानों के बीच इंटरपोल करके ऐसा कर सकते हैं । मेरा सुझाव है कि आप एक रन-कुट्टा विधि का उपयोग करें जो घने आउटपुट का समर्थन करती है। उदाहरण के लिए, scipy.integrate.ode.dopri5ऐसी विधि पर आधारित है। इसलिए आपको इंटीग्रेटर को बहुत छोटे कदम उठाने के लिए मजबूर किए बिना बहुत सूक्ष्मता से उत्पादित आउटपुट समय निर्दिष्ट करने में सक्षम होना चाहिए (यह मानते हुए कि इसके लिए स्कैपी इंटरफ़ेस सही तरीके से लागू किया गया है)।


P(t)P(t)

6

इसे दो-बिंदु सीमा मूल्य समस्या कहा जाता है और इसका अच्छी तरह से अध्ययन किया जाता है।

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

इन समस्याओं को हल करने का मानक तरीका कई शूटिंग दृष्टिकोण का उपयोग कर रहा है और एक मानक नॉनलाइनियर सॉल्वर द्वारा समीकरणों के संबंधित गैर-रेखीय प्रणाली को हल करना है। समीकरणों के गैर-रेखीय प्रणालियों के लिए सॉल्वरों की सूची के लिए, उदाहरण के लिए,
http://www.mat.univie.ac.at/~neum/glopt/software_l.html#nonlin

आप समय-समय पर एक नियमित ग्रिड पर राज्यों को चर के रूप में लेते हैं (आमतौर पर कोई बहुत महीन ग्रिड की आवश्यकता नहीं होती है), और जैसा कि सीमा की स्थिति और मैपिंग जो समय टी चर चर समय टी + एच चर के समीकरणों के समीकरणों के रूप में। यह चर के रूप में कई समीकरण देता है। आपको केवल ग्रिड पर राज्यों के दिए गए कॉन्फ़िगरेशन के लिए इस मैपिंग का मूल्यांकन करने के लिए दिनचर्या प्रदान करने की आवश्यकता है, और नॉनलाइनियर सॉल्वर सब कुछ करता है। (यदि आपके शुरुआती अनुमान खराब हैं तो शायद आपको कई शुरुआती बिंदुओं की आवश्यकता है।)

विकिपीडिया http://en.wikipedia.org/wiki/Direct_multiple_shooting_method में प्रक्रिया का एक उपयोगी विवरण है, यदि उपरोक्त विवरण आपके लिए पर्याप्त विस्तृत नहीं है। Stoer / Bulirsch द्वारा लिखी गई पुस्तक में पूरी जानकारी दी गई है।


5

मुझे नहीं पता कि इसे पायथन में कैसे करना है, लेकिन जिस कीवर्ड को आप साहित्य में देखना चाहते हैं वह है "शूटिंग विधि"। यह एक ऐसी विधि का नाम है जो समस्याओं को हल करती है जिसमें प्रारंभिक और अंतिम दोनों मूल्य अवरोध होते हैं।


1

ऑटो दो पॉइंट बीवीपी को हल कर सकता है और एक अजगर इंटरफ़ेस है और इसे स्थापित करना अपेक्षाकृत आसान है। http://www.ma.hw.ac.uk/~gabriel/auto07/node6.html

यदि आप पहले P (t) को हल करना चाहते हैं और इसे अन्य ODE को इनपुट के रूप में फीड करना चाहते हैं, तो यह निर्धारित करने का एक कारगर तरीका है कि PyDSTool का उपयोग किया जा रहा है। PyDSTool किसी भी प्लेटफ़ॉर्म पर स्थापित करना बहुत आसान है, http://pydstool.sf.net देखें । यह, डिफ़ॉल्ट रूप से, केवल रैखिक प्रक्षेप का उपयोग करेगा, हालांकि आपके पहले गणना किए गए समाधान के लिए (इसलिए गणना करें कि ठीक समय पर समाधान)। हालाँकि, आप PyDSTool को एक अनुकूली इंटीग्रेटर (हालांकि यह अक्षम हो सकता है और अशुद्धि की ओर ले जा सकते हैं) के साथ वांछित समय बिंदुओं पर कदम रखने के लिए मजबूर कर सकते हैं। लेकिन दूसरे सिस्टम के लिए छोटे पर्याप्त अधिकतम समय के चरणों के साथ, रैखिक प्रक्षेप और एक तेज इंटीग्रेटर (डोप्री में बनाया गया है) का अर्थ है कि आप इस तरह के "नियमित" सिस्टम के लिए ठीक रहेंगे।

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