Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I'm relatively inexperienced with mathematica, so I apologize if this is a trivial question. I want to take a double sum over a function $f(i,j)$ of two indices, of the form $$ \sum_{i = -\infty}^\infty \sum_{j = 0\atop j\not = i}^m f(i,j). $$ That is, in the inner sum I want to sum over only those indices $j$ in my range of summation that satisfy the assumption $j \not = i$. How can I input such a sum to Mathematica?

share|improve this question
6  
Use Boole[] or KroneckerDelta[]. See this as well. –  J. M. May 26 '13 at 9:14
2  
Change function inside sum to: Sign[Abs[i - j]] f[i,j], not very elegant but it works. –  Kuba May 26 '13 at 9:24

2 Answers 2

up vote 5 down vote accepted

You can use Boole as follows:

Sum[f[i, j] Boole[i != j], {j, 0, m}, {i, -Infinity, Infinity}]

Here's an example where f[i, j] = Sin[i] Cos[j]

Sum[Sin[i] Cos[j] Boole[i != j], {j, 0, 3}, {i, 0, 3}]

Which gives

Sin[1] + Cos[2] Sin[1] + Cos[3] Sin[1] + Sin[2] + Cos[1] Sin[2] + 
 Cos[3] Sin[2] + Sin[3] + Cos[1] Sin[3] + Cos[2] Sin[3]
share|improve this answer
    
Thanks a lot, this is very helpful. –  Nick Strehlke May 27 '13 at 3:12
    
@NickStrehlke, glad I could help. –  RunnyKine May 27 '13 at 5:21

You can use If to put the condition in the argument of the sum. It would be something like

Sum[If[i != j, f[i, j], 0], {i, -Infinity, Infinity}, {j, 0, m}]

where If[i != j, f[i,j], 0] tells Mathematica to use $f(i,j)$ in the sum if $i\neq{j}$ or 0 if $i=j$.

share|improve this answer
    
Thank you! This answer was helpful too. –  Nick Strehlke May 27 '13 at 3:13
1  
I found that your If solution works better than the Boole by RunnyKine, because it allows f[i,j] to be undefined at i == j. –  Peeter Joot Sep 19 '13 at 1:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.