我正在寻找一种自动确定(a < 12) & (a < 3) & (c >= 4)
与(a < 3) & (c >= 4)
相同的方法。我研究了Matlab的符号工具箱和Python中的symphy,但它们显然只能简化纯布尔逻辑(例如simplify(a & b | b & a) -> ans=(a & b)
)
有没有一种方法可以像上面描述的那样使用这些符号数学工具
编辑
正如对@user12750353答案的评论中所指出的,我还想简化用布尔或(例如,((a < 12) & (a < 3) & (c >= 4)) | (a < 1)
)连接的关系系统
Tags:
SymPy集可用于进行单变量简化,例如
((x < 3) & (x < 5)).as_set() -> Interval.open(-oo, 3)
,集可转换回关系。下面将复杂表达式转换为cnf形式,根据自由符号分隔参数,并简化单变量的参数,同时保持多变量参数不变例如:
您可以在sympy inequality solvers中查看一些选项
我可以用
reduce_inequalities
来解决你的问题结果呢
(4 <= c) & (-oo < a) & (a < 3) & (c < oo)
它还适用于一些更复杂的示例
只要每个不等式有一个变量
相关问题 更多 >
编程相关推荐