# Self composition of a function with symbolic variable

I have a function in one variable with a placeholder variable, and would like to find the nth iterate. For example, using:

$f(z) = z^3 + az^2$, a function in variable z with placeholder coefficient a.

then I would like to see

$f(f(z)) = ( z^3 + az^2)^3 + a( z^3 + az^2)^2$

However I am struggling to perform this in sage.

$f(f)$ returns $(az^2 + z^3)z^2 + z^3$ , so it substitutes for a instead of z, and declaring $f(f(z))$ returns the function only in terms of z .

How can we self compose functions with a placeholder variable for a coefficient?

edit retag close merge delete

Sort by » oldest newest most voted

What is wrong here :

sage: var('a')
a
sage: f(z)=z^3+a*z^2
sage: f(f(z))
(a*z^2 + z^3)^3 + (a*z^2 + z^3)^2*a

more

Ahh, my mistake was that I was also declaring z as a variable. Why don't I need to do this? Does sage "know" that this is over the complex field?

1

No, the construction f(z)= is not Pythonic, so there is some Sage preparsing that does the job of defining the symbol z :

sage: preparse('f(z)=z^3+a*z^2')
'__tmp__=var("z"); f = symbolic_expression(z**Integer(3)+a*z**Integer(2)).function(z)'