∀ 与 ∃ —— "所有"还是"存在"?一字之差,天壤之别
给炸弹人布置一个「数字集合」,2️⃣切换量词。观察:同样的集合,换一个量词,命题的真假竟然完全相反!
| 量词 | 性质P | 集合S | 真假 |
|---|
刚才的游戏中,我们切换量词来检验集合中的元素。仔细想想:
人教版必修第一册(P28):
短语「任意」「所有」「每一个」在逻辑中通常叫做全称量词,符号表示为 ∀。
命题 ∀x∈M, P(x) 表示:对集合 M 中所有元素 x,P(x) 都成立。
短语「存在」「至少有一个」「有些」在逻辑中通常叫做存在量词,符号表示为 ∃。
命题 ∃x∈M, P(x) 表示:在集合 M 中存在元素 x,使 P(x) 成立。
量词的否定是高考核心考点。💡 记住口诀:「量词变,结论否」。
在命题 ∀x∈S, x>k 中,k 是一个阈值。 当 k 增大时,满足条件的元素减少,全称命题更容易为假。
# ∀x∈S, P(x) 等价于 all(P(x) for x in S) # ∃x∈S, P(x) 等价于 any(P(x) for x in S) S = [1, 2, 3, 4, 5] # ∀x∈S, x>0 print(all(x > 0 for x in S)) # True # ∃x∈S, x>3 print(any(x > 3 for x in S)) # True # 否定: ¬(∀x, P(x)) = ∃x, ¬P(x) # all()的否定是any(),反之亦然
True True
def negate(quantifier, predicate, domain): """求命题的否定:∀变∃,∃变∀,P取否""" if quantifier == 'forall': new_q = 'exists' new_p = lambda x: not predicate(x) result = any(new_p(x) for x in domain) else: new_q = 'forall' new_p = lambda x: not predicate(x) result = all(new_p(x) for x in domain) return new_q, result # 例:¬(∀x∈[1,2,3], x>0)) = ∃x, x≤0 S = [1, 2, 3] q, r = negate('forall', lambda x: x>0, S) print(f'否定后: {q}, 真假: {r}') # exists, False
否定后: exists, 真假: False