2011年4月29日金曜日

古い計算機

今回はPascalが発明したといわれる計算機, パスカリーヌの繰上げ処理のことを書きたい.

Pascalは1623年生まれ. 計算機を考えたのが1642年から45年だから, 20歳くらいのことになる.

そんなに高級なことが出来たわけではなく, 例によって歯車にスタイラスを指してぐるーっと回すと, その分だけ加算出来, 結果が表数車に現れるという代物である. 減算は補数を足して実現したようだ. つまり歯車類は, 一方向にだけ回転する構造であった.


ウェブページ
にあった図を一つ借用すると, 計算機構は下のようになっていたらしい.



図の 0 1 は表数車で, パスカリーヌは十進法以外にも対応していたらしいが, 一応は外側に0から9と, 内側にその補数が書いてあった. 2 は歯止めである. 歯車といっても, 精密な工作は出来ぬ時代なので, 円周から棒がたっている程度のもので, むかしのからくりでよく見かけるものがあり, 歯止めはそれを上から重力で押さえている.

図の 3 はベベルギアの片割れである. 下の方の図にも 3 はあるが, 表面の歯車をスタイラスで回すと, このベベルギアで水平面の軸の回転に変わる. この軸が1段の歯車を介して表数車を回す.

ところで繰上げは, 下の桁の水平軸の用意した2本のピン 4 が主役である. 軸が図でみて時計方向に回ると, このピンは, 上の桁の水平軸で回転する 5 のフォーク状のフックを押し上げ始める. やがて 4 5 の下から抜けるが, それがちょうど表数車が9から0になる時で, フックが重力で墜落することにより, 上の桁のピン 6 が押されて, 繰上げを生じる仕掛けである.

繰上げ処理には, 力がいるのが普通だが, パスカリーヌでは重力を利用するのが面白い. 表数車が5, 6, 7, 8と回るにつれ, ポテンシャルを高めていき, 9を過ぎると一気に落ちるのである.

私はこの仕掛けをみると, 昔のテレタイプを思い出す. テレタイプは1文字ずつ受信, 印字しながら, 印字位置が次第に右に移動し, 復帰信号を受信すると印字位置を左端へ戻すのだが, このエネルギーは, 印字位置を右に移動するときにためていく. 復帰でフックがはずれ, 蓄えたエネルギーで左端へ飛んで戻るが, 最後にダッシュポットがあって, ブレーキをかけ, 静止する. 従って, 左からほんの数文字を印字した後の復帰では, 力が弱く, 左端まで充分戻れないこともあった.

これは, 手動のタイプライタとは, 全く反対のエネルギーの使い方であった. 手動のタイプライタでは, 手でプラテンを右に寄せると, その時にエネルギーを蓄えるのであった. 1文字打つたびに, そのエネルギーにより, プラテンが左へ送られるのである.

パスカリーヌのこの動きを, いつものようにポストスクリプトで描いたのが次の紙芝居である. 4 あたりから, ピンがフックを押し上げ始め, 9 で最高点に達する. その直後にフックは墜落し, 上の桁のピンを回す.



いかにもうまく行きそうだが, 繰上げが続くと, 2, 3段で駄目になったという説明を読んだようにも思う. なお上の図の動画がhttp://playground.iijlab.net/~ew/pascalinecarry/pascalinecarry.htmlにある.

2011年4月5日火曜日

八進法算盤

以前このブログに八進法算盤のことを書いた(2008年9月14日). 今回もその話題だ.

前回のブログを書いたころ, 八進法の算盤は私のが最初だろうと思っていた. しかし, 東京理科大学の近代科学資料館で蒐集した算盤群を眺めて目をこする.



手前にあるのは下が3珠の算盤ではないか! これは八進法用なのか. 説明がないから目的は皆目不明である. この算盤の奥には, なんやら二進法の算盤らしいものさえある. 故事来歴を知りたいところである.

ところで...
子供のころ, 学校で算盤を習った. もちろん十進法の算盤である. すこし使い方を覚えると, 1+2+...+10とかやってみたくなる. 答が10までなら55, 100までなら5050なのは, 周知のとうり.

