陰関数定理の意味と応用

円の方程式 $x^2 + y^2 = 1$ は、$x$ と $y$ の間の関係を定めていますが、$y = f(x)$ の形で陽に書けるでしょうか。$y = \sqrt{1 – x^2}$ と書けば上半円は表せますが、1つの式で円全体を表すことはできません。では、円のどの部分で、$y$ を $x$ の関数として表せるのでしょうか。

この問いに答えるのが陰関数定理(implicit function theorem)です。陰関数定理は「方程式 $F(x, y) = 0$ から $y = f(x)$ を取り出せる条件」を教えてくれます。さらに、$f$ の微分を $F$ の偏微分から計算する公式も与えます。

陰関数定理は、多変数微積分学における最も重要な定理の一つです。1変数の逆関数定理($f'(a) \neq 0$ なら $f$ は $a$ の近傍で逆関数を持つ)を多変数に拡張したものであり、解析学、微分幾何、最適化理論など多くの分野の礎となっています。

陰関数定理を理解すると、以下のような応用が開けます。

  • 微分幾何: 曲線や曲面の接線・法線の計算
  • 経済学: 比較静学 — パラメータの変化が均衡にどう影響するか
  • 最適化: ラグランジュの未定乗数法の理論的基盤
  • 数値解析: ニュートン法の収束保証(暗黙的に陰関数定理を使っている)

本記事の内容

  • 陰関数の直感的な理解
  • 陰関数定理の厳密な定式化
  • 証明の概略(縮小写像の原理)
  • 陰関数の微分(陰微分)
  • 逆関数定理との関係
  • Pythonによる可視化と応用例

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

陰関数とは

陽関数と陰関数

$y = x^2 + 3x – 1$ のように、$y$ が $x$ の式として陽に(explicitly)書かれているものを陽関数と呼びます。一方、$x^2 + y^2 = 1$ のように、$x$ と $y$ の関係が方程式 $F(x, y) = 0$ の形で暗に(implicitly)定められているものを陰関数と呼びます。

陽関数は特殊な陰関数とみなせます。$y = x^2 + 3x – 1$ は $F(x, y) = y – x^2 – 3x + 1 = 0$ と書けます。しかし、全ての陰関数が陽関数として書けるわけではありません。

日常的な例で言えば、地図上の等高線は陰関数の典型例です。標高関数 $h(x, y)$ に対して、$h(x, y) = 500$ という等高線は $x$ と $y$ の間の陰的な関係を定めています。この等高線が急峻な崖を表す場合(水平距離に対して高さが急激に変わる場合)は $y$ を $x$ の関数として表しにくくなりますが、なだらかな斜面であれば局所的に $y = f(x)$ と表せます。

陰関数が「取り出せる」とは

$F(x, y) = 0$ から $y = f(x)$ を「取り出す」とは、$F(x, f(x)) = 0$ を満たす関数 $f$ を見つけることです。ただし、これは大域的には不可能でも、局所的には可能な場合があります。

円 $x^2 + y^2 = 1$ の場合を考えましょう。点 $(0, 1)$(円の頂上)の近傍では $y = \sqrt{1 – x^2}$ が取り出せます。点 $(1, 0)$(円の右端)の近傍でも $y$ を $x$ の関数として表せますが、$|x|$ が少し変わるだけで $y$ の符号が決まらなくなるため、$(1, 0)$ のすぐ近くでしか有効ではありません。

一方、点 $(0, 1)$ では $\frac{\partial F}{\partial y}(0, 1) = 2 \cdot 1 = 2 \neq 0$ です。点 $(1, 0)$ では $\frac{\partial F}{\partial y}(1, 0) = 2 \cdot 0 = 0$ です。この $\frac{\partial F}{\partial y}$ の非零条件がまさに陰関数定理の鍵です。

幾何学的直感

$\frac{\partial F}{\partial y} \neq 0$ という条件の幾何学的意味を考えましょう。$F(x, y) = 0$ の等位線(level curve)の勾配は $\nabla F = (F_x, F_y)$ であり、等位線の法線方向を向いています。

$F_y \neq 0$ ということは、法線ベクトルの $y$ 成分がゼロでない、つまり等位線がその点で水平ではない($y$ 軸方向に変化している)ことを意味します。等位線が水平でなければ、局所的に $y$ を $x$ の関数として表せるのは自然なことです。逆に、$F_y = 0$ の点(円の右端や左端のように、接線が垂直な点)では $y$ を $x$ の関数として表すのが困難になります。

もう一つの見方として、$F_y \neq 0$ は「$y$ を少し動かすと $F$ の値が変化する」ことを意味します。$F(a, b) = 0$ の近くで $x$ を少しずらすと $F$ の値がゼロからずれますが、$F_y \neq 0$ であれば $y$ を適切に調整して $F = 0$ に戻すことができます。これが「$y$ を $x$ の関数として調整できる」ことの直感的な根拠です。

この直感を数学的に厳密にしたものが、次に述べる陰関数定理です。

陰関数定理の厳密な定式化

2変数の場合

定理(陰関数定理、2変数): $F: \mathbb{R}^2 \to \mathbb{R}$ が $C^1$ 級で、点 $(a, b)$ において

  1. $F(a, b) = 0$
  2. $\frac{\partial F}{\partial y}(a, b) \neq 0$

を満たすとする。このとき、$a$ のある近傍 $U$ と $b$ の近傍 $V$ が存在し、$C^1$ 級関数 $f: U \to V$ が一意に存在して

$$ F(x, f(x)) = 0 \quad \text{for all } x \in U $$

さらに $f$ の微分は

$$ \begin{equation} f'(x) = -\frac{F_x(x, f(x))}{F_y(x, f(x))} \end{equation} $$

で与えられます。

この公式は全微分 $F_x \, dx + F_y \, dy = 0$ を $dy/dx$ について解いたものであり、陰微分(implicit differentiation)の公式です。

全微分の式がどこから来るかを確認しておきましょう。$F(x, y) = 0$ が恒等的に成り立つとき、$F$ の全微分は

$$ dF = \frac{\partial F}{\partial x}dx + \frac{\partial F}{\partial y}dy = 0 $$

です。$F_y \neq 0$ のとき両辺を $F_y\,dx$ で割ると

$$ \frac{dy}{dx} = -\frac{F_x}{F_y} $$

が得られます。この公式の符号に注目してください。マイナスが付いているのは、「$x$ を増やして $F$ が増える方向に動いたら、$y$ は $F$ が減る方向に動いて $F = 0$ を維持する」という補償的な関係を反映しています。

一般の場合

$\bm{F}: \mathbb{R}^{n+m} \to \mathbb{R}^m$ について、$(\bm{x}, \bm{y}) \in \mathbb{R}^n \times \mathbb{R}^m$ で $\bm{F}(\bm{a}, \bm{b}) = \bm{0}$ とし、$\bm{y}$ に関するヤコビ行列

$$ \frac{\partial \bm{F}}{\partial \bm{y}}(\bm{a}, \bm{b}) $$

が正則($\det \neq 0$)であれば、$\bm{a}$ の近傍で $\bm{y} = \bm{f}(\bm{x})$ を $C^1$ 級関数として取り出すことができ

$$ \begin{equation} \frac{\partial \bm{f}}{\partial \bm{x}} = -\left(\frac{\partial \bm{F}}{\partial \bm{y}}\right)^{-1} \frac{\partial \bm{F}}{\partial \bm{x}} \end{equation} $$

が成り立ちます。

この一般形は、例えば3つの方程式 $F_1(x_1, x_2, y_1, y_2, y_3) = 0$, $F_2(\ldots) = 0$, $F_3(\ldots) = 0$ から3つの変数 $y_1, y_2, y_3$ を2つの変数 $x_1, x_2$ の関数として取り出す場面で使います。条件は $3 \times 3$ のヤコビ行列 $\partial \bm{F}/\partial \bm{y}$ が正則であること、つまり行列式がゼロでないことです。

証明の概略

陰関数定理の証明は、縮小写像の原理(バナッハの不動点定理)を用います。$F_y(a, b) \neq 0$ なので、方程式 $F(x, y) = 0$ を $y = y – \frac{F(x, y)}{F_y(a, b)}$ という反復式に書き換えます。

$g(y) = y – \frac{F(x, y)}{F_y(a, b)}$ とすると

$$ g'(y) = 1 – \frac{F_y(x, y)}{F_y(a, b)} $$

$(a, b)$ の近傍では $F_y(x, y) \approx F_y(a, b)$ なので $|g'(y)| < 1$ となり、$g$ は縮小写像です。縮小写像の原理により不動点 $y^* = g(y^*)$、すなわち $F(x, y^*) = 0$ の解が一意に存在します。

$f(x) = y^*$ とおけば、$f$ の存在と一意性が示されます。$f$ の連続性や微分可能性は、$F$ の正則性から導かれます。

この証明のアイデアは直感的に理解できます。$F(x, y) = 0$ を解くために $y$ を反復的に更新する操作を考えます。$F_y(a, b) \neq 0$ であれば、$(a, b)$ の近くでは $F$ を $y$ の方向に「押す」ことで $F = 0$ の解に収束させることができます。これはまさにニュートン法の1次元版です。縮小写像の原理は、この反復が確実に収束することを保証してくれます。

理論的な内容を理解したところで、次に陰微分の実際の計算方法を見てみましょう。

陰微分の計算

陰微分の手順

$F(x, y) = 0$ の両辺を $x$ で微分すると、連鎖律により

$$ \frac{\partial F}{\partial x} + \frac{\partial F}{\partial y}\frac{dy}{dx} = 0 $$

$$ \frac{dy}{dx} = -\frac{F_x}{F_y} $$

この計算は $y = f(x)$ を陽に求めなくても $\frac{dy}{dx}$ が得られるため、非常に便利です。実際、多くの場合 $F(x,y) = 0$ を $y$ について陽に解くことは不可能です(代数方程式の5次以上は一般に根の公式がなく、超越方程式はなおさらです)。陰微分はそのような場合でも微分を計算できる強力な手法です。

計算例1: 円

$x^2 + y^2 = 1$ のとき $F(x, y) = x^2 + y^2 – 1$ です。

$$ \frac{dy}{dx} = -\frac{F_x}{F_y} = -\frac{2x}{2y} = -\frac{x}{y} $$

$y \neq 0$ のとき有効です。$y = 0$($(1, 0)$ と $(-1, 0)$)では分母がゼロになり、$dy/dx$ が定義できません。幾何学的には、これらの点で円の接線が垂直になることに対応しています。

検算してみましょう。上半円 $y = \sqrt{1 – x^2}$ を陽に微分すると $\frac{dy}{dx} = \frac{-x}{\sqrt{1-x^2}} = \frac{-x}{y}$ となり、陰微分の結果と一致します。陰微分は $y$ を陽に求める手間を省いてくれるのです。

計算例2: 楕円曲線

$y^2 = x^3 – x + 1$(楕円曲線)のとき $F(x, y) = y^2 – x^3 + x – 1 = 0$ です。

$$ \frac{dy}{dx} = -\frac{-3x^2 + 1}{2y} = \frac{3x^2 – 1}{2y} $$

楕円曲線は暗号理論(楕円曲線暗号)で重要な役割を果たします。この曲線上の点どうしの「加法」を定義する際に、2点を結ぶ直線と曲線の交点を求める計算が必要になりますが、その際に接線の傾き(陰微分で求まる $dy/dx$)が使われます。

計算例3: 3変数の場合

3変数の陰関数にも同じ手法が適用できます。$F(x, y, z) = x^2 + 2y^2 + 3z^2 – 6 = 0$(楕円体の表面)について $z$ を $x, y$ の関数とみなすと

$$ \frac{\partial z}{\partial x} = -\frac{F_x}{F_z} = -\frac{2x}{6z} = -\frac{x}{3z}, \quad \frac{\partial z}{\partial y} = -\frac{F_y}{F_z} = -\frac{4y}{6z} = -\frac{2y}{3z} $$

これは $F_z = 6z \neq 0$(つまり $z \neq 0$)の領域で有効です。$z = 0$ の点は楕円体の「赤道」にあたり、そこでは $z$ を $x, y$ の関数として取り出せません。

2階微分

陰関数の2階微分も計算できます。$\frac{dy}{dx} = -\frac{F_x}{F_y}$ を再び $x$ で微分します。

$$ \frac{d^2y}{dx^2} = -\frac{d}{dx}\left(\frac{F_x}{F_y}\right) = -\frac{F_{xx}F_y – F_x F_{yx} + (F_{xy}F_y – F_x F_{yy})\frac{dy}{dx}}{F_y^2} $$

$\frac{dy}{dx} = -F_x/F_y$ を代入して整理すると

$$ \begin{equation} \frac{d^2y}{dx^2} = -\frac{F_{xx}F_y^2 – 2F_{xy}F_x F_y + F_{yy}F_x^2}{F_y^3} \end{equation} $$

円 $x^2 + y^2 = 1$ で確認してみましょう。$F = x^2 + y^2 – 1$ なので $F_{xx} = 2, F_{yy} = 2, F_{xy} = 0, F_x = 2x, F_y = 2y$ です。代入すると

$$ \frac{d^2y}{dx^2} = -\frac{2 \cdot 4y^2 – 0 + 2 \cdot 4x^2}{8y^3} = -\frac{8(x^2 + y^2)}{8y^3} = -\frac{1}{y^3} $$

上半円 $y = \sqrt{1-x^2}$ を2回微分しても同じ結果が得られます。$\frac{d^2 y}{dx^2} = -\frac{1}{(1-x^2)^{3/2}} = -\frac{1}{y^3}$ であり、一致しています。2階微分が常に負であることは、上半円が上に凸であることに対応しています。

陰微分の計算方法を身につけたところで、陰関数定理の応用例をいくつか見てみましょう。

応用例

比較静学(経済学)

需要と供給の均衡を考えます。需要 $D(p, \alpha)$(価格 $p$、所得パラメータ $\alpha$)と供給 $S(p)$ が均衡している条件は

$$ F(p, \alpha) = D(p, \alpha) – S(p) = 0 $$

所得パラメータ $\alpha$ が変化したとき、均衡価格 $p$ はどう変化するでしょうか。陰関数定理により

$$ \frac{dp}{d\alpha} = -\frac{F_\alpha}{F_p} = -\frac{D_\alpha}{D_p – S_p} $$

通常 $D_\alpha > 0$(所得が増えると需要が増える)、$D_p < 0$(価格が上がると需要が減る)、$S_p > 0$(価格が上がると供給が増える)なので

$$ \frac{dp}{d\alpha} = -\frac{D_\alpha}{D_p – S_p} > 0 $$

所得が増えると均衡価格が上がるという直感的な結論が、数学的に導かれました。

ここで重要なのは、均衡価格 $p = p(\alpha)$ を陽に求めなくても、パラメータ変化の方向(正か負か)がわかるということです。これが陰関数定理の実用的な威力です。

ラグランジュの未定乗数法との関係

制約付き最適化問題 $\min f(\bm{x})$ subject to $g(\bm{x}) = 0$ を考えます。ラグランジアン $L(\bm{x}, \lambda) = f(\bm{x}) – \lambda g(\bm{x})$ の停留条件は

$$ \nabla f = \lambda \nabla g, \quad g(\bm{x}) = 0 $$

です。この連立方程式の解 $(\bm{x}^*, \lambda^*)$ の近傍で解がどう変化するかは、陰関数定理で解析できます。制約 $g(\bm{x}) = c$ のパラメータ $c$ を動かしたとき、最適値 $f^*$ がどう変化するかは $\frac{df^*}{dc} = \lambda^*$ で与えられます。これは「ラグランジュ乗数は制約の影の価格」という解釈の数学的根拠です。

逆関数定理との関係

逆関数定理は陰関数定理の特殊な場合として得られます。$\bm{F}(\bm{x}, \bm{y}) = \bm{g}(\bm{x}) – \bm{y}$ とおくと、$\bm{F} = \bm{0}$ は $\bm{y} = \bm{g}(\bm{x})$ と同値です。

$\frac{\partial \bm{F}}{\partial \bm{y}} = -\bm{I}$ は常に正則なので、陰関数定理の条件は $\frac{\partial \bm{F}}{\partial \bm{x}} = \bm{J}_{\bm{g}}$ が正則であること、つまり $\bm{g}$ のヤコビアンがゼロでないことに帰着します。これは逆関数定理の条件そのものです。

逆に、逆関数定理から陰関数定理を導くこともできます。つまり両者は本質的に同値な定理です。どちらの定理から出発しても、もう一方が得られるという関係は、理論の構造を理解する上で重要です。

理論と応用を学んだところで、Pythonで可視化してみましょう。

Pythonでの実装と可視化

陰関数定理の幾何学

陰関数が「取り出せる」条件と「取り出せない」特異点を可視化します。

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 3, figsize=(16, 5))

