复合函数

复合函数（composite function），又称作合成函数，在数学中是指逐点地把一个函数作用于另一个函数的结果，所得到的第三个函数。例如，函数 $f: X\rightarrow Y$ 和 $g:Y\rightarrow Z$ 可以复合，得到从 $X$ 中的 $x$ 映射到 $Z$ 中 $g(f(x))$ 的函数。直观来说，如果 $z$ 是 $y$ 的函数，$y$ 是 $x$ 的函数，那么 $z$ 是 $x$ 的函数，得到的复合函数记作 $g \circ f:X\rightarrow Z$，定义为对 $X$ 中的所有 $x$，$(g \circ f)(x)=g(f(x))$。直观地说，复合两个函数是把两个函数链接在一起的过程，内函数的输出就是外函数的输入。

函数的复合是关系复合的一个特例，因此复合关系的所有性质也适用于函数的复合。复合函数还有一些其他性质。

## 定义

考虑到函数的值域跟定义域，要简单的以“计算式”，如把所有 $(x,\,x+1)$ 和 $(y,\,\sqrt{y})$ 的有序对头接尾的这样直观定义“合成”是会遇到问题的，像是把 $x$ 取为实数，这样把 $x+1$ 很自然的对接到 $y$ 然后开根号成 $\sqrt{y}$，是会遇到对负数开根号，出现非单一值的问题（请参见棣莫弗公式），就算不考虑单一值的问题，我们期望的“合成函数”的值域到底该不该包含复数呢？所以 (1) 我们一开始就要把准备“合成”的两个函数的值域跟定义域划分清楚 (2) 要考虑到对接的时候，前面的值域跟后面的值域不一定相等的问题。

设我们有两个函数 $f$ 和 $g$，两者的定义域分别是 $D_f$ 和 $D_g$，值域分别是 $I_f$ 和 $I_g$。如果 $I_f\cap D_g \neq \varnothing$，那我们定义合成函数为

$$g\circ f:=\{(x,\,z)\,|\, (\exists y\in I_f\cap D_g)[y=f(x) \wedge z=g(y)] \}$$

直观上来说，如果 $f$ 的“输出范围”是有一部分在 $g$ 的“输入范围”，那我们就可以定义“先作用 $f$ 再作用 $g$ ”的函数，但这个“新合成”的函数的定义域可能会因此被限缩（输出值处在两者交集的那些 $x$ 而已）。注意到每个 $x$ 只会有一个输出值 $y$，而每个 $y$ 只会有一个输出值 $z$，所以这样“先作用 $f$ 再作用 $g$ ”的话，每个 $x$ 只会有一个输出值 $z$ 而已，这确保了 $g\circ f$ 符合我们对函数的要求。

<image>

当 $g\circ f = f\circ g$ 时（注意这是集合的相等！），我们会说 $g$ 和 $f$ 是可交换的。

两个一对一函数的合成函数也是一对一的。

涉及到可导函数的复合函数的导数，可以用链式法则求得。Faà di Bruno公式给出了复合函数的高阶导数的表达式。

## 例子

<image>

<image>

- 有限集上的函数复合：若 $f=\{(1,3),(2,1),(3,4),(4,6)\}$，$g=\{(1,5),(2,3),(3,4),(4,1),(5,3),(6,2)\}$，则 $g \circ f=\{(1,4),(2,5),(3,1),(4,2)\}$.
- 无限集上的函数复合：若 $f:\mathbb{R}\rightarrow\mathbb{R}$ （其中 $\mathbb{R}$ 是所有实数的集合）表达式为 $f(x)=2x+4$，而 $g:\mathbb{R}\rightarrow\mathbb{R}$ 表达式为 $g(x)=x^3$，则：

$(f \circ g)(x)=f(g(x))=f(x^3)=2x^3+4$，且

$(g \circ f)(x)=g(f(x))=g(2x+4)=(2x+4)^3$.

- 如果一架飞机在 $t$ 时刻的海拔为 $h(t)$，而海拔 $x$ 处的氧气浓度为 $c(x)$，那么 $(c \circ h)(t)$ 描述了 $t$ 时刻飞机周围的氧气浓度。

## 复合幺半群

