このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
ニュートンのゆりかごのモデル化
この例は、「ニュートンのゆりかご」と呼ばれる一般的な玩具をモデル化する方法を示しています。「ニュートンのゆりかご」は、7 つのまったく同じボールで構成され、これらのボールは同じ高さから一列につるされています。停止しているときは、お互いのボールがちょうど触れ合うように並んでいます。片側の 1 つ以上のボールを静止位置から持ち上げて、手を放します。
ボールの弾性衝突に関する興味深い点は、手放されたボールが止まったように見え、もう一方の端の同数のボールが (手放されたボールとほぼ同じ力で) 振り動かされたように見えることです。中央部のボールは、一方の端から反対の端への移行運動量に関与していながらも、動いていないように見えます。
このモデルでは、単純な弾性衝突モデルを使用してボール間の基本相互作用を説明します。Stateflow® チャートでは、ローカル変数を使用してシステムの連続状態、すなわち位置 p
と速度 v
を表現しています。これらの 2 つのローカル変数は、[更新方法] が continuous
になるように定義されます。これにより、導関数をそれぞれ p_dot
および v_dot
として参照できるようになります。すべてのボールのノミナル ダイナミクスが同一なので、この例では以下のベクトルの割り当てを使用して、すべてのボールの運動を表しています。
p_dot = v; v_dot = -g/l*sin(p);
p_dot
と v_dot
はチャートのローカル変数ではありません。これらは、p
と v
が連続になるように定義されているため、自動的に作成されます。
モデルは簡単な for ループを使用して、ボール間の衝突を検出します。1 次元の設定では、チャートは単一の for ループを使用して、隣り合ったボールの衝突のみをモデル化します。
衝突に対する反応も単純に表現されます。各衝突は完全な弾性瞬間衝突として処理されます。衝突に関与した各ボールの位置と速度は交換されます。
このモデルをシミュレートすると、ボールの運動を示す単純な UI が表示されます。