当我尝试用 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 执行共轭的导数?
请您参考如下方法:
如果 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 , 共轭 (x)).
关于 conjugate(x).diff(x),这给出了一个未计算的导数,因为没有为共轭定义导数。无论如何,我不确定这里是否有任何封闭形式的答案。这可能是 SymPy 可以返回的最有用的东西。关于合理的答案应该是什么,我在任何地方都找不到任何好的答案(你应该问数学 SE 以获得更好的答案)。
