Sympy玩转逻辑符号运算

读《计算机科学精粹》一书的时候,发现很多时候需要用到符号运算,本来想自己写一个的,后来发现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 几乎涵盖了各种各样的数学符号运算,逻辑符号运算只是其中小小的一部分,其它强大的功能值得进一步发掘!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 选择题部分 1.(),只有在发生短路事故时或者在负荷电流较大时,变流器中才会有足够的二次电流作为继电保护跳闸之用。...
    skystarwuwei阅读 13,335评论 0 7
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,051评论 0 13
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,141评论 6 13
  • 花的一生是什么样的?今天给大家分享了关于一朵花的一生,突然想起来不定主题名字,让大家自由发挥想象结合自己的理解自己...
    银尔环阅读 371评论 0 2
  • 有净化才有精华。 那些普通的人,那些穷人, 他们都把他们的时间大部分时间消耗在了。评价这个人怎么样那个人怎么样, ...
    心时代第一执行官唐尧阅读 229评论 0 0