如果说数、式与变量让我们学会表示数量关系,那么集合、关系、映射与函数则进一步让我们学会描述对象范围、对应规则和输入输出结构。
集合用来描述“对象属于哪里”,关系用来描述“对象之间有没有联系”,映射和函数则用来描述“输入如何唯一对应到输出”。其中,函数更强调输入、规则与输出之间的确定关系。
一、集合的基本思想
1、元素与集合
集合(Set)是由一些确定的、可判定是否属于其中的对象组成的整体。集合中的每个对象称为元素(Element)。
例如,可以把几个数字放在一个集合中:
这里,A 是集合,1、2、3、4 是 A 中的元素。如果某个元素属于集合 A,可以写成:
如果某个元素不属于集合 A,可以写成:
集合关注的是“哪些对象在里面”,而不是这些对象按什么顺序排列。因此:
在集合中,元素通常也不重复计算。例如:
也就是说,集合更关心“成员是什么”,而不是“出现了几次”或“排在什么位置”。
2、有限集与无限集
如果一个集合中元素的个数有限,称为有限集(Finite Set)。例如:
这个集合有 4 个元素。
如果一个集合中元素无限多,称为无限集(Infinite Set)。例如,自然数集合可以写成:
实数集合通常记作:
它包含数轴上所有实数。
有限集容易逐个列举元素,无限集不能用有限长度全部列完,通常需要借助规则、符号或条件描述。
例如,所有大于 0 的实数可以写成:
0\} \end{aligned} $$" helvetica neue", "pingfang sc", "hiragino sans gb", "microsoft yahei ui", yahei", arial, sans-serif;font-size: 16px;line-height: 1.75;max-width: 100%;overflow-x: auto;padding: 0.5em 0px;text-align: center;color: rgb(51, 51, 51);margin-top: 0px !important;margin-bottom: 0px;">
这个式子的意思是:所有属于实数集合,并且满足 x > 0 的 x。
3、子集、交集、并集与补集
如果集合 A 中的每个元素也都属于集合 B,就称 A 是 B 的子集(Subset),记作:
例如:
则:
两个集合共有的元素组成交集(Intersection):
例如:
则:
两个集合合在一起组成并集(Union):
对于上面的 A 和 B,有:
如果先规定一个全集 U,那么不属于 A 的元素组成 A 的补集(Complement):
例如:
则:
图 1:子集、交集、并集与补集的关系
集合运算的意义在于:它可以清楚表达对象之间的包含、重叠、合并和排除关系。
4、集合语言为什么是现代数学的基础
集合语言可以统一描述许多数学对象。
数可以组成集合,点可以组成集合,函数的输入也可以来自集合。比如:
表示 x 是一个实数。
如果写:
则表示 x 只能取 0 或 1。
集合让数学表达更加精确。它不只是在列对象,更是在规定:哪些对象允许出现,哪些对象不在讨论范围内。
5、笛卡尔积:从元素到有序组合
前面讨论集合时,主要关注“哪些元素属于某个集合”。
例如:
它说明 1、2、3 属于集合 A。
但在很多数学问题中,只知道单个元素还不够,还需要把多个元素按顺序组合起来。
例如,平面上的一个点不能只用一个数表示。点的位置通常需要两个数:
这里,x 表示横坐标,y 表示纵坐标。这个二元组合不是简单地把两个数放在一起,而是强调“第一个数有第一个位置的含义,第二个数有第二个位置的含义”。
例如:
因为前者表示横坐标为 2、纵坐标为 5;后者表示横坐标为 5、纵坐标为 2。两个数相同,但顺序不同,表示的位置也不同。
这种按顺序排列的组合,称为有序对(Ordered Pair)。
如果有两个集合 A 和 B,从 A 中取一个元素 a,从 B 中取一个元素 b,组成有序对:
所有这样的有序对组成的集合,称为 A 与 B 的笛卡尔积(Cartesian Product),记作:
可以写成:
这个式子的意思是:A × B 中的每个元素,都是一个有序对;有序对的第一个位置来自 A,第二个位置来自 B。
图 2:笛卡尔积与有序对
例如:
那么:
可以看到,A 中的每个元素都要分别和 B 中的每个元素组合一次。
如果反过来计算:
则得到:
一般情况下:
因为有序对中的位置不同,含义也不同。
笛卡尔积最重要的直觉,是把“单个元素”扩展为“有序组合”。
例如,实数集合为:
那么:
表示所有由两个实数组成的有序对:
这个集合也常写成:
它可以理解为整个二维平面。也就是说,平面上的每一个点,都可以看成:
从函数角度看,函数图像也可以用笛卡尔积来理解。
如果函数为:
那么每一个输入 x 和对应输出 f(x),可以组成一个有序对:
函数图像就是所有这类有序对组成的集合:
其中,D 表示函数的定义域。
这个式子的意思是:只要 x 是允许输入,就把 x 和它对应的输出 f(x) 配成一个点。所有这样的点放在坐标平面中,就形成函数图像。
在数据分析和机器学习中,笛卡尔积也有非常基础的意义。
一个样本往往不是只有一个数,而是由多个特征组成。例如,一个房屋样本可以写成:
面 积 房 龄 楼 层
这也是一种有序组合。第一个位置表示面积,第二个位置表示房龄,第三个位置表示楼层。顺序不同,含义也会改变。
如果把三个特征分别记为:
那么一个样本可以写成:
更一般地,n 个特征可以组成:
这就是后面学习向量和特征空间时会不断遇到的形式。
因此,笛卡尔积并不是一个孤立的集合运算。它把集合中的元素组织成有序组合,使我们能够描述坐标点、函数图像、输入输出对以及多特征样本。理解笛卡尔积,有助于把“一个数”自然过渡到“一个点”“一个样本”和“一个输入向量”。
二、关系、映射与函数
关系(Relation)描述对象之间是否存在某种联系。
例如,一个学生可以选择某门课程,一个用户可以购买某件商品,一个样本可以属于某个类别。这些都可以看成对象之间的关系。
如果有两个集合 A 和 B,那么从 A 到 B 的关系,可以看成笛卡尔积 A × B 的一个子集。
例如:
小 明 小 红
数 学 英 语
如果小明选择数学,小红选择英语,可以写成关系集合:
小 明 数 学 小 红 英 语
这里,每一个有序对都表示一种对应关系。
关系比函数更宽泛。它只说明对象之间存在某种联系,不一定要求每个对象都有对应结果,也不一定要求对应结果唯一。
1、从关系到映射
映射(Mapping)描述一个集合中的对象如何对应到另一个集合中的对象。
在严格数学语境中,映射通常要求:定义域中的每个元素都有且只有一个对应输出。因此,映射与函数在很多教材中基本同义。
假设有两个集合:
如果规定:
这就是从 A 到 B 的一种映射。可以把它理解为:A 中的每个输入对象,按照某种规则,对应到 B 中的一个输出对象。
2、输入与输出
映射的核心是输入与输出。
如果输入是 x,输出是 y,可以写成:
例如,规则“乘以 2”可以写成:
当 x = 3 时:
当 x = 5 时:
映射强调的是:按照某种规则,把输入对象唯一地对应到输出对象。
3、一对一与多对一
在通常意义上的函数中,每个输入只能对应一个输出。但不同输入之间,可以有不同的对应形态。
一对一表示不同输入对应不同输出。例如:
这里,每个输入不同,输出也不同。严格地说,这种“不同输入对应不同输出”的函数称为单射(Injective Function)。
多对一表示多个不同输入可以对应同一个输出。例如:
这类似于平方关系:
因为 -2 和 2 的平方都等于 4。
多对一仍然可以是函数。原因是:虽然不同输入可以得到相同输出,但每个具体输入仍然只有一个确定输出。
图 3:一对一、多对一与一对多的对应关系
4、一对多为什么通常不是函数
一对多表示一个输入对应多个输出。
例如:
这类似于“求平方根”的关系。因为 2 和 -2 的平方都等于 4,所以 4 的平方根可以是 2,也可以是 -2。
但是,通常意义上的函数要求每个输入只能有一个确定输出。如果同一个输入对应多个输出,就不能直接看作函数。
如果只取非负平方根,可以写成函数:
此时:
输出唯一。
如果要表示负平方根,也可以另设一个函数:
此时:
这样,每个函数内部都保持“一个输入对应一个输出”。
5、关系、映射与函数的区别
关系、映射和函数都可以描述对象之间的对应,但严格程度不同。
关系最宽泛。它只说明对象之间存在某种联系,可以不覆盖所有输入,也可以允许一个输入对应多个输出。
映射通常要求定义域中的每个元素都有唯一对应输出。在很多数学语境中,映射与函数基本同义。
在本文的基础学习语境中,可以把函数理解为一种强调输入、输出和计算规则的映射,尤其常用于数值变量、函数图像、模型预测和优化问题。
因此,可以这样理解:
关系回答的是:对象之间有没有联系。
映射回答的是:定义域中的对象如何唯一对应到另一个集合中的对象。
函数侧重强调:输入经过确定规则产生唯一输出。
在后续学习中,机器学习模型通常可以理解为函数:输入数据,输出预测结果。训练模型的过程,就是根据数据调整这个函数中的参数,使输入输出关系更加符合目标。
三、函数的基本概念
1、函数是确定的输入输出规则
函数(Function)可以理解为满足“每个输入都有唯一输出”的对应规则。它把定义域中的每个输入,按照确定规则,对应到唯一输出。可以写成:
这表示函数 f 把集合 A 中的元素映射到集合 B 中。如果 x 属于 A,那么 f(x) 是它对应的输出:
例如:
当 x = 3 时:
这里,3 是输入,7 是输出。
2、定义域
定义域(Domain)是函数允许输入的集合。
例如:
如果只在实数范围内讨论,x 不能小于 0。因此,定义域可以写成:
定义域非常重要。因为同一个公式,如果定义域不同,表示的函数也可能不同。
例如:
如果定义域是全体实数,它不是一对一的;如果定义域限制为 x ≥ 0,它就变成一对一。
3、陪域与值域
在函数:
中,A 是定义域,B 称为陪域(Codomain),表示函数输出被规定落入的集合。
值域(Range)是函数实际能够输出的值组成的集合。值域一定是陪域的子集,但不一定等于陪域。
图 4:定义域、陪域与值域的关系
例如:
表示函数从实数到实数。但如果:
那么它的实际输出只覆盖非负实数。因此,它的值域是:
这个例子说明:函数被规定输出到实数集合中,但实际输出并没有覆盖所有实数。
4、函数值
函数值(Function Value)是函数在某个输入处的输出。
例如:
当 x = 4 时:
这里,f 是函数,f(4) 是函数值。
函数本身是一条规则,函数值是这条规则在某个输入处得到的结果。把 f 和 f(4) 区分开,是理解后续模型、损失函数和优化问题的重要基础。
四、函数记号与输入输出关系
1、y = f(x) 的含义
函数关系常写成:
这表示:输出 y 由输入 x 经过规则 f 得到。
函数记号的意义在于:它把“输入”“规则”和“输出”清楚地区分开来。
2、x、f、y 分别表示什么
在 y = f(x) 中,x、f、y 扮演不同角色。
x是输入变量,表示可以代入函数的对象。
f是函数规则,说明输入如何被处理。
y是输出变量,表示经过函数规则后得到的结果。
例如:
也可以写成:
这里,x 是输入,规则是“乘以 2 再加 1”,y 或 f(x) 是输出。
需要特别注意,f 不是一个具体数值,而是完整的规则;f(x) 才是规则作用在输入 x 上得到的结果;y 通常用来表示这个输出结果。
3、函数图像中的对应关系
函数图像可以把输入输出关系画出来。
对于函数:
每一个输入 x 都对应一个输出 y。
例如:
这些输入输出对可以写成点:
把这些点放在坐标系中,就能看到函数图像。
图 5:函数图像中的输入与输出对应关系
从集合角度看,函数图像就是所有输入输出有序对组成的集合。
五、函数的基本性质
1、单调性
单调性(Monotonicity)描述函数值随着输入增加而如何变化。
图 6:函数的单调性
如果 x 增大时,函数值也随之增大,就称函数具有递增趋势。
例如:
当 x 增大时,f(x) 也增大。这个函数是递增的。
更准确地说,单调性通常在某个区间上讨论。
如果在区间 I 内,对任意 x₁、x₂ ∈ I,当 x₁ < x₂ 时,总有 f(x₁) ≤ f(x₂),就称函数在区间 I 上单调不减,也常称为广义的单调递增。
写成公式就是:
如果进一步总有 f(x₁) < f(x₂),则称函数在区间 I 上严格递增:
二者的区别在于:单调不减允许函数值保持不变,严格递增则要求函数值必须变大。
相反,如果 x 增大时,函数值减小,就称函数具有递减趋势。
例如:
当 x 从 1 增加到 2 时:
输出反而变小。
单调性帮助我们理解函数图像的整体方向:是向上走、向下走,还是有时上升、有时下降。
2、奇偶性
奇偶性(Parity)描述函数图像的对称性。
图 7:函数的奇偶性
如果函数满足:
就称它是偶函数(Even Function)。
例如:
因为:
所以 x² 是偶函数。偶函数的图像关于 y 轴对称。
如果函数满足:
就称它是奇函数(Odd Function)。
例如:
因为:
所以 x³ 是奇函数。奇函数的图像关于原点对称。
需要注意,不是所有函数都有奇偶性。例如:
一般既不是奇函数,也不是偶函数。
讨论奇偶性时,通常要求函数的定义域关于 0 对称。否则,比较 f(x) 和 f(-x) 就可能没有意义。
奇偶性让我们从“计算函数值”进一步看到函数图像的结构之美:有些函数虽然输入正负不同,但输出表现出清晰的对称规律。
3、反函数初步
反函数(Inverse Function)描述“能否从输出反过来找回输入”。
图 8:反函数与关于 y = x 的对称关系
若函数 f 在定义域 D 与值域 V 之间形成一一对应,那么可以定义反函数:
它把原函数的输出重新对应回原来的输入。
例如:
如果知道:
想从 y 反推 x,可以移项:
所以:
这说明,对于函数 f(x) = 2x + 1,如果输出是 y,那么原来的输入是:
因此,它的反函数可以写成:
有时也写成:
这里的 x 只是反函数中的输入变量。
需要注意:
表示反函数,不表示:
二者含义完全不同。
并不是所有函数在原定义域上都有反函数。只有当输出能够唯一确定输入时,才可以在相应范围内定义反函数。
例如:
如果输出是 4,输入可能是 2,也可能是 -2。因此,在全体实数范围内,x² 没有通常意义上的反函数。
但如果把定义域限制为 x ≥ 0,那么:
就可以反过来得到:
这说明,反函数与定义域密切相关。
4、复合函数初步
复合函数(Composite Function)描述“一个函数的输出作为另一个函数的输入”。
假设有两个函数:
如果先用 g 处理 x,再把结果交给 f,就得到 f(g(x))。
先计算:
再代入 f:
这就是一个复合函数。
图 9:简单复合函数示意
复合函数的顺序很重要。如果反过来,先计算 f(x),再交给 g,就得到:
一般来说:
例如,当 x = 2 时:
而:
二者结果不同。
复合函数很重要。因为许多复杂模型都可以理解为多个简单函数逐层组合起来的结果。输入先经过第一层规则,再经过第二层规则,最后得到输出。
从这个角度看,复合函数是理解计算图、神经网络和多层模型的重要基础。
六、多变量函数初步
1、一个输出可以依赖多个输入
前面看到的函数通常只有一个输入 y = f(x)。但在很多问题中,一个输出会同时依赖多个输入。
例如,一个房屋价格可能同时与面积、地段、楼层、房龄有关。
如果只考虑面积 x₁ 和房龄 x₂,可以写成:
这里,输出 y 由两个输入共同决定。
2、从 y = f(x) 到 z = f(x, y)
单变量函数可以写成:
其中,一个输入对应一个输出。
多变量函数可以写成:
这里,x 和 y 是两个输入变量,z 是输出变量。
例如:
当 x = 1,y = 2 时:
多变量函数把“一个输入影响一个输出”扩展为“多个输入共同影响一个输出”。
3、多变量函数的图像直觉
单变量函数 y = f(x) 的图像通常是一条曲线。多变量函数 z = f(x, y) 的图像可以理解为一个曲面。
例如:
当 x 和 y 离原点越远时,z 越大。这个函数的图像像一个向上打开的碗。
图 10:多变量函数 z = x² + y² 的曲面直觉
多变量函数不一定都容易画出来。输入变量越多,就越难直接可视化,但它仍然表示输入与输出之间的规则。
4、多变量函数在数据分析中的基础地位
多变量函数是数据分析和机器学习中的基本形式。一个样本通常由多个特征组成:
模型可以看成把这些输入特征映射为预测结果的函数:
图 11:多变量函数从多个输入到一个输出
这说明,多变量函数把“多个因素共同决定一个结果”的关系形式化,是理解特征空间、回归模型和神经网络输入结构的基础。
七、Python 示例:用函数表示输入输出关系
1、定义简单函数
在 Python 中,可以用 def 定义函数。
下面定义一个简单函数:
它对应数学函数:
这里,x 是输入,return 后面的表达式给出输出。
2、计算函数值
调用函数时,需要给它一个具体输入。
输出为:
5对应数学计算:
函数本身是 f,函数值是 f(0)、f(1)、f(2)。
3、绘制输入与输出的对应关系
下面用 Python 绘制函数:
这段代码体现了一个基本过程:先给定输入 x,再按照函数规则计算 y,最后把输入输出关系画出来。
这正是函数思想在程序中的直接体现。
4、观察简单复合函数的输入输出变化
下面用 Python 观察复合函数的计算过程。
先定义两个函数:
如果先计算 g(x),再计算 f(g(x)),可以写成:
可以计算几个输入对应的输出:
这段代码的含义是:每个 x 先经过 g,得到 x²;再经过 f,得到 2x² + 1。
也可以比较函数复合顺序的影响:
它们的计算顺序不同,结果通常也不同。
这说明,复合函数不仅关心“有哪些函数”,还关心“函数按照什么顺序连接起来”。
八、常见误解
1、把函数只理解成简单公式
函数不一定必须写成简单公式。它可以由公式、表格、程序、算法或复杂规则给出。
关键不在于形式是否简单,而在于:每个允许输入是否有唯一确定的输出。
例如,天气预测函数、图像识别函数、推荐系统评分函数,可能没有简洁表达式,但仍可以从函数角度理解:输入某些信息,输出某个结果。
2、把函数值和函数本身混淆
函数本身是规则,函数值是结果。
例如:
表示一条完整规则。
而:
只是这个规则在 x = 2 时得到的结果。不能把 f 和 f(2) 当成同一类对象。
3、不理解定义域的重要性
定义域决定了哪些输入是允许的。
例如:
在实数范围内,x 不能取 0。
如果忽视定义域,就可能把没有意义的输入代入函数。因此,理解函数时不能只看公式,还要看定义域。
4、把一对多关系误认为函数
判断一个对应关系是不是通常意义上的函数,关键要看:每个允许输入是否只有一个确定输出。
“4 对应 2 和 -2”属于平方根关系,不是函数;如果规定只取非负平方根,就得到函数 f(x) = √x。
小结
集合规定对象范围,笛卡尔积形成有序组合,关系描述对象联系,映射与函数描述唯一对应。理解定义域、值域、函数性质与复合思想,是学习模型预测和输入输出映射的基础。
“点赞有美意,赞赏是鼓励”
热门跟贴