# (a) 円: x^2 + y^2 = 1
ax = axes[0]
theta = np.linspace(0, 2*np.pi, 200)
ax.plot(np.cos(theta), np.sin(theta), 'b-', linewidth=2.5)

# F_y = 2y がゼロになる点を強調
ax.plot(1, 0, 'ro', markersize=12, label='$F_y=0$ (singular)')
ax.plot(-1, 0, 'ro', markersize=12)
ax.plot(0, 1, 'go', markersize=12, label='$F_y \\neq 0$ (regular)')
ax.plot(0, -1, 'go', markersize=12)

# 接線
t_vals = np.linspace(-0.5, 0.5, 50)
# 点(0,1)での接線: dy/dx = -x/y = 0(水平)
ax.plot(t_vals, np.ones_like(t_vals), 'g--', linewidth=1.5)
# 点(1,0)での接線: 垂直
ax.plot(np.ones_like(t_vals), t_vals, 'r--', linewidth=1.5)

# 法線ベクトル(勾配方向)
for p, col in [((0, 1), 'green'), ((1, 0), 'red')]:
    grad = np.array([2*p[0], 2*p[1]])
    grad_norm = grad / np.linalg.norm(grad) * 0.4
    ax.annotate('', xy=(p[0]+grad_norm[0], p[1]+grad_norm[1]),
                xytext=p,
                arrowprops=dict(arrowstyle='->', color=col, lw=2))

ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title('$x^2+y^2=1$: Regular vs Singular points', fontsize=12)
ax.set_aspect('equal')
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)

