**集合**实验**
1.集合的概念
离散数学是围绕集合的概念而建立的,集合可以描述为“由一些任意确定的、彼此有区别的对象所组成的一个整体”。集合中的对象称为该集合中的元素,通常用大写英文字母表示集合,小写英文字母表示元素。
如果a是集合S中的元素,则记为a∈S,读作“a属于S”,如果a不是S中的元素,则记为a∉S,读作“a不属于S”。自然数集合用N表示,整数集合用Z表示,有理数集合用Q表示,实数集合用R表示。
若集合的元素个数为有限个,称为有限集,反之,若集合的元素个数为无限个,则为无限集。
使用"sympy"数学计算库创建一个有限集A={1,2,3}:
A = sym.FiniteSet(1,2,3)
-
FiniteSet
是SymPy
提供的类,用于表示数学上的有限集合。
输出这个集合A:
print(A)
输出为:
{1, 2, 3} # 可以看到输出结果转为了我们使用的花括号的形式表示。
可使用has()函数判断元素1是否属于集合A:
print(A.has(1))
输出为:
True # 元素 1 属于集合 A。
(1)子集
假设我们从一个集合U中分出两个小集合A和B,若集合A中的元素都存在于集合B,则称集合A为集合B的子集,记为A⊆B。当集合A中的元素全部存在于集合B,而集合B中的元素不完全存在于集合A,则称集合A为集合B的真子集,记为A⊂B。子集有如下性质:
若A⊆B,且B⊆C,则A⊆C;
若A⊂B,且B⊆C,则A⊂C;
若A⊆B,且B⊂C,则A⊂C;
若A⊂B,且B⊂C,则A⊂C。
用 Python 语言表示第一个性质:
A = sym.FiniteSet(1,2,3) # 创建集合A={1,2,3}
B = sym.FiniteSet(1,2,3,4) # 创建集合B={1,2,3,4}
C = sym.FiniteSet(1,2,3,4,5) # 创建集合C={1,2,3,4,5}
print(A <= B) # 判断A是否为B的子集
print(B <= C) # 判断B是否为C的子集
print(A <= C) # 判断A是否为C的子集
输出为:
True
True
True
符合第一个性质结论。
<=
运算符 在 SymPy
中表示 子集(subset)关系:
-
A <= B
检查 A⊆B(即A
的所有元素是否都在B
中)。 -
类似地,
B <= C
检查 B⊆C,A <= C
检查 A⊆C
<
运算符 在 SymPy
中表示 真子集(Proper Subset)关系:
A < B
(A
是B
的子集且A != B
)
(2)空集
我们将没有元素的集合,即元素个数为 0 的集合,称为空集,反之称为非空集。空集使用∅或{}表示,空集是任意集合的子集,是任意非空集合的真子集。
空集可以使用"sympy"表示为:
D = sym.FiniteSet() # 直接使用有限集函数创建,不添加元素
print(D) # 输出空集 D
结果为:
EmptySet()
(3)集合表示法
①列举法:列出集合中的全部元素或者仅列出一部分元素,其余用省略号 (· · · ) 表示。元素之间用逗号分开,然后用花括号括起来。
②描述法:用P (x)表示x具有性质P,用{ x | P(x) } 表示具有性质P的全体元素组成的集合。
2. 集合的基本运算
(1)并:AÈB = { x | xÎA Ú xÎB }
例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A∪B={1,2,3,4,5,6}。使用 Python 的“sympy”库表示为:
A = sym.FiniteSet(1, 2, 3, 4)
B = sym.FiniteSet(3, 4, 5, 6)
C = sym.Union(A, B) # 使用并运算函数
print(C) # 输出结果集合C
结果为:
{1, 2, 3, 4, 5, 6}
(2)交:AÇB = { x | xÎA Ù xÎB }
例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A∩B={3,4}。
使用 Python 的“sympy”库表示为:
A = sym.FiniteSet(1, 2, 3, 4)
B = sym.FiniteSet(3, 4, 5, 6)
C = sym.Intersection(A, B) # 使用交运算函数
print(C) # 输出结果集合C
结果为:
{3, 4}
(3)相对补:A-B = { x | xÎA Ù xÏB }
例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A−B={1,2}
使用 Python 的“sympy”库表示为:
A = sym.FiniteSet(1, 2, 3, 4)
B = sym.FiniteSet(3, 4, 5, 6)
C = A - B
print(C) # 输出结果集合C
结果为:
{1, 2}
(4)对称差:AÅB = (A-B)È(B-A) = (AÈB)-(AÇB)
例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A⊕B={1,2,5,6}
使用 Python 的“sympy”库表示为:
A = sym.FiniteSet(1, 2, 3, 4)
B = sym.FiniteSet(3, 4, 5, 6)
C = sym.Union(A, B) - sym.Intersection(A, B) # 对称差运算
print(C) # 输出结果集合C
结果为:
{1, 2, 3, 4}
(5)绝对补:~A = E-A= { x | xÏA }
例如:全集E={1,2,3,4,5},集合A={1,2,3,4},则E-A={5}
使用 Python 的 “sympy” 库表示为:
E = sym.FiniteSet(1, 2, 3, 4, 5)
A = sym.FiniteSet(1, 2, 3, 4)
E.is_UniversalSet # 设置E为全集
C = A.complement(E) # 使用补运算函数
print(C) # 输出结果集合C
结果为:
{5}