直观理解函数(一进一出的可靠机器)

函数是一条规则,它接收一个输入,然后恰好给回一个输出。自动售货机就是一个函数:你按下 B4,每次拿到的都是同一种零食。明天再按一次 B4,还是同一种零食。这种可预测性,也就是一个输入对应一个输出,就是函数的全部精髓。这篇文章从最基础处把这幅图景搭起来,再说明为什么函数悄悄地垫在数学里几乎所有其他东西的底下。
函数在数学里无处不在,可它常常在学生还没真正体会到它是什么之前,就被当成一套抽象记号(f(x)、定义域、陪域)介绍出来。结果就是一大批人会算 f(3),却从没在脑子里想象过函数究竟在做什么。
我们来把这件事掰扯清楚。
函数就是一台机器
想象函数最干净的方式,就是把它看成一台只有一个输入口和一个输出口的机器。你往里丢一样东西,机器按一条固定的规则处理它,然后吐出一个结果。
看看"把它翻倍"这条规则。放进 3,得到 6。放进 10,得到 20。放进 -2,得到 -4。这台机器不在乎你的心情,也不在乎现在几点。同样的输入,同样的输出,每一次都如此。
这种可靠性正是函数的本质特征。"给我一个 1 到 10 之间的数"这条规则不是函数,因为同一个输入可能产生不同的输出。但"把它翻倍"永远规规矩矩。一个输入,一个输出。
我们把这台机器写成 f(x) = 2x。f 是机器的名字。x 是你喂给它的东西。2x 是它执行的规则。所以 f(3) = 6 不过是"对输入 3 运行这台翻倍机器"的简写而已。
不再害怕这套记号
记号 f(x) 把学生绊倒的次数,比概念本身还多,主要是因为它看着像乘法。它不是乘法。f(x) 不表示 f 乘以 x。它表示"当输入是 x 时,f 的输出"。
把括号想成机器上的那个输入口:
- f(2) 表示对 2 运行这条规则。
- f(a + 1) 表示对 a + 1 这个量运行这条规则。
- f(任何东西) 表示对里面放着的任何东西运行这条规则。
如果 f(x) = x² + 1,那么 f(4) = 4² + 1 = 17。你只要把 4 丢进每一个出现 x 的位置就行了。这就是全部的技巧。一旦这套记号不再看着像乘法,而开始看着像一个贴了标签的输入口,大部分困惑就烟消云散了。
定义域和值域:什么能进去,什么会出来
每台机器对它能接收的东西都有限制。自动售货机收硬币,不收贝壳。函数也一样。
定义域是函数允许接收的所有输入构成的集合。值域是它实际能产生的所有输出构成的集合。
对于 f(x) = 2x,你可以把任何实数翻倍,所以定义域是全体实数;而任何实数都能作为输出被取到,所以值域同样是全体实数。
但很多函数带着限制,而且这些限制从来不是随便定的。它们来自那些会"卡壳"的运算:
- f(x) = 1/x 不能接收 0,因为除以零是没有定义的。它的定义域是除 0 以外的每一个实数。
- f(x) = 根号 x 在实数范围内不能接收负数,所以它的定义域是 x ≥ 0。
求定义域,其实就是在问:哪些输入会让这台机器卡住?把它们排除掉,答案就有了。
图像是这台机器的一幅画像
图像不过是机器产生的每一个"输入-输出"对的可视化记录。横轴放输入,纵轴放输出,每一个点 (x, y) 都在说"当你喂进 x,你会得到 y"。
这就给了我们一个快速的视觉检验,来判断某个东西到底是不是函数。既然每个输入必须恰好产生一个输出,那就没有哪个输入能同时落在两个不同的输出值上。于是:
竖线检验法: 如果有任何一条竖直的直线与图像相交超过一次,它就不是函数。
一条直线能通过。一条抛物线能通过。圆通不过,因为大多数竖直直线都会与它相交两次,意味着同一个 x 值会对应两个 y 值。机器会不知道该给哪个输出,所以圆不是函数。
常见函数的一个小动物园
一旦你把函数看成机器,那些有名字的家族就不再是一张要背的清单,而开始变成各有性格的角色:
- 线性函数(f(x) = mx + b):以恒定的速率变化。它的图像是一条直线。任何稳定增长的东西背后都是它,比如匀速行驶时的路程。
- 二次函数(f(x) = ax² + bx + c):先升,转向,再降(或者反过来)。它的图像是一条抛物线,正是抛出的球所走的轨迹的形状。
- 指数函数(f(x) = aˣ):每走一步都乘以同一个倍数,所以增长得快得吓人。这是复利和人口增长背后的引擎。(见直观理解指数。)
- 对数函数:指数函数的逆,起初长得快,之后越爬越慢。(见直观理解对数。)
你不需要背它们的公式才能认出它们。你需要知道的,是每一个画出来是什么形状,以及它描述的是哪一种变化。
把机器组合起来,再让它倒着跑
有两个想法,能把函数从孤立的规则,变成一套工具箱。
复合就是把一台机器的输出喂进另一台机器。如果 g 把一个数翻倍,f 把数加 1,那么 f(g(3)) 表示先把 3 翻倍得到 6,再加 1 得到 7。你把机器串起来。这在微积分里随时都会冒出来:链式法则恰恰就是对复合函数求导的规则。
反函数让机器倒着跑。如果 f 翻倍,它的反函数就减半。如果 f 加 10,它的反函数就减 10。反函数把原来做过的事情还原回去,把输出带回到当初产生它们的那些输入。不过,并不是每个函数都有反函数:只有那些每个输出都来自单独一个输入的函数才有(否则倒着跑就会含糊不清,分不清该回到哪儿)。
为什么函数垫在所有东西的底下
回报来了。数学里几乎每一个进阶话题,本质上都是关于函数的问题:
如果函数这块根基是虚的,整个微积分都会感觉像一团雾。如果函数扎实,微积分就变成你可以对一台机器自然提出的一组问题:它往哪儿去,它变化得多快,它累积了多少。
这对学习为什么重要
当你在 Math Zen 里练习函数时,你做的题目会从求 f(x) 的值、读图像开始,一路搭到定义域和值域、复合与反函数,难度会根据你实际所处的水平来自动调整。
理解"机器"这幅图景之所以有帮助,是因为:
- 一旦你把括号看成一个输入口,求 f(a + 1) 就不再吓人了。
- 关于定义域的问题,会从一条要背的规则,变成"什么会让这台机器卡住?"
- 同一种直觉会直接延续到你将用来保持这些想法新鲜的间隔重复上,也延续到随后的每一个微积分话题里。
要点回顾
函数就是一台可靠的机器:一个输入,一个输出,每一次都如此。记号 f(x) 不过是一个贴了标签的输入口,定义域是这台机器接收的东西,值域是它产生的东西,而图像是它所有"输入-输出"对的一幅画像。
下次你看到 f(x),别想"吓人的代数"。要想:"不管我喂进什么,这台机器会对它做什么?"就这一个转变,就能让函数,以及建立在它之上的所有东西,变得直观得多。
常见问题
- 用最简单的话说,函数是什么?
- 函数是一条规则,它接收一个输入,然后产生恰好一个输出。同样的输入放进去,你拿回来的永远是同样的输出。自动售货机就是一个函数:按下 B4,你每次拿到的都是同一种零食。"函数"这个词,说的就是这种可靠的"输入对应输出"的关系。
- 定义域和值域有什么区别?
- 定义域是函数允许接收的所有输入构成的集合,值域是它实际能产生的所有输出构成的集合。对于 f(x) = 根号 x,定义域是所有大于等于零的数,因为负数开不了平方根;值域同样是所有大于等于零的数。
- f(x) 到底是什么意思?
- 它的意思是"当输入是 x 时,函数 f 的输出"。f 是这条规则的名字,括号里放的东西就是输入。f(2) 表示对输入 2 运行这条规则。这个记号不是乘法:f(x) 并不表示 f 乘以 x。
- 怎么判断一个图像是不是函数?
- 用竖线检验法。如果有任何一条竖直的直线与图像相交超过一次,那这个图像就不是函数,因为那一个输入会对应两个不同的输出。圆通不过这个检验,而一条直线能通过。
- 函数和方程有什么区别?
- 方程说明两样东西相等,它可能只对某些特定的值成立。函数是一条规则,它给定义域里的每一个输入都指定一个输出。你可以用方程来写出一个函数,比如 y = 2x + 1,但函数指的是那台把每个 x 变成对应 y 的机器,而不是"相等"这个陈述本身。


