我有下面的同情心表达
expr=b0*d0*u0 - b0*d1*u1 - b1*d0*u1 - b1*d1*u0 + d0*b0*u0 - d0*b1*u1 - d1*b0*u1 - d1*b1*u0
我想知道,例如,产品
d0*u0
在这个表达式中。为此,我使用
print(expr.has(d0*u0))
但结果是
False
但是,如果我替换这个子表达式而不询问它是否在表达式中,Sympy会毫无问题地执行它
print(expr.subs(d0*u0,x0))
b0*x0 - b0*d1*u1 - b1*d0*u1 - b1*d1*u0 + d0*b0*u0 - d0*b1*u1 - d1*b0*u1 - d1*b1*u0
那么,我怎么知道我要找到的子表达式是否在表达式中呢?你知道吗
这似乎是当前非交换符号的问题,否则
expr.has(d0*u0)
返回True。你知道吗只要
subs
可以识别一个子表达式,下面的方法就会起作用:即,用虚拟变量替换子表达式,并测试该虚拟变量的存在。你知道吗
但是,在SymPy(1.2+)的未来版本中,修复此错误后,此解决方法将变得不必要。你知道吗
相关问题 更多 >
编程相关推荐