2

How to obtain Kronecker delta summation rule using Wolfram Mathematica: $$ \delta_{ij}\delta_{jk}=\delta_{ik} $$

The following code does not produce the result.

Sum[KroneckerDelta[i, j] KroneckerDelta[j, k], {j, 1, 3}]

It gives the following output instead. $$ \delta_{i1}\delta_{1k}+\delta_{i2}\delta_{2k}+\delta_{i3}\delta_{3k} $$

May be this can be done by using xAct package?

  • Why should it simplify to your from? Put $i=k=4$. – Andrew Jan 12 '19 at 12:24
  • You're right. I didn't mean that 3D space in general. But I need to simplify such summations without additional assumptions of the dimension of the space. – Ilya Bryukhanov Jan 12 '19 at 12:40
  • Sum[KroneckerDelta[i, j] KroneckerDelta[j, k], j] // Simplify; does not provide the desired result. – Ilya Bryukhanov Jan 12 '19 at 12:41
  • xAct can do this. It would be something like declaring DefManifold[M, 3, {i, j, k, l}] and then using (note the need to match up/down indices):

    In[]:= delta[-i, j] delta[-j, k] Out[]= delta[-i, k]

    – jose Jan 16 '19 at 01:52
  • This is relevant https://mathematica.stackexchange.com/questions/202373/how-can-i-automate-this-tensor-computation – yarchik Feb 27 '20 at 12:14

4 Answers4

5

You might consider using DiscreteDelta[i-j] instead of KroneckerDelta[i,j]. With this substitution, the desired simplification occurs automatically:

Sum[DiscreteDelta[i - j] DiscreteDelta[j - k], {j, -\[Infinity], \[Infinity]}]
DiscreteDelta[i - k]
bill s
  • 68,936
  • 4
  • 101
  • 191
  • Thanks a lot!. Do you know packages for Wolfram that do the simplifications of kronecker delta expression faster than DiscreteDelta? – Ilya Bryukhanov Jan 13 '19 at 19:55
3

This work, but doesn't give the answer in the terms of KronekerDelta function:

Simplify[Sum[KroneckerDelta[i, j] KroneckerDelta[j, k], {j, -\[Infinity], \[Infinity]}], 
 i \[Element] Integers && k \[Element] Integers]

$$ \begin{cases} 1 & i=k \\ 0 & \text{True} \end{cases} $$ If parameters $i$, $k$ etc which should be integer are known, this command changes this piecewise function into KronekerDelta:

       kroneckerReduce[expr_, freeindexes_] :=FullSimplify[expr, freeindexes \[Element] Integers] /. 
  Piecewise[{{1, freeindex1_ == freeindex2_}}, 0] -> KroneckerDelta[freeindex1, freeindex2]

as in

kroneckerReduce[Sum[KroneckerDelta[i, j] KroneckerDelta[j, k], {j, -\[Infinity], \[Infinity]}], {i, k}]

$\delta _{i,k}$

Andrew
  • 2,513
  • 17
  • 15
0

Not very satisfactory, but it works for specific values of $i$ or $k$

Table[Sum[KroneckerDelta[i, j] KroneckerDelta[j, k], {j, 1, 3}], {i, 3}]

(*{KroneckerDelta[1, k], KroneckerDelta[2, k], KroneckerDelta[3, k]}*}
Bill Watts
  • 8,217
  • 1
  • 11
  • 28
0

See here:

    Subscript[δ, i_, j_] := KroneckerDelta[i, j];
    ruleDelta = 
      KroneckerDelta[1, i_] KroneckerDelta[1, k_] + 
  KroneckerDelta[2, i_] KroneckerDelta[2, k_] + 
  KroneckerDelta[3, i_] KroneckerDelta[3, 
    k_] -> Subscript[δ, i, k]
Sum[Subscript[δ, i, j]*Subscript[δ, j, k], {j, 1,3}] /. ruleDelta