Ask Your Question
1

How can I recurse a power series in two variables?

asked 2017-12-06 01:59:43 +0100

tzeentch gravatar image

I would like very much to express, for example,

R.<x, y> = PowerSeriesRing(QQ, default_prec = 20)
g(x, g(x, g(x, x)))

Or,

f(x, f(x, f(x, f(x, f(x, f(x, f(x, f(x, f(x, f(x, f(x, f(x, (f(x, (f(x, f(x,y))))))))))))))))).expand()

In a more elegant way, for a specified number of self-compositions in one variable. I have only been able to find the sage function of composition for one variable polynomials, not for nesting two variable power series.

edit retag flag offensive close merge delete

Comments

Could you provide a definition of f and g that one could use to explore your question?

slelievre gravatar imageslelievre ( 2017-12-06 08:29:35 +0100 )edit

Note: with R as in the question, R.random_element() gave a starting point for exploration.

slelievre gravatar imageslelievre ( 2017-12-08 16:03:27 +0100 )edit

In general though, providing a working example helps other Ask Sage users to explore a question. This question had g(x, g(x, g(x, x))) but no definition of g to make that work.

slelievre gravatar imageslelievre ( 2017-12-08 16:06:39 +0100 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2017-12-06 08:45:08 +0100

slelievre gravatar image

Defining a function would give you a nice syntax for this kind of iteration.

For example, let us define right_iterate as follows.

def right_iterate(n, g):
    x, y = g.parent().gens()
    gg = y
    for k in xrange(n):
        gg = g(x, gg)
    return gg

Suppose we defined

sage: g = x*y^3 + x^3*y^11 - 1/21*x^11*y^5 - 2/5*x^3*y^13 + O(x, y)^60

then, instead of writing

sage: g(x, g(x, g(x, y)))
x^13*y^27 + 9*x^15*y^35 - 3/7*x^23*y^29 - 18/5*x^15*y^37 - 1/7*x^25*y^33 + O(x, y)^60

one can write

sage: right_iterate(3, g)
x^13*y^27 + 9*x^15*y^35 - 3/7*x^23*y^29 - 18/5*x^15*y^37 - 1/7*x^25*y^33 + O(x, y)^60

and instead of

sage: g(x, g(x, g(x, x)))
x^40 + 9*x^50 - 141/35*x^52 - 1/7*x^58 + O(x, y)^60

one can write

sage: right_iterate(3, g)(x, x)
x^40 + 9*x^50 - 141/35*x^52 - 1/7*x^58 + O(x, y)^60

Of course, you could modify the function to directly use (x, x) if you always want that.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2017-12-06 01:59:43 +0100

Seen: 310 times

Last updated: Dec 06 '17