2013-07-04 158 views
2

的結合物,當我嘗試區分具有SymPy一個符號,我得到以下衍生物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

我不確定共軛物的衍生物應該爲零。 – asmeurer

+0

這就是我們在課堂上一直這樣做的方式。除非變量是實數,否則共軛的導數爲零。在這種情況下,它是1. –

回答

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上得到更好的答案)。

+0

我打開了與此相關的https://code.google.com/p/sympy/issues/detail?id=3928。 – asmeurer