今回のターゲット:減衰振動
前回は調和振動子(単振動)の微分方程式を計算してみました。
今回は減衰振動の微分方程式を計算してみます。
減衰振動
減衰振動は前回の調和振動子(単振動)の運動に速度に比例する抵抗力が加わる形になります。微分方程式は以下のようになります。
$$
\begin{eqnarray}
\begin{array}{l}
m\cfrac{d^{2}x}{dt^{2}} = -kx-c\cfrac{dx}{dt}\\
\end{array}
\end{eqnarray}
$$
調和振動子のときと同様にして微分方程式を1階の微分方程式に書き直します。
$$
\begin{eqnarray}
\begin{array}{l}
m\cfrac{dv}{dt} = -kx-cv
\end{array}
\end{eqnarray}
$$
Pythonで計算する
コードは下のようにしました。前回とほぼ変わりません。
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML
#諸々の条件設定
m = 1.0 #物体の重さを m = 1.0 kgとしておきます
k = 100 #ばね定数は k = 100 N/mとしておきます
c = 1 #減衰係数は、c = 1 N・s/m
ini = [0.1, 0.0]#バネを 0.1 m伸ばした状態をt=0として、初速v0 = 0.0 m/sとしておきます
t = np.arange(0, 10, 0.001) #時間は2.0秒程度に設定しておきます
#計算に必要な関数(微分方程式)の定義
#vとdvdtの計算(戻り値は速度vと加速度dvdt)
def func(cond, t, m, k, c):
x, v = cond
dvdt = (-k/m) * x - (c/m) * v
return [v, dvdt]
#x座標とy座標の計算 1階微分方程式を解く
#注意:odeintは微分方程式(おそらく1階微分方程式のみ?)を解くライブラリ
#引数は(解きたい微分方程式, 初期値, 変数, args = (パラメータ1, パラメータ2))
#なお、パラメータはタプルで渡して、1つしかない場合は、args = (パラメータ1, )とする
condition = odeint(func, ini, t, args = (m, k, c))
#以下は可視化のためにグラフを書くコード
fig, ax = plt.subplots()
#今回はx座標の時間変化を見たいので、x[:, 0]とする
#vを見たい場合はx[:, 0]とする
ax.plot(t, condition[:,0], color='crimson', label='x')
ax.set_xlabel('t [sec]')
ax.set_ylabel('x [m]')
ax.tick_params(direction='in', axis='x')
ax.tick_params(direction='in', axis='y')
ax.set_xlim(0, 10)
#ax.set_ylim(-0.001, 0.001)
plt.show()
実行結果
実行結果は下のようになります。前回は振幅が変わらずに振動していましたが、今回は時間が経つにつえて振幅が小さくなっています。ちゃんと微分方程式を解こうとすると、それなりに面倒臭い減衰振動ですが、数値計算なら簡単にできてしまいます。
最後に
今回は前回の内容から少しレベルアップして、減衰振動を扱ってみました。手計算だとそれなりに大変ですが、Pythonであれば特に難しいことを考えなくても計算できてしまいます。
他の記事もぜひご覧ください!
【AZ900合格】15時間程度で1発合格した僕の勉強方法、感じた難易度は?(Azure Fundamentals)
Azureの基礎資格AZ-900を取得するための効果的な勉強法を紹介します。IT未経験でも2週間で合格できる方法や、おすすめの教材や模擬試験などを詳しく解説します。Azureの世界に飛び込みましょう!
【2024年版】作業効率UP!PCデスク周りおすすめアイテム紹介!
デスク周りを快適にするための最新ガジェットを厳選して紹介。作業効率をアップさせる便利なアイテムが満載で、あなたの作業環境を一新します。あなたのデスクにぴったりのアイテムを見つけましょう!
M5Stackで音を鳴らしてみた【超初心者がIoT開発に挑んでみる#9】
この記事では、M5Stackで音を鳴らす方法を解説しています。この記事を読めば、M5Stackで音を鳴らす方法がすぐにわかります。
コメント