最近看到一类有趣的问题:如何求解 f(f(x)) = g(x) ?我在网上简单搜索了一下,发现这里面真是大有文章。最先对这个问题进行系统研究的应该是 Hellmuth Kneser ,他把函数迭代的次数扩展到了非整数的情况,求解 f(f(x)) = g(x) 就可以更简单地说成是求解 g(x) 迭代 1/2 次后的结果,更形象的说法就是 g(x) 的“平方根”。 Hellmuth Kneser 还对 f(f(x)) = e^x 的解进行了研究,从之后的数学论文发表情况来看,这也是数学家们最关心的问题。
e^x 的“平方根”究竟是什么样的呢?不妨假设满足要求的 f(x) 也是一个连续递增的函数,那么它的增长速度必然超过一切多项式函数(否则迭代的结果还是多项式),同时也必然小于一切指数形式的函数。而事实上,求解一个满足要求的 f(x) 并不难;稍作思考,我们就能够给出一个看似有些平凡的答案。
取任意一个负数,记作 a 。选取任意一个在 (-∞, a] 上单调递增的函数,使得当 x 从 -∞ 增加到 a 时,函数值也从 a 增加到 0 。这样一来,当 x 趋于负无穷时, f(x) 趋于 a , f(f(a)) 就正好趋于 0 了。但 f(a) = 0 ,那么 f(0) 就必须是 e^a ;而考虑到 f(0) = e^a ,那么 f(e^a) 便只能取 1 了。同理,f(1) = e^(e^a),而 f(e^(e^a)) 就等于 e 。以此类推,我们便得到了一连串满足要求的点。我们可以从 (-∞, a] 上的其它点出发,用同样的方法填充上述“端点值”之间的部分,得到满足要求的 f(x) 。
根据这个思想,我们可以构造出一个具体的 f(x) 来。取 a = -1,在 (-∞, -1] 上定义 f(x) = e^(x+1) – 1,它的函数值正好从 -1 变到了 0 。在 (-1, 0] 上,则有 f(x) = e^(f-1(x)) = e^(ln(x + 1) – 1) = (x + 1)/e 。对于其它的 x ,则递归地定义为 f(x) = e^(f(ln(x))) 。由此我们便得到一个分段函数,正是这个分段的办法才让它夹在了多项式增长和指数级增长之间:
当然,满足 f(f(x)) = e^x 的函数不止这一个,利用上述构造方法我们能找出无穷多个满足要求的函数来。事实上,我们还有更简单的例子,来说明 f(f(x)) = g(x) 的解有可能不止一个:
定理 1. 对于某些 g(x) ,满足 f(f(x)) = g(x) 的函数 f(x) 可能不止一个。
例如, f(f(x)) = x 就不止一个解。 f(x) = x 和 f(x) = -x 都是满足要求的解。
而对于任意给定的 g(x) ,我们还有一个超级赖皮的方法找出一个几乎完全符合要求的 f(x) :
定理 2. 对于任意 g(x) ,都存在某个 f(x) ,使得除了某个任意小的区间以外,其余所有 x 都满足 f(f(x)) = g(x) 。
随便取某个很小很小的区间 I 。随便取一个从 R\I 到 I 之间的一一对应函数 h(x) 。然后规定,当 x 属于 R\I 时, f(x) = h(x); 当 x 属于 I 时, f(x) = g(h-1(x)) 。这样一来,对于所有不属于 I 的实数 x ,都有 f(f(x)) = g(x) 了。
不过,也不要把事情想得太乐观了。
定理 3. 对于某些 g(x) ,不存在函数 f(x) 使得 f(f(x)) = g(x) 。
令 g(0) = 1 , g(1) = 0 ,其余情况下都有 g(x) = x 。下面我们证明,不存在 f(x) 使得 f(f(x)) = g(x) 。假如有这样的 f(x) ,无妨假设 f(0) = a 。则 f(a) = f(f(0)) = g(0) = 1 。容易看出, a 既不可能是 0 ,又不可能是 1 (否则 f(0) 或者 f(1) 将成为不动点,矛盾)。于是 f(1) = f(f(a)) = g(a) = a 。于是 g(1) = f(f(1)) = f(a) = 1 ≠ 0 ,矛盾。
这个话题还有很多有意思的研究结果。感兴趣的朋友可以移步至下面两个链接。