数学作为科学研究的主要工具,其涉及的范围相当广泛:
为了可以去表达、建构这些研究对象,数学产生了它的基础之一
集合论
(Set theory),这就是本单元要介绍的内容。
一般而言,我们把数学的研究对象统称为
元素
( Element ),把一些元素组成的总体叫作
集合
( Set )。
比如下面是一些多边形的集合,其中的每个多边形都是该集合的元素:
下图是否代表了一个集合?
A 是 B 不是
查看详细解答,请点击最下面的“
阅读原文
”。
接着让我们来了解下如何表示集合。本课总共会介绍三种表示法:
让我们从最形象的 Venn 图开始。
2.1 Venn 图
在数学中,我们经常用平面上的封闭曲线的内部来代表集合,并将元素放在封闭曲线的内部,这种图称为
Venn 图
(中文翻译为文氏图、韦恩图等)。
比如下面是三个集合的 Venn 图
:
在后面的学习中会看到,某些时候我们并不关心集合中的元素,此时可以只画出封闭曲线,然后用一个大写字母来为该集合命名
(以示区分):
2.3 数学小历史
Venn 图是19世纪英国的哲学家、数学家约翰·维恩(John Venn,1834 -1923)在 1881 年发明的:
上一节中提到的多边形的集合是否为 Venn 图?
A 是 B 不是
查看详细解答,请点击最下面的“
阅读原文
”。
我们还可以把集合中的元素一一列举出来,这种表示方法叫作
列举法
。比如上节中的第一个 Venn 图可以用列举法表示
为:
同理,其余两个 Venn 图可以通过列举法表示为:
红
黄
蓝
3.1 自然数和整数
数学中常用的自然数、整数可以通过列举法来表示:
其
中的、就是数学中专门用来表示自然数和整数的符号。
假如有:
请问集合表示的是
A 偶数 B 奇数
查看详细解答,请点击最下面的“
阅读原文
”。
4
描述法
还有一种方法是描述法,通过它可以像下面这样来表示所有正数的
集合:
有
了列举法为什么还需要描述法?
来做一道题就知道了:
请问下面哪个选项是所有负数的集合?
A
B
查看详细解答,请点击最下面的“
阅读原文
”。
本节来解释下集合的三个重要特性。
5.1 无序性
集合里面的元素是没有顺序的,这叫作集合的
无序性
。比如下面两个集合:
虽然顺序不同,但是因为元素完全一样,所以我们说这两个集合是
相等
的,即有:
或
5.2 互异性
集合中的每个元素都只能出现一次,这叫作集合的
互异性
。比如下面这样,前者是集合,而后者不是集合:
这里是《高中数学人教版》的规定,在该书中认为集合不能出现重复的元素:
但有的教材也认为上面其实是相等的集合,这在后面的课中会看到例子:
不作特别说明的话,本课程默认遵守《高中数学人教版》的规定。
5.3 确定性
集合中的元素必须是确定的,这叫作集合的
确定性
。比如下面这个集合:
可以明确知道,2 是该集合的元素,-1 就不是。
可以用一个集合来表示所有的美女吗?
A 可以 B 不可以
查看详细解答,请点击最下面的“
阅读原文
”。
在欧洲某小城有一位理发师,他挑选顾客的时候有一个古怪的标准,就是只为城内所有“不为自己刮胡子的人”刮胡子,那么他的潜在顾客是否可以构成一个集合?
(1)答案是不可以。关键在于理发师该为自己刮胡子吗?如果他为自己刮胡子,那么按照他的豪言“只为城里所有不为自己刮胡子的人刮胡子”,他不应该为自己刮胡子;但如果他不为自己刮胡子,同样按照他的豪言“一定要为城里所有不为自己刮胡子的人刮胡子”,他又应该为自己刮胡子。
也就是说,理发师的潜在顾客是不明确的,因此不可以构成一个集合。
(2)这个问题是数学中的一个著名公案。在集合产生的早期,德国数理逻辑大师戈特洛布·弗雷格(Friedrich Ludwig Gottlob Frege)认为只要给出一个明确的概念,就可以构造一个集合。这一认知成为他的著作《算术的基本定律》的起点。
当时年轻的英国哲学家、数学家和逻辑学家伯特兰·罗素(Bertrand Arthur William Russell)在和他通信的时候提出了一个罗素悖论(上面的理发师问题是该悖论的一个通俗化版本),该悖论实际上动摇了弗雷格著作的根基。此时《算术的基本定律》的第二卷已经付印,不能再更改了,他只得痛苦地在书后加了一段说明:
“在工作完美收官之际,却突然发现整个基础都必须要放弃,对一个科学家来说没有什么能比这个更加不幸的了。是罗素的一封信件让我认识到这一点。该悖论的出现不光摧毁了我的理论,甚至动摇了整个数学的根基。”
为了解决这个悖论,后来的学者对集合的概念进行了完善,提出了公理化集合论。该理论较为复杂,我们就不展开了。在本课程中可以简单理解为,为了解决罗素悖论,所以要求“集合的元素必须明确”。
7.1 用 python 来计算
首先,我们的课程的重点在于讲解概念,对于计算并不怎么涉及;再者,我们的读者有一些已经参加工作了,并不需要像学生一样注重计算。所以本课程专门增加了简短的篇幅来介绍如何用 python 完成数学的计算。
有两点需要说明下:
7.2 集合的创建
下面开始正式的讲解。之前说了集合是数学的基础,那么 python 作为一门可以很好进行数学运算的语言,自然也会有支持集合的库,就是很常用的 numpy 库。下面是简单的代码示例:
import numpy as np # 引入 numpy 库 # 用列举法创建两个集合 A = np.array ([1 ,2 ,3 ,4 ,5 ,6 ]) B = np.array ([1 ,2 ,1 ,3 ]) # numpy 的集合是允许重复元素的 # 用描述法创建一个集合 C = np.arange(1 , 7 , 1 ) # 1 ~ 6 的自然数 # 打印结果 print ('集合 A = {}' .format(A))print ('集合 B = {}' .format(B))print