# (b) 楕円曲線
ax = axes[1]
x_range = np.linspace(-1.5, 2, 500)
y_pos = []
y_neg = []
for x in x_range:
    val = x**3 - x + 1
    if val >= 0:
        y_pos.append(np.sqrt(val))
        y_neg.append(-np.sqrt(val))
    else:
        y_pos.append(np.nan)
        y_neg.append(np.nan)

ax.plot(x_range, y_pos, 'b-', linewidth=2)
ax.plot(x_range, y_neg, 'b-', linewidth=2)

# いくつかの点で接線を描画
for x0 in [0, 0.5, 1.0, 1.5]:
    val = x0**3 - x0 + 1
    if val > 0:
        y0 = np.sqrt(val)
        dydx = (3*x0**2 - 1) / (2*y0)
        t = np.linspace(-0.3, 0.3, 50)
        ax.plot(x0 + t, y0 + dydx*t, 'r-', alpha=0.6, linewidth=1)
        ax.plot(x0, y0, 'ro', markersize=6)

ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title('Elliptic curve $y^2 = x^3 - x + 1$', fontsize=12)
ax.grid(True, alpha=0.3)
ax.set_xlim(-1.5, 2)
ax.set_ylim(-2, 2)

# (c) 陰微分の精度検証
ax = axes[2]
# F(x,y) = x^3 + y^3 - 3xy = 0(デカルトの正葉線)
t = np.linspace(-10, 10, 5000)
# パラメータ表示: x = 3t/(1+t^3), y = 3t^2/(1+t^3)
mask = np.abs(1 + t**3) > 0.01
t_valid = t[mask]
x_curve = 3*t_valid / (1 + t_valid**3)
y_curve = 3*t_valid**2 / (1 + t_valid**3)

