WolframAlphaで√2^√2^√2・・・

√2の、√2乗の、√2乗の、√2乗の・・・という操作をどこまでも続けてゆくと、その値はどこに収束するか?

これは「へんな数式美術館」{竹内 薫}という本に載っていた問題です。
先に答を言うと、2、又は4となります。
このブログで調べられています。
* T_NAKAの阿房ブログ -- √2^(√2^(√2^(…)))は何?
>> http://teenaka.at.webry.info/200808/article_6.html
試しにEXCELで調べてみると、どうやら答が2に近づきそうだ、ということがわかります。
これを、もう少し賢く計算で解く方法があります。
答が存在するものとして(収束先があるものとして)
  √2^(√2^(√2^(…))) = x
と置いてみます。
式の形からして、先頭の√2の肩の上に乗っているものもまた x なのですから、
 (√2)^x = x
となるでしょう。
 (√2)^2 = 2
 (√2)^4 = 4
だから、確かに2と4は答になってますね。

しかし、なぜEXCELでは2の方が出て、4は出てこないのでしょうか。
この4という答は何なのか、他に答は無いのか?
こういう難しい数学の問題を解くのを、強力にサポートしてくれるサイトがあります。
* Wolfram Alpha
>> http://www.wolframalpha.com/
その道では有名な数式処理ソフトMathematicaの機能を、ほとんど内包しているらしい。
さっそくこの Wolfram Alpha を使って、問題を解いてみることにしました。
まずは方程式を直接解いてみましょう。
方程式を解くコマンドは"Solve"、√を表すのは"Sqrt"です。
 入力:>> Solve[Sqrt[2]^x == x, x]
すると、こんな結果が出てきました。

 結果:>> Element[C[1], Integers] && x == (-2 ProductLog[C[1], -Log[2]/2])/Log[2]
サイト上ではグラフィカルに表示されているんですけど、
ここではめんどくさいので "Mathematica plaintext output" 形式の表記をもってきました。
(サイト上で数式をクリックすると、plaintext形式が表示されます。)
この結果の式に入っている Wz (ProductLog) という項目を調べてみると、
「z = w e^w の主要解を与える」
>> http://reference.wolfram.com/mathematica/ref/ProductLog.html
という解説がありました。
ウィキペディアで関連項目を引くと、これ >> wikipedia:ランベルトのW関数
複素数まで考えると、指数関数は単射ではないので、 Wz は多価関数になっているわけです。
なので、やはり最初の問題の答は複数あるように思えます。

では、その複数の答のうちの1つを求めてみましょう。
マニュアルを見ると、
 ProductLog[k, z]  -- 第 k 解を与える.
とありますから、試しにやってみましょう。
k = 0 のとき、
 入力:>> ProductLog[0, -Log[2]/2]
 結果:>> - Log[2]
k = -1 のとき、
 入力:>> ProductLog[-1, -Log[2]/2]
 結果:>> - 2 Log[2]
最終的な答は x == (-2 ProductLog[k, -Log[2]/2])/Log[2] なのですから、
この k=0 と k=-1 の2つが、最終的な答の2と4になっています。
他の k の値、たとえば k=1 として入力すると、結果は複素数になりました。
k = 1 のとき、
 入力:>> ProductLog[1, -Log[2]/2]
 結果:>> -3.150606886104804893341011035875538578716305728833178... +
     7.454087572549265174517269414669602588202080424134848... i
どうやら一般的に多数ある複素数の解のうち、実数になるのは2と4だけみたいです。
(数学的な証明ではなくて、試してみたらそうなりそうだ、ということ。)

これだけだと何だかよく分からないので、もう少し調べてみましょう。
いまは
 (√2)^x = x
という式を考えてきましたが、これが√2ではなくて、一般的な数 y だったらどうなるでしょうか。
つまり、
 y ^ x = x
という関数を考えてみるのです。
両辺対数をとって
 x Log[y] = Log[x]
 Log[y] = Log[x] / x
ここで改めて Log[y] = Y と置いて、
 Y = Log[x] / x
という関数のグラフを描いてみましょう。グラフを描くのは"Plot"です。
 入力:>> Plot[Log[x]/x, {x, 0.3, 20}]

こんなグラフになります。(結果が直接gif画像でダウンロードできるので便利!)
Y(つまり√2 に相当するところ)を変化させたときの x(問題の式の値)は、
このグラフの逆関数、つまり x と Y を逆にして横からみたものになります。
グラフを見ると、Y > 0 の領域では、同一の Y に対する x の値が2つあることがわかります。
グラフの頂点の位置を調べてみましょう。微分は"D"です。
 入力:>> D[Log[x]/x, x]
 結果:>> (1 - Log[x]) / x^2
