当我尝试用SymPy区分符号时,我得到以下内容
In : x=Symbol('x')
In : diff(x,x)
Out: 1
当我将符号方面与其共轭区分开时,结果是
In [55]: diff(x,x.conjugate())
Out[55]: 0
然而,当我试图区分符号的共轭时,SymPy没有这样做
In : diff(x.conjugate(),x)
Out: Derivative(conjugate(x), x)
这仍然是正确的,但结果应为零。如何让SimPy执行共轭的衍生?
答案 0 :(得分:1)
如果diff(conjugate(x), x)
应为零,我不确定数学。 diff(x,x.conjugate())
给出零的事实与数学无关(甚至可能被认为是SymPy错误)。它只是因为x
不包含conjugate(x)
(符号)而给出零,因此它将其视为相对于它的常量。这可能是错误的,因为x
不是conjugate(x)
的常量。事实上,SymPy允许你对定义的函数采取衍生物这一事实可能是一个错误。它应该允许像diff(f(x)**2, f(x))
这样的东西,其中f = Function('f')
是一个未定义的函数,但对于定义的函数,它可能在数学上是不正确的(或者至少不是你期望的)。
参见http://docs.sympy.org/latest/modules/core.html?highlight=derivative#sympy.core.function.Derivative,特别是关于非符号衍生物的部分。换句话说,就函数而言,取得衍生物只是一种符号方便而并不代表数学链规则。相反,像diff(x, conjugate(x))
这样的东西应该被认为是diff(x.subs(conjugate(x), dummy), dummy).subs(dummy, conjugate(x))
。
关于conjugate(x).diff(x)
,这给出了未评估的导数,因为没有为共轭定义导数。无论如何,我不确定是否有任何封闭形式的答案。可能这是SymPy可以返回的最有用的东西。我无法在任何地方找到任何合适的答案(你应该问数学SE以获得更好的答案)。