微分を1回行うと1階微分(導関数)が得られますが、その導関数をさらに微分すると2階微分が得られます。この操作を繰り返すことで得られるのが 高階微分 です。高階微分は、テイラー展開、微分方程式の解法、関数の凹凸の判定など、解析学の多くの場面で登場します。
特に重要なのが ライプニッツの公式 です。これは2つの関数の積の $n$ 階微分を求める公式で、二項定理の微分版とも言えます。本記事では、高階微分の基本概念からライプニッツの公式の導出と応用まで、丁寧に解説します。
本記事の内容
- 高階微分の定義と記法
- $n$ 階微分の基本的な計算
- ライプニッツの公式の導出
- テイラー展開との関連
- Pythonでの実装と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
高階微分とは
定義
関数 $f(x)$ の $n$ 階微分($n$ 階導関数)を次のように定義します。
$$ \begin{equation} f^{(n)}(x) = \frac{d^n f}{dx^n} = \underbrace{\frac{d}{dx} \cdots \frac{d}{dx}}_{n \text{ 回}} f(x) \end{equation} $$
つまり、$f^{(0)}(x) = f(x)$(微分0回=元の関数)として、帰納的に:
$$ f^{(n)}(x) = \frac{d}{dx} f^{(n-1)}(x) $$
記法
高階微分にはいくつかの記法があります:
| 記法 | 意味 | 主な使用場面 |
|---|---|---|
| $f^{(n)}(x)$ | ラグランジュ記法 | 一般的な数学 |
| $\frac{d^n f}{dx^n}$ | ライプニッツ記法 | 物理・工学 |
| $D^n f$ | 演算子記法 | 微分方程式 |
| $f”$, $f”’$ | プライム記法 | 2〜3階まで |
基本関数の高階微分
べき関数 $x^m$ の $n$ 階微分
$$ \begin{align} \frac{d}{dx} x^m &= mx^{m-1} \\ \frac{d^2}{dx^2} x^m &= m(m-1)x^{m-2} \\ \frac{d^n}{dx^n} x^m &= m(m-1)(m-2)\cdots(m-n+1) \cdot x^{m-n} \\ &= \frac{m!}{(m-n)!} x^{m-n} \quad (m \geq n, \text{ $m$ が自然数のとき}) \end{align} $$
特に $m = n$ のとき $\frac{d^n}{dx^n} x^n = n!$、$m < n$ のとき $\frac{d^n}{dx^n} x^m = 0$ です。
指数関数 $e^{ax}$
$$ \frac{d^n}{dx^n} e^{ax} = a^n e^{ax} $$
$a = 1$ のとき $\frac{d^n}{dx^n} e^x = e^x$、つまり $e^x$ は何回微分しても自分自身です。
三角関数
$$ \begin{align} \frac{d^n}{dx^n} \sin x &= \sin\left(x + \frac{n\pi}{2}\right) \\ \frac{d^n}{dx^n} \cos x &= \cos\left(x + \frac{n\pi}{2}\right) \end{align} $$
これは $\sin$ の微分が「位相を $\pi/2$ 進める」操作であることから理解できます。$\sin \to \cos \to -\sin \to -\cos \to \sin \to \cdots$ と4回で一周します。
対数関数
$$ \frac{d^n}{dx^n} \ln x = \frac{(-1)^{n-1} (n-1)!}{x^n} \quad (n \geq 1) $$
導出: $(\ln x)’ = x^{-1}$、$(x^{-1})’ = -x^{-2}$、$(-x^{-2})’ = 2x^{-3}$ と順に計算し、帰納法で確認できます。
ライプニッツの公式
積の微分の一般化
1階微分における積の微分公式(積の法則)は:
$$ (fg)’ = f’g + fg’ $$
2階微分では:
$$ (fg)” = f”g + 2f’g’ + fg” $$
3階微分では:
$$ (fg)”’ = f”’g + 3f”g’ + 3f’g” + fg”’ $$
二項係数が現れるパターンが見えてきます。
ライプニッツの公式(定理)
$$ \begin{equation} (fg)^{(n)} = \sum_{k=0}^{n} \binom{n}{k} f^{(k)} g^{(n-k)} \end{equation} $$
ここで $\binom{n}{k} = \frac{n!}{k!(n-k)!}$ は二項係数です。
導出(数学的帰納法)
$n = 1$ のとき: $(fg)’ = f’g + fg’ = \binom{1}{0}f^{(0)}g^{(1)} + \binom{1}{1}f^{(1)}g^{(0)}$ ✓
$n = m$ で成立すると仮定: $(fg)^{(m)} = \sum_{k=0}^{m} \binom{m}{k} f^{(k)} g^{(m-k)}$
$n = m + 1$ を示す: 両辺を微分する。
$$ \begin{align} (fg)^{(m+1)} &= \frac{d}{dx} \sum_{k=0}^{m} \binom{m}{k} f^{(k)} g^{(m-k)} \\ &= \sum_{k=0}^{m} \binom{m}{k} \left[ f^{(k+1)} g^{(m-k)} + f^{(k)} g^{(m-k+1)} \right] \\ &= \sum_{k=0}^{m} \binom{m}{k} f^{(k+1)} g^{(m-k)} + \sum_{k=0}^{m} \binom{m}{k} f^{(k)} g^{(m+1-k)} \end{align} $$
第1項で $j = k + 1$ と置換すると $\sum_{j=1}^{m+1} \binom{m}{j-1} f^{(j)} g^{(m+1-j)}$。
第2項はそのまま $\sum_{k=0}^{m} \binom{m}{k} f^{(k)} g^{(m+1-k)}$。
$k = 0$ の項は第2項から $\binom{m}{0} f^{(0)} g^{(m+1)} = f g^{(m+1)}$。
$j = m + 1$ の項は第1項から $\binom{m}{m} f^{(m+1)} g^{(0)} = f^{(m+1)} g$。
$1 \leq k \leq m$ では、パスカルの恒等式 $\binom{m}{k-1} + \binom{m}{k} = \binom{m+1}{k}$ を使って:
$$ (fg)^{(m+1)} = \sum_{k=0}^{m+1} \binom{m+1}{k} f^{(k)} g^{(m+1-k)} $$
これは $n = m + 1$ の場合のライプニッツの公式そのものです。$\square$
具体例
例1: $f(x) = x^2 e^x$ の $n$ 階微分
$f(x) = x^2$, $g(x) = e^x$ として、ライプニッツの公式を適用します。
$f^{(0)} = x^2$, $f^{(1)} = 2x$, $f^{(2)} = 2$, $f^{(k)} = 0$ ($k \geq 3$)
$g^{(k)} = e^x$(すべての $k$ で)
$$ \begin{align} (x^2 e^x)^{(n)} &= \sum_{k=0}^{n} \binom{n}{k} f^{(k)} g^{(n-k)} \\ &= \binom{n}{0} x^2 e^x + \binom{n}{1} \cdot 2x \cdot e^x + \binom{n}{2} \cdot 2 \cdot e^x \\ &= e^x \left[ x^2 + 2nx + n(n-1) \right] \end{align} $$
($k \geq 3$ の項は $f^{(k)} = 0$ なので消える)
例2: $f(x) = x \sin x$ の4階微分
$f(x) = x$, $g(x) = \sin x$ とする。$f^{(0)} = x$, $f^{(1)} = 1$, $f^{(k)} = 0$ ($k \geq 2$)。
$$ \begin{align} (x \sin x)^{(4)} &= \binom{4}{0} x \cdot \sin^{(4)} x + \binom{4}{1} \cdot 1 \cdot \sin^{(3)} x \\ &= x \sin x + 4(-\cos x) \\ &= x \sin x – 4 \cos x \end{align} $$
($\sin^{(4)} x = \sin x$, $\sin^{(3)} x = -\cos x$)
例3: テイラー展開との関連
$f(x)$ のマクローリン展開は:
$$ f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(0)}{n!} x^n $$
係数 $\frac{f^{(n)}(0)}{n!}$ を求めるために、高階微分を $x = 0$ で評価する必要があります。たとえば $e^x \sin x$ のマクローリン係数は、ライプニッツの公式で $(e^x \sin x)^{(n)}$ を計算してから $x = 0$ を代入することで求められます。
Pythonでの実装
高階微分の数値計算と解析解の比較
import numpy as np
import matplotlib.pyplot as plt
from scipy.misc import derivative
# f(x) = x^2 * e^x の高階微分
def f(x):
return x**2 * np.exp(x)
# 解析的な n 階微分: e^x * (x^2 + 2nx + n(n-1))
def f_nth_analytic(x, n):
return np.exp(x) * (x**2 + 2*n*x + n*(n-1))
x = np.linspace(-3, 3, 300)
fig, axes = plt.subplots(2, 3, figsize=(18, 10))
for i, n in enumerate(range(6)):
ax = axes[i // 3, i % 3]
# 解析解
y_analytic = f_nth_analytic(x, n)
ax.plot(x, y_analytic, 'b-', linewidth=2, label=f'解析的 $f^{{({n})}}$')
# 数値微分(scipyのderivative関数を使用)
y_numerical = np.array([derivative(f, xi, n=n, dx=1e-3) for xi in x])
ax.plot(x, y_numerical, 'r--', linewidth=2, alpha=0.7, label='数値微分')
ax.set_xlabel('x', fontsize=11)
ax.set_ylabel(f'$f^{{({n})}}(x)$', fontsize=11)
ax.set_title(f'$n = {n}$: $(x^2 e^x)^{{({n})}}$', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
ax.set_ylim(-20, 50)
plt.suptitle(r'$f(x) = x^2 e^x$ の高階微分', fontsize=16)
plt.tight_layout()
plt.show()
ライプニッツの公式の検証
import numpy as np
import matplotlib.pyplot as plt
from math import comb, factorial
# ライプニッツの公式を使って (x * sin(x)) の n 階微分を計算
# f(x) = x, g(x) = sin(x)
# f^(0) = x, f^(1) = 1, f^(k) = 0 (k >= 2)
# g^(k)(x) = sin(x + k*pi/2)
def leibniz_x_sinx(x, n):
"""ライプニッツの公式で (x*sin(x))^(n) を計算"""
result = np.zeros_like(x)
for k in range(min(n + 1, 2)): # f^(k) = 0 for k >= 2
coeff = comb(n, k)
if k == 0:
fk = x # f^(0) = x
elif k == 1:
fk = np.ones_like(x) # f^(1) = 1
gn_k = np.sin(x + (n - k) * np.pi / 2) # g^(n-k)
result += coeff * fk * gn_k
return result
x = np.linspace(-4 * np.pi, 4 * np.pi, 1000)
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
for i, n in enumerate([1, 2, 3, 4]):
ax = axes[i // 2, i % 2]
y = leibniz_x_sinx(x, n)
ax.plot(x, y, 'b-', linewidth=2, label=rf'$(x\sin x)^{{({n})}}$')
ax.axhline(y=0, color='k', linewidth=0.5)
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title(f'{n}階微分', fontsize=14)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
plt.suptitle(r'$x\sin x$ のライプニッツの公式による高階微分', fontsize=16)
plt.tight_layout()
plt.show()
二項係数の視覚化
import numpy as np
import matplotlib.pyplot as plt
from math import comb
fig, ax = plt.subplots(figsize=(10, 7))
# パスカルの三角形(ライプニッツの公式の係数)
n_max = 8
for n in range(n_max + 1):
for k in range(n + 1):
c = comb(n, k)
ax.text(k - n/2, -n, str(c), ha='center', va='center',
fontsize=12, fontweight='bold',
bbox=dict(boxstyle='round,pad=0.3', facecolor='lightblue', alpha=0.7))
ax.set_xlim(-n_max/2 - 1, n_max/2 + 1)
ax.set_ylim(-n_max - 1, 1)
ax.set_title("パスカルの三角形 = ライプニッツの公式の係数", fontsize=14)
ax.set_ylabel('n(微分の回数)', fontsize=12)
ax.axis('off')
plt.tight_layout()
plt.show()
まとめ
本記事では、高階微分の基本概念とライプニッツの公式について解説しました。
- 高階微分 $f^{(n)}$ は微分を $n$ 回繰り返して得られる
- 基本関数の $n$ 階微分は閉じた形で表現できる($e^{ax}$, $\sin x$, $x^m$, $\ln x$)
- ライプニッツの公式: $(fg)^{(n)} = \sum_{k=0}^{n} \binom{n}{k} f^{(k)} g^{(n-k)}$
- ライプニッツの公式は 二項定理の微分版 であり、数学的帰納法で証明される
- テイラー展開の係数 $\frac{f^{(n)}(a)}{n!}$ は高階微分で求まる
次のステップとして、以下の記事も参考にしてください。
- テイラーの剰余項と近似精度 — 高階微分を使ったテイラー展開の誤差評価
- テイラー展開・マクローリン展開 — 高階微分の最大の応用