Hatena::ブログ(Diary)

小人さんの妄想 このページをアンテナに追加 RSSフィード Twitter

2009-05-31

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

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

f:id:rikunora:20090531202134p:image

これは「へんな数式美術館」{竹内 薫}という本に載っていた問題です。

先に答を言うと、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]

すると、こんな結果が出てきました。

f:id:rikunora:20090531202213g:image

 結果:>> 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}]

f:id:rikunora:20090531202304g:image

こんなグラフになります。(結果が直接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} ]

f:id:rikunora:20090531202334g:image


このグラフの縦軸が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ぐらいになったら、ついに「電子の神託」が下される日が来るのかも。


kashikashi 2009/06/01 05:51 元の問題を、f(x) = sqrt(2)^x と置き、
x_{n+1} = f(x_{n}) という離散力学系と考えます。
このとき、fの不動点は2と4ですが、不動点におけるfの傾きを考えると、
|f'(2)| < 1
|f'(4)| > 1
なので、4の方は不安定であることが分かります。
つまり、4からわずかでもずれると、どんどん4から離れて
しまう性質があるので、4に収束しません。

rikunorarikunora 2009/06/01 11:51 なるほど、イメージ的には「山のてっぺんみたいにでっぱっている」「窪んでいて落ち込む」みたいな感じですかね。
こういう不動点のでっぱり、へっこみみたいな絵も、Mathematicaなら描けるのだろうか。
もう少しいじってみます。

rikunorarikunora 2009/06/01 16:08 自己レスです。
f'(x)のグラフ >> Plot[ D[ Sqrt[2]^x, x ], {x, -1, 5} ]
これが < 1 のとき、不動点に収束する。
> 1 のとき、不動点には収束しない。
たしかに 2 のときは < 1 だし、4 のときは > 1 だ。
なぜ > 1 のとき収束しないかというと、、、
漸化式に従って点々をプロットしてみてわかった。
> 1 だと不動点を「1ステップで飛び越してしまう」のだ。
なるほろ〜。

kashikashi 2009/06/01 21:19 xを不動点とし、Δx_n = x_n - xとすると、

Δx_{n+1} = f(x+Δx_n)-f(x) ≒ f'(x)Δx_n

なので、f'(x)の絶対値が1より小さくないと
不動点からの差分がどんどん拡大してしまう、という
イメージで捉えていました。

rikunorarikunora 2009/06/03 11:37 考えてみれば、1ステップがだんだん縮まっていかないと、近づかないのですね。
いままでなんとなく「窪地にビー玉が落ちるみたいなもんかな〜」くらいに思っていたのですが、
具体例でプロットしてみて、ようやく納得がいきました。
「不動点からの差分がどんどん拡大してしまう、」 いや、全くその通りでした。

hirotahirota 2011/09/09 10:23 1 < √2 < 2 をそれぞれ √2 の肩に乗っけると
√2 < (√2)^(√2) < 2 これをまた √2 の肩に乗っけると
(√2)^(√2) < (√2)^(√2)^(√2) < 2 という関係が簡単に分かります。
同じことは 3 の 3 乗根でもできますね。

rikunorarikunora 2011/09/13 01:23 これまた、なるほど。
計算機がなくても、こうやってあたりが付けられるのですね!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証