1自由度振動運動方程式
こんにちは、データサイエンティストひろき🐶です。
前回こちらのブログで紹介した物理モデルのMatlabコード
実は、状態空間表現というとてもオシャレな解き方をしています。
今回はその状態空間表現について、少し深くみていきたいと思います。
そこで今回は、
- 状態空間表現とは
- 1自由度振動モデルを状態空間表現で表すメリット
まずこちらの1自由度振動モデル。
普通に数式で表すと下記のように運動方程式で書くことができます。
$$\begin{align*}
m\ddot{x}+c\dot{x}+kx&=f \
\end{align*}$$
でも前回紹介したMatlabコードでは、
% 微分方程式の定義
A = [0 1; -k/m -c/m];
B = [0; 1/m];
C = [1 0];
D = 0;
% 状態空間モデルの作成
sys = ss(A, B, C, D);
となっており、何やら様子が違います。
これは状態空間表現といって、非常にオシャレな、有意義な表現方法で
運動方程式を変形して、解いてます。
実は、
$$\begin{align*}
m\ddot{x}+c\dot{x}+kx&=f \
\end{align*}$$
この方程式を
$$\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
0 & 1 \\
-k/m & -c/m \\
\end{pmatrix}
\begin{pmatrix}
x \\
\dot{x} \\
\end{pmatrix}
+
\begin{pmatrix}
0 \\
1/m \\
\end{pmatrix}
f
$$
と変形して、
$$
A
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
0 & 1 \\
-k/m & -c/m \\
\end{pmatrix}$$
$$
B
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
0 \\
1/m \\
\end{pmatrix}$$
$$
C
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
1 & 0 \\
\end{pmatrix}$$
$$
D=0
$$
と置いています。
なぜこの方程式
$$\begin{align*}
m\ddot{x}+c\dot{x}+kx&=f \
\end{align*}$$
が
$$\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
0 & 1 \\
-k/m & -c/m \\
\end{pmatrix}
\begin{pmatrix}
x \\
\dot{x} \\
\end{pmatrix}
+
\begin{pmatrix}
0 \\
1/m \\
\end{pmatrix}
f
$$
と変形できるのかって?
それはまず、
$$\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}$$
というベクトルを考えるところからはじめます。
そして、
$$\begin{align*}
m\ddot{x}+c\dot{x}+kx&=f \
\end{align*}$$
この方程式を
$$\begin{align*}
\dot{x}-\dot{x}=0 \
\end{align*}$$
$$\begin{align*}
m\ddot{x}+c\dot{x}+kx&=f \
\end{align*}$$
と2つの数式に分けます。
そして、先ほどの、こちら
$$\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}$$
に着目すると、、、
$$\begin{pmatrix}
1 & 0 \\
0 & m \\
\end{pmatrix}
\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}
+
\begin{pmatrix}
0 & -1 \\
k & c \\
\end{pmatrix}
\begin{pmatrix}
x \\
\dot{x} \\
\end{pmatrix}
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
0 \\
f \\
\end{pmatrix}$$
このように変形できることがわかります。 そうすると、
$$\begin{pmatrix}
1 & 0 \\
0 & m \\
\end{pmatrix}
\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
0 & 1 \\
-k & -c \\
\end{pmatrix}
\begin{pmatrix}
x \\
\dot{x} \\
\end{pmatrix}
+
\begin{pmatrix}
0 \\
1 \\
\end{pmatrix}
f
$$
と変形できて、2行目の両編をmで割ると、
$$\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}
\begin{align*}
&=
\end{align*}
\begin{pmatrix}
0 & 1 \\
-k/m & -c/m \\
\end{pmatrix}
\begin{pmatrix}
x \\
\dot{x} \\
\end{pmatrix}
+
\begin{pmatrix}
0 \\
1/m \\
\end{pmatrix}
f
$$
となり、
$$\begin{pmatrix}
\dot{x} \\
\ddot{x} \\
\end{pmatrix}
\begin{align*}
&=
\end{align*}
A
\begin{pmatrix}
x \\
\dot{x} \\
\end{pmatrix}
+
B
f
$$
と表せます。これを状態方程式と言います。
そして、
$$
y
\begin{align*}
&=
\end{align*}
C
\begin{pmatrix}
x \\
\dot{x} \\
\end{pmatrix}
+
D
f
$$
これを出力方程式(または観測方程式)といいます。
これで何が嬉しいかって?
これは現代制御工学の基本的な形であり、
線型システムとして、様々な信号の入出力をシミュレートすることが簡単にできます。
例えばそれが、前回、ChatGPTが示してくれた下記コードの部分で、
lsim関数がその代表例です。
% 状態空間モデルの作成
sys = ss(A, B, C, D);
% 応答のシミュレーション
t = linspace(0, 10, 1000); % シミュレーション時間 [s]
u = f * ones(size(t)); % 外力の時系列
y = lsim(sys, u, t);
つまり、
状態空間表現とは現代制御工学の基本的な形。
1自由度振動モデルを状態空間表現で表すメリットは、lsim関数などを用いて、線型システムとして、様々な信号の入出力をシミュレートすることが簡単にできる。
でした。
それでは今日はこの辺で
たくさんの数式が出てきて疲れたかもしれません
最後まで読んでくださりありがとうございました。
Love&Respect♡
Hiroki🐶