假设我们有两个（或多个）函数 $f:X\rightarrow X$， $g:X\rightarrow X$，定义域与到达域相同；这些函数一般称作变换。于是，我们可以构造多个变换复合而成的链，比如 $f \circ f \circ g \circ f$。这种链具有幺半群的代数结构，称作变换幺半群或者复合幺半群。通常，变换幺半群可以具有非常复杂的结构。一个很有名的例子是德拉姆曲线。所有函数 $f:X\rightarrow X$ 的集合称作 $X$ 上的全变换半群或对称半群。（我们其实可以定义两个半群，这取决于定义半群运算为函数左复合和右复合的方式。）

<image>

如果变换是双射（也就可逆），则这些函数所有可能的组合就构成了一个变换群；可以说这个群是由这些函数生成的。这就引出了群论里面的凯莱定理从本质上表明，（在同构意义下）任何群都是某一置换群的子群。

所有双射函数 $f:X\rightarrow X$（称作置换）的集合构成了一个关于复合算子的群。这就是对称群，有时称作复合群。

在（所有变换的）对称半群中，我们还可以发现一个较弱的、非唯一的逆变换（称作伪逆），因为对称子群是一个正则半群。

## 函数幂

如果 $Y \subseteq X$，则 $f:X \rightarrow Y$ 有可能可以与自身复合；这有时候记作 $f^2$。即：

$$(f \circ f)(x)=f(f(x))=f^2(x)$$

$$(f \circ f\circ f)(x)=f(f(f(x)))=f^3(x)$$

$$(f \circ f\circ f \circ f)(x)=f(f(f(f(x))))=f^4(x)$$

更一般地，对于 $n \geq 2$ 的自然数，$n$ 次函数幂可以归纳定义为 $f^n=f \circ f^{n-1}=f^{n-1} \circ f$。这种函数与自身的反复复合称作迭代函数。

- 习惯上，$f^0$ 定义为 $f$ 定义域上的恒同映射，$id_X$.
- 如果 $Y=X$，而 $f:X\rightarrow X$ 存在反函数 $f^{-1}$，那么对于 $n>0$，负函数幂 $f^{-n}$ 定义为反函数的幂：$f^{-n}=(f^{-1})^n$。

注意：若 $f$ 在一个环内取值（特别是对于实值或复值 $f$），存在混淆的风险，因为 $f^n$ 也可以表示 $f$ 的 $n$ 次乘积，比如 $f^2(x)=f(x) \cdot f(x)$。对于三角函数，通常会使用后者的含义，至少对于正指数是这样。例如，在三角学中，使用三角函数 $\sin^2(x)=\sin(x)\cdot \sin(x)$ 的时候，这个上标记号表示标准的指数运算。不过，对于负指数（特别是 −1），则通常指的是反函数，例如，$\tan^{-1}=\arctan\neq \frac{1}{\tan}$.

在一些情况下，对于给定函数 $f$，方程 $g \circ g=f$ 只有一个解 $g$ 的时候，该函数可以定义为 $f$ 的函数平方根，记作 $g=f^{\frac{1}{2}}$.

更一般地，当 $g^n=f$ 只有唯一解时（自然数 $n>0$），$f^{\frac{m}{n}}$可以定义为 $g^m$.

在额外的限制下，这个想法还可以推广，使得迭代函数可以是一个连续的参数；在此情形下，这样的系统称作流，由施罗德方程定义。迭代函数和流很自然地出现在分形和动力系统的研究中。

为避免混淆，有些数学家把 $f$ 的 $n$ 次迭代写作 $f^{\circ n}$.

## 其他记法

许多数学家，特别是群论方面的数学家，省去复合符号，把 $g \circ f$ 写作 $gf$.

在20世纪中叶，一些数学家认为用“$g \circ f$”来表示“首先施加 $f$，然后施加 $g$”太令人困惑，于是决定改变记法。他们用“$xf$”来代表“$f(x)$”，用“$(xf)g$”来代表“$g(f(x))$”。这在某些领域会比函数写在左面更加自然和简便—比如在线性代数中，当 $x$ 为行向量，$f$ 和 $g$ 表示矩阵，而复合是通过矩阵乘法完成的时候。这种替代记法称作后缀表示法。顺序很重要，因为函数复合不一定是可交换的（比如矩阵乘法）。向右进行施加函数和复合的写法复合从左到右的阅读顺序。

