f(f(x))=-x の続き
f(x)=1/xは悪くないアイデアだがf(1)=1となってしまうのが問題だった。そこで1を境界とするのはそのままで、(0,1]を(1,∞)に写像する関数を考えてみる。まず思いついたのはf(x)=1/(1-x)。ただしこれだとf(1)=∞になってしまうので少し捻って、
このようにする。このとき、実数全体は(-∞,-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>
⇒f1(x)∈(1,+∞)
- (ii) x∈(1,+∞)のとき<B→C>
⇒f2(x)∈[-1,0)
- (iii) x∈[-1,0)のとき<C→D>
⇒f3(x)∈(-∞,-1)
- (iv) x∈(-∞,-1)のとき<D→A>
⇒f4(x)∈(0,1]
- (v) x=0のとき<E→E>
(i)〜(v)より、
f(x) | = | | | if |x| > 1 | |
| | 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はこんな関数:
風車(かざぐるま)関数とでも呼ぼうか。