慣性モーメントと回転運動の運動方程式をわかりやすく解説

慣性モーメントとは、「物体(剛体)を回転させる際の、回転のされにくさ」の度合いを意味します。

並進運動における加速のされにくさを示す指標が「質量」でした。慣性モーメントは、物体の回転運動に対する「回転のされにくさ」を示す指標になっています。

本記事の内容

  • トルクと慣性モーメントの定義
  • 回転運動の運動方程式の導出
  • 代表的な剛体の慣性モーメント
  • 平行軸の定理
  • 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$ で任意の軸周りの慣性モーメントを計算できる
  • 代表的な剛体の慣性モーメントは解析的に求められる

次のステップとして、以下の記事も参考にしてください。