复合函数与反函数
前两章里,函数已经不只是“把 x 代进去算”的式子。它可以表示一个输入怎样变成输出,也可以用图像说明变化趋势。本章要把这种观点再推进一步:有时一个输出会立刻成为另一个函数的输入;有时我们还想倒过来,从结果追问原来的输入。
复合函数回答的是“连续做两件事会怎样”。反函数回答的是“如果知道结果,能不能唯一地找回原来的输入”。这两个问题看起来一正一反,其实都在训练同一件事:认真追踪输入、输出和允许使用的范围。
从流水线看复合函数
复合函数最自然的画面是一条流水线。输入 x 先经过函数 g,得到输出 g(x);这个输出再作为新的输入进入函数 f,最后得到 f(g(x))。

复合函数把一个函数的输出接到另一个函数的输入上,顺序写在符号里。
用符号写,就是:
(f∘g)(x)=f(g(x))
这里的 f∘g 读作“f 复合 g”。注意右边的 g(x) 离 x 最近,所以先做 g,再做 f。符号从左到右读,计算却要从里面往外走。
例如:
f(u)=2u+1,g(x)=x2−3
那么:
(f∘g)(x)=f(x2−3)=2(x2−3)+1=2x2−5
反过来:
(g∘f)(x)=g(2x+1)=(2x+1)2−3
这两个结果一般不同。取 x=2 时,先做 g 再做 f 得到 3,先做 f 再做 g 得到 22。这说明复合函数不是普通乘法,不能随便交换顺序。
f(g(x)) 中的括号不是装饰。它说明 g(x) 整个结果会被送进 f。把 f(g(x)) 看成 f(x)g(x),或者把 f∘g 当成 g∘f,都会改变题目的意思。
定义域不是最后才补
复合函数的定义域要看两道关口。第一道关口是 x 本身必须能进入内层函数 g;第二道关口是 g(x) 这个输出必须能进入外层函数 f。

判断 f(g(x)) 是否有定义,要同时检查 x 和中间输出 g(x)。
因此:
Df∘g={x∈Dg∣g(x)∈Df}
这句话很短,但常常是复合函数最容易丢分的地方。不能只看最后化简出来的式子,也不能只看内层函数。必须把输入完整地送过流水线。
先看一个根式例子:
f(u)=u−1,g(x)=x2−4
内层函数 g 对所有实数都有定义,但外层函数 f 要求输入满足 u−1≥0,也就是 u≥1。所以我们要让:
g(x)≥1
也就是:
x2−4≥1
得到:
x≤−5或x≥5
所以 f(g(x)) 的定义域是:
(−∞,−5]∪[5,∞)
再看一个分式例子:
f(u)=u−31,g(x)=x−12x
第一道关口要求 x=1。第二道关口要求 g(x)=3,因为 f 不能接收 3:
x−12x=3
解这个限制:
2x=3x−3
所以:
x=3
合起来,f(g(x)) 的定义域是所有实数,但排除 1 和 3。
如果复合后出现可以约掉的因式,原来函数的限制仍然不能随便消失。定义域来自“原来的流水线能不能走通”,不是只来自最终化简后的外观。
分解复合函数
有时题目给出的不是 f 和 g,而是一个看起来比较复杂的函数。分解复合函数,就是把它看成“内层先做什么,外层再做什么”。

分解复合函数时,先找离 x 最近的操作,再找包在外面的操作。
例如:
F(x)=3x−1
可以把它分成:
g(x)=3x−1,f(u)=u
于是:
F(x)=f(g(x))
这里内层函数负责把 x 变成 3x−1,外层函数负责对这个结果开平方。
再看一个稍微长一点的例子:
H(x)=(x2+15)4
一种自然的分解是:
g(x)=x2+15,f(u)=u4
于是:
H(x)=f(g(x))
分解不一定唯一。例如 3x−1 也可以拆成更多层:先算 3x,再减 1,再开平方。选择哪种拆法,要看题目要你做什么。如果只是说明复合结构,两层就够;如果后面要研究定义域、反函数或变化率,分得更细可能更有帮助。
先找最靠近 x 的操作。若表达式是 3x−1,离 x 最近的是 3x−1 这一整块,所以可以把它当成内层输出。
再看外层怎样处理这块输出。这里外层是“开平方”,所以外层函数可以写成 f(u)=u。
最后代回检查。把 g(x)=3x−1 放入 f(u)=u,得到 f(g(x))=3x−1,与原函数一致。
反函数:把输出当成新的输入
复合函数是把函数接起来。反函数则像把一台函数机器反向运行:原函数把 a 送到 b,反函数就把 b 送回 a。

