2017-10-08 70 views
0

請參考以下MWE:SymPy:克羅內克函數的導數和指數

import sympy as s 
x = s.IndexedBase('x') 
y = s.IndexedBase('y') 
i,j,k = map(s.Idx,['i','j','k']) 
a = s.exp(x[i]*y[j]*s.KroneckerDelta(i,j)) 
b = a.diff(x[j]) 

b值是LaTeX rendering of b。因爲我不允許嵌入圖像的是,這裏是文本形式

((Derivative(KroneckerDelta(i, j), i)*Derivative(i, x[j]) + Derivative(KroneckerDelta(i, j), j)*Derivative(j, x[j]))*x[i]*y[j] + KroneckerDelta(i, j)*y[j])*exp(KroneckerDelta(i, j)*x[i]*y[j]) 

關鍵的一點是,有針對的KroneckerDelta未經評估衍生品指數ij和指數ij的衍生物相對於x[i]。爲什麼這些不是0

+1

顯然這是使用_Idx_時出現的問題。如果您只是使用普通符號作爲索引,則結果會不同。 –

回答

0

我認爲,我期待的索引變量符號區分的行爲方式尚未在Sympy中完全實現。我開始使用其他工具,如Maxima或Mathematica(甚至是筆和紙)來進行這些計算。