使用后缀表示法的数学家可能会写“$fg$”，表示先施加 $f$ 再施加 $g$，这样就能与后缀表示法中的符号的顺序保持一致，不过这就会让“$fg$”这个记号有歧义了。计算机科学家可能用 $f;g$ 来表示 1，这样就能区分出复合的顺序了。要把左复合算子和文本分好区分开来，在Z表示法（Z notation）中 ⨾ 字符用于左关系复合。由于所有函数都是二元关系，在函数复合中也应该用粗分号（参见 关系复合条目了解此记法的详细内容）。

## 复合算子

给定函数 $g$，复合算子 $C_g$ 定义为使得

$$C_g f = f \circ g.$$

从函数映射到函数的算子。在算子理论领域会研究复合算子。

## 多元函数

对于多元函数来说，部分复合是有可能的。当函数 $f$ 的部分参数 $x_i$ 由 $g$ 换掉后得到的结果在一些计算机工程文献中，记作 $f|_{x_i=g}$

$$f|_{x_i = g} = f (x_1, \ldots, x_{i-1}, g(x_1, x_2, \ldots, x_n), x_{i+1}, \ldots, x_n).$$

当 $g$ 是一个常数 $b$ 时，复合退化为一个（部分）求值，其结果就会是限制或者辅因子。

$$f|_{x_i = b} = f (x_1, \ldots, x_{i-1}, b, x_{i+1}, \ldots, x_n).$$

通常，多元函数的复合可能涉及若干其他函数作为参数，如原始递归函数的定义。给定 $f$，一个 $n$ 元函数，$n$ 个 $m$ 元函数 $g_1,\cdots,g_n$，$f$ 与 $g_1,\cdots,g_n$ 的复合是 $m$ 元函数

$h(x_1,\ldots,x_m) = f(g_1(x_1,\ldots,x_m),\ldots,g_n(x_1,\ldots,x_m))$.

这有时称作 $f$ 与 $g_1,\cdots,g_n$ 的广义复合。在这个一般化的情形中，可以通过把所有这些用作参数的函数合适地选为射影函数，只保留一个参数函数，就能得到前面提到的只有一个参数部分复合的函数。还要注意，在这个一般化情形中，$g_1,\cdots,g_n$ 可以看作是单个向量或元组值函数，这样理解的话，这就是复合函数的标准定义。

某些基本集 $X$ 上的一些有限性运算称作克隆，它们需要包含所有射影，并且在广义复合下封闭。请注意，克隆通常包含各种元数（arity）的运算。交换的概念在多元情形中叶有一个有意思的推广：如果元数 $n$ 的函数 $f$ 是保持 $g$ 的同态函数（$g$ 的元数为 $m$），则可以说 $f$ 与 $g$ 是可交换的，反之亦然。例如：

$f(g(a_{11},\ldots,a_{1m}),\ldots,g(a_{n1},\ldots,a_{nm})) = g(f(a_{11},\ldots,a_{n1}),\ldots,f(a_{1m},\ldots,a_{nm}))$.

一元运算总是与自己可交换，但二元（或者更多元）运算不一定如此。与自身可交换的二元（或更多元）运算称为medial或entropic。

## 推广

复合可以推广到任意二元关系。若 $R \subseteq X \times Y$ 与 $S \subseteq Y \times Z$ 是两个二元关系，则它们的复合 $S \circ R$ 是定义为 $\{(x,z) \in X \times Z: \exists y \in Y. (x,y) \in R \land (y,z) \in S\}$. 考虑二元关系的一个特殊情形（函数关系），复合函数满足关系复合的定义。

偏函数的复合可是用相同方式定义的定义，有一个类似凯莱定理（Cayley's theorem）的定理叫做Wagner-Preston定理。

具有态射函数的集合范畴叫做原型范畴（prototypical category）。范畴的公理实际上受到了复合函数的性质（和定义）启发。由复合形成的结构在范畴论中被公理化和推广，函数的概念换成了范畴论中的态射。公式 $(f \circ g)^{-1}=(g^{-1} \circ f^{-1})$ 中的反序复合，同样适用于使用逆关系的关系复合，因此在群论中也适用。这些结构形成了dagger范畴。

## 排版

参见度数符号条目中外观类似的Unicode字符。在TeX中，写作`\circ`。