講義06 状態方程式の自由応答
行列指数関数 という魔法のような表現方法
行列指数関数
入力 がない場合の応答を求める
ここで、行列指数関数 を導入
結局、 は、下記になる
2x2の具体例
下記のシステムについて
解析すると
行列指数関数は下記になる
初期値を与えると下記のように解ける
グラフにすると下図になる
fig = plt.figure(figsize=(6, 4)) ax = fig.add_subplot(111) t = np.arange(0, 5, 0.001) x1_arr = 4 * np.exp(-2 * t) - 3 * np.exp(-3 * t) x2_arr = -8 * np.exp(-2 * t) + 9 * np.exp(-3 * t) ax.plot(t, x1_arr, '-', label='x1') ax.plot(t, x2_arr, '--', label='x2') ax.grid() ax.legend() ax.set_xlim(0, 5) ax.set_ylim(-1.0, 1.5) fig.tight_layout()
Pythonによる数値シミュレーション
実際に、状態方程式を逐次計算した場合をシミュレーションしてみる
x1_arr = [1.0] x2_arr = [1.0] t = [0.0] dt = 0.001 for i in range(5000): x1_arr += [x1_arr[-1] + (0 * x1_arr[-1] + 1 * x2_arr[-1]) * dt] x2_arr += [x2_arr[-1] + (-6 * x1_arr[-1] + -5 * x2_arr[-1]) * dt] t += [t[-1] + dt]
fig = plt.figure(figsize=(6, 4)) ax = fig.add_subplot(111) ax.plot(t, x1_arr, '-', label='x1') ax.plot(t, x2_arr, '--', label='x2') ax.grid() ax.legend() ax.set_xlim(0, 5) ax.set_ylim(-1.0, 1.5) fig.tight_layout()
解析結果と同じになる
参考文献
この記事は以下の書籍を参考にしましたが、
私の拙い知識で書いておりますので、誤り等ありましたらご指摘ください