贡献者: 待更新
本文根据 CC-BY-SA 协议转载翻译自维基百科相关文章
在微积分中,链式法则是一条公式,它用函数 $f$ 和 $g$ 的导数来表达它们复合函数的导数。更准确地说,若 $h = f \circ g$ 是函数,满足 $h(x) = f(g(x))$ 对任意 $x$ 成立,则在拉格朗日记号中,链式法则为: $$ h'(x) = f'(g(x)) \, g'(x).~ $$ 或者等价地: $$ h' = (f \circ g)' = (f' \circ g)\cdot g'.~ $$ 链式法则也可以用莱布尼茨记号表示。若变量 $z$ 依赖于变量 $y$,而 $y$ 又依赖于变量 $x$(即 $y$ 和 $z$ 都是依赖变量),那么 $z$ 也通过中间变量 $y$ 依赖于 $x$。在这种情况下,链式法则表示为: $$ \frac{dz}{dx} = \frac{dz}{dy} \cdot \frac{dy}{dx},~ $$ 以及: $$ \left.\frac{dz}{dx}\right|_{x} = \left.\frac{dz}{dy}\right|_{y(x)} \cdot \left.\frac{dy}{dx}\right|_{x},~ $$ 其中竖线记号用来指出导数应当在哪些点进行计算。
在积分中,与链式法则对应的规则是代换积分法。
直观上,链式法则表明:如果已知 $z$ 相对于 $y$ 的瞬时变化率,以及 $y$ 相对于 $x$ 的瞬时变化率,那么就可以通过两者的乘积来计算 $z$ 相对于 $x$ 的瞬时变化率。
正如 George F. Simmons 所说:“如果一辆汽车的速度是自行车的两倍,而自行车的速度是步行者的四倍,那么汽车的速度就是步行者的 $2 \times 4 = 8$ 倍。”【1】
这个例子与链式法则的关系如下:设 $z, y, x$ 分别表示汽车、自行车和步行者的位置(变量)。汽车与自行车相对位置的变化率为:$\frac{dz}{dy} = 2$.同样,自行车与步行者相对位置的变化率为:$\frac{dy}{dx} = 4$.因此,汽车与步行者相对位置的变化率为: $$ \frac{dz}{dx} = \frac{dz}{dy}\cdot \frac{dy}{dx} = 2 \cdot 4 = 8.~ $$ 位置变化率就是速度之比,而速度就是位置对时间的导数。即: $$ \frac{dz}{dx} = \frac{\tfrac{dz}{dt}}{\tfrac{dx}{dt}},~ $$ 或者等价地: $$ \frac{dz}{dt} = \frac{dz}{dx}\cdot \frac{dx}{dt},~ $$ 这同样是链式法则的一个应用。
链式法则最早似乎是由戈特弗里德·威廉·莱布尼茨使用的。他利用它来计算 $\sqrt{a+bz+cz^{2}}$ 的导数,把它看作平方根函数与函数 $a+bz+cz^{2}$ 的复合。他在 1676 年的一篇论文中首次提及这一点(其中计算中有一个符号错误)【2】。链式法则的常见记号归功于莱布尼茨【3】。纪尧姆·德·洛必达在其《无穷小分析》中隐含地使用了链式法则。尽管莱昂哈德·欧拉的分析著作写于莱布尼茨发现一百多年之后,但其中并未出现链式法则【需要引证】。一般认为,链式法则的第一个 “现代” 版本出现在拉格朗日 1797 年的《解析函数论》中;它也出现在柯西 1823 年的《在皇家综合理工学院所作无穷小计算讲义摘要》中【3】。
链式法则最简单的形式适用于实变量的实值函数。它表明:如果 $g$ 在点 $c$ 处可导(即导数 $g'(c)$ 存在),并且 $f$ 在 $g(c)$ 处可导,那么复合函数 $f \circ g$ 在 $c$ 处也是可导的,其导数为【4】: $$ (f \circ g)'(c) = f'(g(c)) \cdot g'(c).~ $$ 该法则有时可简写为: $$ (f \circ g)' = (f' \circ g) \cdot g'.~ $$ 如果 $y = f(u)$,而 $u = g(x)$,那么在莱布尼茨记号中,这种简写形式可写为: $$ \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}.~ $$ 导数计算所对应的点也可以明确写出: $$ \left.\frac{dy}{dx}\right|_{x=c} = \left.\frac{dy}{du}\right|_{u=g(c)} \cdot \left.\frac{du}{dx}\right|_{x=c}.~ $$ 进一步推广,若给定 $n$ 个函数 $f_1, f_2, \ldots, f_n$,复合函数为:$f_1 \circ (f_2 \circ \cdots (f_{n-1} \circ f_n))$,若每个函数 $f_i$ 在其输入点上可导,则通过多次应用链式法则,该复合函数也可导,其导数在莱布尼茨记号中为: $$ \frac{df_1}{dx} = \frac{df_1}{df_2} \cdot \frac{df_2}{df_3} \cdots \frac{df_n}{dx}.~ $$
链式法则可以应用于两个以上函数的复合。要求解多个函数复合的导数,可以注意到:函数 $f, g, h$(按此顺序)的复合,其实就是 $f$ 与 $g \circ h$ 的复合。链式法则指出,要计算 $f \circ g \circ h$ 的导数,只需要计算 $f$ 的导数以及 $g \circ h$ 的导数。$f$ 的导数可以直接计算,而 $g \circ h$ 的导数可以通过再次应用链式法则来计算。
为了更具体,考虑函数: $$ y = e^{ \sin\left(x^2\right) }.~ $$ 它可以分解为三个函数的复合: $$ y = f(u) = e^u, \quad u = g(v) = \sin v, \quad v = h(x) = x^2.~ $$ 因此:$y = f(g(h(x)))$.
它们的导数分别为: $$ \frac{dy}{du} = f'(u) = e^u, \quad \frac{du}{dv} = g'(v) = \cos v, \quad \frac{dv}{dx} = h'(x) = 2x.~ $$ 链式法则表明,在点 $x=a$ 处复合函数的导数为:
$$ \begin{aligned} (f \circ g \circ h)'(a) &= f'((g \circ h)(a)) \cdot (g \circ h)'(a)\\ &= f'((g \circ h)(a)) \cdot g'(h(a)) \cdot h'(a)\\ &= (f' \circ g \circ h)(a) \cdot (g' \circ h)(a) \cdot h'(a)\\ \end{aligned}~ $$ 在莱布尼茨记号中,该结果为: $$ \frac{dy}{dx} = \left.\frac{dy}{du}\right|_{u=g(h(a))} \cdot \left.\frac{du}{dv}\right|_{v=h(a)} \cdot \left.\frac{dv}{dx}\right|_{x=a},~ $$ 或者简写为: $$ \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dv} \cdot \frac{dv}{dx}.~ $$ 因此,导函数为: $$ \frac{dy}{dx} = e^{ \sin\left(x^2\right) } \cdot \cos\left(x^2\right) \cdot 2x.~ $$ 另一种计算该导数的方法是将复合函数 $f \circ g \circ h$ 看作 $(f \circ g)$ 与 $h$ 的复合。以这种方式应用链式法则得到: $$ \begin{aligned} (f \circ g \circ h)'(a) &= (f \circ g)'(h(a)) \cdot h'(a)\\ &= f'(g(h(a))) \cdot g'(h(a)) \cdot h'(a)\\ \end{aligned}~ $$ 这与上面计算出的结果相同。这是可以预期的,因为:$(f \circ g) \circ h = f \circ (g \circ h)$.
有时,需要对任意长度的复合函数求导,其形式为:$f_{1} \circ f_{2} \circ \cdots \circ f_{n-1} \circ f_{n}$.在这种情况下,定义: $$ f_{a..b} = f_a \circ f_{a+1} \circ \cdots \circ f_{b-1} \circ f_b,~ $$ 其中:$f_{a..a} = f_a, \quad f_{a..b}(x) = x \quad \text{当 } b < a$.则链式法则可以写作: $$ \begin{aligned} Df_{1..n} &= (Df_1 \circ f_{2..n})(Df_2 \circ f_{3..n}) \cdots (Df_{n-1} \circ f_{n..n}) Df_n\\ &= \prod_{k=1}^{n} \big[ Df_k \circ f_{(k+1)..n} \big]. \end{aligned}~ $$ 或者,用拉格朗日记号表示: $$ \begin{aligned} f_{1..n}'(x) &= f_1'\!\big(f_{2..n}(x)\big) \; f_2'\!\big(f_{3..n}(x)\big) \cdots f_{n-1}'\!\big(f_{n..n}(x)\big) \; f_n'(x),\\ &= \prod_{k=1}^{n} f_k'\!\big(f_{(k+1)..n}(x)\big). \end{aligned}~ $$
链式法则可以用来推导一些著名的求导公式。例如,商法则就是链式法则和乘积法则的推论。
为说明这一点,将函数 $f(x)/g(x)$ 写作 $f(x) \cdot 1/g(x)$。首先应用乘积法则: $$ \begin{aligned} \frac{d}{dx}\left(\frac{f(x)}{g(x)}\right) &= \frac{d}{dx}\left(f(x) \cdot \frac{1}{g(x)}\right)\\ &= f'(x)\cdot \frac{1}{g(x)} + f(x)\cdot \frac{d}{dx}\left(\frac{1}{g(x)}\right) \end{aligned}~ $$ 要计算 $1/g(x)$ 的导数,可以注意到它是函数 $g$ 与倒数函数(即 $x \mapsto 1/x$)的复合。倒数函数的导数是 $-1/x^2$。应用链式法则,上式变为: $$ f'(x)\cdot \frac{1}{g(x)} + f(x)\cdot \left(-\frac{1}{[g(x)]^2}\cdot g'(x)\right) = \frac{f'(x)g(x) - f(x)g'(x)}{[g(x)]^2},~ $$ 这就是商法则的常见公式。
设 $y = g(x)$ 有反函数,记其反函数为 $f$,则有:$x = f(y)$.存在一个公式可以用 $g$ 的导数表示 $f$ 的导数。为此,注意到 $f$ 与 $g$ 满足: $$ f(g(x)) = x.~ $$ 由于 $f(g(x))$ 与 $x$ 相等,它们的导数也必须相等。$x$ 的导数是常数函数 1,而 $f(g(x))$ 的导数由链式法则确定。因此我们得到: $$ f'(g(x)) \cdot g'(x) = 1.~ $$ 若要把 $f'$ 表示为自变量 $y$ 的函数,可以将 $x = f(y)$ 代入,得到: $$ f'(g(f(y))) \cdot g'(f(y)) = 1,~ $$ $$ f'(y) \cdot g'(f(y)) = 1,~ $$ $$ f'(y) = \frac{1}{g'(f(y))}.~ $$ 例子,考虑函数 $g(x) = e^x$。它的反函数是 $f(y) = \ln y$。由于 $g'(x) = e^x$,上式给出: $$ \frac{d}{dy}\ln y = \frac{1}{e^{\ln y}} = \frac{1}{y}.~ $$ 该公式在 $g$ 可导且其反函数 $f$ 也可导时成立。但如果其中一个条件不成立,该公式可能失效。
例如,考虑 $g(x) = x^3$。它的反函数是 $f(y) = y^{1/3}$,在 0 点不可导。如果我们试图用上式计算 $f$ 在 0 点的导数,需要计算:$1/g'(f(0))$ 由于 $f(0) = 0$ 且 $g'(0) = 0$,我们得到 $\tfrac{1}{0}$,这是未定义的。因此,该公式在此情形下失效。这并不奇怪,因为 $f$ 在 0 点确实不可导。
链式法则构成了反向传播算法的基础,该算法用于深度学习(人工智能)中神经网络的梯度下降【5】。
Faà di Bruno 公式将链式法则推广到了高阶导数。假设 $y = f(u)$,且 $u = g(x)$,那么前几阶导数为:
$$ \begin{aligned} \frac{dy}{dx} &= \frac{dy}{du} \cdot \frac{du}{dx},\\ \frac{d^2y}{dx^2} &= \frac{d^2y}{du^2}\left(\frac{du}{dx}\right)^2 + \frac{dy}{du}\cdot \frac{d^2u}{dx^2},\\ \frac{d^3y}{dx^3} &= \frac{d^3y}{du^3}\left(\frac{du}{dx}\right)^3 + 3\,\frac{d^2y}{du^2}\frac{du}{dx}\frac{d^2u}{dx^2} + \frac{dy}{du}\cdot \frac{d^3u}{dx^3},\\ \frac{d^4y}{dx^4} &= \frac{d^4y}{du^4}\left(\frac{du}{dx}\right)^4 + 6\,\frac{d^3y}{du^3}\left(\frac{du}{dx}\right)^2 \frac{d^2u}{dx^2} + \frac{d^2y}{du^2}\left(4\,\frac{du}{dx}\frac{d^3u}{dx^3} + 3\left(\frac{d^2u}{dx^2}\right)^2\right) + \frac{dy}{du}\cdot \frac{d^4u}{dx^4} \end{aligned}~ $$
链式法则的一个证明从复合函数 $f \circ g$ 的导数定义开始,即取 $f \circ g$ 的差商在 $x \to a$ 时的极限: $$ (f \circ g)'(a) = \lim_{x \to a} \frac{f(g(x)) - f(g(a))}{x - a}.~ $$ 暂且假设在 $a$ 附近的任意 $x$ 下,$g(x) \neq g(a)$。那么上式可以写成两个因子的乘积: $$ \lim_{x \to a} \frac{f(g(x)) - f(g(a))}{g(x) - g(a)} \cdot \frac{g(x) - g(a)}{x - a}.~ $$ 如果函数 $g$ 在点 $a$ 附近振荡,那么可能会出现这样的情况:无论多么接近 $a$,总能找到更接近 $a$ 的 $x$,使得 $g(x) = g(a)$。例如,当 $a=0$ 时,定义函数 $$ g(x) = \begin{cases} 0, & x=0, \\ x^2 \sin\left(1/x\right) , & x \neq 0, \end{cases}~ $$ 就会发生这种情况。
在这种情形下,上述表达式会因为分母为零而未定义。为了解决这一问题,引入如下函数 $Q$: $$ Q(y) = \begin{cases} \dfrac{f(y) - f(g(a))}{y - g(a)}, & y \neq g(a), \\[2ex] f'(g(a)), & y = g(a). \end{cases}~ $$ 我们将证明:复合函数 $f \circ g$ 的差商总是等于: $$ Q(g(x)) \cdot \frac{g(x) - g(a)}{x - a}.~ $$ 当 $g(x) \neq g(a)$ 时,这是显然的,因为分子分母中的 $g(x)-g(a)$ 可以约去。当 $g(x) = g(a)$ 时,$f(g(x)) = f(g(a))$,因此差商为零;而上式等于 $f'(g(a)) \cdot 0 = 0$,所以两者仍然相等。因此,上述乘积恒等于差商。要证明 $f \circ g$ 在 $a$ 处的导数存在并确定其值,我们只需要证明:当 $x \to a$ 时,上述乘积的极限存在并求出其值。
为此,回忆起:若两个因子的极限都存在,则其乘积的极限存在,且等于两个极限的乘积。这两个因子分别是:$Q(g(x))$,$(g(x)-g(a))/(x-a)$。第二个因子正是 $g$ 在 $a$ 处的差商,由于假设 $g$ 在 $a$ 处可导,其极限存在,且等于 $g'(a)$。
至于 $Q(g(x))$,注意 $Q$ 在 $f$ 定义的地方都有定义。而且由于假设 $f$ 在 $g(a)$ 处可导,因此 $Q$ 在 $g(a)$ 处连续(这是导数定义所保证的)。另一方面,因为 $g$ 在 $a$ 处可导,所以它在 $a$ 处连续,因此复合函数 $Q \circ g$ 在 $a$ 处连续。所以当 $x \to a$ 时,极限存在并等于 $Q(g(a)) = f'(g(a))$。
由此可见,这两个因子的极限都存在,且分别等于 $f'(g(a))$ 和 $g'(a)$。因此,复合函数 $f \circ g$ 在 $a$ 处的导数存在,并且等于:$(f \circ g)'(a) = f'(g(a)) \cdot g'(a)$.
证明链式法则的另一种方法是利用导数所决定的线性近似的误差来衡量。这种证明的优点在于它可以推广到多元函数。它依赖于以下关于函数在一点可微的等价定义:函数 $g$ 在 $a$ 处可微,若存在一个实数 $g'(a)$ 和一个函数 $\varepsilon(h)$,使得当 $h \to 0$ 时 $\varepsilon(h) \to 0$,并且满足: $$ g(a+h) - g(a) = g'(a)h + \varepsilon(h)h.~ $$ 其中,左边表示 $g$ 在 $a+h$ 与 $a$ 处取值的真实差异,而右边表示由导数决定的近似值,加上一个误差项。
在链式法则的情形下,这样的函数 $\varepsilon$ 存在,因为假设 $g$ 在 $a$ 可微。同样根据假设,在 $g(a)$ 处的 $f$ 也存在类似的函数。记这个函数为 $\eta$,则有: $$ f(g(a)+k) - f(g(a)) = f'(g(a))k + \eta(k)k.~ $$ 上述定义对 $\eta(0)$ 并没有限制,尽管假设 $\eta(k)$ 在 $k \to 0$ 时趋于 0。如果我们规定 $\eta(0) = 0$,那么 $\eta$ 在 0 处就是连续的。 思路的差别。
证明定理需要研究当 $h \to 0$ 时的差值 $f(g(a+h)) - f(g(a))$。第一步是利用 $g$ 在 $a$ 处的可微定义来代换 $g(a+h)$: $$ f(g(a+h)) - f(g(a)) = f(g(a) + g'(a)h + \varepsilon(h)h) - f(g(a)).~ $$ 下一步是利用 $f$ 在 $g(a)$ 处的可微定义。这需要一个形如 $f(g(a)+k)$ 的项,其中 $k$ 随 $h$ 变化。在上式中,合适的 $k$ 记为:$k_h = g'(a)h + \varepsilon(h)h$,那么右边就变成:$f(g(a)+k_h) - f(g(a))$.根据导数的定义,有: $$ f(g(a)+k_h) - f(g(a)) = f'(g(a))k_h + \eta(k_h)k_h.~ $$ 为了研究当 $h \to 0$ 时该式的行为,展开 $k_h$。重组项后,右边化为: $$ f'(g(a))g'(a)h + \bigl[f'(g(a))\varepsilon(h) + \eta(k_h)g'(a) + \eta(k_h)\varepsilon(h)\bigr]h.~ $$ 由于 $\varepsilon(h)$ 和 $\eta(k_h)$ 在 $h \to 0$ 时都趋于零,因此括号中前三项在 $h \to 0$ 时也趋于零。再根据与第一个证明相同的极限定理(乘积的极限),括号中最后一项同样趋于零。因此,上式等于差值 $f(g(a+h)) - f(g(a))$,根据导数的定义可得:复合函数 $f \circ g$ 在 $a$ 处可微,并且其导数为 $(f \circ g)'(a) = f'(g(a)) \cdot g'(a)$.
在这个证明中,$\eta$ 扮演了第一个证明里函数 $Q$ 的角色。它们的关系由下式给出: $$ Q(y) = f'(g(a)) + \eta(y-g(a)).~ $$ 在第一个证明里需要在 $g(a)$ 处定义 $Q$,这与这里需要在 0 处定义 $\eta$ 是类似的。
康斯坦丁·卡拉西奥多里提出的函数可微性的另一种定义,可以用于给出一个优雅的链式法则证明。[6]
在该定义下,函数 $f$ 在点 $a$ 处可微,当且仅当存在一个在 $a$ 处连续的函数 $q$,使得 $f(x) - f(a) = q(x)(x-a)$.这样的函数至多只有一个,并且如果 $f$ 在 $a$ 处可微,那么 $f'(a) = q(a)$。
在链式法则的假设下,并且利用 “可微函数是连续的函数,连续函数的复合仍然连续” 这一事实,我们有:存在两个函数 $q$(在 $g(a)$ 处连续)和 $r$(在 $a$ 处连续),使得 $$ f(g(x)) - f(g(a)) = q(g(x))(g(x) - g(a)),~ $$ 以及 $$ g(x) - g(a) = r(x)(x-a).~ $$ 因此: $$ f(g(x)) - f(g(a)) = q(g(x))r(x)(x-a).~ $$ 定义 $h(x) = q(g(x))r(x)$。由于 $h(x)$ 在 $a$ 处连续,我们得到: $$ (f(g(a)))' = q(g(a))r(a) = f'(g(a))g'(a).~ $$ 对于多元的连续可微(向量)函数,可以使用类似的方法。这种分解的方法还能推广到更强形式的可微性,比如要求导数满足利普希茨连续性、赫尔德连续性等。事实上,求导本身可以看作是多项式余式定理(小贝祖定理,或因式定理)在适当函数类中的推广。
若 $y = f(x), \quad x = g(t)$,则取一个无穷小量 $\Delta t \neq 0$,计算对应的:$\Delta x = g(t+\Delta t) - g(t)$,以及对应的:$\Delta y = f(x+\Delta x) - f(x)$,于是有: $$ \frac{\Delta y}{\Delta t} = \frac{\Delta y}{\Delta x} \cdot \frac{\Delta x}{\Delta t}.~ $$ 取其标准部分,得到: $$ \frac{dy}{dt} = \frac{dy}{dx} \cdot \frac{dx}{dt},~ $$ 这正是链式法则。
链式法则对多变量函数(例如 $f: \mathbb{R}^m \to \mathbb{R}^n$)的完整推广相当技术性。不过,在以下形式的函数情形下更容易书写: $$ f(g_{1}(x), \dots, g_{k}(x)),~ $$ 其中 $f: \mathbb{R}^k \to \mathbb{R},\quad g_i: \mathbb{R} \to \mathbb{R}, \quad i=1,2,\dots,k$.由于这种情形在单变量函数的研究中经常出现,因此值得单独加以说明。
设 $f: \mathbb{R}^k \to \mathbb{R}$,并且对每个 $i = 1, 2, \dots, k$,都有 $$ g_i: \mathbb{R} \to \mathbb{R}.~ $$ 为了写出如下复合函数的链式法则: $$ x \mapsto f(g_1(x), \dots, g_k(x)),~ $$ 需要用到 $f$ 对其 $k$ 个自变量的偏导数。通常偏导符号会涉及函数自变量的名称,但在上式中自变量并没有被命名,因此用 D-记号更为简洁和清晰。记 $D_i f$:$f$ 关于第 $i$ 个自变量的偏导;$D_i f(z)$:该偏导在点 $z$ 的取值。
在这种记号下,链式法则为: $$ \frac{d}{dx} f(g_1(x), \dots, g_k(x)) = \sum_{i=1}^k \left( \frac{d}{dx} g_i(x) \right) D_i f(g_1(x), \dots, g_k(x)).~ $$
例子:算术运算
若函数 $f$ 是加法,即 $$ f(u,v) = u+v,~ $$ 则 $$ D_{1}f = \frac{\partial f}{\partial u} = 1, \quad D_{2}f = \frac{\partial f}{\partial v} = 1.~ $$ 因此,链式法则给出: $$ \frac{d}{dx}(g(x)+h(x)) = \left(\frac{d}{dx} g(x)\right)D_{1}f + \left(\frac{d}{dx} h(x)\right)D_{2}f = \frac{d}{dx} g(x) + \frac{d}{dx} h(x).~ $$ 若函数是乘法: $$ f(u,v) = uv,~ $$ 则偏导为 $$ D_{1}f = v, \quad D_{2}f = u.~ $$ 于是: $$ \frac{d}{dx}(g(x)h(x)) = h(x)\frac{d}{dx}g(x) + g(x)\frac{d}{dx}h(x).~ $$ 若函数是幂运算: $$ f(u,v) = u^v,~ $$ 则稍微复杂一些: $$ D_{1}f = vu^{v-1}.~ $$ 又因为 $$ u^v = e^{v\ln u},~ $$ 所以 $$ D_{2}f = u^v \ln u.~ $$ 因此: $$ \frac{d}{dx}\bigl(g(x)^{h(x)}\bigr) = h(x) g(x)^{h(x)-1} \frac{d}{dx} g(x) + g(x)^{h(x)} \ln g(x)\, \frac{d}{dx} h(x).~ $$
在一般情况下,书写链式法则的最简单方式是使用**全导数(total derivative)**。全导数是一个线性变换,它能在一个公式中同时刻画所有方向导数。
设 $f: \mathbb{R}^m \to \mathbb{R}^k$,$g: \mathbb{R}^n \to \mathbb{R}^m$ 为可微函数,且 $a \in \mathbb{R}^n$。记 $D_a g$ 为 $g$ 在 $a$ 处的全导数,$D_{g(a)} f$ 为 $f$ 在 $g(a)$ 处的全导数。这两个导数分别是从 $\mathbb{R}^n \to \mathbb{R}^m$ 和从 $\mathbb{R}^m \to \mathbb{R}^k$ 的线性变换,因此可以复合。
链式法则在全导数意义下表述为: $$ D_a(f \circ g) = D_{g(a)} f \circ D_a g,~ $$ 简写为: $$ D(f \circ g) = Df \circ Dg.~ $$ 高维情形下的链式法则可用与 “第二个证明” 类似的技巧证明。[7]
由于全导数是一个线性变换,出现在公式中的函数可以用矩阵来表示。对应于全导数的矩阵称为雅可比矩阵。两个导数的复合正对应于它们雅可比矩阵的乘积。从这个角度看,链式法则可以写为: $$ J_{f \circ g}(a) = J_f(g(a)) J_g(a),~ $$ 简写为: $$ J_{f \circ g} = (J_f \circ g)\, J_g.~ $$ 也就是说,复合函数的雅可比矩阵等于组成函数的雅可比矩阵(在相应点处取值)的乘积。
高维链式法则是一维链式法则的推广。若 $k, m, n = 1$,即 $f : \mathbf{R} \to \mathbf{R}, g : \mathbf{R} \to \mathbf{R}$,则 $f$ 和 $g$ 的雅可比矩阵都是 $1 \times 1$。具体来说,它们分别为: $$ J_g(a) = \begin{pmatrix} g'(a) \end{pmatrix}, \quad J_f(g(a)) = \begin{pmatrix} f'(g(a)) \end{pmatrix}.~ $$ 复合函数 $f \circ g$ 的雅可比矩阵就是这两个 $1 \times 1$ 矩阵的乘积,即 $f'(g(a)) \cdot g'(a)$,这正是一维链式法则的结果。
从线性变换的角度看,$D_a g$ 是一个将向量按比例 $g'(a)$ 缩放的函数,而 $D_{g(a)} f$ 是一个将向量按比例 $f'(g(a))$ 缩放的函数。链式法则表明,这两个线性变换的复合就是 $D_a(f \circ g)$,也就是说,它将向量按 $f'(g(a)) \cdot g'(a)$ 的比例缩放。
另一种书写链式法则的方式是将 $f$ 和 $g$ 写成分量形式:$y = f(u) = (f_1(u), \dots, f_k(u)), \quad u = g(x) = (g_1(x), \dots, g_m(x))$.在这种情况下,上述雅可比矩阵的规则通常写为: $$ \frac{\partial(y_1, \dots, y_k)}{\partial(x_1, \dots, x_n)} = \frac{\partial(y_1, \dots, y_k)}{\partial(u_1, \dots, u_m)} \frac{\partial(u_1, \dots, u_m)}{\partial(x_1, \dots, x_n)}.~ $$ 全导数的链式法则蕴含了偏导数的链式法则。回忆一下,当全导数存在时,关于第 $i$ 个坐标方向的偏导可以通过将雅可比矩阵与第 $i$ 个基向量相乘得到。对上述公式执行这一操作,可得: $$ \frac{\partial(y_1, \dots, y_k)}{\partial x_i} = \frac{\partial(y_1, \dots, y_k)}{\partial(u_1, \dots, u_m)} \frac{\partial(u_1, \dots, u_m)}{\partial x_i}.~ $$ 由于雅可比矩阵中的元素就是偏导数,上式可以化简为: $$ \frac{\partial(y_1, \dots, y_k)}{\partial x_i} = \sum_{\ell=1}^m \frac{\partial(y_1, \dots, y_k)}{\partial u_\ell} \frac{\partial u_\ell}{\partial x_i}.~ $$ 从概念上看,这一规则表明:在 $x_i$ 方向的一个变化,可能会引起 $g_1, g_2, \dots, g_m$ 的变化,而这些变化中的任意一个都可能进一步影响 $f$。
在特殊情形下,当 $k = 1$,即 $f$ 是一个实值函数时,公式可以进一步简化为: $$ \frac{\partial y}{\partial x_i} = \sum_{\ell=1}^m \frac{\partial y}{\partial u_\ell} \frac{\partial u_\ell}{\partial x_i}.~ $$ 这可以改写为一个点积形式。回忆 $u = (g_1, \dots, g_m)$,则偏导 $\partial u / \partial x_i$ 也是一个向量。于是链式法则可以写为: $$ \frac{\partial y}{\partial x_i} = \nabla y \cdot \frac{\partial \mathbf{u}}{\partial x_i}.~ $$
例子
已知 $u(x, y) = x^2 + 2y$,其中 $x(r, t) = r \sin\left(t\right) , \quad y(r, t) = \sin^2(t)$,利用链式法则求 $\partial u/\partial r$ 和 $\partial u/\partial t$。
对 $r$ 的偏导数: $$ \frac{\partial u}{\partial r} = \frac{\partial u}{\partial x}\frac{\partial x}{\partial r} + \frac{\partial u}{\partial y}\frac{\partial y}{\partial r} = (2x)( \sin\left(t\right) ) + (2)(0) = 2r\sin^2(t).~ $$ 对 $t$ 的偏导数: $$ \begin{aligned} \frac{\partial u}{\partial t} &= \frac{\partial u}{\partial x}\frac{\partial x}{\partial t} + \frac{\partial u}{\partial y}\frac{\partial y}{\partial t} \\ &= (2x)(r \cos\left(t\right) ) + (2)(2 \sin\left(t\right) \cos\left(t\right) ) \\ &= (2r \sin\left(t\right) )(r \cos\left(t\right) ) + 4 \sin\left(t\right) \cos\left(t\right) \\ &= 2(r^2+2) \sin\left(t\right) \cos\left(t\right) \\ &= (r^2+2) \sin\left(2t\right) . \end{aligned}~ $$ 多元函数的高阶导数
单变量函数的高阶导数公式——Faà di Bruno 公式——可以推广到多变量情形。若 $y = f(u), \quad u = g(x)$ 与前述相同,则复合函数 $f \circ g$ 的二阶导数为: $$ \frac{\partial^2 y}{\partial x_i \partial x_j} = \sum_{k} \left( \frac{\partial y}{\partial u_k} \frac{\partial^2 u_k}{\partial x_i \partial x_j} \right) + \sum_{k,\ell} \left( \frac{\partial^2 y}{\partial u_k \partial u_\ell} \frac{\partial u_k}{\partial x_i} \frac{\partial u_\ell}{\partial x_j} \right).~ $$
所有微积分的扩展形式都有链式法则。在大多数情况下,公式保持不变,但该公式的含义可能有很大差异。
一种推广是到流形。在这种情形下,链式法则表示的事实是:$f \circ g$ 的导数是 $f$ 的导数与 $g$ 的导数的复合。这个定理是前面高维链式法则的直接推论,并且其公式完全相同。
链式法则同样适用于巴拿赫空间中的 Fréchet 导数。此时公式依旧成立【8】。这种情形和前一种情形可以同时推广到巴拿赫流形。
在微分代数中,导数被解释为 Kähler 微分模的态射。交换环的环同态 $f : R \to S$ 确定了一个 Kähler 微分的态射 $Df : \Omega_R \to \Omega_S$,它把元素 $dr$ 映射到 $d(f(r))$,即 $f(r)$ 的外微分。在这种语境下,公式 $D(f \circ g) = Df \circ Dg $ 同样成立。
这些例子的共同点在于,它们都体现了 “导数是函子的一部分” 这一思想。函子是对空间及其间函数的一种运算:它将每个空间关联到一个新的空间,并将两个空间之间的函数关联到新空间之间的一个函数。在以上每种情况下,函子把每个空间送到它的切丛,并把每个函数送到它的导数。例如,在流形的情形中,导数把一个 $C^r$-流形送到一个 $C^{r-1}$-流形(它的切丛),并把一个 $C^r$-函数送到它的全导数。要使其成为函子,有一个要求:复合函数的导数必须等于各自导数的复合。这正是公式 $D(f \circ g) = Df \circ Dg$ 所表达的内容。
在随机微积分中也存在链式法则。其中之一是伊藤引理,它描述了一个伊藤过程(或更一般的半鞅)$dX_t$ 与一个二阶可微函数 $f$ 的复合。在伊藤引理中,复合函数的导数不仅依赖于 $dX_t$ 和 $f$ 的一阶导数,还依赖于 $f$ 的二阶导数。对二阶导数的依赖来自于随机过程的非零二次变差,这大体上意味着该过程可以以非常 “粗糙” 的方式上下波动。这种链式法则的变体不是函子的一个例子,因为被复合的两个对象属于不同的类型。