1 | initial version |
One reason is because there is no simplification performed if you do not explicitely ask for them. If for example you print g[0] when len=5 you will see
-4*x/(4*x + 1/(12*x/(12*x + 1/(24*x/(24*x + 1/(40*x/(40*x - 1) - 1)) - 1)) - 1)) + 1
In order to avoid these nested fractions that are complicated to compute with, you might just add the line
g[k] = g[k].simplify_rational()
to your for loop.
Another way is to not use the symbolic ring and use rational fractions defined over QQ
def A261042_list_bis(l):
x = polygen(QQ)
f = lambda k: x*2*(k+1)*(k+2)
g = [0]*l
g[l-1] = 1
for k in range(l-2,-1,-1):
g[k] = 1 - f(k)/(f(k)-1/g[k+1])
return PowerSeriesRing(QQ,'x',default_prec=l)(g[0]).list()
The last line is not very nice but I did not find out something better to compute the Taylor expansion.