发现试图将表达式与具有偏见的输入匹配的怪异问题,而无需评估(Sympy)
我已经详细介绍了本期线程 https://github.com/sympy.com/sympy/sympy/sympy/sympy/sympy/issues/issues/sissues/sissues /23709
但要点是我试图以形式的方程式获得一个方程的系数:
parsed_input = 7*x + 4*(10*x + 6) >= 8*x + 15
我使用的模式:
x = Wild("x", properties=[lambda x: isinstance(x, Symbol)])
a = Wild("a", properties=[lambda x: isinstance(x, Integer)])
p = Wild("p", properties=[lambda x: isinstance(x, Integer)])
q = Wild("q", properties=[lambda x: isinstance(x, Integer)])
b = Wild("b", properties=[lambda x: isinstance(x, Integer)])
c = Wild("c", properties=[lambda x: isinstance(x, Integer)])
r = Wild("r", properties=[lambda x: isinstance(x, Integer)])
s = Wild("s", properties=[lambda x: isinstance(x, Integer)])
expected_output = Ge(Mul(a, (p*x + q)) +b*x + c, r*x + s)
但是当我这样做时:
matching = parsed_input.match(expected_output)
我大多得到a = 1,p = 40,q = 24我有时会得到a = 4,p = 10,q = 6
我如何获得a = 4,p = 10,q = 6?
I have gone into detail in this issue thread https://github.com/sympy/sympy/issues/23709
but the gist is that I am trying to get the coefficients of an equation in the form:
parsed_input = 7*x + 4*(10*x + 6) >= 8*x + 15
I am using the pattern:
x = Wild("x", properties=[lambda x: isinstance(x, Symbol)])
a = Wild("a", properties=[lambda x: isinstance(x, Integer)])
p = Wild("p", properties=[lambda x: isinstance(x, Integer)])
q = Wild("q", properties=[lambda x: isinstance(x, Integer)])
b = Wild("b", properties=[lambda x: isinstance(x, Integer)])
c = Wild("c", properties=[lambda x: isinstance(x, Integer)])
r = Wild("r", properties=[lambda x: isinstance(x, Integer)])
s = Wild("s", properties=[lambda x: isinstance(x, Integer)])
expected_output = Ge(Mul(a, (p*x + q)) +b*x + c, r*x + s)
But when I do:
matching = parsed_input.match(expected_output)
I am mostly getting a=1 , p=40, q=24 and some other times I get a=4,p=10, q=6
How can I get a=4,p=10, q=6 everytime?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有时,自定义解析器可以提供帮助:
Sometimes a custom parser can help: