我尝试了以下操作:>>> from sympy import *>>> k,m,n = symbols("k m n", integer=True)>>> (3*k+4)%2 - k%20 # it works with the fix above. Thank you!>>> p = Wild('p')>>> q = Wild('q')>>> e = (2*k+7)%5 + 7*k+7>>> e7*k + Mod(2*k + 2, 5) + 7>>> e.match(p%5+p)>>> e.match((p+5*q)%5+p)>>> e.match(p%5+p+5*q){q_: k + 1, p_: 2*k + 2}我希望第一个或第二个e.match对我有用({p:7*k+7}第一个和{p:7*k+7,q:-k}第二个),但事实并非如此。这是一个错误吗?如果是,是否有修复/解决方法?
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
match 的数学知识非常有限。它不知道2*k
中的Mod
可以替换为7*k
。
我不确定这是否容易解决。match 已经非常复杂,因为它所做的数学匹配有限。可能需要更好的设计来解决此类问题。实际上,这让我觉得是您需要 SMT 求解器来解决的那种问题,但也许有更简单的算法可以做到这一点。
抱歉,这并没有直接回答如何解决问题。
添加回答
举报
0/150
提交
取消