自作の八進法の算盤でも, 1から八進法の10まで足してみると, 上の(天の)珠が並び, 44になって驚く. 同じパターンだ. これは偶然であろうか. たしかに1+2+...+8=36. これは4*8+4だから44なわけだ.

Gaussが子供のころ, 1+2+...+100を計算するのに, (1+100)+(2+99)+...とやった逸話は有名である.

その伝でいくと, 十進法で1から10まで足すのは, まず10を除外し, 1+9, 2+8,...を作るとそれらも10で, 4通り出来る. 5は継子になる. 合計55の1の桁の5は, その継子の5である. 4通りの10と, 最初に除外した10と合わせると10も5組になり, 55になる. この推論はこのまま八進法に適応出来る. なーんだという気分. 八進法の100までの和も4040だ.

もっと一般的にやろう. 2n進法で1から2nまで足すと, 2n(2n+1)/2=n(2n+1)だから, 2nの桁も1の桁もnになるのだね.

Gaussは子供のころ家が貧しかったせいか, こういう神童的な話が伝わる. Gaussが自分で復活祭の日取りを計算する式を考え出したのは, 母親がGaussの誕生日もろくに覚えていないような人だったかららしい.

Gaussといえば, 高木先生の解析概論に, 「Wolframの表には1000以下の素数の自然対数の50桁の表が掲げられてゐる. この表は既に少年がうすが愛用したものである.」という脚注がある. どんな表なのか興味はある. そのWolframはMathematicaのWolfram Researchとは関係ないはずだが, おなじWolframなのも何かの因縁であろう.

さて, iPod touch用に私が開発した電卓は, 八進法, 十進法, 十六進法の各基数で計算が出来る. 基数を十進法に設定し, 10 Ent 11 * 2 /とすると55; 八進法, 十六進法で全く同じ入力をすると, 44と88になり, 当然とはいえ, 楽しい.

2011年4月4日月曜日

古い計算機

前回のブログのDial-A-Maticの計算機の特許の図で, その上方にある歯止めの機能を理解したいと思い, ひがな一日PostScritpで描いた図をこねくりまわした.

すなわち, ダイアルと伝達歯車と歯止めを表示し, パラメータを変えて, ダイアルを少しずつ回転しながら, この点とこの点が接しているはずと, 伝達歯車や歯止めの回転角度を繰り返し調整した.

ダイアルが加算方向に右回転し, 状態が9から0になって繰上げが出る過程の最初が0番の図で, それから以下の紙芝居, あるいはパラパラ漫画は始まる. それぞれの図の右上の番号nは, ダイアルの0番からの回転角が3n度であることを示す.

鳥のようにも見える歯止めには, 左と右に下向きの三角がある. 左のをストッパー, 右のをフォロワーといおう.



最初の0番では, 歯止めは伝達歯車の2本のピンの間をしっかり押さえている. 1番の図に向って, ダイアルの右回転を始めると, ダイアルの突起が伝達歯車のピンを押し, 伝達歯車が左回転し始める. それにより歯止めのストッパーの斜辺が, ピンで上に押され, 歯止めは右に傾く. 1番以降, 赤線は0番の位置を示す.


2番と3番では, ダイアル, 伝達歯車, 歯止めの回転が継続中.



4番. 伝達歯車のピンによるストッパーの押し上げはここまで. つまり歯止めの右回転は終り. この後しばらく, フォロワーはダイアルの0の数字の上の谷の部分を移動する.



6番. 18度回転したので, 状態9と0との中間点に来た.



9番から10番にかけて, フォロワーは0の数字の左の斜面に当り, 押し上げられ, 左回転を始める. 同時にストッパーが, 次のピンの間に下がり始める.





12番でダイアルは36度回転し, 状態0になる. しかし, ストッパーはピンの間に充分には下がっていない.



13, 14, 15番で, 状態が0からさらに1へと変る時, 数字1の方にある高い山の斜面でフォロワーが押し上げられ, ストッパーが伝達歯車のピンの間にしっかり止る.

フォロワーを押し上げる斜面が, なぜ2つに分かれているかは, 残念ながら未解決である. また, 歯止めは, ダイアルの急回転により, 繰上げが2回生じるのを防ぐのが目的なのだが, 8番の図で, ストッパーが上がっている間に, もう1本のピンもストッパーの下を通過しそうにも思える. その辺りも解明出来ていない.

