« ぬくもり | トップページ | ホトケノザ »

2012年2月 8日 (水)

まだ黄金比:再帰性

★まだ続きをやってます。私は結構しつこいな。
Recursive
この図の1式、これを解いて、(1+√5)/2という値を求めたのでした。
で、いちいち書くのが面倒ですので
(1+√5)/2=φ(ファイ)
と文字で置き換えておきます。
このφは①式の解なのですから、当然、xに代入すれば②式が成立しています。

★②式を変形して③式にします。
③式の右の下にあるφに、もう一回③式そのものを代入すると、④式が得られます。
ちょっと変な気分がするかもしれません。
φの式が、φを使って書かれています。
同義反復(トートロジー)じゃないの?
トートロジーは何も生み出しませんよ。

いえいえ、こういう考え方を「再帰的」というのです。
自分で自分を使うんですね。
で、数学の「おそろしさ」というのはこの先です。
④式ができてしまえば、④式の右下にあるφにまた③式を代入できます。

以下同文。

卒業式で校長先生が「以下同文」なんて言っても、まぁ、大事件にはなりませんが。
数学で「以下同文」と言ってしまうと、大事件。
もう止まりません。止まるべき条件がないですから。
そうすると「無限」が登場してくるんですね。
「無限」は恐ろしい。
私のような凡人には扱いかねます。
で、眺めるだけ。

★同じように、
②式を変形して⑤式にします。
すると、⑤式の右辺のφにまた⑤式そのものを代入して⑥式ができますね。

以下同文。

また無限が出てきました。


Phi
もうちょっと、無限っぽく書くとこうなります。
上のほうは「連分数」という形式です。
高校までの数学ではあまりお目にかかりませんが、面白いものです。
下の方に「・・・」がありますね。これが曲者。
以下無限に続く、ということを表しています。

下の表記はほとんど見ないでしょう。
名前もあるのかないのか。
「極」「私」的には「連分数」のまねをして「連根」と呼んでおりますが。これは全くどこの世界でも通用しませんからご注意ください。

★さて、私が数式を書くときに使っている「カルキングJ」というソフトには、式を評価して値を計算してくれるという機能があります。
それを使ってみました。
Phi_2
ずら~っと連なった式を適当なところで打ち切って、「計算実行」をかけますと
ご覧のような数値が得られます。
φ=1.618033989・・・
ですので確かにφに近づいて行っていることが分かります。

再帰的な定義式で、「1」しか登場していないのに、続けていくとφに近づいて行く。
不思議な感覚にとらわれませんか?
妙な感じでしょうが、実際にφに近づいて行くのですからしょうがない。

こういうのって、数学的に美しいなぁ、すごいなぁ、不思議だなぁ、と感じ入るわけですね。
φの不思議さですね。

★そういうソフトがないと計算できないんですか?

いえいえ、エクセルでできますよ。
Phi_3
これです。
まずセルに1を書きこみます。
その下のセルに「=SQRT(1+(上のセル))」と計算式を書けばいいのです。
で、その式を下に連続コピーすればいい。

連分数の方は、1を書きこんだセルの下のセルに
「=1+1/(上のセル)」と計算式を書けばいいのです。
で、下へ向かってコピーしてください。

ただ、エクセルで扱えるのは倍精度実数までですので、それ以上の精度は出ません。

★プログラム
手元にフリーソフトの「十進BASIC」というのがあります。
標準的なBASICですが、1000桁モードというのを持っているのが面白い。
1000桁モードで、φを計算させると

1.
61803398874989484820458683436563811772030917980576
28621354486227052604628189024497072072041893911374
84754088075386891752126633862223536931793180060766
72635443338908659593958290563832266131992829026788
06752087668925017116962070322210432162695486262963
13614438149758701220340805887954454749246185695364
86444924104432077134494704956584678850987433944221
25448770664780915884607499887124007652170575179788
34166256249407589069704000281210427621771117778053
15317141011704666599146697987317613560067087480710
13179523689427521948435305678300228785699782977834
78458782289110976250030269615617002504643382437764
86102838312683303724292675263116533924731671112115
88186385133162038400522216579128667529465490681131
71599343235973494985090409476213222981017261070596
11645629909816290555208524790352406020172799747175
34277759277862561943208275051312181562855122248093
94712341451702237358057727861600868838295230459264
78780178899219902707769038953219681986151437803149
9741106926088674296226757560523172777520353613936

こうなります。
もちろん無理数なんですから、無限にとまらないのですが、1000桁までの値です。

--------------------------
LET n = 1
FOR i = 1 TO 30
   LET m = Sqr(1 + n)
   PRINT m
   LET n = m
NEXT i
END
--------------------------
これが最もシンプルに書いた、十進BASICの(連根)プログラム。30回のループで打ち切っていますが、もっと回数を多く回すこともできます。
途中経過を書かせたり、φとの差を出力させたりもできますが、省略しました。

--------------------------
LET n = 1
FOR i = 1 TO 30
   LET m =1 + 1/(n)
   PRINT m
   LET n = m
NEXT i
END
--------------------------
こちらが連分数プログラム。
これらを1000桁モードで実行すると、数字がずら~っと並んで、壮観です。

--------------------------
Option Explicit

Sub Phi()
    Dim i As Integer
    Dim n As Double
    Dim m As Double
    Const MAX = 30

    n = 1
    For i = 1 To MAX
        m = Sqr(1 + n)
        Cells(i, 1).Value = m
        n = m
    Next i
End Sub
--------------------------
これは、(連根)プログラムをエクセルのVBAで書いたもの。
実行するとセルに値がずらっと書き込まれます。
でも、倍精度実数までが限界です。

★昔は私、プログラムを書くのが好きで、CとかJavaとかBASICとかいろいろやったのですが、今はまるっきり言語処理系を持ってません。
Javaができる方は、多倍長計算ができますので挑戦して下さい。

★大阪大学のサイトで本格的な話を見つけました。
関心がおありでしたらどうぞ。
http://www.math.sci.osaka-u.ac.jp/~konno/kogi/goldsect.pdf
「黄金比と循環連分数」

« ぬくもり | トップページ | ホトケノザ »

理科おじさん」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: まだ黄金比:再帰性:

« ぬくもり | トップページ | ホトケノザ »

2023年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