複合函數

複合函數（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`。