前回も引用した, 繰上げ処理に詳しいウェブ の最後の方に, この計算機の内部の写真が2つある. 特許の図の上の写真は, 蓋を取ったものであり, 最後のは, 教育用に蓋を透明にしたものだ. これ, 欲しいなぁ.

2011年4月2日土曜日

古い計算機

このブログに何回か書いた昔の計算機は, タイガー計算器のような乗除算は出来ないが, 簡単な加減算ならお手の物だ. そういう計算機をウェブページで探していたら, Sterling Dial-A-Maticというのを見つけた. これが理科大の近代科学資料館にあったかどうかは分からぬ.

John Wolffさんのウェブページには, 1950年代かとある.



この画像を頂いたもとのURLが思い出せないのが申し訳ない.

プラスティック製だから, 古いとはいえない. 古いのと同じく簡単なのである. 簡単なので, 筆箱に蓋に組込める. この計算機を使うにはスタイラスがいるが, スタイラスが筆箱に仕舞えるのも都合がいい.

この計算機は十進4桁. 右からunits(一の桁), tens(十の桁), hundreds(百の桁), thousands(千の桁)である. それぞれの桁にnを足すには, 周囲に書いてある外側の大きい数字のnのところの穴にスタイラスを差し, 馬蹄形の最後まで右に回す.

nを引くには, 内側に書いてある小さい数字のnの穴にスタイラスを差し, 左に回す.

すると上の穴にその桁の答が現れる.

予想されるように, 繰上げ, 繰下げは正しく反映される.

2桁だけを書き出すと次の図だ.



中が気になるが, 繰上げ処理に詳しいウェブ にこの計算機の説明があり, そこからUS Patent 2,797,047に辿り着ける. するとこういう図を始めいろいろ見つかる.



特許の図だからごちゃごちゃしているし, 説明も回りくどい. 今回はそれを私なりに説明したい. 十進歯車の相当する円盤の上方にカムのような切り込みがあり, それに噛み合う上側の歯止めや下側のバネみたいなものは, 回転しすぎ防止と位置の調整用のものなので省略し, 特許の図の繰上げに本質的な部分を描くとこうなる.



この赤で示した蓋を外すと



になる. 右が一の桁のダイアル, 左が十の桁のダイアルで, その状態が真上にある数字で読めるように, 数字は放射状に書いてある.

中央に繰上げ用の伝達歯車があり, 歯は十の桁のダイアルの下の歯車と噛み合っている. 伝達歯車には, 緑で示す10本のピンが立っていて, またダイアルの2の数字の下あたりに, これも緑で示す突起とぶつかる高さになっている.

ダイアルが36度左回転して, 0から9の状態に変ると, 突起はピンに当って, 伝達歯車を36度右回転させる仕掛けである.

ここが繰上げ機構の微妙なところで, 一の桁のダイアルの繰上げは, 伝達歯車に伝わるが, 伝達歯車の回転は一の桁の突起に当ってはいけないのである. 従って, 突起はピンの外側の包絡円のすぐ外側に控えている.

この構造で伝達歯車と十の桁のダイアルを36度ピッタリに回すのはむずかしく, 従って, 特許の図では, 針金のバネでダイアルの下の歯車を, 定位置に止めようとする.

もう一つ微妙なのは, 一の桁のダイアルを, 勢い良く回転して, 繰上げを伝えた場合である. 突起がピンを急に押すと, 36度どころか, 72度まで回転してしまうかも知れない. これを防ぐのが, ダイアルの上の切り込みと歯止めである.

歯止めの動きはまだよく理解してはいないが, そういう機能である.

私がProcessingで描いたシミュレータが,
http://playground.iijlab.net/~ew/dialamatic/dialamatic.html
にある.

起動時には, 0 0 の状態である. 一の桁に1を足すには, 一のダイアルの大きい数字の横の円をクリックすると, 青色に変る. 右下の + の箱をクリックすると1が足される仕掛けだ. 引くには左下の - の箱をクリックする.

クリアの機能はない.