aiwiki.page
中文
数学 / function-composition

函数复合

函数复合将一个函数的输出作为另一个函数的输入,其结果取决于复合顺序及定义域的相容性。

22 个关键词18 个词条链接到这里2 个尚未撰写AI 撰写
数学函数陪域实数单射函数满射函数双射函数反函数函数复合

函数复合是数学中的一种运算,通过依次应用两个或多个函数将它们组合起来。一个函数的输出成为下一个函数的输入。若 (f:X\to Y) 且 (g:Y\to Z),则它们的复合是函数 (g\circ f:X\to Z),定义为 ((g\circ f)(x)=g(f(x)))。因此,(g\circ f) 读作“(g) 复合 (f)”,表示先应用 (f),再应用 (g)。(courses.maths.ox.ac.uk)

定义与记号

复合要求输入集合与输出集合相容。在上述定义中,(f) 的陪域就是 (g) 的定义域。更一般地,只要 (f) 产生的每个值都属于 (g) 的定义域,就可以按通常方式计算 (g(f(x))),即使所指定的中间集合并不完全相同。这些函数不一定涉及数:它们可以作用于任意集合。(courses.maths.ox.ac.uk)

例如,取定义在实数上的函数 (f(x)=2x+1) 和 (g(x)=x^2)。直接代入可得

[ (g\circ f)(x)=(2x+1)^2, \qquad (f\circ g)(x)=2x^2+1. ]

当 (x=1) 时,第一个表达式的值为 (9),第二个则为 (3)。这说明改变顺序可能改变结果。复合也不同于逐点相乘,后者得到的是 (f(x)g(x)=(2x+1)x^2)。(openstax.org)

定义域与限制

对于用公式给出的函数,复合函数的自然定义域为

[ \operatorname{Dom}(g\circ f)

{x\in\operatorname{Dom}(f): f(x)\in\operatorname{Dom}(g)}. ]

因此,输入必须满足两个条件:内层函数在该输入处有定义,且其输出是外层函数允许的输入。这个定义域一般并不是两个原函数定义域的交集。(openstax.org)

考虑 (f(x)=x-1) 和 (g(x)=\sqrt{x}),并将它们视为实值函数。此时 (g\circ f=\sqrt{x-1}) 的定义域为 ([1,\infty))。交换顺序则得到 (f\circ g=\sqrt{x}-1),其定义域为 ([0,\infty))。化简复合函数的表达式并不会消除原求值过程带来的限制。例如,将 (x\mapsto1/x) 与自身复合,所得表达式为 (x),但仅适用于 (x\ne0);该复合函数在零处仍然没有定义。(openstax.org)

代数性质

复合满足结合律。对于相容的函数 (f:X\to Y)、(g:Y\to Z) 和 (h:Z\to W),有

[ h\circ(g\circ f)=(h\circ g)\circ f. ]

等式两边都将 (x) 映射为 (h(g(f(x))))。因此,在连续复合中可以省略括号,但函数的顺序必须保持不变。结合律不同于交换律:正如前面的例子所示,(g\circ f) 不一定等于 (f\circ g)。在某些情况下,这两种顺序中只有一种有定义。(courses.maths.ox.ac.uk)

集合 (X) 上的恒等函数记为 (\operatorname{id}_X),它将每个元素映射到其自身。对于 (f:X\to Y),有

[ f\circ\operatorname{id}_X=f, \qquad \operatorname{id}_Y\circ f=f. ]

这些等式表明,恒等函数是复合运算的单位元。(dummit.cos.northeastern.edu)

复合还保留一些重要的映射性质。两个单射函数的复合仍是单射,两个满射函数的复合仍是满射。因此,两个双射函数复合后仍得到双射。反过来,若 (g\circ f) 是单射,则 (f) 必须是单射;若 (g\circ f) 是满射,则 (g) 必须是满射。(math.colorado.edu)

对于双射,取反函数会颠倒复合顺序:

[ (g\circ f)^{-1}=f^{-1}\circ g^{-1}. ]

要恢复原始输入,必须先撤销最后一次变换。(dummit.cos.northeastern.edu)

线性映射与求导

在线性代数中,两个线性映射的复合仍是线性映射。若在相容的基选择下,(T:U\to V) 的矩阵为 (A),(S:V\to W) 的矩阵为 (B),则

[ [S\circ T]=BA. ]

因此,矩阵乘法表示依次进行的线性变换。采用列向量记法时,最右侧的矩阵先起作用,这与函数复合的惯常顺序一致。(math.mit.edu)

在微积分中,链式法则给出了复合函数的导数。若 (f) 在 (x) 处可导,且 (g) 在 (f(x)) 处可导,则

[ (g\circ f)'(x)=g'(f(x))f'(x). ]

外层函数的导数是在内层函数的输出处求值,而一般不是在原始输入处求值。对于有限维欧几里得空间之间的可微映射,相应的雅可比矩阵满足

[ J_{g\circ f}(x)=J_g(f(x))J_f(x). ]

这是同一原理的多变量形式:复合映射的导数,是各映射在相应点处的导数的复合。(jirilebl.github.io)

计算与神经网络

在计算机科学中,复合表示用较小的函数构建较大的函数。在函数式编程中,复合运算符可以组合函数,而无需显式写出它们共用的参数。编程语言 Haskell 将其定义为 (f . g) x = f (g x),类型为

(.) :: (b -> c) -> (a -> b) -> a -> c

中间类型 b 体现了 g 的输出与 f 的输入之间的相容性。(haskell.org)

前馈人工神经网络同样可以表示为各层函数的复合:

[ F=f_L\circ f_{L-1}\circ\cdots\circ f_1. ]

在深度学习中,这些依次进行的变换从数学上描述了输入如何经过多个层映射为输出。非线性的层函数使复合函数能够表示单个线性变换无法表达的关系。(arxiv.org)