ax.plot(x_curve, y_curve, 'b-', linewidth=2, label='$x^3+y^3-3xy=0$')

# 陰微分: dy/dx = -(3x^2 - 3y)/(3y^2 - 3x) = (y - x^2)/(y^2 - x)
x0, y0 = 1.5, 1.5
dydx = (y0 - x0**2) / (y0**2 - x0)
t_line = np.linspace(-0.5, 0.5, 50)
ax.plot(x0 + t_line, y0 + dydx*t_line, 'r-', linewidth=1.5,
        label=f'Tangent at ({x0},{y0})')
ax.plot(x0, y0, 'ro', markersize=8)

ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title("Folium of Descartes", fontsize=12)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
ax.set_xlim(-2, 3)
ax.set_ylim(-2, 3)
ax.set_aspect('equal')

plt.tight_layout()
plt.savefig('implicit_function.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、陰関数定理の幾何学的意味が確認できます。

  1. 左図(円の正則点と特異点): 緑の点($(0, \pm 1)$)では $F_y = 2y \neq 0$ であり、接線が水平です。ここでは $y$ を $x$ の関数として取り出せます。赤の点($(\pm 1, 0)$)では $F_y = 0$ であり、接線が垂直です。ここでは $y$ を $x$ の関数として取り出せませんが、代わりに $x$ を $y$ の関数として取り出せます($F_x \neq 0$ なので)。

  2. 中央図(楕円曲線と接線): 楕円曲線 $y^2 = x^3 – x + 1$ の上半分の各点で陰微分による接線(赤い線)を描いています。$y \neq 0$ の全ての点で接線が計算できますが、曲線が $y = 0$ を通る点では $dy/dx$ が定義できません。

  3. 右図(デカルトの正葉線): $x^3 + y^3 – 3xy = 0$ は原点に特異点を持つ複雑な曲線です。$(1.5, 1.5)$ での接線が陰微分により正しく計算されています。

陰関数の数値計算

陰関数を数値的に求め、陰微分の公式を検証します。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve

# F(x, y) = x*exp(y) + y*exp(x) - 1 = 0
def F(x, y):
    return x * np.exp(y) + y * np.exp(x) - 1

def F_x(x, y):
    return np.exp(y) + y * np.exp(x)

def F_y(x, y):
    return x * np.exp(y) + np.exp(x)

# 陰関数 y = f(x) を数値的に計算
x_values = np.linspace(-2, 2, 200)
y_values = []

y_init = 0.5  # 初期推定
for x in x_values:
    sol = fsolve(lambda y: F(x, y), y_init, full_output=False)
    y_values.append(sol[0])
    y_init = sol[0]  # 前の解を次の初期値に

y_values = np.array(y_values)

# 陰微分の理論値
dydx_theory = -F_x(x_values, y_values) / F_y(x_values, y_values)

# 数値微分
dydx_numerical = np.gradient(y_values, x_values)

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# (a) 陰関数のグラフ
ax = axes[0]
ax.plot(x_values, y_values, 'b-', linewidth=2.5, label='$y = f(x)$')
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title('$xe^y + ye^x = 1$: Implicit function', fontsize=13)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)

