2017-03-26 13 views
6

Hibrid modellemenin (özellikle eyalet olayları) genel fikrini sayısal bir bakış açısıyla anlamak istiyorum (matematikçi olmamakla birlikte :)).Modelica olayları ve karma modelleme

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; 

Ben when ve reinit kavramını: Aşağıdaki modelica modeli göz önüne alındığında.

  1. when ifadesindeki denklem yalnızca durum doğru olduğunda etkin midir? Topun tam olarak 2sec'da yere çarpacağını varsayalım. Çok adımlı çözücü kullanıyorum demek, çözücünün "2 saniyenin ötesine geçtiği" anlamına geldiğinden, h<0'un (time = 2.5sec, h = -0.7 simülasyonunda olduğunu varsayalım) farkına varır. basit bir açıklama (örnek)?
  2. çözücü şimdi daha küçük bir adım boyutu çıkarak? geri dönüyor mı? pre() ne yapar
  3. var mı demek "bir geçiş fonksiyonu kullanılarak aranır etkinlik zamanı? ne yapar? Bu bağlamda işlem anlamı "Geçiş işlevleri oluşturmak yerine ifadeler tam anlamıyla alınır." Bir geçiş fonksiyonu olmadığından, ifadenin tatbik sınırının ötesinde değerlendirilebileceğine dair bir gereksinim yoktur ": Bu ne anlama geliyor? Aynı örnekte zıplayan topla birlikte verilir: Çözücü 2.5 saatinde h = 0.7 olduğunu tespit eder. ve noEvent() olmayan arasındaki fark
+2

Modelica Kitabında okumanızı öneririm: http: //book.xogeny.com/behavior/discrete/ Kısaca: 1) evet 2) geçiş işlevi, h, sıfıra ulaştığında, çözücü, daha küçük bir adım boyutu yapmak için bir his elde etmek üzere sinyalin türevlerini kullanıyor demektir; çözücü 3) her ikisi de, çözücüye bağlı olarak 4) öncesi önceki adım 5'ten ayrık değişkenin değeridir) temelde, sinyal sıfır geçtiğinde, hiç bir olay üretilmez, böylece çözücü durmaz (olay yok) temelde ifade değerlendirilir sadece adım sınırında –

cevap

4
  1. Evet yalnızca etkinliklerde yürütüldüğünde gövdesi
  2. Basit görünümü:. çözücü aşamaları alır, ve daha sonra bir (düz) oluşturmak için bir sürekli uzantısını kullanır Bir önceki adım için interpolasyon formülü Bu interpolasyon formülü, bir arsa oluşturmak için kullanılabilir ve ayrıca h'nin sıfıra ulaştığı ilk noktayı (muhtemelen 2.000000001) bulmak için kullanılabilir. enterpolasyonlu noktada - ve daha sonra çözücü yeniden başlatılır.
  3. Çözücünün geri gittiğini söylemem. Kısmi bir adım atıyor ve ileriye doğru devam ediyor. Bazı çözücülerin olaydan sonra adım boyutunu çok azaltması gerekiyor - diğerleri yok.
  4. pre(x), olaydan önceki x değerine ayarlanır. Temel olarak, ifadeyi, çaprazlama işlevlerinin tüm zil ve ıslıklarını olmadan yazılı olarak değerlendirmek anlamına gelir. Eğer Sturm-dizileri ya da kontrol teorisi aşina değilseniz bunu bir de sıfır ya da değil çarpı işareti olmadığını belirlemek için bir formül interpole gerekli olmadığını fark olabilir: Sen when noEvent(h<0) then

birçok ek nokta vardır kullanamazsınız aralık (ve bazı araçlar bunu kullanır). Fonksiyonun pürüzsüz olması gerekmediği gerçeğini biraz daha karmaşık hale getirir ve ayrıca türev testlerinin kullanılamayacağı anlamına gelir. Çözücünün sıfırlanması ne kadar çözücü türüne bağlı. Tek adımlı çözücüler (Runge-Kutta) hemen hemen hiçbir şey olmamış gibi doğrudan yeniden başlatılabilir, oysa çoklu adım çözücüler (BDF/Adams - dassl/lsodar/cvode gibi) daha düşük sıralı ve daha küçük adımlarla başlamalıdır.