・合成関数の合成       ハンニバル・フォーチュン氏

 v(...h(g(f(x)))...)などのように、1変数の関数を多数、合成関数にすることを考えます。使える
関数を、Google電卓の組み込み関数だけに制限しましょう。Google検索のトップページの検
索窓で使えるものですね。

 Google電卓のreferenceは、例えばこちらにあります。1変数の組み込み関数がたくさんあ
ります。

 さて、チャレンジして頂きたいのですけれども、適切に合成関数Fをつくって頂いて、以下の
ような性質の関数を実現してください。

 自然数nについて、F(n(n+2))=n+1

 たとえば、F(15)=4 、F(24)=5 、F(35)=6 など...。

 先日知人に教わってかなり時間がかかったパズルです。

※Google電卓の処理能力による制限で任意のnについてうまくいくとは限りませんが、そこは
 御勘弁下さいますよう。


 らすかるさんからのコメントです。(平成30年3月26日付け)

 F(x) = tan(acos(sin(atan(cos(atan(sqrt(x)))))))

 もし、関数の一種である負符号の「−」を使ってよければ、

 F(x) = exp(-ln(cos(atan(sqrt(x)))))


 ハンニバル・フォーチュンさんからのコメントです。(平成30年3月26日付け)

 らすかるさん、素早い御解答、流石です。ところで、お察しのように、この F を補助線にし
て 次のような合成関数 G を作ることができます。

 正の整数 n について、 G(n) = n+1

( wolframalpha ならば少しだけ簡単なのですけれども。 )


 DD++さんからのコメントです。(平成30年3月26日付け)

 sec(atan(sqrt(x))) で、どうですかね。x>0 の範囲で √(1+x) と恒等的に等しいはず。


 らすかるさんからのコメントです。(平成30年3月27日付け)

 DD++さんのsec(atan(sqrt(x)))を使わせて頂いて、

 G(n) = exp(ctan(atan(ln(sqrt(exp(ctan(atan(ln(sec(atan(sqrt(n))))))))))))


 ハンニバル・フォーチュンさんからのコメントです。(平成30年3月26日付け)

 らすかるさん、DD++さん、ありがとうございます。蛇足になりますが、解説をば。

●逆数にする(三種類)

tan(asin(cos(atan(3)))) = 1 / 3

tan(acos(sin(atan(4)))) = 1 / 4

ctan(atan(5)) = 1 / 5

●値を半分にする

ln(sqrt(exp(1 / 5))) = 1 / 10

●逆数にして値を半分にして逆数にすると2倍になる

ctan(atan(ln(sqrt(exp(ctan(atan(5))))))) = 10

●対数をとって二倍してから指数関数に食わせると自乗になる

exp(ctan(atan(ln(sqrt(exp(ctan(atan(ln(7))))))))) = 49

●来年の年賀状に

exp(ctan(atan(ln(sqrt(exp(ctan(atan(ln(sec(atan(sqrt(2018)))))))))))) = 2019

=== 蛇足の蛇足

 らすかるさんの F(x) = tan(acos(sin(atan(cos(atan(sqrt(x))))))) ですが、

 tan(acos(sin(atan(・)))) が逆数を計算するものになっているのでした。

 cos(atan(sqrt(x))) の逆数はDD++さんのおっしゃるところの sec(atan(sqrt(x))) ですね。


 DD++さんからのコメントです。(平成30年3月27日付け)

●1を足す

lg(ctan(atan(ln(sqrt(exp(ctan(atan(exp(ctan(atan(lg(exp(ctan(atan(x)))))))))))))))

 y=x+1、出来ました。定義域は、0を除いた全実数。

……ただ、関数が多すぎるのか、あるいは私が何かミスってるのか、Google 先生は計算放
棄しますが。0 も含めた全実数で y=x+1 は作れるんでしょうか?

 おまけ:1を足すより1を引く方が実は簡単(関数11個)説。

lg(ln(sqrt(exp(exp(ctan(atan(lg(exp(ctan(atan(x)))))))))))


 ハンニバル・フォーチュンさんからのコメントです。(平成30年3月28日付け)

 DD++さん、とても面白い組み立てですね。

 負のほうは、

log_2(ctan(atan(ln(sqrt(exp(ctan(atan(exp(ctan(atan(log_2(exp(ctan(atan(-9.4712)))))))))))))))
= -8.4712

あたりが限界のようですけれども、内部計算のどこかでオーバーフローかアンダーフローか
が発生しているのでしょうか?


 DD++さんからのコメントです。(平成30年3月28日付け)

 ある程度組み合わせたパーツで考えていたので作ったときは気づきませんでしたが、途中
で1回、二重指数関数になりますね、これ。計算機でやるには向いてない構成でした。



                         投稿一覧に戻る