2017-07-24 67 views
1

真实变量的实值函数的微分产生实际函数。以实函数的虚部返回0,如预期如何使im和diff通信

>>> class rho(Function): 
     is_real=True 

>>> var('t',real=True) 
>>> im(rho(t)) 
0 

然而,取函数的导数的虚部不

>>> im(diff(rho(t)) 
im(Derivative(rho(t),t)) 

我怎样才能让这些操作上下班?

回答

0

我不认为这是做两个操作通勤的问题,我认为这是一个语法问题。

Function是所有函数的SymPy基类。如果你看这个参考here,为了评估这个类的一个实例,我们需要一个评估函数在主体中。

from sympy import * 

var('t',real=True) 

class rho(Function): 
    is_real = True 

    # Missing part of your original rho function 
    @classmethod 
    def eval(cls,t): 
     # e.g. 2*t, but any function of t works 
     return 2*t 

im(rho(t)) 
# Out: 0 

im(diff(cos(t))) 
# Out: 0 

最初,调用im(Derivative(rho(t),t))的结果是im(Derivative(rho(t),t))。这是unevaluated derivative.的输出这个结果是有意义的,因为我们还没有定义函数rho如何得到评估,所以Derivative函数当然不能评估它。

+0

然后问题是,(diff(rho(t),t))= 2t。我想re(diff(rho(t),t))= diff(rho(t),t)。从数学角度来看,这基于对rho和t的假设是有意义的。 – simon

+0

我不确定具体的结果是否可以实现。在re函数的SymPy文档中:“该函数仅执行基本分析,因此将无法正确分解更复杂的表达式。” http://docs.sympy.org/0.7.0/modules/functions.html – hausdork