Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Skipping Elements in Sum

  • To: mathgroup at smc.vnet.net
  • Subject: [mg61204] Re: [mg61160] Re: Skipping Elements in Sum
  • From: Andrzej Kozlowski <andrzej at yhc.att.ne.jp>
  • Date: Wed, 12 Oct 2005 01:43:27 -0400 (EDT)
  • References: <did35k$qh9$1@smc.vnet.net> <difr6v$fe8$1@smc.vnet.net> <200510110849.EAA17372@smc.vnet.net>
  • Reply-to: Andrzej Kozlowski <andrzej at akikoz.net>
  • Sender: owner-wri-mathgroup at wolfram.com

It seems to me that the main point is a bit different. Actually there  
are two quite different  reasons to use Sum. The first is when you  
want to compute the sum of a finite number or numbers. In this case  
one does not really need Sum: using Table and Plus (or Total or  
Trace) will often be more convenient and make "skipping" even easier  
and safer than with Sum and KroneckerDelta. But there is a completely  
different situation when you actually do need to use Sum and that is  
when you want to use Mathematica's ability to compute symbolic sums  
of expressions with variable (or infinite) number of terms. Using  
KroneckerDelta in such cases usually simply does not work and the  
best approach is to try to "re-index" the sum. here is a trivial  
example.

Consider the sum of n terms:


Sum[1/2^i, {i, 1, n}]


(-1 + 2^n)/2^n

Now suppose we only want to compute the sum over the even numbers n.

We could try:


Sum[KroneckerDelta[0, Mod[i, 2]]*(1/2^i), {i, 1, n}]

This will work fine when n is a number:


Sum[KroneckerDelta[0, Mod[i, 2]]*(1/2^i), {i, 1, 51}]


375299968947541/1125899906842624

but not when n is a symbol:


Sum[KroneckerDelta[0, Mod[i, 2]]*(1/2^i), {i, 1, n}]


Sum[KroneckerDelta[0, Mod[i, 2]]/2^i, {i, 1, n}]

For loops will be of no help here; in such cases the only thing to do  
is to re-index and hope that Mathematica knows the answer (which it  
often does):


Sum[1/2^(2*i), {i, 1, Floor[n/2]}]


((1/3)*(-1 + 2^Floor[n/2])*(1 + 2^Floor[n/2]))/
   2^(2*Floor[n/2])


Andrzej Kozlowski
Tokyo, Japan






On 11 Oct 2005, at 17:49, Jens-Peer Kuska wrote:

> Hi,
>
> the main problem with
>
> Sum[(1-KroneckerDelta[i,j])*a[i,j],{i,1,10},{j,1,10}]
>
> ist that a[i,j] in many physical applications
> contain
> a singularity and Mathematica try to evaluate
> a[i,i]
> before it find out that the term
> (1-KroneckerDelta[i,j]).
> In the worst case it get 0*Infinity and don't know
> what
> to do with it.
>
> Regards
>   Jens
>
> "Richard J. Fateman" <fateman at eecs.berkeley.edu>
> schrieb im Newsbeitrag
> news:difr6v$fe8$1 at smc.vnet.net...
> | Sum[a[i],{i,low,j-1}]+Sum[a[i],{i,j+1,high}] may
> be far more
> | useful in many ways, since you can tell how many
> elements there
> | are:    if low<j<high then  high-low else
> high-low+1  and
> | other useful symbolic info.
> |
> | Symbolically manipulating objects with holes
> shot in them with
> | Delta functions is not so easy or reliable.
> |
> | If all you want to do is add them, you can use a
> For loop and
> | subtract the excluded elements, but that's not
> what you asked.
> |
> | You could try asking a more specific question
> about what you
> | really want to do with Sum.
> | RJF
> |
> |
> |
> | Bill Rowe wrote:
> |
> | > On 10/9/05 at 1:36 AM, qcadesigner at gmail.com
> wrote:
> | >
> | >
> | >>Does anyone know how to skip elements using
> the mathematica sum?
> | >>e.g. take the sum of all i, where i not equal
> to j.
> | >
> | >
> | > Yes.
> | >
> | > One way to do this with the Sum function would
> be to use the KroneckerDelta function as follows:
> | >
> | > Sum[Subscript[a, n](1 - KroneckerDelta[n, 3]),
> {n, 5}]
> | >
> | > Another way to create the same sum would be
> | >
> | > Total[Table[Subscript[a, n], {n,
> 5}][[Complement[
> | >     Range[5], {3}]]]]
> | >
> | > and there are many other ways to achieve the
> same result. Which is best depends on exactly what
> you are trying to accomplish.
> | > --
> | > To reply via email subtract one hundred and
> four
> | >
> |
>
>
>






  • Prev by Date: Re: Re: Language vs. Library
  • Next by Date: Re: Using MathLink to create a GUI
  • Previous by thread: Re: Skipping Elements in Sum
  • Next by thread: Re: Skipping Elements in Sum