2017-10-08 160 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(甚至是笔和纸)来进行这些计算。