函数变换、复合函数与反函数
上一章我们练习了从图像读函数。现在换一个角度:很多看起来复杂的函数,其实是从几个简单函数出发,经过移动、拉伸、翻折、拼接和套入得到的。
这一章的目标不是背一串图像规则,而是养成一个习惯:看到一个函数表达式时,先问“它对输入做了什么?对输出做了什么?有没有把一个函数的结果送进另一个函数?”这个习惯会直接通向微积分里的链式法则。

把函数看成机器
函数可以看成一台机器。输入 x 进入机器,机器按照固定规则输出 f(x)。变换函数时,我们可以在输入进入机器之前动手,也可以在输出离开机器之后动手。
例如:
y=af(b(x−h))+k
这个表达式里有两类动作。b(x−h) 是在输入进入 f 之前发生的变化,a 和 k 是 f 算完之后对输出做的变化。这个分界非常重要。
函数变换最常见的分辨方法是:括号里面改输入,函数外面改输出。改输出时图像的上下变化比较直观;改输入时图像的左右变化容易显得反向,需要从“哪个新输入会让旧函数看到同一个数”来判断。

如果 f 原来在 x=3 处有一个特点,比如顶点、尖点或截距,那么 f(x−2) 会让这个特点出现在 x=5。原因不是“减 2 所以向左”,而是新输入 x= 时,括号里的 才等于旧输入 。
平移、伸缩与翻折
先看最常见的四种变换。
上下平移
如果 g(x)=f(x)+k,每一个输出值都增加 k。图像整体向上移动 k 个单位;如果 k<0,就向下移动 个单位。
例如 g(x)=x2+3 是把 y=x2 向上移动 3 个单位。原来点 ( 变成 。
左右平移
如果 g(x)=f(x−h),图像向右移动 h 个单位;如果 h<0,图像向左移动 ∣h∣ 个单位。
这个规则容易被误记。最稳的判断方法是追踪一个旧点。若旧图像上有点 (p,f(p)),新图像 g(x)=f(x−h) 中,要让括号里仍然等于 p,需要 ,也就是 。所以旧点会移动到 。
竖直伸缩与关于 x 轴翻折
如果 g(x)=af(x),每一个输出都乘以 a。当 ∣a∣>1 时,图像在竖直方向被拉长;当 0<∣ 时,图像在竖直方向被压扁;当 时,图像还会关于 轴翻折。
例如 g(x)=−2f(x) 会把所有高度放大到原来的 2 倍,再把正负号反过来。
水平伸缩与关于 y 轴翻折
如果 g(x)=f(bx),输入在进入 f 前被乘以 b。当 ∣b∣>1 时,图像在水平方向压缩;当 时,图像在水平方向拉长;当 时,图像还会关于 轴翻折。
水平伸缩也适合追踪旧点。旧点的输入是 p,新函数要让 bx=p,所以 x=bp。这就是为什么 不是水平拉长 2 倍,而是水平压缩到原来的一半。
水平变换不是“看到加就右、看到乘以 2 就变宽”。它发生在输入进入函数之前,所以要问:新输入必须取什么值,才能让函数内部看到原来的那个输入?
下面的交互可以直接拖动参数,观察 a、b、h、k 对图像和参考点的影响。
变换的顺序
实际题目常把多种变换写在一起。一个稳妥的顺序是:先处理函数内部的输入变化,再处理函数外部的输出变化。用点来跟踪时,可以从母函数上的一个点出发,一步一步移动。
以 f(x)=x 为母函数,考虑:
g(x)=−2f(x−2)+1
它等价于:
g(x)=−2x−2+1
母函数 f(x)=x 的起点是 (0,0)。因为 在函数内部,图像先向右移动 2 个单位,起点变成 。然后乘以 ,所有输出先拉伸 2 倍再关于 轴翻折。最后加 1,整体向上移动 1 个单位,起点变成 。

例题:已知点 (1,2) 在 y=f(x) 上,求它在 y=3f(2(x−4))− 上对应到哪里。
先处理输入。新函数里面是 2(x−4),要让它等于旧输入 1,就解方程 2(x−4)=1,得到 。
复合函数
复合函数描述的是“一个函数的输出,继续作为另一个函数的输入”。如果先用 g,再用 f,就写成:
(f∘g)(x)=f(g(x))
读这个式子时,不要从左往右算。先算括号里的 g(x),再把结果送进 f。

例如:
f(x)=x2+1,g(x)=x−3
那么:
(f∘g)(x)=f(x−3)=(x−3)2+
而:
(g∘f)(x)=g(x2+1)=x2
这两个函数通常不同。复合函数的顺序不是装饰,它决定了先发生什么变化。
f(g(x)) 和 g(f(x)) 不能随意交换。只有在很特殊的情况下它们才会相同。多数时候,先平方再减 3,与先减 3 再平方,会得到完全不同的结果。
复合函数的定义域
复合函数还有一个经常被漏掉的条件:内层函数必须能算,内层算出的结果还必须能进入外层函数。
例如:
f(x)=x,g(x)=x−5
对于 f(g(x))=x−5,内层 g(x) 对所有实数都能算,但外层平方根要求输入不能小于 0,所以需要:
x−5≥0
因此定义域是 x≥5。
如果换成 g(f(x))=x−5,先算平方根,所以只需要 x≥。同样两个函数,换一个顺序,定义域也变了。
下面的实验室可以输入同一个 x,比较 f(g(x)) 与 g(f(x)) 的顺序、结果和定义域限制。
反函数
反函数做的是“倒回去”。如果 f 把输入 a 送到输出 b,那么反函数 f−1 会把 b 送回 a。
也就是说:
f(a)=b⟺f−1(b)=a
图像上,反函数和原函数关于直线 y=x 对称。点 (a,b) 会变成 (b,a),定义域和值域也会互换。

符号 f−1(x) 表示反函数,不表示 f(x)1。例如 的反函数是 ,而不是 。
为什么反函数需要一一对应
不是每个函数都有反函数。原因很简单:如果两个不同输入给出同一个输出,倒回去时就不知道该回到哪一个输入。
例如 f(x)=x2 在全体实数上不是一一对应,因为:
f(2)=4,f(−2)=4
如果要从输出 4 倒回输入,就会同时得到 2 和 −2。这不符合函数“一个输入只能对应一个输出”的要求。
图像上可以用水平线检验:如果某条水平线和图像交于两个或更多点,说明有同一个输出来自多个输入,这个函数在当前定义域上没有反函数。
限制定义域
限制定义域可以让一个原本不能反过来的函数变成可以反过来。对 f(x)=x2,如果只取 x≥0,它就变成单调递增。每个输出只对应一个输入,反函数是:
f−1(x)=x
如果只取 x≤0,反函数则是:
f−1(x)=−x
限制定义域不是为了让题目麻烦,而是为了保留“倒回去仍然是函数”这个要求。
分段函数
分段函数不是一种新的运算,它只是把不同规则安排在不同区间里。遇到分段函数,第一步不是代入,而是先判断输入落在哪个区间。
一个简单的分段函数可以写成:
p(x)=⎩⎨
这个函数可以描述某种阶梯计费:第一个小时固定 4 元,之后一段按小时增加,到某个上限后封顶。它也可以描述考试评分、停车费、网络套餐或折扣规则。

分段函数里断点尤其值得看清楚。x=1 到底用上一段还是下一段,要看不等号是否包含等号。图像上,实心点表示取到这个点,空心点表示靠近但不取到。
例题:设
q(x)=⎩⎨
求 q(−3)、q(0)、q(2)、q(4)。
输入 −3 满足 x<0,所以使用第一段 x+2,得到 q。
常见误区
把水平平移方向看反
f(x−3) 是向右移动 3 个单位,因为新输入 x=3 时,函数内部看到的是旧输入 0。把“括号里减 3”直接读成“向左 3”会出错。
忘记复合函数的定义域
化简表达式只完成了一半。写 f(g(x)) 时,必须检查 x 能不能进入 g,还要检查 g(x) 能不能进入 f。根号、分母、对数和反三角函数在后续章节里都会让这个问题变得更明显。
把反函数和倒数混在一起
f−1 的上标 −1 是“反操作”的记号,不是指数运算。判断它是不是反函数,可以检查两个复合:
f(f−1(x))=x
f−1(f(x))=x
这两个等式成立时,要同时注意各自的定义域。
在分段函数中先代入再选规则
分段函数要先选区间,再套公式。尤其在断点处,等号属于哪一段,函数值就由哪一段决定。
练习
- 已知 f(x)=∣x∣。写出 g(x)=−3f(x+2)+4 的图像相对于 的变换过程。
先看函数内部的 x+2,图像向左移动 2 个单位。再看外部的 −3,图像在竖直方向拉伸 3 倍并关于 x 轴翻折。最后加 4,整体向上移动 4 个单位。
- 已知 f(x)=x,g(x)=2x−。分别求 和 ,并写出定义域。
f(g(x))=2x−1,因为平方根内部必须非负,所以 2x−,定义域是 。,只需要先能算 ,所以定义域是 。
- 函数 f(x)=x2−4 在全体实数上有没有反函数?如果限制为 x≥0,反函数是什么?
在全体实数上没有反函数,因为 f(2)=0 且 f(−2)=0,同一个输出对应两个输入。如果限制为 x≥0,由 y= 得 ,所以反函数可以写成 ,它的定义域是 。
- 设
r(x)=⎩⎨
求 r(−2)、r(−1)、r(2)。
−2<−1,所以 r(−2)=2(−2)+1=−3。−1 满足 ,所以 。 满足 ,所以 。
通向微积分
微积分中的链式法则,其实就是复合函数思想的延续。像
F(x)=3x2+1
这样的函数,可以看成先用内层函数 u=3x2+1,再用外层函数 u。进入求导时,我们会关心外层变化和内层变化怎样同时影响最终输出。
函数变换也会继续出现。平移不会改变图像的基本形状,伸缩会改变变化速度,翻折会改变增长和下降的方向。反函数则会出现在对数、反三角函数和隐函数问题里。分段函数会帮助我们讨论“某点附近”的行为,也就是极限和连续性的入口。
本章要带走的不是一张孤立公式表,而是一种读函数的方法:先分清输入和输出,再看函数怎样套函数,最后检查能不能倒回去。