Main Content

システムの剛性の判別

モデルの数値的剛性の判別は、リアルタイム シミュレーションで陰的固定ステップ ソルバーと陽的固定ステップ ソルバーのどちらを使用するかを決定するのに役立ちます。数値的剛性を判別するには、まずリアルタイム モデルの準備のワークフローを使用して、モデルの速度と精度を最適化します。次に、陽的固定ステップ ソルバーと陰的固定ステップ ソルバーの両方を使用して、モデルのシミュレーションを実行します。シミュレーション結果を比較して、ソルバーの動作を確認します。モデルが数値的にスティッフであれば、陽的ソルバーは通常、目的の解の周辺で小さな振動を示します。

陰的ソルバーは陽的ソルバーよりロバストですが、陽的ソルバーの方が高速です。数値的にスティッフなモデルでリアルタイム シミュレーションを実行する際にロバストな結果を得るには、陰的固定ステップ ソルバーを使用します。モデルがスティッフでない場合は、陽的ソルバーを使用してシミュレーション速度を最大化します。

この例では、空気圧モデルを可変ステップ ソルバーでシミュレートすることで、参照結果を得ます。また、陰的ソルバー、陽的固定ステップ グローバル Simulink® ソルバーの順に使用して、モデルを構成し、シミュレートします。その後、3 種類すべてのシミュレーションの結果を比較して、空気圧モデルが数値的にスティッフかどうかを判断します。

参照結果の取得

  1. このモデルを開くには、MATLAB® コマンド プロンプトで次を入力します。

    ssc_pneumatic_rts_reference

  2. MATLAB パス上の書き込み可能なフォルダーに、モデルを stiffness_model として保存します。

  3. モデルをシミュレートします。

  4. シミュレーション結果を新しい変数に割り当てます。

    yRef = yout;
    tRef = tout;
  5. 可変ステップ シミュレーションの結果をプロットします。

    h1 = figure;
    plot(tRef,yRef)
    h1Leg = legend({'Reference'});
    title('Speed')
    xlabel('Time (s)')
    ylabel('Speed (rpm)')

陰的固定ステップ ソルバーを使用したシミュレーション

  1. 陰的ソルバー ode14x を使用して、モデルを固定ステップ シミュレーション用に構成します。コンフィギュレーション パラメーターの [ソルバー] ペインで、次のように設定します。

    • [タイプ][固定ステップ] に設定します。

    • [ソルバー][ode14x (外挿)] に設定します。

    • [追加オプション] で、[固定ステップ サイズ (基本サンプル時間)]1e-3 に設定します。

    • [ニュートンの反復回数]1 に設定します。

    [適用] をクリックします。

  2. モデルをシミュレートします。

  3. シミュレーション結果を新しい変数に割り当てます。

    yOde14x = yout;
    tOde14x = tout;
  4. 関数 stairs を使用して、陰的固定ステップ シミュレーションの結果をプロットし、シミュレーションの各ステップを実行する際にソルバーがどのように動作するかを確認します。

    h1
    hold on
    stairs(tOde14x,yOde14x,'g--')
    h1Leg = legend({'Reference','Implicit Solver'});

    結果は同じように見えます。

陽的固定ステップ ソルバーを使用したシミュレーション

  1. 陽的固定ステップ ソルバー ode5 を使用して、モデルを固定ステップ シミュレーション用に構成します。コンフィギュレーション パラメーターの [ソルバー] ペインで、次のように設定します。

    • [タイプ][固定ステップ] に設定します。

    • [ソルバー][ode5 (Dormand-Prince)] に設定します。

    [OK] をクリックします。

  2. 入力信号をフィルター処理して、陽的ソルバーに必要な入力微分を得ます。Simulink-PS Converter ブロックのダイアログ ボックスで、[フィルター処理と微分][入力のフィルター処理、微分の算出] に設定します。[OK] をクリックします。

  3. モデルをシミュレートします。

  4. シミュレーション結果を新しい変数に割り当てます。

    yOde5 = yout;
    tOde5 = tout;
  5. 関数 stairs を使用して、陽的固定ステップ シミュレーションの結果をプロットします。

    h1
    hold on
    stairs(tOde5,yOde5,'r-')
    h1Leg = legend({'Reference','Implicit Solver','Explicit Solver'});

    結果は変曲点において異なっています。

結果の解析

  1. 結果を詳しく確認するために、時間 t = 約 1 秒直後の変曲点にズームします。

    陰的ソルバーは、可変ステップ ソルバーが参照結果を生成する際に通るパスと同様のパスを通ります。陽的ソルバーが示す振動は、モデルが数値的にスティッフであることを示しています。また、この振動は、スティッフなモデルのシミュレーションを実行する場合に、陽的ソルバーの方が陰的ソルバーより計算コストが大きいことも示しています。不要な計算コストを避けるため、数値的にスティッフなモデルを使用したリアルタイム シミュレーションではグローバルまたはローカルの陰的固定ステップ ソルバーを使用してください。

参考

関連する例

詳細