微分した傾きが0となるのは、、、
暗算でもよいのですが、せっかくだからサイトを使ってみます。
 入力:>> Solve[1 - Log[x] == 0, x]
 結果:>> x = e ~~ 2.71828
つまり x = e のとき、グラフは極大値 1/e となるわけです。
これを数字で見たければ、
 入力:>> 1/e
 結果:>> 0.367879441171442321595523770161460867445811131031767834...
と出てきます。

これでおよその挙動はつかめたと思うのですが、
・元の問題の式には√が付いていた、
・途中で Log[y] = Y と置いていた、
ので、この2つを元に戻して、改めてグラフを描いてみましょう。
 入力:>> Plot[ (Exp[ Log[x] / x ])^2, {x, 0.3, 20} ]


このグラフの縦軸が2のところを横にたどってみると、確かに2と4が答になってますね。
グラフの最大値は
 入力:>> Exp[ Log[e] / e ])^2
 結果:>> e^(2/e)
    2.087065228634532959844961107023935669184346685874384958...
なので、この数を超えたなら、√y^(√y^(√y^(…))) という式は(実数の範囲では)収束しないみたいです。

試しに √2の代わりに、√3 で計算してみましょう。
 入力:>> Solve[Sqrt[3]^x == x, x]
 出力:>> Element[C[1], Integers] && x == (-2 ProductLog[C[1], -Log[3]/2])/Log[3]
√2 のときと同じように ProductLog を幾つか調べてみます。
 入力:>> ProductLog[-1, -Log[3]/2]
 入力:>> ProductLog[ 0, -Log[3]/2]
 入力:>> ProductLog[ 1, -Log[3]/2]
    ・・・
いちいち結果は書きませんが、√3 の場合はいずれも複素数になりました。

それでは最初の式にもどって、なぜ実際にEXCEL等で計算すると、答は2の方に近づいて、
もう1つの解である4の方に近づかないのか。
これはもう、どの方向から近づくのか、向きに依存しているのではないかと思います。
つまり、小さい方の√2から出発して、だんだん大きくしてゆくと2に収束する。
もし「大きい方から」近づいたとしたら、きっと収束先は4になると思うのですが、
そのような近づき方をちょっと思い付きません。
※4には「近づく道」がありません。2には吸い込まれるように近づくことができますが、「4からわずかでもずれると、どんどん4から離れてしまう性質がある」とのこと。
kashiさんからコメントいただきました。


以上で見てきたのは Wolfram Alpha(つまりMathematica)の機能の、ほんの一部です。
電卓があれば、もう計算しなくて済むように、
これさえあれば、もう複雑な数式処理はしなくて済むのではないでしょうか。
いままで買えば何十万円もしたソフトが、公開サイトで手軽に扱えるようになるとは、すごいことですよ。
Wolfram の太っ腹に感謝です。
この Wolfram Alpha、一部では Google のライバルと言われているみたいですが、
私が触った感触だと、これは計算機であって、検索エンジンとは別物だと思います。
* ついに姿を現した"Googleキラー"、「Wolfram|Alpha」の実力は?
>> http://journal.mycom.co.jp/articles/2009/05/17/wolf/index.html
ただ、ひょっとすると天才ウルフラムは、遠い将来にGoogleを遙かに凌駕するようなエンジンを作ってしまうかもしれない・・・
そんな思いが、ふと頭をよぎりました。
以下は私の勝手な妄想。(無責任)

聞くところによると、ウルフラムは「デジタル哲学」信奉者の一人だとのこと。
「デジタル哲学」とは、一言で言えば「この宇宙は1つの巨大なコンピューターなのだ」という考え方のことです。
ウルフラムの考えでは、「宇宙を支配する原理は,わずか数行のプログラム・コードに過ぎない」のです。
* ついに宇宙の全事象を解明!? Wolframの新著「A New Kind of Science」が論争を呼ぶ
>> http://itpro.nikkeibp.co.jp/members/ITPro/USIT/20020519/1/
>> wikipedia:セル・オートマトン
いや、正直私も理解できないのですが。。。
で、その宇宙の構造が検索エンジンと何の関係があるのか。
ひょっとして、ウルフラムはあらゆる質問に対して「計算によって」答を返そうとしているのではないかと。
わかりますか?
Google のやろうとしていることは、世界中の、どこかの誰かが出した答を効率よく収集、整理して提供すること。
ひょっとしてウルフラムがやろうとしているのは、コンピューター自身によって答を導き出すことなのではないかと・・・
だって、宇宙はデジタル計算で出来ているんでしょ。
だったら、デジタル計算機によって、あらゆる答が導き出せるはずですよね。
現状の Mathematica が進化してバージョン100ぐらいになったら、ついに「電子の神託」が下される日が来るのかも。