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 -~----------~----~----~----~------~----~------~--~---