はじめに
こんにちは、こうへいです。
前回、2次遅れ系のステップ応答の計算式を紹介しました。今回は2次遅れ系の代表例であるバネマスダンパ系 のステップ応答を計算して、ルンゲ・クッタ法の結果と比較したいと思います。
kouhei-no-homepage.hatenablog.com
kouhei-no-homepage.hatenablog.com
バネマスダンパ系の伝達関数と2次遅れ系の伝達関数
質量、ダンピング係数、バネ定数とすると、バネマスダンパ系の伝達関数は次のような式になります。
2次遅れ系の伝達関数と比較するために、2次の項の係数で分母と分子を割ると
となります。 これと以下の2次遅れ系の伝達関数と比較すると
ゲイン、減衰係数、自然角振動数が以下のように求まります。
以上の結果と、以下の前回の投稿で示した2次遅れ系のステップ応答を表す式
:異なる二つの実数解になる場合のステップ応答
:共役複素解になる場合のステップ応答
:重解になる場合のステップ応答
以上から、ゲインと減衰係数と自然角振動数と計算時間を引数として2次遅れ系のステップ応答を求める関数を作成しました。
サンプルではバネマスダンパ系の質量、ダンピング係数、バネ定数からゲインと減衰係数と自然角振動数を算出して ステップ応答関数に与えています。
これでルンゲ・クッタ法のバネマスダンパ系の単位ステップ応答の計算結果と比較する準備ができました。
比較計算プログラム
計算結果
以上のプログラムを用いて、計算をしました。 バネマスダンパ系のパラメータですが
D=3(Ns/m)、Ks=10(N/m)、M=1(kg)
です。
この場合
(m)、、 (rad/s)となります。 自然角振動数の単位をHzに変換すると大体0.5Hzです。
まず、刻み幅が0.1秒の場合です。
青い線がルンゲ・クッタ法による数値計算の結果、オレンジ色の線が解析解です。 刻み幅が0.1秒では荒すぎて、誤差が大きようです。
次に、刻み幅を0.01秒にしました。
0.01秒でかなり誤差も小さくなりましたが、動きが急なところでは誤差が目立ちます。
次に、刻み幅を0.001秒にしました。
ここまで刻み幅を小さくすると、このスケールではほぼ誤差が見えません。
今回のサンプルでは刻み幅を0.001秒にすれば満足のいく結果となりましたが、この値はケースにより異なりますので システムの応答の速さ等が判る場合は参考にして決めるといいと考えます。
おわりに
ルンゲ・クッタ法と解析解を比較することができました。 今回作成したルンゲ・クッタ関数は正常に動作しているようです。
今回のコードではメインの中でループを作って関数を呼び出しています。 場当たり的な再利用を考えないコードならば結果さえ出れば良いので問題だとは思いませんが 、今後再利用を視野に入れると、これが果たして使いやすいのか疑問があります。 今回のサンプルのように単純に一つの物体のシミュレーションならば目立ちませんが 複数の物体の計算をさせる場合等を考慮してコードを見直して行こうと思います。
加えて2次遅れ系のステップ応答を計算する関数もできたので自前Toolboxが揃って行くかもしれません。
次回は1717モータをシミュレーションします。