高校物理と微分方程式



## 【4系の微分方程式比較】

| 系               | 微分方程式                                              | 解の形式                                                                          | 特徴            | 微分の階数 / 構造    |
| --------------- | -------------------------------------------------- | ----------------------------------------------------------------------------- | ------------- | ------------- |
| **自由落下運動**      | $\displaystyle \frac{d^2x}{dt^2} = g$              | $\displaystyle x(t) = x_0 + v_0 t + \frac{1}{2} g t^2$                        | 2階微分、加速度一定    | 2階線形・定数係数・非同次 |
| **単振動（ばね）**     | $\displaystyle \frac{d^2x}{dt^2} + \omega^2 x = 0$ | $\displaystyle x(t) = x_0 \cos(\omega t) + \frac{v_0}{\omega} \sin(\omega t)$ | 周期的運動、単振動     | 2階線形・定数係数・同次  |
| **一次遅れ系**       | $\displaystyle \tau \frac{dy}{dt} + y = Ku$        | $\displaystyle y(t) = Ku(1 - e^{-t/\tau}) + y_0 e^{-t/\tau}$                  | 指数関数的遷移、制御理論  | 1階線形・定数係数・非同次 |
| **原子崩壊（放射性崩壊）** | $\displaystyle \frac{dN}{dt} = -\lambda N$         | $\displaystyle N(t) = N_0 e^{-\lambda t}$                                     | 指数的減衰、自然現象モデル | 1階線形・定数係数・同次  |

---


### 【運動方程式（加速度一定）】

$$
\frac{d^2x}{dt^2} = g
$$

---

### 【第1段階】一次積分 → 速度の式を導出

$$
\frac{dx}{dt} = \int \frac{d^2x}{dt^2} dt = \int g \, dt = g t + C_1
$$

$$
\Rightarrow v(t) = \frac{dx}{dt} = gt + C_1
$$

ここで、初速度 $v(0) = v_0$ より、

$$
v(0) = g \cdot 0 + C_1 = v_0 \Rightarrow C_1 = v_0
$$

$$
\therefore v(t) = g t + v_0
$$

---

### 【第2段階】もう一度積分 → 位置の式を導出

$$
x(t) = \int v(t) \, dt = \int (g t + v_0) \, dt = \frac{1}{2} g t^2 + v_0 t + C_2
$$

初期位置 $x(0) = x_0$ より、

$$
x(0) = \frac{1}{2} g \cdot 0^2 + v_0 \cdot 0 + C_2 = x_0 \Rightarrow C_2 = x_0
$$

$$
\therefore x(t) = x_0 + v_0 t + \frac{1}{2} g t^2
$$

---




### 【運動方程式（単振動）】

$$
\frac{d^2x}{dt^2} + \omega^2 x = 0
$$

これは**2階線形・定数係数・同次**の微分方程式です。

---

### 【一般解】

この微分方程式の一般解は次の形で表されます：

$$
x(t) = A \cos(\omega t) + B \sin(\omega t)
$$

---

### 【初期条件から定数を決定】

* 初期位置：$x(0) = x_0$
* 初速度：$v(0) = \frac{dx}{dt}\bigg|_{t=0} = 0$

#### ① $x(0) = x_0$ より：

$$
x(0) = A \cos(0) + B \sin(0) = A \Rightarrow A = x_0
$$

#### ② $v(0) = 0$ より：

$$
v(t) = \frac{dx}{dt} = -A \omega \sin(\omega t) + B \omega \cos(\omega t)
$$

$$
v(0) = -A \omega \cdot 0 + B \omega \cdot 1 = B \omega \Rightarrow B = 0
$$

---

### 【結論】

$$
x(t) = x_0 \cos(\omega t)
$$

---

### 【確認：2回微分で元の式に戻る】

求めた解：

$$
x(t) = x_0 \cos(\omega t)
$$

---

#### 1回微分：

$$
\frac{dx}{dt} = -x_0 \omega \sin(\omega t)
$$

---

#### 2回微分：

$$
\frac{d^2x}{dt^2} = -x_0 \omega^2 \cos(\omega t)
$$

---

#### 左辺（加速度）と右辺（$-\omega^2 x$）の一致確認：

$$
\frac{d^2x}{dt^2} = -\omega^2 x(t)
$$

$$
\Rightarrow \frac{d^2x}{dt^2} + \omega^2 x = 0
$$


---


| 項目           | 内容                                                                                |
| ------------ | --------------------------------------------------------------------------------- |
| 微分方程式        | $\displaystyle \frac{d^2x}{dt^2} + \omega^2 x = 0$                                |
| 解（$v_0 = 0$） | $\displaystyle x(t) = x_0 \cos(\omega t)$                                         |
| 1回微分         | $\displaystyle \frac{dx}{dt} = -x_0 \omega \sin(\omega t)$                        |
| 2回微分         | $\displaystyle \frac{d^2x}{dt^2} = -x_0 \omega^2 \cos(\omega t) = -\omega^2 x(t)$ |
| 結論           | 2回微分すると元の式に戻る → 微分方程式を満たす                                                         |

一次遅れ系の微分方程式

$$
\tau \frac{dy}{dt} + y = Ku
$$

に対して、解

$$
y(t) = Ku(1 - e^{-t/\tau}) + y_0 e^{-t/\tau}
$$

---

### 与えられた解の微分

$$
y(t) = Ku(1 - e^{-t/\tau}) + y_0 e^{-t/\tau}
$$

