首先呢,让我们来一个牛B函数大回顾。这下我不知道要赚多少的PV。你能否构造一个函数f(x),使得:
它是一个阶梯状的连续函数?
它是除常函数之外的没有最小正周期的周期函数?
该函数只在一点连续?
该函数在[0,1]和(0,1)之间形成一一对应?
该函数某一点导数为正,但该点邻域不构成单增区间?
平面上任意小的圆内均包含函数上的点?
另外还有一些可能是众所周知(所以没在Blog里写过)的函数,比如处处连续但处处不可导的函数、在有理点处处不连续在无理点处处连续的函数等等。
好了,现在呢,又一个牛B东西出现了。你能不能想出这样一个函数f,它的定义域和值域都是R,并且对于任意小的区间l=(u,v),这个函数都能把(u,v)满射到整个R上。换句话说,是否存在这样的函数f(x),对于任意一个实数t以及任意一个区间(u,v),总存在一个x满足u<x<v且f(x)=t。
首先,注意到函数h(x)=tan( pi*(x-1/2) )将(0,1)上的数与全体实数一一对应,因此,我们只需要找出一个g(x),它能把任意小的区间满射到(0,1)区间上,然后在它上面复合一个h(x)就得到我们题目所求的函数了。
我们的g(x)可以这样定义:首先,把x写成三进制数。如果x的三进制表达里没有数字2或者有无穷多个数字2,那么g(x)=0。否则,x的三进制中含有有限多个数字2。找到最末的一个数字2,把它及其前面的部分都去掉,这样剩下的就只有0和1了。在这个01串前面加上一个小数点,把它当作一个二进制小数转换回去,作为g(x)的函数值。这样的话,g(x)就是一个值域为[0,1)的函数,并且在任意小的区间内,我们总能找到一个点,它所对的函数值就是你想要的那个值:只需要取一个该区间内的精度足够高(小数点位数足够多)的三进制有限小数,在后面加一个数字2,再后面的01串就可以想要啥就要啥了。
注意到g(x)把任意小的区间都映射到[0,1)上,而前面提到的h(x)则在(0,1)和R之间建立了一一对应的关系。于是,定义f(x)为,当g(x)=0时f(x)=0,否则f(x)=h( g(x) )。这就是满足题意的函数f。
题目来源:http://domino.research.ibm.com/Comm/wwwr_ponder.nsf/Challenges/October2001.html