gpt4 book ai didi

python sympy 不能很好地分解 bool 多项式

转载 作者:行者123 更新时间:2023-12-01 02:27:13 36 4
gpt4 key购买 nike

我正在尝试分解 bool 多项式以获得逻辑网络的最小形式。我的变量是 a1、a2、a3 ... 以及负对应项 na1、na2、na3 ...

如果需要一个函数

f = a1*a2*b2*nb1 + a1*b1*na2*nb2 + a1*b1*na2 + a2*b2*na1*nb1 

像这样分解(至少):

f = a1*b1*(b2*nb1 + na2*(nb2 + 1)) + a2*b2*na1*nb1

我运行这个脚本:

import sympy
a1,a2,b1,b2,b3,na1,na2,na3,nb1,nb2,nb3 = \
sympy.symbols("a1:3, b1:4, na1:4, nb1:4", bool=True)
f = "a1*na2*b1 + a1*a2*nb1*b2 + a1*na2*b1*nb2 + na1*a2*nb1*b2"
sympy.init_printing(use_unicode=True)
sympy.factor(f)

这会返回相同的函数,但未分解。

a1*a2*b2*nb1 + a1*b1*na2*nb2 + a1*b1*na2 + a2*b2*na1*nb1

我做错了什么?

最佳答案

您的预期输出

f = a1*b1*(b2*nb1 + na2*(nb2 + 1)) + a2*b2*na1*nb1

不是 f 的因式分解,因此 factor 不会产生它。分解某物意味着将其写为产品,而不是“产品加上其他一些东西”。

如果您给出一个实际上可以因式分解的多项式,例如 f = a1*na2*b1 + a1*a2*nb1*b2 + a1*na2*b1*nb2,则 因子(f)有影响。

您正在寻找的内容更接近于收集具有相同变量的术语,这是通过collect完成的。

f = a1*na2*b1 + a1*a2*nb1*b2 + a1*na2*b1*nb2 + na1*a2*nb1*b2
collect(f, a1)

输出

a1*(a2*b2*nb1 + b1*na2*nb2 + b1*na2) + a2*b2*na1*nb1

方法coeff也适用于这个方向,例如,f.coeff(a1)返回上一个公式中括号的内容。

关于python sympy 不能很好地分解 bool 多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47262626/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com