当我尝试用 SymPy 区分符号时,我得到以下结果
In : x=Symbol('x')
In : diff(x,x)
Out: 1
当我将符号与其共轭微分时,结果是
In [55]: diff(x,x.conjugate())
Out[55]: 0
但是,当我尝试区分符号 SymPy 的共轭时,SymPy 并没有这样做
In : diff(x.conjugate(),x)
Out: Derivative(conjugate(x), x)
这仍然是正确的,但结果应该为零。如何让 SimPy 执行共轭的导数?
我不确定数学是否diff(conjugate(x), x)
应该为零。事实是diff(x,x.conjugate())
给出零与数学无关(甚至可能被认为是 SymPy bug)。它给出零只是因为x
不含conjugate(x)
(象征性地),因此它将它视为相对于它的常数。这可能是错误的,因为x
不是一个常数conjugate(x)
。事实上,SymPy 允许您对定义的函数进行导数,这可能是一个错误。它应该允许类似的事情diff(f(x)**2, f(x))
, where f = Function('f')
是一个未定义的函数,但对于已定义的函数,它在数学上可能是不正确的(或者至少不是您所期望的)。
See http://docs.sympy.org/latest/modules/core.html?highlight=derivative#sympy.core.function.Derivative http://docs.sympy.org/latest/modules/core.html?highlight=derivative#sympy.core.function.Derivative,特别是关于非符号衍生品的部分。换句话说,对函数求导就是只是为了符号方便 and 不代表数学链式法则。相反,类似的东西diff(x, conjugate(x))
应该被认为是类似的东西diff(x.subs(conjugate(x), dummy), dummy).subs(dummy, conjugate(x))
.
关于conjugate(x).diff(x)
,这给出了未评估的导数,因为没有为共轭定义导数。无论如何,我不确定这里是否可以有任何封闭式答案。这可能是 SymPy 可以返回的最有用的东西。关于这个问题的合理答案应该是什么,我在任何地方都找不到任何好的答案(你应该在数学SE上询问以获得更好的答案)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)