岡竜之介のブログ

岡竜之介のブログです。

「振動モード」と「固有値分解」

あんまりガンガン表に出してないですが、僕の大学時代の専門は「構造力学」でして

今日はそこから、「モード」の話です。

「モード」と言っても流行とかモード学園の話ではありません。

今日使うモデル

まずはこちらの映像を御覧ください。

f:id:agajo:20161101062050g:plain


2つの物体が不規則な動きをしてますね。

バネ定数と質量はこんな感じです。

f:id:agajo:20161101062827p:plain


バネ定数は3つともkで、質量は2つともm。メチャクチャ分かりやすいですね。

あ、減衰は考えません。摩擦も空気抵抗もなし。


じゃあここからガンガン数式使っていきますね。


力とか位置とか加速度とかは全部右側を正とします。

まず2つの物体それぞれについて運動方程式を立てますよ。

左の物体の位置をx1、それにかかる力をf1とします。右の物体が2ね。

{\displaystyle
f_1 = -2kx_1 + kx_2 = m \ddot x_1 \\\
f_2 = kx_1 - 2kx_2 = m \ddot x_2
}

xの上の点は時間微分です。2つ付いてるので二階微分。加速度のことですね。

ということで、連立微分方程式になりました。これどうやって解くんでしょうね。

線形代数の力を使って対角化します

まず、この連立方程式を行列で表してみましょう


{\displaystyle
\begin{pmatrix}-2k & k \\k & -2k\end{pmatrix}\begin{pmatrix}x_1 \\ x_2 \end{pmatrix} = m \begin{pmatrix} \ddot x_1 \\ \ddot x_2 \end{pmatrix}
}

さらにこれを適当に置き換えて

{\displaystyle
K \mathbf{x} = m \ddot{\mathbf{x}}
}

う〜んシンプル。良い。


で、唐突ですが、

{V=\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}}

{\Lambda=\begin{pmatrix}-k & 0 \\ 0 & -3k\end{pmatrix}}

という2つの行列を用意するとですね

{\displaystyle
K = V^{-1} \Lambda V
}

と表せます。気になる人は計算してください。


いやどっから出てきたんだよそれー!!ふざけんなよー!!もー!!やんなっちゃうなぁー笑


と全員思ったでしょうが


大学1年の線形代数を勉強すると、どっから出てきたかわかります。ちゃんと「対角化」とか「固有値分解」っていうやり方があるんです。


{\displaystyle K \mathbf{x} = m \ddot{\mathbf{x}} }

に代入すると

{\displaystyle V^{-1} \Lambda V \mathbf{x} = m \ddot{\mathbf{x}} }


左からVを掛けると、mは定数なので

{\displaystyle  \Lambda V \mathbf{x} = m V \ddot{\mathbf{x}} }



ここで、{\displaystyle \Lambda \mathbf{x}}が左辺に、その二階微分が右辺に出てきました。


これをこうします。

{\displaystyle \Lambda \mathbf{x} = \begin{pmatrix}1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} }

{\displaystyle = \begin{pmatrix}x_1 + x_2 \\ x_1 - x_2 \end{pmatrix}}

{\displaystyle = \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = \mathbf{y}}

すると先の式はこう書けます。

{\displaystyle \Lambda \mathbf{y} = m \ddot{\mathbf{y}}}


成分でちゃんと表示してみましょうか。

{\displaystyle \begin{pmatrix}-k & 0 \\ 0 & -3k \end{pmatrix} \begin{pmatrix}y_1 \\ y_2\end{pmatrix} = m \begin{pmatrix} \ddot{y_1} \\ \ddot{y_1} \end{pmatrix}   }


最初の
{\displaystyle
\begin{pmatrix}-2k & k \\k & -2k\end{pmatrix}\begin{pmatrix}x_1 \\ x_2 \end{pmatrix} = m \begin{pmatrix} \ddot x_1 \\ \ddot x_2 \end{pmatrix}
}

と比べると、左端の行列が対角化されてます。


行列形式をやめて、成分別の連立方程式になおしてみましょうか。

{\displaystyle -ky_1 = m \ddot{y_1} }
{\displaystyle -3ky_2 = m \ddot{y_2} }


あれ? これ、連立してないですね。

これは普通にそれぞれ微分方程式として解けますよ。

2階微分して、元の関数のマイナス定数倍になるので、三角関数ですね。

ちゃんと解くなら本当は定数を2ついれないといけないのですが、今日は振幅と位相は適当に決めちゃって、こんな感じにしてみよう。

{ y_1 = 2\cos\left(\sqrt{\frac{k}{m}}t\right)}
{ y_2 = 2\cos\left(\sqrt{\frac{3k}{m}}t\right)}


おお〜微分がなくなった!

そしたら今度は

{ y_1 = x_1 + x_2 =  2\cos\left(\sqrt{\frac{k}{m}}t\right)}
{ y_2 = x_1 - x_2 =2\cos\left(\sqrt{\frac{3k}{m}}t\right)}


をxについての連立方程式として解けば、完成です。

x1もx2も、2つの波の重ね合わせになります。


{ x_1  =  \cos\left(\sqrt{\frac{k}{m}}t\right)}  + \cos\left(\sqrt{\frac{3k}{m}}t\right)
{ x_2  =  \cos\left(\sqrt{\frac{k}{m}}t\right)}  - \cos\left(\sqrt{\frac{3k}{m}}t\right)


できた!!

片方の動きをグラフにするとこんな感じになります。右が時間軸ね。

f:id:agajo:20161101134427p:plain

振動モード

線形代数的な手法で、それぞれの物体の動きを求めることが出来たけれども

途中に出てきた「y」ってなんなんでしょうね。


まずy1について考えてみよう。


{ y_1 = x_1 + x_2 =  2\cos\left(\sqrt{\frac{k}{m}}t\right)}


実はこれ、全体的な移動を表してるんですね。x1が右に行ってもx2が右に行っても、y1は大きくなるわけです。

両辺を2で割ってみると、重心の変位を表してることがよくわかります。

(もとのxが、それぞれの初期位置からの変位なので、重心についても位置ではなく初期位置からの変位を表してることに注意)

つまりこういうこと。

f:id:agajo:20161101133144g:plain



それに対して、

{ y_2 = x_1 - x_2 =2\cos\left(\sqrt{\frac{3k}{m}}t\right)}

これは、2つの物体の対称的な運動を表してます。x1が左に移動し、x2が右に移動する時に、y2は大きくなるわけです。

f:id:agajo:20161101134036g:plain


つまり!この2つの物体は、全体として見ると

「全体としての運動(重心の運動)」
「対称的な運動」

の2つの運動の重ね合わせで運動してるわけです!


なるほどね〜。

ちなみに周波数は、対称運動が全体運動のルート3倍なので、全体としては周期性のない運動をしてることになりますね。へ〜。


このそれぞれの運動を「モード」とか「振動モード」とか言います。

行列で表した運動方程式固有値分解・対角化すると、この「モード」が出てくるんですね。

この「モード」は結構理解しやすい運動を表していて、個々の物体はこの「モード」の重ね合わせで動きが決まるわけです。

以上!!