- SymPy 教程
- SymPy - 首页
- SymPy - 简介
- SymPy - 安装
- SymPy - 符号计算
- SymPy - 数值
- SymPy - 符号
- SymPy - 替换
- SymPy - sympify() 函数
- SymPy - evalf() 函数
- SymPy - Lambdify() 函数
- SymPy - 逻辑表达式
- SymPy - 查询
- SymPy - 简化
- SymPy - 导数
- SymPy - 积分
- SymPy - 矩阵
- SymPy - 函数类
- SymPy - 四元数
- SymPy - 求解器
- SymPy - 绘图
- SymPy - 实体
- SymPy - 集合
- SymPy - 打印
- SymPy 有用资源
- SymPy - 快速指南
- SymPy - 有用资源
- SymPy - 讨论
SymPy - 逻辑表达式
布尔函数在sympy.basic.booleanarg 模块中定义。可以使用标准 Python 运算符 & (And)、| (Or)、~ (Not) 以及 >> 和 << 来构建布尔表达式。布尔表达式继承自 SymPy 核心模块中定义的 Basic 类。
BooleanTrue 函数
此函数等价于 Python 核心中的 True。它返回一个单例,可以通过 S.true 获取。
>>> from sympy import * >>> x=sympify(true) >>> x, S.true
以上代码片段给出以下输出:
(True, True)
BooleanFalse 函数
类似地,此函数等价于 Python 中的布尔 False,可以通过 S.false 访问。
>>> from sympy import * >>> x=sympify(false) >>> x, S.false
以上代码片段给出以下输出:
(False, False)
And 函数
逻辑 AND 函数评估其两个参数,如果其中任何一个为 False,则返回 False。该函数模拟 & 运算符。
>>> from sympy import * >>> from sympy.logic.boolalg import And >>> x,y=symbols('x y') >>> x=True >>> y=True >>> And(x,y), x"&"y
以上代码片段给出以下输出:
(True, True)
>>> y=False >>> And(x,y), x"&"y
以上代码片段给出以下输出:
(False, False)
Or 函数
此函数评估两个布尔参数,如果其中任何一个为 True,则返回 True。| 运算符方便地模拟了其行为。
>>> from sympy import * >>> from sympy.logic.boolalg import Or >>> x,y=symbols('x y') >>> x=True >>> y=False >>> Or(x,y), x|y
以上代码片段给出以下输出:
(True, True)
>>> x=False >>> y=False >>> Or(x,y), x|y
以上代码片段给出以下输出:
(False, False)
Not 函数
逻辑 Not 函数导致布尔参数取反。如果其参数为 False,则返回 True;如果为 True,则返回 False。~ 运算符执行与 Not 函数类似的操作。如下例所示:
>>> from sympy import * >>> from sympy.logic.boolalg import Or, And, Not >>> x,y=symbols('x y') >>> x=True >>> y=False >>> Not(x), Not(y)
以上代码片段给出以下输出:
(False, True)
>>> Not(And(x,y)), Not(Or(x,y))
以上代码片段给出以下输出:
(True, False)
Xor 函数
逻辑 XOR(异或)函数如果参数中有奇数个 True 而其余为 False,则返回 True;如果参数中有偶数个 True 而其余为 False,则返回 False。^ 运算符执行类似的操作。
>>> from sympy import * >>> from sympy.logic.boolalg import Xor >>> x,y=symbols('x y') >>> x=True >>> y=False >>> Xor(x,y), x^y
以上代码片段给出以下输出:
(True, True)
>>> a,b,c,d,e=symbols('a b c d e') >>> a,b,c,d,e=(True, False, True, True, False) >>> Xor(a,b,c,d,e)
以上代码片段给出以下输出:
True
在上述情况下,三个(奇数)参数为 True,因此 Xor 返回 true。但是,如果 True 参数的数量为偶数,则结果为 False,如下所示:
>>> a,b,c,d,e=(True, False, False, True, False) >>> Xor(a,b,c,d,e)
以上代码片段给出以下输出:
False
Nand 函数
此函数执行逻辑 NAND 操作。它评估其参数,如果其中任何一个为 False,则返回 True;如果全部为 True,则返回 False。
>>> from sympy import * >>> from sympy.logic.boolalg import Nand >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True) >>> Nand(a,b,c), Nand(a,c)
以上代码片段给出以下输出:
(True, False)
Nor 函数
此函数执行逻辑 NOR 操作。它评估其参数,如果其中任何一个为 True,则返回 False;如果全部为 False,则返回 True。
>>> from sympy import * >>> from sympy.logic.boolalg import Nor >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True) >>> Nor(a,b,c), Nor(a,c)
以上代码片段给出以下输出:
(False, False)
请注意,即使 SymPy 为 Xor 提供了 ^ 运算符,为 Not 提供了 ~,为 Or 提供了 |,为 And 提供了 & 函数作为便利,但它们在 Python 中的正常用法是作为按位运算符。因此,如果操作数是整数,则结果将不同。
Equivalent 函数
此函数返回等价关系。Equivalent(A, B) 当且仅当 A 和 B 都为 True 或都为 False 时为 True。如果所有参数在逻辑上等价,则该函数返回 True。否则返回 False。
>>> from sympy import * >>> from sympy.logic.boolalg import Equivalent >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True) >>> Equivalent(a,b), Equivalent(a,c)
以上代码片段给出以下输出:
(False, True)
ITE 函数
此函数充当编程语言中的 If then else 子句。ITE(A, B, C) 评估并返回 B 的结果,如果 A 为真,否则返回 C 的结果。所有参数必须为布尔值。
>>> from sympy import * >>> from sympy.logic.boolalg import ITE >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True) >>> ITE(a,b,c), ITE(a,c,b)
以上代码片段给出以下输出: