Python 将派生项与sympy合并?

Python 将派生项与sympy合并?,python,sympy,Python,Sympy,我有很多变量乘积的导数: d/dx [f(x) * g(x) * h(x)] 但当我用sympy表示时,它会自动执行链式规则: x = Symbol('x') diff(Function('f')(x)*Function('g')(x)*Function('h')(x), x) 屈服 You can use Derivative rather than diff: In [4]: diff(f(x)*g(x), x)

我有很多变量乘积的导数:

d/dx [f(x) * g(x) * h(x)]
但当我用sympy表示时,它会自动执行链式规则:

x = Symbol('x')
diff(Function('f')(x)*Function('g')(x)*Function('h')(x), x)
屈服

You can use Derivative rather than diff:

In [4]: diff(f(x)*g(x), x)                                                                                                                                    
Out[4]: 
     d               d       
f(x)⋅──(g(x)) + g(x)⋅──(f(x))
     dx              dx      

In [5]: Derivative(f(x)*g(x), x)                                                                                                                              
Out[5]: 
d            
──(f(x)⋅g(x))
dx 

您可以使用导数而不是差分:

In [25]: e = diff(f(x)*g(x), x)                                                                                                                               

In [26]: e                                                                                                                                                    
Out[26]: 
     d               d       
f(x)⋅──(g(x)) + g(x)⋅──(f(x))
     dx              dx      

In [27]: e.subs(g(x), h(x)/f(x)).doit().factor().subs(h(x), f(x)*g(x))                                                                                        
Out[27]: 
d            
──(f(x)⋅g(x))
dx 
我不知道有哪种简化程序会“颠倒”产品规则,但如果你知道你期望的产品,那么你可以使用替代品:


谢谢,很酷,我不知道。不幸的是,它并没有真正回答我的问题-这只是停止了表达式的求值。我的情况是,我已经有了一个结果,我希望它被压缩。我添加了一种方法,如果你知道产品应该是什么的话。谢谢,这教会了我一些有用的东西!我对你的答案投了赞成票,因为它很有帮助。然而,我将保留这个问题,因为我认为一个更通用的解决方案是可能的(也许在未来的版本中),而不需要事先了解产品,我希望(也许你也希望!)能提供这样的答案。