階差機関

階差機関の最新ニュースをまとめて検索!

階差機関(かいさきかん、difference engine)または差分機関(さぶんきかん)は、歴史上の機械式用途固定計算機で、多項式数表を作成するよう設計された。対数三角関数も多項式で近似できるため、そのようなマシンは当初登場したとき想定されたよりも汎用性があった。

バベッジの階差機関の一部。彼の死後、残っていた部品から息子が組み立てたもの

目次

[編集] 歴史

最初のその種の機械を考案したのは1786年の J.H. ミューラー(J. H. Mueller)であるが、これは製作されなかった。

階差機関は忘れ去られ、1822年チャールズ・バベッジによって再発見(再発明)された。彼は王立天文学会に「天文暦と数表の計算への機械の適用に関する覚え書き」[1]と題する論文を提出した。その機械は十進数を使い、人の手でクランクを回すことで動作する。英国政府は当初この計画に資金を提供したが、後にサポートをやめている。開発に当たっては、当時の金額で17,000ポンド(さらにバベッジの自己資金がほぼ同額)がつぎ込まれた。

階差機関の開発が失敗した理由としては、当時の工作技術力が不足しているという説もある。しかし、シュウツ親子による階差機関が完成しているため、工作技術力というよりは、実際の開発作業を行なった技術者クレメントとの間での確執、すなわち必要とする費用の問題であったという説もある。

バベッジはより汎用的な解析機関の設計に興味を移したが、1847年から1849年にかけて改良した階差機関二号機を設計した。

バベッジの階差機関計画に刺激されたスウェーデンの実業家ペール・シュウツは1843年ごろからスウェーデン政府の援助を受けて階差機関の製作を開始し、1853年には実用機が完成した。シュウツの階差機関はイギリスやアメリカにもわずかながら売れている。しかし、バベッジの本来の設計よりも階数を少なくしたため用途が限られ、想定よりも売れず、シュウツは破産している。マルティン・ヴィーベリもスウェーデンでさらに改良した階差機関を製作したが、彼はそれを使って対数表を作ることしか興味がなかった。しかし、そのころには歯車式計算機を使うことで一般の数表も間違いが少なくなってきていたため、彼の商売も行き詰った。

バベッジの本来の計画に基づいて、ロンドン科学博物館は実動する階差機関二号機を1989年から1991年にかけて製作した。2000年には、バベッジが設計したプリンターも完成している。どちらも問題なく動作した。階差機関とプリンターは19世紀の技術水準の信頼性や精度に合わせて製作され、バベッジの設計したものは動くのかという長年の議論に終止符を打った。

[編集] 操作

階差機関は、1 から N まで番号が振られたカラムで構成される。各カラムには十進数の数値を1つ格納できる。階差機関ができることは、n + 1 番のカラムの値を n 番のカラムに加算して n 番のカラムに新たな値を格納することだけである。カラム N には定数のみを格納でき、カラム 1 には現在の繰り返しでの計算値が表示されている。

階差機関を使用するには、まず各カラムの初期設定を行う。カラム 1 には計算の開始時点の多項式の値をセットする。カラム 2 には一階階差、すなわち次の関数値と前の関数値の差をセットする。カラム 3 以降も1つ前のカラム(階差)についての階差をセットしていく。最終的に N 次多項式では N+1 カラム目で定数となる。従って、少なくとも元の関数値をN個求めておく必要がある。

カラム n は、次のような処理を繰り返す。

  1. n + 1 番目のカラムから加算
  2. キャリー伝播
  3. n - 1 番目のカラムに加算
  4. 停止

[編集] 階差の手法

ロンドン科学博物館の階差機関

階差機関の原理アイザック・ニュートン微積分法である。以下では小さな例でその原理を示す。

次の二次多項式を考える。

p(x) = 2x2 − 3x + 2

この多項式の数表を、xの値の増分が0.1の場合の、p(0), p(0.1), p(0.2), p(0.3), p(0.4) といった値について作成する。下記の表の作成方法は次の通りである。まず左のカラムは多項式の値が入っている。中央のカラムは左のカラムの上下に隣り合う2つの値の下から上を引いた差分である。そして右のカラムは中央のカラムの上下に隣り合う2つの値の下から上を引いた二階差分である。

x p(x) = 2x2 − 3x + 2 diff1(x) = ( p(x+0.1) - p(x) ) diff2(x) = ( diff1(x+0.1) - diff1(x) )
0.00 2.00 -0.28 0.04
0.10 1.72 -0.24 0.04
0.20 1.48 -0.20 0.04
0.30 1.28 -0.16
0.40 1.12


右のカラムの値が一定になる。N次多項式では、N階導関数が定数であるのと同様にN階差分は定数になる。

我々はこの表を左から右へ作っていったが、二階差分が求まるp(0.2)よりも先は右から左に作業して、さらに多項式の計算結果を求めていく事ができる。それによって階差機関は動作する。

p(0.3) を求めてみよう。中央のカラムの上から二番目の値 -0.24に右のカラムの値0.04足すと-0.20になる。さらに左のカラムの上から三番目の値1.48に-0.20を足すと1.28になる。これが p(0.3) の値である。 p(0.4) 以降も同様に求められる。

xが負から始める事もでき、必要な範囲をxの増分により必要な間隔で続けられる。差分機関はただ加算が出来ればよいので、多項式の値が乗算を使用せずに得られる。この例ではループするたびに1つの値を覚えておく必要がある(左のカラムと中央のカラムの一番下の値)。N次多項式の表を作るにはN個の数値を保持する機構が必要である。

バベッジの階差機関二号機は1991年に完成したが、7個の数値を31桁保持することが出来るようになっており、7次多項式の数表を作成する能力がある。ショイツの作った最も大規模なものでも 4つの15桁の数値までしか保持できなかった。

[編集] 関連項目

[編集] 参考文献

  • Swade, Doron (2002). The Difference Engine: Charles Babbage and the Quest to Build the First Computer. Penguin (reprint). ISBN 0-14-200144-9. 

[編集] 外部リンク

最終更新 2009年7月16日 (木) 10:25 (日時は個人設定で未設定ならばUTC)。
【階差機関】変更履歴

ご利用上の注意

もっと調べる!