反函数不是倒数,而是把原函数的输入和输出关系反过来。
如果 f(a)=b,并且这个 b 只来自唯一的 a,那么可以定义:
f−1(b)=a
这就是反函数的核心。它不是说把式子里的 x 和 y 机械交换,而是说原来由输入推出输出,现在由输出找回输入。
当 f 和 f−1 真的是一对反函数时,它们会互相抵消:
f−1(f(x))=x
同时:
f(f−1(y))=y
这两条式子都有定义域条件。第一条里的 x 必须在 f 的定义域内;第二条里的 y 必须在 f 的值域内,也就是 f−1 的定义域内。
一个日常例子是温度换算。若用 F 表示华氏温度,用 C 表示摄氏温度,可以把“华氏转摄氏”的函数记为 c:
c(F)=95(F−32)
这个函数把华氏温度变成摄氏温度。反过来,如果知道摄氏温度,要找原来的华氏温度,就解:
C=95(F−32)
得到:
F=59C+32
所以反函数可以写成:
c−1(C)=59C+32
如果为了统一书写,也常把输入变量重新命名为 x:
c−1(x)=59x+32
f−1(x) 中的 −1 不是指数 −1。一般情况下,f−1(x) 不等于 f(x)1。前者是反函数,后者是函数值的倒数。
怎样求反函数
求反函数时,最可靠的语言是“把输出当成已知,解出原来的输入”。下面用线性函数示范完整过程。
题目:求 f(x)=3x−5 的反函数。
先把输出写成一个临时变量。令 y=3x−5,这表示原函数把输入 x 送到输出 y。
现在反过来,把 y 看成已知结果,解出原来的 x。由 y=3x−5 得到 y+5=3x。
继续解得 x=3y+5。这说明如果输出是 y,原来的输入就是 3y+5。
因此反函数可以写成 f−1(y)=3y+5。为了使用习惯,也可以把自变量改名为 x,写成 f−1(x)=3x+5。
代回检查:
f−1(f(x))=3(3x−5)+5=x
反过来也要成立:
f(f−1(x))=3⋅3x+5−5=x
两边都能化成 x,说明这两个函数确实互为反函数。
水平线检验与定义域限制
不是每个函数都有反函数。关键问题是:一个输出能不能唯一找回一个输入。
如果不同的输入给出同一个输出,反过来就会出现“一个输入对应多个输出”的关系,这不再是函数。例如 f(x)=x2 在全体实数上不是一对一的,因为:
f(2)=4,f(−2)=4
如果只知道输出是 4,原来的输入可能是 2,也可能是 −2,无法唯一找回。

水平线如果能与图像交两次,就说明某个输出来自两个输入,反关系不是函数。
图像上判断一对一函数,可以用水平线检验:任意水平线与图像最多相交一次,函数才是一对一的,才有反函数。
竖线检验检查的是“这是不是一个函数”:同一个 x 不能对应多个 y。水平线检验检查的是“它能不能反过来仍是函数”:同一个 y 不能来自多个 x。
有些函数本身不是一对一,但可以通过限制定义域得到反函数。平方函数就是最典型的例子。把 f(x)=x2 的定义域限制为 x≥0,它在这个半边上是递增的,通过水平线检验,因此有反函数:
f−1(x)=x
这里必须同时写清楚定义域和值域:
f:[0,∞)→[0,∞),f(x)=x2
于是:
f−1:[0,∞)→[0,∞),f−1(x)=x
如果把原函数限制为 x≤0,得到的反函数会是:
f−1(x)=−x
这不是矛盾。因为这两个反函数对应的是两个不同的受限原函数。
图像中的反函数
反函数图像最重要的特征,是关于直线 y=x 对称。

