2017-03-26 3 views
6

ハイブリッドモデリング(特に状態イベント)の背後にある一般的な考え方を数値的な観点から理解したいと思います(私は数学者ではありません:))。私はwhenreinitの概念を理解Modelicaイベントとハイブリッドモデリング

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; 

:以下Modelicaモデルを考えます。

  1. whenステートメントの式は、条件が真のときにのみ有効です。
  2. ボールが正確に2secに床に当たったとしましょう。私はマルチステップソルバーを使用しているので、ソルバーが「2秒を超えている」という意味で、h<0(シミュレーションで仮定することができますtime = 2.5sech = -0.7)です。簡単な説明は(例)?
  3. ソルバーは現在、小さなステップサイズを撮る?戻ってますか?pre()
  4. あり、この平均「交差機能を使用して検索されたイベントのための時間?何そのコンテキストでの操作の平均?
  5. noEvent(): "式は交差関数を生成するのではなく文字通りに取られます。交差する関数がないので、式がイベントの限界を超えて評価できるという要件はありません」ということは、どういう意味ですか?ボールを弾いた同じ例を考えてみましょう:ソルバーは時刻2.5でh = 0.7を検出します。 noEvent()とない差
+2

私はあなたがModelica Book: http://book.xogenyで読むことをお勧めします。2)交差関数とは、hがゼロを横切るとき、ソルバが信号の微係数を使用してより小さなステップサイズにするときの感情を得ることを意味しますが、ソルバに依存して)4)preは前のステップ5からの離散変数の値です。信号がゼロを超えたときにイベントが生成されないので、ソルバーは停止しません(事象なし)。ステップ境界でのみ –

答えて

4
  1. はい、唯一のイベントで実行されたときの本体
  2. 単純なビュー:。ソルバーは、ステップを取り、その後、(平滑)を生成するために連続的な拡張を使用してその補間式を使用してプロットを生成することができ、また、hがゼロ(恐らく2.000000001)を越えた最初の点を見つけるために使用することができる。補間された点で - ソルバが再開されます。
  3. 私はソルバーが戻ってくるとは言いません。それは部分的な踏み込みをしてから前方に進みます。一部のソルバーは、イベント後にステップサイズを大幅に減らす必要があります。
  4. pre(x)は、イベントの前にxの値に設定されます。
  5. noEvent(h<0)は基本的に、交差機能のすべてのベルとホイッスルなしに書かれた表現を評価することを意味します。 あなたはシュトゥルム・シーケンスまたは制御理論に精通している場合は、ゼロかどうかを交差するかどうかを決定するために式を補間する必要はないことを認識かもしれません:あなたはwhen noEvent(h<0) then

は、多くの追加のポイントがあります使用することはできませんインターバル(およびそれを使用するツールもあります)。関数が必ずしも滑らかではないという事実は、それが少し複雑になり、また、微分テストを使用できないことを意味します。 ソルバーのリセットの程度は、ソルバーの種類によって異なります。ワンステップソルバー(Runge-Kutta)は、事実上何も起こらないかのように直接再起動することができますが、マルチステップソルバー(dassl/lsodar/cvodeなどのBDF/Adams)は、

関連する問題