1変数関数の最適化
極値、導関数テスト、閉区間上の最適化
入門(大学初年級レベル)
極値の定義
定義:極大・極小
関数 $f(x)$ が点 $x = a$ で極大(local maximum)をとるとは、$a$ のある近傍で
$$f(a) \geq f(x)$$が成り立つことである。このとき $f(a)$ を極大値という。
同様に、極小(local minimum)をとるとは、$a$ のある近傍で
$$f(a) \leq f(x)$$が成り立つことである。極大・極小を合わせて極値(extremum)という。
極値と最大・最小の違い
極値は局所的な概念で、近傍内での比較である。
最大値・最小値は大域的な概念で、定義域全体での比較である。
極大値が最大値とは限らず、極小値が最小値とは限らない。
臨界点
定義:臨界点
$f'(a) = 0$ または $f'(a)$ が存在しない点 $a$ を臨界点(critical point)という。特に、$f'(a) = 0$ を満たす臨界点を停留点(stationary point)という。たとえば $f(x) = |x|$ の $x = 0$ は臨界点だが、微分不可能なので停留点ではない。
定理:極値の必要条件(フェルマーの定理)
$f(x)$ が $x = a$ で微分可能で、極値をとるならば、$f'(a) = 0$ である。
証明
$f$ が $x = a$ で極大をとるとする(極小の場合も同様)。$a$ の近傍で $f(a) \geq f(x)$ なので、$h > 0$ に対して
$$\dfrac{f(a+h) - f(a)}{h} \leq 0$$$h \to 0^+$ とすると $f'(a) \leq 0$。同様に $h < 0$ に対しては
$$\dfrac{f(a+h) - f(a)}{h} \geq 0$$$h \to 0^-$ とすると $f'(a) \geq 0$。よって $f'(a) = 0$。□
注意:必要条件であって十分条件ではない
$f'(a) = 0$ であっても、$a$ が極値点とは限らない。例えば $f(x) = x^3$ は $f'(0) = 0$ だが、$x = 0$ は極値ではない(変曲点)。
1次導関数テスト
定理:1次導関数テスト
$f'(a) = 0$ のとき:
- $x = a$ の前後で $f'(x)$ が正から負に変わる → $f(a)$ は極大値
- $x = a$ の前後で $f'(x)$ が負から正に変わる → $f(a)$ は極小値
- $f'(x)$ の符号が変わらない → $f(a)$ は極値ではない
例1:$f(x) = x^3 - 3x$
Step 1:臨界点を求める
$f'(x) = 3x^2 - 3 = 3(x^2 - 1) = 3(x+1)(x-1)$
$f'(x) = 0$ より $x = -1, 1$
Step 2:符号の変化を調べる
- $x < -1$:$f'(x) > 0$(増加)
- $-1 < x < 1$:$f'(x) < 0$(減少)
- $x > 1$:$f'(x) > 0$(増加)
結論:
- $x = -1$:極大値 $f(-1) = 2$
- $x = 1$:極小値 $f(1) = -2$
2次導関数テスト
定理:2次導関数テスト
$f'(a) = 0$ かつ $f''(a)$ が存在するとき:
- $f''(a) < 0$ → $f(a)$ は極大値
- $f''(a) > 0$ → $f(a)$ は極小値
- $f''(a) = 0$ → このテストでは判定不能(1次導関数テストを使う)
直感的な理解
$f''(a)$ は、$x = a$ での曲線の「曲がり具合」を表す。
- $f''(a) < 0$:上に凸(∩型)→ 極大
- $f''(a) > 0$:下に凸(∪型)→ 極小
例2:$f(x) = x^4 - 2x^2$
Step 1:臨界点を求める
$f'(x) = 4x^3 - 4x = 4x(x^2 - 1) = 4x(x+1)(x-1)$
$f'(x) = 0$ より $x = -1, 0, 1$
Step 2:2次導関数で判定
$f''(x) = 12x^2 - 4$
- $f''(-1) = 12 - 4 = 8 > 0$ → 極小値 $f(-1) = -1$
- $f''(0) = -4 < 0$ → 極大値 $f(0) = 0$
- $f''(1) = 12 - 4 = 8 > 0$ → 極小値 $f(1) = -1$
閉区間上の最大・最小
定理:最大値・最小値の存在(ワイエルシュトラスの定理)
$f(x)$ が閉区間 $[a, b]$ で連続ならば、$f$ は $[a, b]$ で最大値と最小値をとる。
閉区間上での最大・最小の求め方
閉区間 $[a, b]$ で連続な関数 $f(x)$ の最大値・最小値は、以下の候補の中にある:
- 区間内の臨界点 $c$($f'(c) = 0$ または $f'(c)$ が存在しない点)
- 端点 $a$, $b$
これらすべてで $f$ の値を計算し、最大・最小を比較する。
例3:$f(x) = x^3 - 3x$ の $[-2, 2]$ での最大・最小
Step 1:臨界点を求める
$f'(x) = 3x^2 - 3 = 0$ より $x = \pm 1$(両方とも区間内)
Step 2:候補点での値を計算
- $f(-2) = (-2)^3 - 3(-2) = -8 + 6 = -2$
- $f(-1) = (-1)^3 - 3(-1) = -1 + 3 = 2$
- $f(1) = 1^3 - 3(1) = 1 - 3 = -2$
- $f(2) = 2^3 - 3(2) = 8 - 6 = 2$
結論:最大値は $2$($x = -1, 2$)、最小値は $-2$($x = -2, 1$)
応用例
例4:箱の容積最大化(最適化問題の定式化の続き)
1辺 $a$ の正方形の板から箱を作る問題。$V(x) = x(a - 2x)^2$ を最大化する。
ここでは $a = 12$ として計算する。
$V(x) = x(12 - 2x)^2 = x(144 - 48x + 4x^2) = 4x^3 - 48x^2 + 144x$
Step 1:臨界点を求める
$V'(x) = 12x^2 - 96x + 144 = 12(x^2 - 8x + 12) = 12(x - 2)(x - 6)$
$V'(x) = 0$ より $x = 2, 6$
Step 2:制約条件の確認
$x$ は切り取る正方形の一辺の長さなので、$12 - 2x > 0$ すなわち $0 < x < a/2 = 6$ である。よって $x = 6$ は領域の境界で除外され、区間 $(0, 6)$ 内の臨界点は $x = 2$ のみ。
Step 3:2次導関数テスト
$V''(x) = 24x - 96$
$V''(2) = 48 - 96 = -48 < 0$ → 極大
結論:$x = 2$ で容積は最大値 $V(2) = 2 \times 64 = 128$ をとる。
例5:利益最大化
ある製品の需要関数が $p = 100 - 2q$($p$:価格、$q$:販売量。価格が非負より $0 \le q \le 50$)で、1個あたりの製造コストが $20$ のとき、利益を最大化する販売量を求める。
定式化
- 売上:$R(q) = pq = (100 - 2q)q = 100q - 2q^2$
- コスト:$C(q) = 20q$
- 利益(目的関数):$\pi(q) = R(q) - C(q) = 100q - 2q^2 - 20q = 80q - 2q^2$
Step 1:臨界点を求める
$\pi'(q) = 80 - 4q = 0$ より $q = 20$
Step 2:2次導関数テスト
$\pi''(q) = -4 < 0$ → 極大
結論:$q = 20$ で利益は最大値 $\pi(20) = 80 \times 20 - 2 \times 400 = 1600 - 800 = 800$ をとる。
発展:微分が使えないときの数値解法(黄金分割探索)
$f'(x)$ が複雑で解析的に解けない、あるいは微分が使えない場合は、黄金分割探索(golden-section search)などの数値解法を用いる。これは単峰関数(唯一の最小値を持つ関数)の探索区間を黄金比 $\phi = (\sqrt{5}-1)/2 \approx 0.618$ で縮小し、最小点に効率良く迫る方法である。各反復で区間を約 $(1-\phi) \approx 38.2$% 縮小できる。多変数の勾配法などは後続の章で扱う。
まとめ
- 臨界点:$f'(x) = 0$ または $f'(x)$ が存在しない点
- フェルマーの定理:極値点では $f'(x) = 0$(必要条件)
- 1次導関数テスト:$f'(x)$ の符号変化で極値を判定
- 2次導関数テスト:$f''(a) < 0$ なら極大、$f''(a) > 0$ なら極小
- 閉区間上の最適化:臨界点と端点で比較
よくある質問
1変数関数の最適解はどのように求めるか
微分 $f'(x) = 0$ を満たす停留点(stationary point)を求め、$f''(x) > 0$ なら極小点(最小候補)、$f''(x) < 0$ なら極大点(最大候補)と判定する($f''(x) = 0$ のときは2次導関数テストでは判定できず、1次導関数テストを用いる)。端点がある閉区間 $[a,b]$ では、内部の停留点と端点 $f(a)$、$f(b)$ を比較して大域最適解を見つける。
黄金分割探索とはどのようなものか
1変数の単峰関数(唯一の最小値を持つ関数)に対して、区間を黄金比 $\phi = (\sqrt{5}-1)/2 \approx 0.618$ で分割することで最小点を効率良く探索する手法である。各反復で区間を $(1-\phi) \approx 38.2$% 縮小でき、微分が使えない場合や数値的に安定な探索が必要な場合に有効である。
2次関数の最小化は閉形式で解けるか
解ける。$f(x) = ax^2 + bx + c$($a > 0$)は $f'(x) = 2ax + b = 0$ より $x^* = -b/(2a)$ が最小点である。一般に2次計画問題(目的関数が2次、制約が線形)は多変数でも効率的に解ける。機械学習の最小二乗回帰や SVM の基本ケースがこれに当たる。