Hi Ondrej,

Thanks for the functions idea.  Having to do the x substitution is a
little annoying, but the suggestion helps enough to get me past that
block, so I'm happy.

I can't promise anything quickly, but I should have enough now to make
some headway on my original request.

Danny



On Dec 30 2008, 11:40 am, "Ondrej Certik" <ond...@certik.cz> wrote:
> 2008/12/30 Danny <dannytar...@gmail.com>:
>
>
>
>
>
> > Hi Ondrej,
>
> > Thanks for the quick response.  I took a look at the Sum class tests,
> > but there is still one part I'm not clear on.
>
> > In defining a summation, I would like to have the sum over an array of
> > symbols, indexed by an iterate.
>
> > For example, In the sum
>
> > \sum_{i=0}^4 tau_i,
>
> > I'd like each tau[i] to itself be a symbol, since I later want to
> > differentiate with respect to these symbols.
>
> > I'd like to do this:
> > In [17]: tau = []
>
> > In [18]: for i in range(10):
> >   ....:     tau.append(Symbol('tau_%s' % i))
>
> > In [19]: Sum(tau[i]**2, (i, 0, 9))
> > ---------------------------------------------------------------------------
> > ValueError                                Traceback (most recent call
> > last)
>
> > or
>
> > In [20]: Sum(i**2, (i, tau))
> > ---------------------------------------------------------------------------
> > ValueError                                Traceback (most recent call
> > last)
>
> > Ideally, this would give some compact representation of
> > tau[0]**2 + tau[1]**2 + ... + tau[9]**2
>
> One way of doing it is this:
>
> In [1]: var("i")
> Out[1]: i
>
> In [2]: tau = Function("tau")
>
> In [3]: Sum(tau(i)**2, (i, 0, 9))
> Out[3]: Sum(tau(i)**2, (i, 0, 9))
>
> In [4]: Sum(tau(i)**2, (i, 0, 9)).doit()
> Out[4]:
>  2       2       2       2       2       2       2       2       2       2
> τ (0) + τ (1) + τ (2) + τ (3) + τ (4) + τ (5) + τ (6) + τ (7) + τ (8) + τ (9)
>
> You can differentiate it like this:
>
> In [7]: Sum(tau(i)**2, (i, 0, 9)).doit().subs(tau(6), x).diff(x).subs(x, 
> tau(6))
> Out[7]: 2⋅τ(6)
>
> (One needs to substitute the function tau(i) for a symbol in order to
> differentiate.) If you don't call .doit(), it will fail:
>
> In [8]: Sum(tau(i)**2, (i, 0, 9)).subs(tau(6), x).diff(x).subs(x, tau(6))
> Out[8]: 0
>
> becuase there is no tau(6) in the Sum expression. This could probably be 
> fixed.
>
>
>
> > Is there something I'm missing?
>
> Let me know if the above helps, or if we should try to find a
> different solution.
>
> Ondrej
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com
To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to