集合的概念
数学作为科学研究的主要工具,其涉及的范围相当广泛:
为了可以去表达、建构这些研究对象,数学产生了它的基础之一集合论(Set theory),这就是本单元要介绍的内容。
比如下面是一些多边形的集合,其中的每个多边形都是该集合的元素:
下图是否代表了一个集合?
A 是 B 不是
查看详细解答,请点击最下面的“阅读原文”。
接着让我们来了解下如何表示集合。本课总共会介绍三种表示法:
Venn 图
列举法
描述法
让我们从最形象的 Venn 图开始。
2.1 Venn 图
在数学中,我们经常用平面上的封闭曲线的内部来代表集合,并将元素放在封闭曲线的内部,这种图称为 Venn 图(中文翻译为文氏图、韦恩图等)。
比如下面是三个集合的 Venn 图:
2.2 不包含元素的 Venn 图
在后面的学习中会看到,某些时候我们并不关心集合中的元素,此时可以只画出封闭曲线,然后用一个大写字母来为该集合命名(以示区分):
2.3 数学小历史
Venn 图是19世纪英国的哲学家、数学家约翰·维恩(John Venn,1834 -1923)在 1881 年发明的:
上一节中提到的多边形的集合是否为 Venn 图?
A 是 B 不是
查看详细解答,请点击最下面的“阅读原文”。
我们还可以把集合中的元素一一列举出来,这种表示方法叫作 列举法。比如上节中的第一个 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 完成数学的计算。
有两点需要说明下:
本课程究竟不是编程课程,所以涉及到的 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('集合 C = {}'.format(C))
print('A {} B, A {} C'.format('=' if np.array_equal(A, B)
else '!=', '=' if np.array_equal(A, C) else '!='))
运行结果
集合 A = [1 2 3 4 5 6]
集合 B = [1 2 1 3]
集合 C = [1 2 3 4 5 6]
A != B, A = C
本课介绍了什么是集合( Set ),就是一些元素组成的总体:
然后介绍了集合的三种表示法:
以及集合的三个特性:
无序性:
互异性:
明确性:所有的美女不能构成一个集合
下一课我们来讨论元素与集合,以及集合与集合之间的关系。
本文是《高等数学预备课》的内容,是为了进一步降低学习门槛而推出来的免费课,希望可以帮助到更多的同学。
我们用同样的通俗易懂、图形化的方式,对机器学习中的《监督式学习》进行了精讲,可以点击下面的链接购买:
也可以直接点击下面这个图片购买机器学习的前置课程,《线性代数》、《单变量微积分》、《多变量微积分》、《概率论与数理统计》:
最易懂的数学知识库:
马同学图解数学
看得懂的数学