【完全ガイド】常微分方程式(ODE)とは?種類・解法・実用例までわかりやすく解説📘🧮
物理・工学・生物・経済など、自然界のあらゆる現象を**「変化の法則」として数式化できるのが常微分方程式(ODE:Ordinary Differential Equation)**です。
この記事では、常微分方程式の基礎から解法、実用例、プログラミングによる数値解法までを、初学者にもわかりやすく解説します🧠✨
常微分方程式とは?
**常微分方程式(ODE)**は、1つの独立変数に対する関数の変化を記述する式です。
例:
dydx=3x2\frac{dy}{dx} = 3x^2
これは「関数 y(x)y(x) の変化率は 3x23x^2 に比例する」という意味です。
ODEの基本構造
dydx=f(x,y)\frac{dy}{dx} = f(x, y)
-
xx:独立変数(時間など)
-
yy:従属変数(位置・温度・人口など)
-
f(x,y)f(x, y):変化の法則を与える関数
ODEの分類👀
分類方法 | 種類 | 例 |
---|---|---|
微分の次数 | 1階、2階、n階 | d2ydx2+y=0\frac{d^2y}{dx^2} + y = 0 |
方程式の線形性 | 線形 / 非線形 | y′+y=sin(x)y' + y = \sin(x)(線形) |
変数の数 | 常微分 / 偏微分 | 常微分:1変数、偏微分:複数変数 |
よく使われる初期値問題📍
多くの場合、「最初の状態」を与えて、それに従った関数の形を求めるという問題設定です。
例:
dydx=−2y,y(0)=5\frac{dy}{dx} = -2y,\quad y(0) = 5
このときの解は:
y(x)=5e−2xy(x) = 5e^{-2x}
解法いろいろ✏️
✅ 分離変数型
dydx=g(x)h(y)⇒1h(y)dy=g(x)dx\frac{dy}{dx} = g(x)h(y) \Rightarrow \frac{1}{h(y)}dy = g(x)dx
両辺を積分して解くタイプ。最も基本的な手法!
✅ 同次方程式・線形微分方程式
1階線形方程式:
dydx+P(x)y=Q(x)\frac{dy}{dx} + P(x)y = Q(x)
→ 積分因子を用いて解きます:
μ(x)=e∫P(x)dx\mu(x) = e^{\int P(x) dx}
✅ 定数係数の2階線形微分方程式
y′′+ay′+by=0y'' + ay' + by = 0
→ 特性方程式(判別式の平方根)で解の形が決まる:
-
実数解 → 指数関数
-
複素数解 → 三角関数
-
重解 → 指数 × x
常微分方程式の応用例📚
分野 | 使用例 |
---|---|
物理 | 質点の運動方程式(F=maF=ma) |
生物 | ウイルス感染モデル(SIRモデル) |
経済 | 複利計算、在庫モデル |
電気回路 | RLC回路の電流・電圧の変化 |
環境学 | 放射性物質の崩壊 |
PythonでODEを数値的に解く(scipy)
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# dy/dx = -2y, y(0) = 5
def model(t, y):
return -2 * y
sol = solve_ivp(model, [0, 5], [5], t_eval=[i*0.1 for i in range(50)])
plt.plot(sol.t, sol.y[0])
plt.xlabel("Time")
plt.ylabel("y(t)")
plt.title("Solution of dy/dx = -2y")
plt.grid()
plt.show()
🔹 solve_ivp()
は常微分方程式を数値的に解いてくれる関数です。
まとめ📝
-
常微分方程式は「変化の法則」を記述する最重要な数学モデル
-
解法は「分離」「積分因子」「特性方程式」など多様
-
現実世界の現象をモデル化・シミュレーションする基盤技術
-
Pythonや数値解析ツールを使えば複雑なODEも扱える!
応用記事として、
✅ SIRモデルで感染症をODEでシミュレーションする方法
✅ 振動モデル(バネ・ダンパー系)の2階ODE解説
✅ 機械学習での微分方程式の活用(Physics-informed NN)
などもご用意できます📘 ご希望があればお知らせください!