1自由度振動運動方程式の状態空間表現(続)

1自由度振動運動方程式

こんにちは、データサイエンティストひろき🐶です。
前回こちらのブログで紹介した1自由度振動運動方程式を解くためのMatlabコード
もう少し変形して、このような、入力と出力の形にして、解いてみたいと思います。

まずこちらの1自由度振動モデル。
普通に数式で表すと下記のように運動方程式で書くことができます。

$$\begin{align*} m\ddot{x}+c\dot{x}+kx&=f \
\end{align*}$$

ここで、

$$\begin{align*} f=c\dot{y}+ky& \
\end{align*}$$

です。

こちらのモデルを解くMatlabコードは、前回のコードを少し変更して、下記のようになります。

% パラメータの定義
m = 1; % 質点 [kg]  ※適切な値を設定してください
k = 1; % バネのばね定数 [N/m] ※適切な値を設定してください
c = 1; % ダンパーの減衰係数 [N.s/m] ※適切な値を設定してください


% 微分方程式の定義
A = [0 1; -k/m -c/m];
B = [0; 1/m];
C = [1 0];
D = 0;

% 状態空間モデルの作成
sys = ss(A, B, C, D);

% 応答のシミュレーション
t = linspace(0, 50, 1000); % シミュレーション時間 [s]

%外力fをシステムに入力
Y=1;
w0=sqrt(k/m);
f = c*Y*w0*cos(w0*t)+k*Y * sin(w0*t); % 外力の時系列
y = lsim(sys, f, t);

% 結果のプロット
figure;
plot(t, y);
xlabel('Time [s]');
ylabel('Displacement [m]');
title('Response of the physical model');
grid on;

実行すると、下記のようなグラフが得られたのではないでしょうか。

このようにM K Cのシステムにfという入力を与えた時の出力xを求めることが簡単にかつ、システマチックにできるのが、現代制御の魅力です。
次回以降、もう少し複雑なシステムに応用していきたいと思います。

それでは今日はこの辺で
最後まで読んでくださりありがとうございました。
Love&Respect♡
Hiroki🐶