MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: RE: Functional decomposition (solving f[f[x]] = g[x] for given g)

  • To: mathgroup at
  • Subject: [mg71872] RE: [mg71839] RE: [mg71764] Functional decomposition (solving f[f[x]] = g[x] for given g)
  • From: "Ingolf Dahl" <ingolf.dahl at>
  • Date: Fri, 1 Dec 2006 06:22:31 -0500 (EST)
  • Organization: Goteborg University
  • Reply-to: <ingolf.dahl at>

Some further comments on the equation f(f(x)) = g(x):
For the case g(x) = exp(x) some work have been done, see  ,  
and .
(found by a Google search for "f(f(x))")

However, I have not penetrated deeply enough into all references to really
see if there are good methods to find (precise) numerical values for at
least one solution of the equation. Or a plot...

But some thoughts further, somewhat fishing on deep water: If we have a
function g(x) that is such that g(0)=0 (or g(x0)=x0 for some x0) and where
g(x) also has a Maclaurin expansion with a positive first coefficient, it
should be easy to find a Maclaurin series which composed to itself is
identical to that of g(x). Examples of such functions g(x) are sin(x) and
sinh(x). Then there is the question if this series converges in some range,
I have not tested yet. (In the links above they refer to a theorem by Polya,
stating that convergence range must be limited.) For some other functions,
we could also think of expansions in x^(Sqrt(2)).
Suppose that we find such a function f(x) for g(x) = sinh(x), name it
fsinh(x), with convergence in some region near origo. Then it might be
possible to extend that to the whole axis if we for any x apply ginv (the
inverse of g) a number of times until we reach the convergence region. (we
might have to use extended precision.) There we apply f, and then apply g
the same number of times as we did with ginv. Then we should have obtained

If we now look at the case g(x) = exp(x), we can note that if x > 20, exp
and 2*sinh are essentially identical (to machine precision). Thus we could
assume that fsinh(x)*Sqrt[2] is a good approximation of the solution f(x)
for g(x)=exp(x) and x>20, and then we might use the same procedure as for
g(x)=x^2+1 to extend this to zero. With the power of Mathematica available,
just a few lines of code maybe are all that is needed. But maybe some devils
are hiding in the details? 

Is there anyone who knows more about this?

Ingolf Dahl  

> -----Original Message-----
> From: Ingolf Dahl [mailto:ingolf.dahl at] 
> Sent: den 30 november 2006 12:06
> To: mathgroup at
> Subject: [mg71839] RE: [mg71764] Functional decomposition 
> (solving f[f[x]] = g[x] for given g)
> Hi Kelly,
> Here is a rapid amateur answer (but without scary rhymes, as 
> in my last answer). If you are satisfied with the numerical 
> values of the function, you can investigate 
> g[x_]:=1+x^2;
> ginv[x_]:=Sqrt[x-1];
> f[x_Real]:=Nest[ginv,Power[Nest[g,x,9],Sqrt[2]],9]
> f[x_Real] appears to be a good solution to f[f[x]] == g[x] to 
> approximate machine precision. The solution is based on two 
> observations:
> 1) Nest[g,x,9] is equivalent to Nest[f,x,18], and we reach 
> very large values when this is calculated. There g[x] is 
> approximately equal to x^2 (to machine precision), and f[x] 
> can be approximated by x^Sqrt[2]. Thus we might reach a good 
> approximation of Nest[f,x,19] by Power[Nest[g,x,9],Sqrt[2]].
> 2) We can then apply the inverse function ginv of g 9 times 
> to reach f[x].
> The relative error is reduced by the application of the 
> inverse function.
> We can note that f[0.] is 0.6420945043908285` which do not 
> appear to be a known mathematical constant. But now it is. 
> (If someone can check... I cannot reach the "The Inverse 
> Symbolic Calculator" at CESM. Is it down?)
> Generalize and write  f[x] as  DecompositionPower[x,1/2] and 
> the solution to f[f[f[x]]]\[Equal]g[x] as 
> DecompositionPower[x,1/3] For the given function g then we can try
> DecompositionPower[x_,p_]:=Nest[ginv,Power[Nest[g,x,9],Power[2,p]],9]
> and we might for instance plot
> Plot[DecompositionPower[0.,p],{p,0,1}]
> The function DecompositionPower[x_,p_] should be quite easy 
> to generalize to a large set of polynomial functions g. Maybe 
> it then should have the name FractionalNest?
> Best regards
> Ingolf Dahl
> -----Original Message-----
> From: Kelly Jones [mailto:kelly.terry.jones at]
> Sent: 28 November 2006 12:04
> To: mathgroup at
> Subject: [mg71839] [mg71764] Functional decomposition 
> (solving f[f[x]] = g[x] for given g)
> Given a function g[x], is there a standard methodology to 
> find a function f[x] such that:
> f[f[x]] == g[x]
> A "simple" example (that doesn't appear to have a closed form 
> solution):
> f[f[x]] == x^2+1
> There are probably several (approximable? 
> power-series-expressible?) answers, but the most natural 
> answer would be everywhere positive and monotone increasing for x>0.
> For x^2, there are at least two continuous solutions: 
> x^Sqrt[2] and x^-Sqrt[2], the former being more "natural". 
> It's somewhat amazing that x^2+1 is so much harder.
> Of course, the next step would be to find f[x] such that:
> f[f[f[x]]] == g[x]
> for given g[x], and so on.
> Thought: is there any operator that converts functional 
> composition to multiplication or something similar? That 
> would reduce this problem to find nth roots and applying the 
> inverse operator?
> Other thought: For some reason, taking the geometric average 
> of the identity function and g, and then iterating, seems 
> like a good idea. EG, Sqrt[x*g[x]], Sqrt[x*Sqrt[x*g[x]]], and so on.
> --
> We're just a Bunch Of Regular Guys, a collective group that's 
> trying to understand and assimilate technology. We feel that 
> resistance to new ideas and technology is unwise and 
> ultimately futile.

  • Prev by Date: Re: Strange empty set of solutions
  • Next by Date: Solving the Cubic
  • Previous by thread: Re: Strange empty set of solutions
  • Next by thread: Re: RE: RE: Functional decomposition (solving f[f[x]] = g[x] for given g)