物体の自由振動
Scipyを使用して、物体の自由振動をシミュレーションし、その結果をグラフ化してみましょう。
自由振動は、質点がばねに固定されており、外力がない状態での振動を表します。
以下は、Scipyを使用して自由振動をシミュレートし、その結果をグラフで表示するPythonコードの例です。
1 | import numpy as np |
このコードは、ばねに固定された質点の自由振動をシミュレートし、時間に対する位置の変化をグラフに表示します。
振動の減衰を示すグラフが生成されます。
ソースコード解説
以下は、コードの詳細な説明です。
1. 必要なライブラリをインポートします:
numpy
:数値計算を行うためのライブラリ。matplotlib.pyplot
:グラフ描画のためのライブラリ。scipy.integrate.odeint
:常微分方程式を数値的に解くためのSciPyの関数。
2. 自由振動の微分方程式を定義します:
spring_mass_damper
関数は、引数として現在の状態y
、時間t
、ばね定数k
、質量m
、減衰係数c
を受け取ります。
この関数は、質点の位置x
と速度x_dot
の二階微分方程式を表しており、質点の加速度x_dot_dot
を計算して返します。これにより、システムの運動を記述します。
3. システムのパラメータを設定します:
m
:質点の質量(単位: kg)。k
:ばねのばね定数(単位: N/m)。c
:減衰装置の減衰係数(単位: N-s/m)。
4. 初期条件を設定します:
initial_state
は、初期位置と初期速度を表します。
初期位置は1.0メートル(m)、初期速度は0.0メートル/秒(m/s)に設定されています。
5. 時間ステップを生成します:
t
は0から10秒までの時間スパンを表し、その間を等間隔で1000のステップに区切ります。
これにより、シミュレーションの時間範囲と精度が設定されます。
6. 微分方程式を数値的に解きます:
odeint
関数を使用して微分方程式を解き、質点の位置と速度の時間変化を計算します。
結果はsolution
に格納されます。
7. 位置の変化をプロットします:
plt.plot
を使用して、時間t
に対する位置の変化をグラフにプロットします。- X軸は時間(秒)、Y軸は質点の位置(メートル)を表します。
- グラフのタイトルや軸ラベルを設定し、グリッド線も表示されます。
このコードを実行すると、ばね-質点-減衰装置系の自由振動のシミュレーションが行われ、振動が減衰しながら時間の経過に伴って表示されるグラフが生成されます。
グラフ解析
以下にグラフの詳細な説明を行います。
- 横軸(X軸)は時間(Time)を表しており、0秒から10秒までの時間スパンが表示されています。
- 縦軸(Y軸)は変位(Displacement)を表しており、質点の位置の変化を示します。単位はメートル(m)です。
グラフの特徴:
1. 初期位置:
グラフの最初の点(t=0秒)で、質点の位置は1.0メートルです。
これは、初期条件として設定した値です。
2. 振動:
グラフは振動しており、時間の経過に伴って質点の位置が変化します。
振動の周期性が見られます。
3. 減衰:
振動は減衰しており、振幅が時間とともに減少しています。
これは、減衰係数(c)によるもので、振動が徐々に収束していることを示しています。
4. 振動の周波数:
振動の周期は初期条件やシステムのパラメータに依存しますが、このグラフでは周期的な振動が観察されます。
このグラフは、物理学の基本的な概念である自由振動を示しており、時間と位置の関係を視覚化しています。
時間が経過するにつれて振動が減衰し、最終的に静止状態に収束することが分かります。
これは、ばねと質点のシステムにおける典型的な振動の振る舞いを示しています。