Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Update:

I defined the expressions I was looking for by using the lambda function:

var('q,n,k,m')
qfac= lambda n : prod([(1-q^(k))/(1-q) for k in (1..n)]) #q-factorial
qbin = lambda n,m : qfac(n)/(qfac(m)*qfac(n-m)) #q-binomial
S= lambda n : sum([qbin(n,k) for k in (1..n)])

I also stopped using the iput sum(funcion,variable,lower limit,upper limit), and I am using sum([list]), where the list is defined by [expression(k) for k in (1..n)]. Although the first one works for simple stuff, It is not so good for symbolic.

Now I can call, as an example, S(4).

S(4)

A second way I defined the sum above is by defining a list in a specific range,

S = [sum([qbin(n,k) for k in (1..n)]) for n in (1..5)]

And I can call S(4) by calling the S[3] (lists start in 0, and use square brackets )

S[3]

I can also call all elements in a range of the list by

S[0:4]

This calls all elements up to S[3], which I find a bit confusing...

I'm still new to all of this... perhaps I can use "def" to do the same, maybe it is better, but I'm satisfied for now. Any comments are welcome.

Update:

I defined the expressions I was looking for by using the lambda function:

var('q,n,k,m')
qfac= lambda n : prod([(1-q^(k))/(1-q) for k in (1..n)]) #q-factorial
qbin = lambda n,m : qfac(n)/(qfac(m)*qfac(n-m)) #q-binomial
S= lambda n : sum([qbin(n,k) for k in (1..n)])
enter code here

I also stopped using the iput sum(funcion,variable,lower limit,upper limit), and I am using sum([list]), where the list is defined by [expression(k) for k in (1..n)]. Although the first one works for simple stuff, It is not so good for symbolic.

Now I can call, as an example, S(4).

S(4)

A second way I defined the sum above is by defining a list in a specific range,

S = [sum([qbin(n,k) for k in (1..n)]) for n in (1..5)]

And I can call S(4) by calling the S[3] (lists start in 0, and use square brackets )

S[3]

I can also call all elements in a range of the list by

S[0:4]

This calls all elements up to S[3], which I find a bit confusing...

I'm still new to all of this... perhaps I can use "def" to do the same, maybe it is better, but I'm satisfied for now. Any comments are welcome.

Update:

I defined the expressions I was looking for by using the lambda function:

var('q,n,k,m')
qfac= lambda n : prod([(1-q^(k))/(1-q) for k in (1..n)]) #q-factorial
qbin = lambda n,m : qfac(n)/(qfac(m)*qfac(n-m)) #q-binomial
S= lambda n : sum([qbin(n,k) for k in (1..n)])
enter code here

I also stopped using the iput sum(funcion,variable,lower limit,upper limit), and I am using sum([list]), where the list is defined by [expression(k) for k in (1..n)]. Although the first one works for simple stuff, It is not so good for symbolic.

Now I can call, as an example, S(4).

S(4)

A second way I defined the sum above is by defining a list in a specific range,

S = [sum([qbin(n,k) for k in (1..n)]) for n in (1..5)]

And I can call S(4) by calling the S[3] (lists start in 0, and use square brackets )

S[3]

I can also call all elements in a range of the list by

S[0:4]

This calls all elements up to S[3], which I find a bit confusing...

I'm still new to all of this... perhaps I can use "def" to do the same, maybe it is better, but I'm satisfied for now. Any comments are welcome.