$$
\frac{dy}{dt} = Ku \cdot \frac{d}{dt}(-e^{-t/\tau}) + y_0 \cdot \frac{d}{dt}(e^{-t/\tau})
$$

$$
= Ku \cdot \left( \frac{1}{\tau} e^{-t/\tau} \right) + y_0 \cdot \left( -\frac{1}{\tau} e^{-t/\tau} \right)
$$

$$
\Rightarrow \frac{dy}{dt} = \frac{1}{\tau}(Ku - y_0) e^{-t/\tau}
$$

---

**原子崩壊（放射性崩壊）の解関数**

$$
N(t) = N_0 e^{-\lambda t}
$$

を**微分して、元の微分方程式**

$$
\frac{dN}{dt} = -\lambda N
$$

を**満たすことを確認**します。

---

### 【Step 1】解関数の微分

与えられた関数：

$$
N(t) = N_0 e^{-\lambda t}
$$

両辺を微分：

$$
\frac{dN}{dt} = N_0 \cdot \frac{d}{dt} \left( e^{-\lambda t} \right)
= N_0 \cdot ( -\lambda ) e^{-\lambda t}
= -\lambda N_0 e^{-\lambda t}
$$

---

### 【Step 2】右辺と照合

$$
\frac{dN}{dt} = -\lambda N(t)
$$

∴ 微分方程式

$$
\frac{dN}{dt} = -\lambda N
$$

は、解 $N(t) = N_0 e^{-\lambda t}$ を代入して**厳密に成り立つ**。

---

Python
```Python
# Program Name: ode_plot_all.py
# Creation Date: 20250606
# Overview: Plot 4 representative ODE system solutions and their derivatives
# Usage: Python script to visualize physical system dynamics (position, velocity, acceleration)

import numpy as np
import matplotlib.pyplot as plt

# -------------------- Parameters / パラメータ定義 --------------------
t_vals = np.linspace(0, 10, 500)
g_val = 9.8                # 重力加速度 [m/s^2]
x0_val = 0                 # 初期位置 [m]
v0_val = 5                 # 初速度 [m/s]
tau_val = 2                # 時定数 τ [s]
K_val = 1                  # ゲイン K
u_val = 1                  # 入力値 u（定数入力）
y0_val = 0                 # 初期出力
omega_val = 2 * np.pi / 5  # 角振動数 ω = 2π/T, T=5s
N0_val = 100               # 初期放射性原子数
lam_val = 0.3              # 崩壊定数 λ

# -------------------- Function Definitions / 各系の関数 --------------------

# 1. 自由落下運動 Free Fall
x_freefall_vals = x0_val + v0_val * t_vals + 0.5 * g_val * t_vals**2
v_freefall_vals = v0_val + g_val * t_vals
a_freefall_vals = np.full_like(t_vals, g_val)

# 2. 単振動（初速度0）Simple Harmonic Motion
x_shm_vals = np.cos(omega_val * t_vals)
v_shm_vals = -omega_val * np.sin(omega_val * t_vals)
a_shm_vals = -omega_val**2 * np.cos(omega_val * t_vals)

# 3. 一次遅れ系 First-order Lag
y_lag_vals = K_val * u_val * (1 - np.exp(-t_vals / tau_val)) + y0_val * np.exp(-t_vals / tau_val)
v_lag_vals = (K_val * u_val - y0_val) * np.exp(-t_vals / tau_val) / tau_val
a_lag_vals = -(K_val * u_val - y0_val) * np.exp(-t_vals / tau_val) / tau_val**2

# 4. 原子崩壊 Radioactive Decay
N_decay_vals = N0_val * np.exp(-lam_val * t_vals)
dN_vals = -lam_val * N0_val * np.exp(-lam_val * t_vals)
d2N_vals = lam_val**2 * N0_val * np.exp(-lam_val * t_vals)

# -------------------- Plotting / グラフ描画 --------------------
fig, axes = plt.subplots(4, 3, figsize=(16, 16))
systems = [
    ("Free Fall", x_freefall_vals, v_freefall_vals, a_freefall_vals, "x(t)", "v(t)", "a(t)"),
    ("Simple Harmonic Motion", x_shm_vals, v_shm_vals, a_shm_vals, "x(t)", "v(t)", "a(t)"),
    ("First-order Lag", y_lag_vals, v_lag_vals, a_lag_vals, "y(t)", "dy/dt", "d²y/dt²"),
    ("Radioactive Decay", N_decay_vals, dN_vals, d2N_vals, "N(t)", "dN/dt", "d²N/dt²")
]

for i, (title, f, f1, f2, y0label, y1label, y2label) in enumerate(systems):
    axes[i, 0].plot(t_vals, f)
    axes[i, 0].set_title(f"{title} - Function")
    axes[i, 0].set_xlabel("Time (t)")
    axes[i, 0].set_ylabel(y0label)

    axes[i, 1].plot(t_vals, f1)
    axes[i, 1].set_title(f"{title} - 1st Derivative")
    axes[i, 1].set_xlabel("Time (t)")
    axes[i, 1].set_ylabel(y1label)

    axes[i, 2].plot(t_vals, f2)
    axes[i, 2].set_title(f"{title} - 2nd Derivative")
    axes[i, 2].set_xlabel("Time (t)")
    axes[i, 2].set_ylabel(y2label)

plt.tight_layout()
plt.show()

```