« 川西能勢口に行ってきた。 | トップページ | Wolfram|Alphaは理科年表+高機能電卓かな? »

2009年5月23日 (土)

ディファレンス・エンジンをExcelで。

ギブスン/スターリングのディファレンス・エンジンを読んだのだが、正直あまりピンとこなかった。バベッジとかエイダとか、福沢諭吉とか森有礼とか知っている名前がでるのは面白いけれど、あの当時の歴史に全く疎いので。。。(あと蒸気のハイテクノロジーの説明があまりないのが私には。。。タイトルも本当は解析機関のほうがふさわしいんですね。)

それはそれとして、階差機関(差分機関)はどういう原理なのかちょっと調べてみる。

わかりやすいのは2次関数で、まず次の3つの量を計算しておく。

P(x) = ax^2 + bx + c

P(x+h) = ax^2 + 2axh + ah^2 + bx + bh +c

P(x+2h) = ax^2 + 4axh + 4ah^2 + bx+2bh + c

なので階差をとると

P1(x)   = P(x+h) -   P(x) = 2axh +ah^2 + bh

P1(x+h) =P(x+2h) -P(x+h) =2axh + 3ah^2 + bh

さらに階差をとると

P1(x+h) - P1(x) = 2ah^2

と定数になる。これは2次関数だからずっと定数。

これをさらにすすめるために

P1(x+2h) - P1(x+h) =2ah^2  なので、

P1(x+2h) = P1(x+h) +2ah^2 =  2axh + 5ah^2 + bh = P(x+3h) - P(x+2h)

P(x+3h) = ax^2 + 4axh + 4ah^2 + bx+2bh + c +  2axh + 5ah^2 + bh

           = ax^2 + 6axh + 9ah^2 + bx + 3bh + c

となってちゃんと次の値が求まる。これを繰り返すと数表がつくれる、ということで、結局階差機関って数表の自動作成用で、コンピュータって感じではないなあ。次の解析機関がまさにコンピュータのさきがけなんだけど、完成しなかったのは残念。。。

バベッジは7次関数まで計算できるものを設計していたということで、これをExcelで計算してみた。階差の数が増えるけど、考え方は2次関数のときと同じ。でまあ当時から計算をしたかったのは対数表だろう、ということで

ln(1+x) = x-x^2/2+x^3/3-x^4/4+x^5/5-x^6/6+x^7/7+...

を使って計算。すると。。。

Differenceengine

xが大きいところはまあ本当は展開式を変えるからこれはいいとして、ちゃんと計算できてますよ。うまいこと考えるもんだなあ。

いまならln(1+x)とすぐ計算できるからありがたみがわからないけれど。

« 川西能勢口に行ってきた。 | トップページ | Wolfram|Alphaは理科年表+高機能電卓かな? »

学問・資格」カテゴリの記事

書籍・雑誌」カテゴリの記事

コメント

コメントを書く

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

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/512682/45066501

この記事へのトラックバック一覧です: ディファレンス・エンジンをExcelで。:

« 川西能勢口に行ってきた。 | トップページ | Wolfram|Alphaは理科年表+高機能電卓かな? »

最近のコメント

2018年11月
        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  
フォト
無料ブログはココログ