2009年7月2日木曜日

手回し機械式計算機

6月15日のブログで触れたComrieの論文には, Duplaを使った第2階差をとる方法が書いてある. それは次のようだ.

等間隔の引数に対する関数値が, a, b, c, d, ...だったとする.
第1階差は, b-a, c-b, d-c, ...だから,
第2階差は(c-b)-(b-a)=a-2b+c, (d-c)-(c-b)=b-2c+d, ... である.

この種の計算機では, 数値を入力するのが厄介(というより, 操作ミスの原因)なので, 入力回数を極力少なくするのに気を使った. 以下の方法では, 「なにを置く」は, 各値について1回だけだ. 第2階差は「記録」のところで得られる.

S R1 R2
aを置く a 0 0
1回転 a a a
bを置く b a a
-3回転 b a-3b a-3b
R2帰零 b a-3b 0
1回転 b a-2b b
1 cを置く c a-2b b
2 1回転 c a-2b+c b+c
3 記録 c 階差 b+c
4 -4回転 c a-2b-3c b-3c
5 R1帰零 c 0 b-3c
6 1回転 c c b-2c
1 dを置く d c b-2c
...

この「cを置く」から, 「dを置く」の直前までが1サイクルである. ここから, R1とR2の仕事を交換し, R2に次の階差が得られる. 以下同じ.

実に見事な方法だ. 次の入力数を置数レジスタに置いたまま, 2つのレジスタを使い, 次の階差と次の次の階差の準備を進めている. Duplaでは, 一方に足しながら, 他方から引くことも出来るが, そのようにしていないのは, 操作ミスを心配したからと思われる.

これは今の言葉でいえば, プログラムを作ったようなものである. 手順を書き下し, 後はこの通りに手を動かすだけでよい. 最初に書いたように, それぞれの値が1回しか, 入力されないのが, 最大のメリットである.

Leslie John Comrie(1893-1950)は, 化学を専攻したが, 後に天文学者になり, 各種の計算機を使って数表を作る仕事に尽力した. 計算機も単に手回し機にとどまらず, パンチカードを使った会計機等も利用した. 「A Computer Perspective計算機創造の歴史」には, Comrieは何回も登場する.

Comrieの写真はここにある.

0 件のコメント: