ニュートンの運動の3法則を数式でわかりやすく解説

ニュートンの運動の3法則は、古典力学の根幹をなす原理です。物体の運動がなぜ起こるのか、力と運動の関係はどうなっているのかを定量的に記述するこれらの法則は、17世紀にアイザック・ニュートンが『プリンキピア』で体系化しました。

航空宇宙工学、機械工学、土木工学など、あらゆる工学分野の出発点となる法則です。本記事では、3つの法則それぞれを数式で厳密に定式化し、Pythonでの数値シミュレーションを通じて理解を深めます。

本記事の内容

  • ニュートンの3法則の定義と数学的表現
  • 運動方程式の導出と座標系への展開
  • Pythonによる運動の数値シミュレーション

ニュートンの第1法則(慣性の法則)

法則の内容

外力が作用しない限り、静止している物体は静止し続け、運動している物体は等速直線運動を続けます。

数学的に表現すると、合力が $\bm{F} = \bm{0}$ のとき、

$$ \frac{d\bm{v}}{dt} = \bm{0} $$

すなわち速度 $\bm{v}$ は時間によらず一定です。

慣性系の定義

第1法則は、実は 慣性系 の存在を主張しています。慣性系とは、外力を受けない物体が等速直線運動するような座標系のことです。ニュートン力学のすべての法則は、この慣性系において成り立ちます。

ニュートンの第2法則(運動方程式)

法則の内容

物体に作用する合力 $\bm{F}$ は、その物体の質量 $m$ と加速度 $\bm{a}$ の積に等しい。

$$ \bm{F} = m\bm{a} = m\frac{d^2\bm{r}}{dt^2} $$

ここで $\bm{r}$ は物体の位置ベクトルです。

より一般的な形(運動量の時間変化)

運動量 $\bm{p} = m\bm{v}$ を用いると、第2法則はより一般的に次のように書けます。

$$ \bm{F} = \frac{d\bm{p}}{dt} $$

質量が一定の場合は、

$$ \bm{F} = \frac{d(m\bm{v})}{dt} = m\frac{d\bm{v}}{dt} = m\bm{a} $$

と従来の形に帰着します。

直交座標系への展開

3次元直交座標系 $(x, y, z)$ で成分表示すると、

$$ \begin{align} F_x &= m\ddot{x} \\ F_y &= m\ddot{y} \\ F_z &= m\ddot{z} \end{align} $$

ここで $\ddot{x} = \frac{d^2x}{dt^2}$ はニュートンのドット記法です。

ニュートンの第3法則(作用反作用の法則)

法則の内容

物体Aが物体Bに力 $\bm{F}_{AB}$ を及ぼすとき、物体Bは物体Aに等しい大きさで逆向きの力 $\bm{F}_{BA}$ を及ぼします。

$$ \bm{F}_{AB} = -\bm{F}_{BA} $$

運動量保存との関係

2つの物体からなる系を考えます。第3法則より内力は打ち消し合うので、

$$ \frac{d}{dt}(\bm{p}_A + \bm{p}_B) = \bm{F}_{AB} + \bm{F}_{BA} = \bm{0} $$

つまり、外力がなければ全運動量 $\bm{p}_A + \bm{p}_B$ は保存されます。これは運動量保存則に直結します。

具体例:放物運動

重力場中の放物運動を考えます。質量 $m$ の物体に作用する力は重力 $\bm{F} = -mg\bm{e}_y$ のみとします。

運動方程式は、

$$ \begin{align} m\ddot{x} &= 0 \\ m\ddot{y} &= -mg \end{align} $$

初期条件を $x(0) = 0$, $y(0) = 0$, $\dot{x}(0) = v_0\cos\theta$, $\dot{y}(0) = v_0\sin\theta$ とすると、

$$ \begin{align} \ddot{x} &= 0 \quad \Rightarrow \quad \dot{x} = v_0\cos\theta \quad \Rightarrow \quad x(t) = v_0 t\cos\theta \\ \ddot{y} &= -g \quad \Rightarrow \quad \dot{y} = v_0\sin\theta – gt \quad \Rightarrow \quad y(t) = v_0 t\sin\theta – \frac{1}{2}gt^2 \end{align} $$

Pythonでの実装

放物運動と、空気抵抗がある場合の運動を数値シミュレーションで比較します。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp

# パラメータ
g = 9.81       # 重力加速度 [m/s^2]
m = 1.0        # 質量 [kg]
v0 = 50.0      # 初速 [m/s]
theta = np.radians(45)  # 発射角 [rad]
b = 0.1        # 空気抵抗係数

# 空気抵抗なしの解析解
t_flight = 2 * v0 * np.sin(theta) / g
t_ana = np.linspace(0, t_flight, 300)
x_ana = v0 * t_ana * np.cos(theta)
y_ana = v0 * t_ana * np.sin(theta) - 0.5 * g * t_ana**2

# 空気抵抗ありの運動方程式 (dv/dt = F/m)
def equations(t, state):
    x, y, vx, vy = state
    v = np.sqrt(vx**2 + vy**2)
    ax = -b / m * v * vx
    ay = -g - b / m * v * vy
    return [vx, vy, ax, ay]

# 地面到達で停止するイベント
def hit_ground(t, state):
    return state[1]
hit_ground.terminal = True
hit_ground.direction = -1

# 数値積分
state0 = [0, 0, v0 * np.cos(theta), v0 * np.sin(theta)]
sol = solve_ivp(equations, [0, 20], state0, events=hit_ground, max_step=0.01)

# 可視化
plt.figure(figsize=(10, 5))
plt.plot(x_ana, y_ana, 'b-', linewidth=2, label='空気抵抗なし(解析解)')
plt.plot(sol.y[0], sol.y[1], 'r--', linewidth=2, label='空気抵抗あり(数値解)')
plt.xlabel('x [m]')
plt.ylabel('y [m]')
plt.title('Projectile Motion: Newton\'s 2nd Law')
plt.legend()
plt.grid(True)
plt.ylim(bottom=0)
plt.tight_layout()
plt.show()

空気抵抗なしの場合は放物線の解析解と完全に一致し、空気抵抗を加えると飛距離が短くなり軌道が非対称になることが確認できます。

まとめ

本記事では、ニュートンの運動の3法則について解説しました。

  • 第1法則(慣性の法則): 外力がなければ物体は等速直線運動を続ける。慣性系の定義を与える
  • 第2法則(運動方程式): $\bm{F} = m\bm{a}$。力と運動の定量的な関係
  • 第3法則(作用反作用の法則): $\bm{F}_{AB} = -\bm{F}_{BA}$。運動量保存則の基礎

これらの法則は、力学のあらゆる問題の出発点です。次のステップとして、以下の記事も参考にしてください。