この写真は東京理科大学の近代科学資料館で撮らせていただいた, 非常に古いBrunsvigaである. 上の筒状の右が置数レジスタ(S)で, レバーを動かして数値を置く. 手前の横長の部分(キャリッジという)には, 左に回転数レジスタ(M), 右に結果レジスタ(R)がある. 写真では見えないが, 筒状の向うにクランクハンドルがあり, 正方向に回転すると, 置数レジスタの数が結果レジスタに足され, 回転数レジスタが1増える. 負方向の回転では, 置数レジスタの数が引かれ, 回転数が1減る. 乗算をするには, 置数レジスタの数を, 1の桁, 10の桁, ...に足すので, キャリッジは左右に移動できる.
123に456を掛ける場合, 置数レジスタに456を置き, 結果レジスタを0にし, 1の桁に3回, 10の桁に2回, 100の桁に1回足す. 結果56088が得られる. これに更に789を掛ける場合, この古い機械では出来ないが, 後年の機械では結果レジスタの値を置数レジスタに移すback transferという機能があり, 56088が置数レジスタに置ける. 1000の桁に1回足し(1000倍が出来た), 100の桁で2回引き(800倍), 10の桁で1回引き(790倍), 1の桁で1回引く(789倍). これをshort cut乗算という
昔はこういうことをやっていたのもだ. 開平も出来ることは, 2009年1月21日のブログに書いた.
ところで, Brunsvigaには, もっと多機能な機械があった. それの使い方を考えたい.
その計算機はBrunsviga DuplaとBrunsviga Doppelである.
これらの計算に1930年前後に登場した. 最初の写真の計算機と違うのは, 回転数レジスタが置数レジスタの上に来た; 置数レジスタの数値が良く見えるように, チェックレジスタが置数レバーの上に新設されたことである.
さてDuplaは, 置数レジスタと結果レジスタの間に, 第2結果レジスタ(R2)を置いた. ハンドルを回転すると, 置数レジスタの数値は, 第1結果レジスタ(R1)には加減されるが, 第2結果レジスタには, 加減算を止めることが出来る. また, どちらの結果レジスタからも, back transferが出来る. さらに第1結果レジスタの下に, thumb wheelという仕掛けがあり, 第1結果レジスタに, 直接数値を入れることが出来る. この機構は除算の時に便利で, これがないと, 非除数をR1に置くのに, 置数レジスタに一旦被除数を置き, 1回加算しなければならず, とくに長い被除数だとその加算が2回になる.
Duplaの使い方については, Comrieの書いた論文がウェブで見つかる. それによると, 第2階差まで使った数表が作れるというので, やってみよう.
y=x2+x+41の表と, その第1階差, 第2階差を示す. (これは素数生成(!!)の2次式である.)
x y Δ' Δ''
0 41
2
1 43 2
4
2 47 2
6
3 53 2
8
4 61 2
10
5 71 2
12
6 83 2
14
7 97 2
16
8 113 2
18
9 131
Comrieの方法によると,
初期設定
関数値41をR2に置く. 第1階差2をSに置く. 第2階差2をR1に置く. Mを0にする.
ステップの進め方
ハンドルを1回転する. するとR2に新しい関数が出来る. Mに引数が出来る. R1に第1階差が出来る.
従って, そこでR2を記録する. R1をSにback transferする. R1に第2階差2を置く.
次々と進めると
x y Δ' Δ''
1 43 4 2
2 47 6 2
. .. . .
となり, 上の表が出来る. R1に定数の第2階差を毎回置くのは面倒なような気もするが, 第2階差が規則的に変動しても計算に使えるので, これは意味がある.
一方, Doppelは大雑把にいうと, 計算機を2台, 横に連結したものである. クランクハンドルは1個だが, 回転数レジスタ, 置数レジスタ, 結果レジスタは左右に1個ずつあり, クランクハンドルを正方向に回転すると, 普通には, 右置数レジスタの値は右結果レジスタに足され, 左置数レジスタの値は左結果レジスタに足される. 負方向に回転すれば, 足す代りに引かれる. 中央に上向き矢印が2個並んでいる絵と, 上向きと下向きが並んでいる絵があり, そのクラッチを切り替えると右では足し, 左では引ける. さらに接続を切ることも出来る. またDuplaのように, 結果レジスタに直接設定も出来る.
では, こういう重連計算機はどういう時に使うか. あまり使い方を書いたものは知らないが, 1つの利用法を考えた.
十進法の1023を八進法ではどうなるか. もちろん1777である. 以下がBrunsviga Doppelによる計算法である. 左と右の回転は逆にする, つまりハンドルは正方向に回し, 右は加算, 左は減算する.
行 左S 左R 右R 右S
0 512 1023 0 1000
1 64 511 1000 100
2 447 1100
. .. ... .... ...
7 127 1600
8 8 63 1700 10
9 55 1710
. . .. .... ..
14 15 1760
15 1 7 1770 1
16 6 1771
.. . . .... .
21 1 1776
22 0 1777
とまぁこういう使い方もあるわけだ. もう少し詳しくいうと, 左置数レジスタ83, 右置数レジスタに103を置く. 左Rに1023を置き, 右Rを0にする. 左Rから左Sが引ける限りSを引く. 引けなくなったら(1行目), 左Rを82, 右Rを102にして, また引けなくなる(8行目)まで引く. これを左Rが0になるまで繰り返すと, 右Rに八進表現が出来ている.
0 件のコメント:
コメントを投稿