# (b) 微分の比較
ax = axes[1]
ax.plot(x_values, dydx_theory, 'b-', linewidth=2, label='Implicit diff (theory)')
ax.plot(x_values, dydx_numerical, 'r--', linewidth=1.5, label='Numerical diff')
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel("$dy/dx$", fontsize=12)
ax.set_title('Implicit differentiation verification', fontsize=13)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('implicit_numerical.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、陰微分の公式の正確さが確認できます。左図では $xe^y + ye^x = 1$ で定義される陰関数 $y = f(x)$ を数値的に求めています。この方程式は $y$ について陽に解くことができない超越方程式ですが、fsolve(ニュートン法ベース)を用いて数値的に $y = f(x)$ を求めることができます。

右図では、陰微分の理論式 $dy/dx = -F_x/F_y$(青い実線)と、$y = f(x)$ を数値的に微分した結果(赤い破線)が高い精度で一致しています。これにより、$y$ を陽に求めなくても $dy/dx$ が正確に計算できることが確認されました。

実用上のポイントとして、数値微分は近似であるため端点付近で精度が落ちることがありますが、陰微分の理論式は $F_y \neq 0$ であればどの点でも正確な値を与えます。

まとめ

本記事では、陰関数定理の意味と応用について解説しました。

  • 陰関数とは、$F(x,y) = 0$ のように変数間の関係が暗に定められたもの。全ての陰関数が陽関数に変換できるわけではない
  • 陰関数定理は、$F(x, y) = 0$ から $y = f(x)$ を局所的に取り出せる条件を与える。条件は $\frac{\partial F}{\partial y} \neq 0$(幾何学的には接線が垂直でないこと)
  • 陰微分により、$y$ を陽に求めなくても $\frac{dy}{dx} = -\frac{F_x}{F_y}$ で微分が計算できる。2階微分や3変数以上の場合にも拡張可能
  • 一般の場合、$\bm{y}$ に関するヤコビ行列が正則であることが条件であり、$\frac{\partial \bm{f}}{\partial \bm{x}} = -(\partial \bm{F}/\partial \bm{y})^{-1}(\partial \bm{F}/\partial \bm{x})$
  • 逆関数定理は陰関数定理の特殊な場合として得られ、両者は本質的に同値
  • 経済学の比較静学、ラグランジュの未定乗数法、楕円曲線暗号など幅広い分野の理論的基盤として使われる

陰関数定理は、微分幾何学では曲面の局所的なパラメータ化に、偏微分方程式論では解の正則性の解析に、制御理論では平衡点近傍の挙動の解析に用いられます。「方程式が解けなくても、解の性質がわかる」という考え方は、現代数学と応用数学の多くの場面で基本的なアプローチとなっています。

次のステップとして、以下の記事も参考にしてください。