Quantcast
Viewing all articles
Browse latest Browse all 5

Answer by slelievre for With Maple I can writeseq(add(a[i], i=0..n), n=0..3); and get a[0], a[0]+a[1], a[0]+a[1]+a[2], a[0]+a[1]+a[2]+a[3] (*) If I write in Sage for n in range(4): add(a[i] for i in range(n)) I get the NameError: global name 'a' is not defined. If I first introduce the variable by a = var('a') then I get the TypeError: 'sage.symbolic.expression.Expression' object does not support indexing.How can I get the line (*) with Sage?Edit: This works:f=function('f') [add(f(i) for i in (0..n)) for n in (0..3)] gives [f(0), f(1) + f(0), f(2) + f(1) + f(0), f(3) + f(2) + f(1) + f(0)] So what I want is an equivalent for lists.a=list('a') [add(a[i] for i in (0..n)) for n in (0..3)]

You could define def sums(a,nmax): return [sum(a[i] for i in xrange(n+1)) for n in xrange(nmax)] Then you could compute for instance: sage: a = [i^2 for i in xrange(20)] sage: sums(a,10) [0, 1, 5, 14, 30, 55, 91, 140, 204, 285] Is that what you want, or do you want something that would take "symbolic lists" given by their names, and return a symbolic expression consisting in the formal sums of list elements? I'm not sure how one could do that.

Viewing all articles
Browse latest Browse all 5

Trending Articles