Sympy玩转逻辑符号运算

作者: 阿狸不歌 | 来源:发表于2019-03-27 15:52 被阅读0次

读《计算机科学精粹》一书的时候,发现很多时候需要用到符号运算,本来想自己写一个的,后来发现sympy 把事情都做好了,而且sympy在 jupyter scipy-notebook 里面就有,用起来实在是非常的方便。

计算机科学精粹

下面就试做一下 第一章 1.2 逻辑中的题目,用以抛砖引玉

过热的服务器💥如果服务器过热且空调关闭,会导致服务器崩溃;如果服务器过热且机箱冷却器失效,同样会导致服务器崩溃。那么服务器需要满足哪些条件才能正常工作?

符号分配

'''
A: 服务器过热。
B: 空调关闭
C: 机箱冷却器失效
D: 服务器崩溃
'''
from sympy.logic import *
from sympy import symbols, Symbol
A = Symbol("服务器过热")          # 声明一个符号
B, C = symbols("空调关闭, 机箱冷却器失效")    # 声明多个符号,用“逗号”或“空格” 分割
D = (A & B) | (A & C)       # 即 ( A AND B ) OR ( A AND C )   , D 为服务器崩溃
单独输出表达式 D单独输出表达式 D

采用分配律对上式进行因式分解

from sympy.logic.boolalg import simplify_logic
D = simplify_logic(D)
D
因式分解 可以用 simplify_logic因式分解 可以用 simplify_logic

当满足条件!D服务器可以正常工作。相应的换质位形式为

~D
!D!D

采用德摩根定律去除括号

'''
~A: ~服务器过热    == 服务器没有过热
~B: ~空调关闭      == 空调正常工作
~C: ~机箱冷却器失效 == 机箱冷却正常工作
~D: ~服务器崩溃    == 服务器正常工作
'''
from sympy.logic.boolalg import to_dnf
to_dnf(~D)
去除括号去除括号

从上式可知,只要满足条件 !A(服务器没有过热)或 !B AND !C(空调和机箱冷却器均正常工作),服务器就能正常工作。


小结

sympy 几乎涵盖了各种各样的数学符号运算,逻辑符号运算只是其中小小的一部分,其它强大的功能值得进一步发掘!

相关文章

  • Sympy玩转逻辑符号运算

    读《计算机科学精粹》一书的时候,发现很多时候需要用到符号运算,本来想自己写一个的,后来发现sympy 把事情都做好...

  • 5.3Python数据处理篇之Sympy系列(三)---简化操作

    5.3简化操作 目录 [TOC] 前言 既然sympy是对于符号的运算,那么它对于符号表达式的简化与展开一定很强大...

  • SymPy:符号运算库介绍 (1)

    1.1 欧拉恒等式 1.2 expand():展开表达式 从熟知的公式入手:应用sympy库的expand函数将展...

  • SymPy:符号运算库介绍 (2)

    1.6 三角函数 trigsimp()函数用来化简表达式中的三角函数,method参数用来设定化简算法,例如,化简...

  • 5.5Python数据处理篇之Sympy系列(五)---解方程

    目录 [TOC] 前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大。本章节学习对应官网的:Solve...

  • SymPy 符号运算库剩余部分介绍

    1.11 微分方程 dsolve()用来对微分方程进行符号求解。包括两个参数: 第一个参数是带未知函数的表达式 第...

  • 5.1Python数据处理篇之Sympy系列(一)---Symp

    目录 [TOC] 前言 sympy是python一个强大的数学符号运算第三方库,具体的功能请看下面操作官网教程:h...

  • 位运算

    位运算符号 位运算符号有如下几个 &,|,^,~。接下来一个一个说下我的理解吧。 &运算符 &,与,逻辑运算的话,...

  • 第三章:运算符

    1、逻辑运算符 与c、c++、java、swift等语言不同,python逻辑运算符不是&&,||,!等符号,而是...

  • 运算符

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。 运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符、...

网友评论

    本文标题:Sympy玩转逻辑符号运算

    本文链接:https://www.haomeiwen.com/subject/iqnzvqtx.html