f(f(x))=-x の続き

f(x)=1/xは悪くないアイデアだがf(1)=1となってしまうのが問題だった。そこで1を境界とするのはそのままで、(0,1]を(1,∞)に写像する関数を考えてみる。まず思いついたのはf(x)=1/(1-x)。ただしこれだとf(1)=∞になってしまうので少し捻って、

\large f(x)=\lim_{\epsilon\rightarrow 0}\frac{1}{1-x+\epsilon}

このようにする。このとき、実数全体は(-∞,-1), [-1,0), {0}, (0,1], (1,+∞)という5つの領域に分けられる。前回の考察で定義した集合との対応関係は以下の通り。

A = R+∧R*  = (0,1]
B = R+∧~R* = (1,+∞)
C = R-∧R*  = [-1,0)
D = R-∧~R* = (-∞,-1)
E = {0}

あとはA → B → C → D → A → ...という状態変化をするように場合分けしてそれぞれに関数を定める。

  • (i) x∈(0,1]のとき<A→B>

\large f_1(x) = \lim_{\epsilon\rightarrow 0}\frac{1}{1-x+\epsilon}
⇒f1(x)∈(1,+∞)

  • (ii) x∈(1,+∞)のとき<B→C>

\large f_2(x) = -\lim_{\epsilon\rightarrow 0}\left(1-\frac{1}{x}+\epsilon\right)
⇒f2(x)∈[-1,0)

  • (iii) x∈[-1,0)のとき<C→D>

\large f_3(x) = -\lim_{\epsilon\rightarrow 0}\frac{1}{1-|x|+\epsilon}
⇒f3(x)∈(-∞,-1)

  • (iv) x∈(-∞,-1)のとき<D→A>

\large f_4(x) = \lim_{\epsilon\rightarrow 0}\left(1-\frac{1}{|x|}+\epsilon\right)
⇒f4(x)∈(0,1]

  • (v) x=0のとき<E→E>

\large f_5(x) = 0

(i)〜(v)より、

f(x)= | \large s\cdot\lim_{\epsilon\rightarrow 0}\left(1-\frac{1}{x}+\epsilon\right)   if |x| > 1
| \large s\cdot\lim_{\epsilon\rightarrow 0}\frac{1}{1-|x|+\epsilon} if 0 < |x| <= 1
| 0 if x = 0

where s=x/|x|.

検証

一部のxについてf(f(x))を計算してみた。

x f(x) f(f(x))
-2.00373 0.500931 2.00373
-1.90093 0.473942 1.90093
-1.80107 0.444775 1.80107
-1.704 0.413146 1.704
-1.60783 0.378045 1.60783
-1.50084 0.333706 1.50084
-1.40859 0.290068 1.40859
-1.30585 0.234214 1.30585
-1.20089 0.167281 1.20089
-1.10662 0.0963446 1.10662
-1.00764 0.00758425 1.00764
-0.901186 -10.12 0.901186
-0.802588 -5.06554 0.802588
-0.700599 -3.34 0.700599
-0.604371 -2.52762 0.604371
-0.500384 -2.00154 0.500384
-0.40005 -1.66681 0.40005
-0.307804 -1.44468 0.307804
-0.208586 -1.26356 0.208586
-0.108696 -1.12195 0.108696
0 0 0
0.00257764 1.00258 -0.00257764
0.10201 1.1136 -0.10201
0.207046 1.26111 -0.207046
0.303783 1.43633 -0.303783
0.401525 1.67091 -0.401525
0.50819 2.03331 -0.50819
0.601116 2.50699 -0.601116
0.704132 3.37988 -0.704132
0.80282 5.07151 -0.80282
0.901061 10.1073 -0.901061
1.00135 -0.00134498 -1.00135
1.10463 -0.0947223 -1.10463
1.20108 -0.167419 -1.20108
1.30753 -0.2352 -1.30753
1.40656 -0.289045 -1.40656
1.50835 -0.337024 -1.50835
1.60695 -0.377702 -1.60695
1.7036 -0.413009 -1.7036
1.80768 -0.446806 -1.80768
1.90039 -0.473792 -1.90039

数値計算の誤差があるので本当のところは何とも言えないけど、少なくともおかしな値が出ていないことは確認できる。

ちなみにfはこんな関数:

風車(かざぐるま)関数とでも呼ぼうか。