慣性モーメントとは、「物体(剛体)を回転させる際の、回転のされにくさ」の度合いを意味します。
並進運動における加速のされにくさを示す指標が「質量」でした。慣性モーメントは、物体の回転運動に対する「回転のされにくさ」を示す指標になっています。
本記事の内容
- トルクと慣性モーメントの定義
- 回転運動の運動方程式の導出
- 代表的な剛体の慣性モーメント
- 平行軸の定理
- Pythonでの回転運動シミュレーション
トルクとは
静止している物体を回転させるには、何かしらの力を与えてあげる必要があります。この回転を引き起こす力のモーメントをトルク(Torque)$\bm{T}$ と呼びます。
回転軸からの距離 $\bm{r}$ の位置に力 $\bm{F}$ を加えた場合、トルクは外積で定義されます。
$$ \bm{T} = \bm{r} \times \bm{F} $$
トルクの大きさは、
$$ |\bm{T}| = rF\sin\theta $$
ここで $\theta$ は $\bm{r}$ と $\bm{F}$ のなす角です。単位は $\text{N}\cdot\text{m}$ です。
慣性モーメントの定義
質点系の慣性モーメント
回転軸から距離 $r_i$ に位置する質量 $m_i$ の質点系の慣性モーメントは、
$$ I = \sum_i m_i r_i^2 $$
連続体の慣性モーメント
連続的な質量分布を持つ物体の場合、
$$ I = \int r^2 \, dm = \int_V r^2 \rho \, dV $$
ここで $r$ は回転軸からの距離、$\rho$ は密度です。
慣性モーメントテンソル
3次元の一般的な回転では、慣性モーメントはテンソル(行列)で表されます。
$$ \bm{I} = \begin{pmatrix} I_{xx} & -I_{xy} & -I_{xz} \\ -I_{yx} & I_{yy} & -I_{yz} \\ -I_{zx} & -I_{zy} & I_{zz} \end{pmatrix} $$
ここで対角成分は慣性モーメント、非対角成分は慣性乗積です。
$$ I_{xx} = \int (y^2 + z^2) \, dm, \quad I_{xy} = \int xy \, dm $$
回転運動の運動方程式
直線運動のニュートンの法則は、
$$ m\bm{a} = \bm{F} $$
これに対応する回転運動の運動方程式は、
$$ I\dot{\bm{\omega}} = \bm{T} $$
ここで $I$ は回転軸周りの慣性モーメント、$\dot{\bm{\omega}}$ は角加速度、$\bm{T}$ はトルクです。
角運動量
角運動量 $\bm{L}$ は慣性モーメントと角速度の積です。
$$ \bm{L} = I\bm{\omega} $$
ニュートンの第2法則の回転版は、
$$ \bm{T} = \frac{d\bm{L}}{dt} $$
3次元では、機体座標系でのオイラーの運動方程式となります。
$$ \bm{T} = \bm{I}\dot{\bm{\omega}} + \bm{\omega} \times (\bm{I}\bm{\omega}) $$
代表的な剛体の慣性モーメント
| 形状 | 回転軸 | 慣性モーメント |
|---|---|---|
| 質点(質量$m$, 距離$r$) | 中心 | $I = mr^2$ |
| 細い棒(長さ$L$) | 中心を通る垂直軸 | $I = \frac{1}{12}mL^2$ |
| 細い棒(長さ$L$) | 端を通る垂直軸 | $I = \frac{1}{3}mL^2$ |
| 円板(半径$R$) | 中心軸 | $I = \frac{1}{2}mR^2$ |
| 球(半径$R$) | 直径 | $I = \frac{2}{5}mR^2$ |
| 球殻(半径$R$) | 直径 | $I = \frac{2}{3}mR^2$ |
| 直方体($a \times b$) | 中心を通る垂直軸 | $I = \frac{1}{12}m(a^2+b^2)$ |
平行軸の定理
重心を通る軸周りの慣性モーメント $I_G$ が分かれば、重心から距離 $d$ だけ離れた平行な軸周りの慣性モーメント $I$ は、
$$ I = I_G + md^2 $$
これは平行軸の定理(Parallel Axis Theorem)と呼ばれ、慣性モーメントの計算で非常に便利です。
Pythonでの回転運動シミュレーション
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# === 代表的な慣性モーメントの比較 ===
m = 1.0 # 質量 [kg]
R = 0.1 # 半径/半長 [m]
shapes = {
'Point mass': m * R**2,
'Thin rod (center)': (1/12) * m * (2*R)**2,
'Thin rod (end)': (1/3) * m * (2*R)**2,
'Disk': (1/2) * m * R**2,
'Solid sphere': (2/5) * m * R**2,
'Spherical shell': (2/3) * m * R**2,
}
print("=== 慣性モーメントの比較 (m=1kg, R=0.1m) ===")
for name, I in shapes.items():
print(f" {name:25s}: I = {I:.6f} kg*m^2")
# === 回転運動のシミュレーション ===
def rotation_dynamics(t, state, I, torque_func):
"""回転運動の運動方程式"""
theta, omega = state
T = torque_func(t, theta, omega)
alpha = T / I # 角加速度
return [omega, alpha]
# パラメータ
I_disk = 0.5 * 1.0 * 0.1**2 # 円板の慣性モーメント
# ケース1: 一定トルク
def constant_torque(t, theta, omega):
return 0.01 if t < 5 else 0 # 5秒間トルク印加
# ケース2: 減衰トルク(摩擦)
def damped_torque(t, theta, omega):
T_applied = 0.01 if t < 5 else 0
T_friction = -0.001 * omega # 粘性摩擦
return T_applied + T_friction
# ケース3: 周期トルク
def periodic_torque(t, theta, omega):
return 0.005 * np.sin(2 * np.pi * 0.5 * t)
cases = [
("Constant Torque", constant_torque),
("With Friction", damped_torque),
("Periodic Torque", periodic_torque),
]
fig, axes = plt.subplots(len(cases), 2, figsize=(14, 12))
t_span = (0, 20)
t_eval = np.linspace(0, 20, 2000)
y0 = [0, 0] # 初期角度=0, 初期角速度=0
for idx, (name, torque_func) in enumerate(cases):
sol = solve_ivp(rotation_dynamics, t_span, y0, t_eval=t_eval,
args=(I_disk, torque_func), method='RK45')
# 角度
axes[idx, 0].plot(sol.t, np.degrees(sol.y[0]), 'b-', linewidth=1.5)
axes[idx, 0].set_xlabel('Time [s]')
axes[idx, 0].set_ylabel('Angle [deg]')
axes[idx, 0].set_title(f'{name}: Angle')
axes[idx, 0].grid(True)
# 角速度
axes[idx, 1].plot(sol.t, np.degrees(sol.y[1]), 'r-', linewidth=1.5)
axes[idx, 1].set_xlabel('Time [s]')
axes[idx, 1].set_ylabel('Angular Velocity [deg/s]')
axes[idx, 1].set_title(f'{name}: Angular Velocity')
axes[idx, 1].grid(True)
plt.tight_layout()
plt.show()
まとめ
本記事では、慣性モーメントと回転運動の運動方程式について解説しました。
- 慣性モーメントは回転のされにくさを表し、$I = \int r^2 dm$ で定義される
- 回転運動の運動方程式は $I\dot{\omega} = T$ で、ニュートンの法則の回転版である
- 3次元では慣性モーメントテンソルとオイラーの運動方程式で記述される
- 平行軸の定理 $I = I_G + md^2$ で任意の軸周りの慣性モーメントを計算できる
- 代表的な剛体の慣性モーメントは解析的に求められる
次のステップとして、以下の記事も参考にしてください。