RE: Functional decomposition (solving f[f[x]] = g[x] for given g)
- To: mathgroup at smc.vnet.net
- Subject: [mg71839] RE: [mg71764] Functional decomposition (solving f[f[x]] = g[x] for given g)
- From: "Ingolf Dahl" <ingolf.dahl at telia.com>
- Date: Thu, 30 Nov 2006 06:05:45 -0500 (EST)
- Reply-to: <ingolf.dahl at telia.com>
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 gmail.com] Sent: 28 November 2006 12:04 To: mathgroup at smc.vnet.net 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.