隐函数存在定理与逆映射存在定理
小象实战讲义 · 人工智能数学基础
在多元微分学中,我们常常遇到由方程或方程组确定的函数关系,而非显式给出的函数。本节将系统介绍隐函数存在定理,它为我们判断这种隐含的函数关系是否存在、是否可微提供了严谨的数学依据。在此基础上,我们将探讨其核心应用——逆映射存在定理,这是理解坐标变换、神经网络层间映射可逆性等问题的关键数学工具。学完本节,你将能判断一个方程组能否确定隐函数,并能熟练计算隐函数的导数或偏导数。
💡 核心导读
- 隐函数概念:理解由方程 F(x,y)=0 或方程组 {F(x,y,u,v)=0G(x,y,u,v)=0 所确定的函数关系。
- 一个方程的隐函数定理:掌握二元方程 F(x,y)=0 在一点附近能确定隐函数 y=f(x) 的充分条件(Fy=0)及其导数公式。
- 方程组的隐函数定理:推广到多个方程确定多个隐函数的情形,核心条件是雅可比行列式不为零。
- 逆映射存在定理:作为隐函数定理的直接应用,理解映射可逆的局部条件,掌握雅可比行列式在其中的核心作用。
隐函数的概念
在数学和实际问题中,变量之间的关系并不总是以显函数 y=f(x) 的形式给出,很多时候它们隐含在一个方程之中。
定义(隐函数):设有方程 F(x,y)=0. 如果存在函数 y=f(x)(定义在某区间 I 上),使得对于 I 内的一切 x,均有 F(x,f(x))≡0, 则称方程 F(x,y)=0 在区间 I 上确定了一个隐函数 y=f(x)。
这个思想可以推广到更多变量的情况:
- 一个三元方程 F(x,y,z)=0,原则上可以确定一个二元隐函数 z=f(x,y)(一个方程消去一个自由度)。
- 一个包含四个变量 (x,y,u,v) 的方程组: {F(x,y,u,v)=0G(x,y,u,v)=0 原则上可以确定两个二元隐函数 u=u(x,y), v=v(x,y)(两个方程消去两个自由度)。
隐函数存在定理要回答的核心问题是:在什么条件下,这种隐含的函数关系不仅存在,而且还是连续可微的?
一个方程的隐函数存在定理
我们从最简单的情形开始:由一个二元方程确定一个一元隐函数。
定理(一个方程的情形):设函数 F(x,y) 在点 (x0,y0) 的某邻域内具有连续偏导数,且满足:
- F(x0,y0)=0;
- Fy(x0,y0)=0。
则在点 (x0,y0) 的某邻域内,方程 F(x,y)=0 唯一确定了一个连续可微的隐函数 y=f(x),满足 y0=f(x0),且其导数为 dxdy=−Fy(x,y)Fx(x,y).
几何直观:方程 F(x,y)=0 在 Oxy 平面上通常表示一条曲线。条件 F(x0,y0)=0 说明点 (x0,y0) 在这条曲线上。条件 Fy(x0,y0)=0 的几何意义是,曲线在该点处的切线不平行于 y 轴。这意味着在点 (x0,y0) 附近,曲线可以表示为 y 关于 x 的单值函数,即“一个 x 对应唯一一个 y”,从而隐函数存在。
导数公式推导:假设隐函数 y=f(x) 存在且可导。将 y=f(x) 代入原方程 F(x,y)=0,得到恒等式 F(x,f(x))≡0。两边对 x 求导(注意 y 是 x 的函数),应用链式法则: ∂x∂F⋅dxdx+∂y∂F⋅dxdy=0. 即 Fx(x,y)+Fy(x,y)⋅dxdy=0. 由于 Fy(x,y)=0(在讨论的邻域内),立即可解出 dxdy=−Fy(x,y)Fx(x,y).
例题1:椭圆的切线斜率 椭圆方程 a2x2+b2y2=1(a>b>0)确定了 y 关于 x 的隐函数。求椭圆在第一象限点 (2a,2b) 处的切线斜率。
解:令 F(x,y)=a2x2+b2y2−1=0。两边对 x 求导,将 y 视为 x 的函数: a22x+b22y⋅dxdy=0. 解得 dxdy=−a2yb2x. 代入点 (2a,2b): dxdy(2a,2b)=−a2⋅2bb2⋅2a=−ab. 因此,该点处切线的斜率为 −ab。
对于更多变量的方程,如 F(x,y,z)=0 确定 z=f(x,y),求偏导的方法完全类似:将 z 视为 x,y 的函数,然后对方程两边分别对 x 或 y 求偏导。
例题2:求隐函数的偏导数 设方程 xy+yz+exz=3 确定 z 为 x,y 的函数,求 ∂x∂z 和 ∂y∂z。
解:将方程写为 F(x,y,z)=xy+yz+exz−3=0。两边对 x 求偏导(y 视为常数,z 视为 x,y 的函数): y+y∂x∂z+exz⋅(z+x∂x∂z)=0. 整理得 (y+xexz)∂x∂z=−(y+zexz). 故 ∂x∂z=−y+xexzy+zexz.
同理,两边对 y 求偏导(x 视为常数): x+z+y∂y∂z+exz⋅x∂y∂z=0. 整理得 (y+xexz)∂y∂z=−(x+zexz). 故 ∂y∂z=−y+xexzx+zexz.
当函数 F 的中间变量未显式写出时,我们常用下标记号表示对第几个中间变量求偏导。
例题3:抽象函数的隐函数求导 设方程 F(x−y,y−z)=0 确定 z 为 x,y 的函数,其中 F 具有连续偏导数,求 ∂x∂z 和 ∂y∂z。
解:记 u=x−y, v=y−z。则原方程为 F(u,v)=0。用 F1′, F2′ 分别表示 F 对第一个变量 u 和第二个变量 v 的偏导数。 方程两边对 x 求偏导: F1′⋅∂x∂u+F2′⋅∂x∂v=0. 其中 ∂x∂u=1, ∂x∂v=−∂x∂z。代入得 F1′⋅1+F2′⋅(−∂x∂z)=0. 解得 ∂x∂z=F2′F1′.
方程两边对 y 求偏导: F1′⋅∂y∂u+F2′⋅∂y∂v=0. 其中 ∂y∂u=−1, ∂y∂v=1−∂y∂z。代入得 F1′⋅(−1)+F2′⋅(1−∂y∂z)=0. 解得 ∂y∂z=1+F2′F1′=F2′F2′+F1′.
方程组的隐函数存在定理与雅可比行列式
现在考虑由 m 个方程确定 m 个隐函数的一般情形。以两个方程确定两个隐函数为例:
设有方程组 {F(x,y,u,v)=0G(x,y,u,v)=0 我们希望将 u,v 确定为 x,y 的函数:u=u(x,y), v=v(x,y)。
假设隐函数存在且可导。将 u(x,y), v(x,y) 代入方程组,得到两个恒等式。两边同时对 x 求偏导(y 视为常数): ⎩⎨⎧∂x∂F+∂u∂F∂x∂u+∂v∂F∂x∂v=0,∂x∂G+∂u∂G∂x∂u+∂v∂G∂x∂v=0. 这是一个以 ∂x∂u, ∂x∂v 为未知数的线性方程组。其系数矩阵为 J=(∂u∂F∂u∂G∂v∂F∂v∂G). 根据线性代数中的克莱姆法则,该方程组有唯一解的充要条件是系数矩阵的行列式不为零。这个行列式具有极其重要的地位,被称为雅可比行列式。
定义(雅可比行列式):对于函数组 F(u,v), G(u,v),其关于变量 u,v 的雅可比行列式定义为 ∂(u,v)∂(F,G)=∂u∂F∂u∂G∂v∂F∂v∂G. 也常记作 J=det(J) 或 D(u,v)D(F,G)。
于是,方程组隐函数存在定理的核心条件就是:在讨论的点处,雅可比行列式 ∂(u,v)∂(F,G)=0。若此条件满足,且函数 F,G 具有连续偏导数,则在相应点附近存在唯一一组连续可微的隐函数 u(x,y), v(x,y),并且它们的偏导数可以通过解上述线性方程组得到。
例题4:判断隐函数存在性并求导 方程组 {x2−u2−v2=0y2+u2−v2=0 能否确定 u,v 为 x,y 的函数?若在某点处可以,求 ∂x∂u 和 ∂x∂v。
解:令 F(x,y,u,v)=x2−u2−v2, G(x,y,u,v)=y2+u2−v2。 首先考察雅可比行列式: ∂(u,v)∂(F,G)=∂u∂F∂u∂G∂v∂F∂v∂G=−2u2u−2v−2v=(4uv)−(−4uv)=8uv. 因此,只要 u=0 且 v=0,雅可比行列式不为零,隐函数 u(x,y), v(x,y) 存在。
在隐函数存在的条件下,求 ∂x∂u, ∂x∂v。原方程组两边对 x 求偏导: ⎩⎨⎧2x−2u∂x∂u−2v∂x∂v=0,0+2u∂x∂u−2v∂x∂v=0. 化简为: ⎩⎨⎧uux+vvx=x,uux−vvx=0. 其中 ux=∂x∂u, vx=∂x∂v。将此方程组视为关于 ux, vx 的线性方程组,其系数矩阵行列式正是 −2uv(与前面差一个常数因子,本质相同)。 解此方程组(例如将两式相加、相减): 两式相加:2uux=x⇒ux=2ux。 将 ux 代入第二式:u⋅2ux−vvx=0⇒vx=2vx。 因此, ∂x∂u=2ux,∂x∂v=2vx. 注意,结果中的分母 u, v 再次印证了隐函数存在的条件 uv=0。
import sympy as sp
# 使用Sympy验证例题4中求得的偏导数
x, y, u, v = sp.symbols('x y u v')
# 定义原方程组
F = x**2 - u**2 - v**2
G = y**2 + u**2 - v**2
# 假设u, v是x, y的函数,但Sympy需要显式声明函数关系
# 我们采用隐式求导的方法验证:对F=0, G=0关于x求导,然后解线性方程组
ux, vx = sp.symbols('ux vx') # 代表 du/dx, dv/dx
# 对F=0关于x求导的结果表达式
eq1 = sp.diff(F.subs({u: sp.Function('u')(x), v: sp.Function('v')(x)}), x).doit()
# 对G=0关于x求导的结果表达式
eq2 = sp.diff(G.subs({u: sp.Function('u')(x), v: sp.Function('v')(x)}), x).doit()
# 为了清晰,我们手动构造求导后的方程,替换回符号 u, v, ux, vx
# F对x求导: 2x - 2u*ux - 2v*vx = 0
eq1_manual = 2*x - 2*u*ux - 2*v*vx
# G对x求导: 0 + 2u*ux - 2v*vx = 0
eq2_manual = 2*u*ux - 2*v*vx
print("对x求导后的方程组:")
print(f" {sp.simplify(eq1_manual)} = 0")
print(f" {sp.simplify(eq2_manual)} = 0")
# 解线性方程组求 ux, vx
solution = sp.solve([eq1_manual, eq2_manual], [ux, vx])
print("\n解得的偏导数:")
print(f" ∂u/∂x = {solution[ux]}")
print(f" ∂v/∂x = {solution[vx]}")
# 验证与我们手动推导的结果一致
print(f"\n验证:∂u/∂x = x/(2u) ? {sp.simplify(solution[ux] - x/(2*u)) == 0}")
print(f"验证:∂v/∂x = x/(2v) ? {sp.simplify(solution[vx] - x/(2*v)) == 0}")
逆映射存在定理
隐函数存在定理的一个重要应用是判断一个映射是否存在局部逆映射,即逆映射存在定理。
考虑一个从 (u,v) 平面到 (x,y) 平面的映射: {x=x(u,v),y=y(u,v). 给定一点 (u0,v0) 及其像点 (x0,y0)=(x(u0,v0),y(u0,v0))。逆映射存在意味着:在 (x0,y0) 附近,能否找到唯一的 (u,v) 使得上式成立?即能否将 u,v 表示为 x,y 的函数: {u=u(x,y),v=v(x,y). 这恰好是隐函数存在定理所解决的问题!将原映射改写为: {F(x,y,u,v)=x−x(u,v)=0,G(x,y,u,v)=y−y(u,v)=0. 这是一个关于 u,v 的方程组。根据方程组的隐函数定理,存在逆映射的局部充分条件是:雅可比行列式 J=∂(u,v)∂(x,y)=∂u∂x∂u∂y∂v∂x∂v∂y=0在 (u0,v0) 处. 并且,逆映射的雅可比行列式与原映射的雅可比行列式互为倒数: ∂(x,y)∂(u,v)⋅∂(u,v)∂(x,y)=1. 这类似于一元函数中 dxdy⋅dydx=1。
例题5:极坐标变换的逆 极坐标变换 x=rcosθ, y=rsinθ 在何处存在局部逆映射(即能从 (x,y) 唯一确定 (r,θ))?
解:计算雅可比行列式: ∂(r,θ)∂(x,y)=cosθsinθ−rsinθrcosθ=rcos2θ+rsin2θ=r. 因此,当且仅当 r=0 时,雅可比行列式不为零。这意味着在除原点外的任何点,极坐标变换都存在局部逆映射。这符合我们的直观:在原点 (0,0),r=0,θ 可以取任意值,无法唯一确定。
例题6:求隐函数组的偏导数(综合练习) 设方程组 {u2−v=xu+v2=y 确定 u,v 为 x,y 的函数,求 ∂x∂u, ∂x∂v。
解:将 u,v 视为 x,y 的函数,方程组两边对 x 求偏导: ⎩⎨⎧2u∂x∂u−∂x∂v=1,∂x∂u+2v∂x∂v=0. 写成矩阵形式: (2u1−12v)(uxvx)=(10). 系数矩阵的行列式 Δ=(2u)(2v)−(−1)(1)=4uv+1。 使用克莱姆法则求解: ux=Δ10−12v=4uv+11⋅2v−(−1)⋅0=4uv+12v. vx=Δ2u110=4uv+1(2u)⋅0−1⋅1=−4uv+11. 因此, ∂x∂u=1+4uv2v,∂x∂v=−1+4uv1.
📝 动手练一练
隐函数求导:设方程 F(x+y,y+z,z+x)=0 确定 z 为 x,y 的隐函数,其中 F 具有连续偏导数。试用记号 F1′, F2′, F3′ 分别表示 F 对第一个、第二个、第三个中间变量的偏导数,求 ∂x∂z 和 ∂y∂z。
参考答案: 记 u=x+y, v=y+z, w=z+x。方程两边对 x 求偏导: F1′⋅1+F2′⋅∂x∂z+F3′⋅(1+∂x∂z)=0. 解得 ∂x∂z=−F2′+F3′F1′+F3′. 方程两边对 y 求偏导: F1′⋅1+F2′⋅(1+∂y∂z)+F3′⋅∂y∂z=0. 解得 ∂y∂z=−F2′+F3′F1′+F2′.
雅可比行列式与隐函数存在性:考虑方程组 {eu+sinv=x,u+cosv=y. (1) 计算雅可比行列式 ∂(u,v)∂(F,G),其中 F(x,y,u,v)=eu+sinv−x, G(x,y,u,v)=u+cosv−y。 (2) 在点 (u,v)=(0,2π) 附近,该方程组能否确定 u,v 为 x,y 的函数?为什么?
参考答案: (1) ∂(u,v)∂(F,G)=eu1cosv−sinv=eu⋅(−sinv)−cosv⋅1=−eusinv−cosv. (2) 在点 (0,2π) 处,雅可比行列式的值为 −e0⋅sin(2π)−cos(2π)=−1⋅1−0=−1=0。因此,根据隐函数存在定理,在该点附近方程组能唯一确定连续可微的隐函数 u=u(x,y), v=v(x,y)。
本章小结
本节深入探讨了多元微分学中两个紧密相关的核心定理:
- 隐函数存在定理:提供了由方程(组)确定隐函数的存在性、唯一性与可微性的判别准则。
- 一个方程:关键在于 Fy=0,导数公式为 dxdy=−FyFx。
- 方程组:关键在于相关雅可比行列式不为零,偏导数通过解线性方程组求得。
- 逆映射存在定理:作为隐函数定理的典型应用,给出了映射局部可逆的充分条件——映射的雅可比行列式不为零。这为理解坐标变换、可逆神经网络层等概念奠定了数学基础。
行动清单
- 掌握核心条件:面对隐函数问题,首先明确是“一个方程”还是“方程组”情形,并迅速定位其存在性条件(Fy=0 或雅可比行列式 =0)。
- 熟练求导步骤:无论条件是否明确给出,求隐函数导数的固定步骤是:将隐函数代入方程,两边对自变量求导(注意链式法则),然后解出所求导数。
- 应用雅可比行列式:遇到多个变量、多个方程的复杂关系时,主动计算雅可比行列式,它不仅是存在性的“判决书”,其倒数关系也在逆映射分析中扮演关键角色。
— 小象教研组