Python 如何在Symphy中推动替换
我有下面的公式,其中a,b,c,d都是符号Python 如何在Symphy中推动替换,python,sympy,Python,Sympy,我有下面的公式,其中a,b,c,d都是符号 p = a + b + 2*c + d q = a + b + c + d 我想这样做: p = p.subs(a + b + c + d, q) 想要得到这个: p = q + c 但p保持不变 我应该怎么做才能达到p=q+c subs()执行的匹配似乎是为了严格排序,因此它没有拆分“2*c”项 我应该使用replace()而不是subs() 编辑: 代码如下: import sympy a, b, c, d = sympy.symbols(
p = a + b + 2*c + d
q = a + b + c + d
我想这样做:
p = p.subs(a + b + c + d, q)
想要得到这个:
p = q + c
但p保持不变
我应该怎么做才能达到p=q+c
subs()执行的匹配似乎是为了严格排序,因此它没有拆分“2*c”项
我应该使用replace()而不是subs()
编辑:
代码如下:
import sympy
a, b, c, d = sympy.symbols('a,b,c,d')
p = a + b + 2*c + d
q = a + b + c + d
r = p.subs(a + b + c + d, q)
print r
编辑#2
我的问题与groups.google链接类似,只是在这种情况下subs()完成了它的工作 首先是对代码的评论:因为你将q定义为a+b+c+d之和,所以你永远看不到变化,即使它确实有效(但它没有)。其他可行的方法如下:
>>> p = a + b + 2*c + d
>>> q = var('q')
>>> p.extract_additively(a+b+c+d) + q
c + q
还有一种提取乘法的方法。你能给我们完整的代码吗?代码被添加到原始帖子中!谢谢你的回答!看起来我可能需要编写一个自定义函数来简化表达式,以便更简洁地表示。我有一个相关的问题,在我的情况下,我有p和q表达式,这两个表达式都已经定义好了(如原始问题),有没有办法用q来简洁地表示p?或者q总是会被扩展成a,b,c,d项?如果不是,我想我的定制函数只需要先“盲”q,然后在p或其他东西上绕过extract_additily函数。