2017-03-26 15 views
6

मैं संख्यात्मक दृष्टिकोण से हाइब्रिड मॉडलिंग (विशेष रूप से राज्य घटनाओं) के पीछे सामान्य विचार को समझना चाहता हूं (हालांकि मैं गणितज्ञ नहीं हूं :))।मॉडलिका घटनाएं और हाइब्रिड मॉडलिंग

model BouncingBall 
    constant Real g=9.81 
    Real h(start=1); 
    Real v(start=0); 
equation 
    der(h)=v; 
    der(v)=-g; 
algorithm 
    when h < 0 then 
     reinit(v,-pre(v)); 
    end when; 

end BouncingBall; 

मैं when और reinit की अवधारणा को समझने: निम्नलिखित माडेलिका मॉडल को देखते हुए।

  1. when कथन में समीकरण केवल तभी सक्रिय होता है जब स्थिति सही हो जाती है?
  2. मान लीजिए कि गेंद बिल्कुल 2sec पर फर्श पर पहुंच जाएगी। चूंकि मैं मल्टी-स्टेप सॉल्वर का उपयोग कर रहा हूं, इसका मतलब यह है कि सॉल्वर "2 सेकंड से अधिक हो जाता है", यह पहचानता है कि h<0 (सिमुलेशन time = 2.5sec, h = -0.7 पर मान लें)। इसका मतलब "घटना के लिए समय एक पार फंक्शन का उपयोग करके खोज कर रहा है? क्या करता है इसे आसानी से समझा (उदाहरण)?
  3. solver अब वापस जाने? एक छोटे कदम आकार ले रहा है है?
  4. pre() करता क्या है ऑपरेशन का मतलब उस संदर्भ में है?
  5. noEvent(): "पारगमन कार्यों को उत्पन्न करने के बजाय अभिव्यक्तियों को सचमुच लिया जाता है। चूंकि कोई क्रॉसिंग फ़ंक्शन नहीं है, इसलिए कोई आवश्यकता नहीं है कि अभिव्यक्ति का मूल्यांकन घटना सीमा से परे किया जा सकता है ": इसका क्या अर्थ है? बाउंसिंग बॉल के साथ एक ही उदाहरण को देखते हुए: सॉल्वर समय 2.5 पर एच = 0.7 का पता लगाता है। साथ और noEvent() बिना के बीच का अंतर
+2

मेरा सुझाव है कि आप मॉडलिका पुस्तक में पढ़ लें: http: //book.xogeny।कॉम/व्यवहार/असतत/ संक्षेप में: 1) हां 2) क्रॉसिंग फ़ंक्शन का अर्थ है कि जब एच शून्य को पार करता है, तो सॉल्वर सिग्नल के व्युत्पन्न का उपयोग कर रहा है ताकि छोटे चरण के आकार को महसूस किया जा सके, लेकिन यह इस पर निर्भर करता है सॉल्वर 3) दोनों, सॉल्वर के आधार पर 4) पूर्व पिछले चरण 5 से अलग चर का मान है) मूल रूप से सिग्नल शून्य पार होने पर कोई घटना उत्पन्न नहीं होती है, इसलिए सॉल्वर बंद नहीं होता है (कोई घटना नहीं) इसलिए मूल रूप से अभिव्यक्ति का मूल्यांकन किया जाता है केवल चरण सीमा पर –

उत्तर

4
  1. हाँ, जब केवल घटनाओं पर निष्पादित किया जाता है के शरीर
  2. सरल दृश्य:?। solver कदम उठा लेता है, और फिर एक सतत एक्सटेंशन का उपयोग करता उत्पन्न करने के लिए एक (चिकनी) पिछले चरण के लिए इंटरपोलेशन फॉर्मूला। उस इंटरपोलेशन फॉर्मूला का उपयोग साजिश उत्पन्न करने के लिए किया जा सकता है, और यह भी पहला बिंदु खोजने के लिए जहां एच शून्य (संभवतः 2.000000001) पार हो गया है। एक घटना पुनरावृत्ति तब किया जाता है इंटरपोलेटेड पॉइंट पर - और बाद में सॉल्वर को पुनरारंभ किया जाता है।
  3. मैं नहीं कहूंगा कि सॉल्वर वापस चला जाता है। यह आंशिक कदम उठाता है और फिर आगे बढ़ता है। कुछ हलकों को घटना के बाद चरण-आकार को बहुत कम करने की आवश्यकता होती है - अन्य नहीं।
  4. pre(x) ईवेंट से पहले x के मान पर सेट है।
  5. noEvent(h<0) मूल रूप से अभिव्यक्ति का मूल्यांकन करने के लिए क्रॉसिंग कार्यों की सभी घंटियां और सीटी के बिना लिखा गया है। आप उपयोग नहीं कर सकते when noEvent(h<0) then

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

संबंधित मुद्दे