Symbolic function that sums over variable sequence

How do I define a symbolic function that takes a sum of variables as value?

I have tried the following:

k=var('k')
f(x)=sum(x[k], k, 1, 5)


But I get the following error:

TypeError: unable to convert k to an integer


I want to be able to symbolically differentiate f with regards to e.g. x[3].

edit retag close merge delete

Sort by » oldest newest most voted

I am not sure to understand your question.

You can define a Python function that sums all elements of a list as follows:

sage: f = lambda x : sum(x)
sage: x = [1,2,3]
sage: f(x)
6


If you want to create some symbolic variables x_i in a list x and, at the same time inject them into the namespace (i.e. make them Python variables), you can do:

sage: x = [var("x_{}".format(i)) for i in range(5)]
sage: x
[x_0, x_1, x_2, x_3, x_4]


Then you can define their sum and differentiate according to some variable:

sage: f(x)
x_0 + x_1 + x_2 + x_3 + x_4
sage: f(x).diff(x_2)
1

more