原函数上一点 (a,b) 反过来会成为反函数上的点 (b,a)。
如果点 (a,b) 在 y=f(x) 上,就表示 f(a)=b。反函数把 b 送回 a,所以 (b,a) 在 y=f−1(x) 上:
(a,b)∈y=f(x)⟺(b,a)∈y=f−1(x)
把所有点都这样交换坐标,图像就会沿着 y=x 翻折。直线 y=x 上的点满足横坐标等于纵坐标,所以翻折后不动。
这也解释了为什么反函数会交换定义域和值域。原函数的横向范围变成反函数的纵向范围;原函数的纵向范围变成反函数的横向范围。
例题串讲
例题:验证一对反函数
题目:证明 f(x)=2x−3 与 g(x)=2x+3 互为反函数。
先算 f(g(x))。把 g(x)=2x+3 放入 f,得到 f(g(x))=2⋅2x+3−3。
化简得到 f(g(x))=x+3−3=x。这说明先做 g 再做 f 可以回到原输入。
再算 g(f(x))。把 f(x)=2x−3 放入 g,得到 g(f(x))=2(2x−3)+3。
化简得到 g(f(x))=x。两个方向都成立,所以 f 与 g 互为反函数。
例题:求复合函数定义域
题目:设 f(u)=u+2,g(x)=3−x,求 f(g(x)) 的定义域。
内层函数 g(x)=3−x 对所有实数都有定义,所以第一道关口没有排除值。
外层函数 f(u)=u+2 要求 u+2≥0,也就是 u≥−2。
中间输出是 g(x)=3−x,所以要满足 3−x≥−2。
解得 x≤5。因此复合函数的定义域是 (−∞,5]。
例题:限制定义域后求反函数
题目:求 h(x)=(x−2)2+1 在 x≥2 上的反函数。
先注意限制。x≥2 时,x−2≥0,函数在这一半边递增,可以有反函数。
令 y=(x−2)2+1,把输出 y 看成已知,解原来的输入 x。
得到 y−1=(x−2)2。由于原函数限制为 x≥2,所以 x−2≥0,取正平方根。
因此 x=2+y−1。反函数是 h−1(y)=2+y−1,通常写成 h−1(x)=2+x−1。
原函数的最小值是 1,所以反函数的定义域是 [1,∞),值域是 [2,∞)。
常见误区
- 把 f(g(x)) 当成 f(x)g(x)。复合是“把输出送进另一个函数”,不是两个函数值相乘。
- 忘记顺序。f∘g 是先做 g 再做 f,通常不等于 g∘f。
- 只看化简后的式子来写定义域。复合函数的定义域要看原来的每一道输入关口。
- 把 f−1(x) 看成 f(x)1。反函数和倒数是两件事。
- 求反函数后不写定义域。尤其是平方、根式和分式函数,公式看起来对,但范围可能已经错了。
- 只验证 f(g(x))=x,没有验证 g(f(x))=x。两个方向都要检查,且要注意各自的定义域。
- 对非一对一函数直接写反函数。完整的抛物线、绝对值函数等通常要先限制定义域。
- 把“交换 x 和 y”当成全部理解。真正的含义是交换输入和输出的角色。
小结与练习
复合函数和反函数都要求你追踪输入与输出。复合函数关心一个输入能否顺利经过多层函数;反函数关心一个输出能否唯一找回原来的输入。定义域、值域、图像和公式不能分开看,它们描述的是同一条关系的不同侧面。
练习时可以用三句话自查:先做哪一个函数?中间输出能不能进入下一层?如果反过来,输出能不能唯一找回输入?
练习 1:设 f(x)=x+4,g(x)=x2。求 (f∘g)(x) 与 (g∘f)(x),并判断它们是否相同。
(f∘g)(x)=f(x2)=x2+4。(g∘f)(x)=g(x+4)=(x+4)2。它们一般不同,例如 x=1 时分别是 5 和 25。
练习 2:设 f(u)=4−u,g(x)=x2。求 f(g(x)) 的定义域。
内层 g(x)=x2 对所有实数都有定义。外层要求 4−u≥0,所以 u≤4。代入中间输出 u=x2,得到 x2≤4,因此定义域是 [−2,2]。
练习 3:设 f(x)=x+3,求反函数,并写出反函数的定义域。
原函数定义域是 [−3,∞),值域是 [0,∞)。令 y=x+3,平方得 y2=x+3,所以 x=y2−3。反函数为 f−1(x)=x2−3,定义域是 [0,∞)。
练习 4:函数 p(x)=(x+1)2 如果限制在 x≥−1,它的反函数是什么?
令 y=(x+1)2。因为限制 x≥−1,所以 x+1≥0,取正平方根:y=x+1,所以 x=y−1。反函数为 p−1(x)=x−1,定义域是 [0,∞)。