タグ

ブックマーク / parametron.blogspot.com (15)

  • Mercedes Euklid

  • 地図のミウラ折り

    dowhile
    dowhile 2017/04/16
  • したたり算法

    dowhile
    dowhile 2017/04/13
    水栓算法(spigot algorithm)
  • プラニメーター

    小学生の時, 算数の時間にいろいろな図形の面積の求め方を習った. その折, 先生から三角形とか台形とかではない複雑な図形の面積はどう求めるか聞かれた. 私の当然の答は方眼紙に写しとり, 図形内部の1ミリ方眼を数えることであった. もうひとつの答は, 厚紙に写しとり, 図形を切り抜いて重さを測り, それと同じになる矩形の厚紙を作り, その面積を求めるのであった. 後者の答は象の重さを測るのに, 象を船に乗せ, その時の吃水線の位置を船端に印し, 次に同じ吃水線に船が沈むまで小石を船の乗せてその小石の総重量を測るという中国の子供の話にヒントを得ていたかもしれない. その後大学生くらいになって, プラニメーター(面積計)なるものがあることを知った. しかし, 自分で使う機会はなかった. 東大工学部計数工学科に勤めるようになった時, その学科では以前の学生実験でプラニメーターを使うものがあったと聞

    dowhile
    dowhile 2016/07/04
    へー
  • Zuseの計算機

    Konrad Zuseはベルリン工科大学で, 電気工学や機械工学でなく土木を学んだが, 1930年代の学生時代にすでに計算機を作ることを考えていたといわれる. Z1からZ4までのZuseの計算機は全く独特なもので, 特に1936年〜1938年に作られた全機械式のZ1に私は興味がある. すべて金属の板, 金属の棒のたぐいでできた浮動小数点の加算器, 制御装置, 記憶装置はまったくユニークであり, その構造を調べたくなるのは人情であろう. 1936年といえば, あのTuringの論文の出た年である. しかしこのZ1は大戦中に連合軍の空襲で破壊され, Zuseが戦後に再構築したZ1が存在し, その写真をみることができる. 再構築の話はここに詳しい. 今回からしばらくZuseの計算機についてブログを書きたい. アメリカのComputer History MuseumにZ1の一部の写真がある. その

    Zuseの計算機
    dowhile
    dowhile 2015/12/02
  • SATソルバ

    TAOCP 7.2.2.2は充足可能性(Satisfiability)が話題だ. 最初の方に多くの問題が CNF(Conjunctive Normal Form 乗法標準形)で記述できるという話が続く. 私はこの分野にはさほど興味がなく, まったくのど素人で, いつものようにアルゴリズ ムにだけ関心がある. 繰り返すまでもなく, TAOCPのアルゴリズムは自然言語で 記述されているから, その英文解釈が煩わしく, いつもああでもない, こうでもない と思いつつSchemeに変換し, いくつかの例題が無事に解けるのをみてやっと 安心している. 今回もそういう話である. 早速例をTAOCPから拝借すると, 乗法標準形は次のようなものである. x1, x2, ...などが変数(variable). 変数または その上に線を引いたものがリテラル(literal). リテラルを∨でつないだものが 論

    SATソルバ
    dowhile
    dowhile 2015/06/04
  • HP-16Cのプログラム技法

    1980年代にHewlett Packardが出荷していたHP-16Cという電卓の名器があった. 下のような面構えである. 私は30有余年愛用していて, 今も毎日持ち歩いているが, 十進法の計算はiPhoneを使うことが多くなった. HP-16Cの最大の特徴はRPN, すなわちReverse Polish Notationで, (1+2)*(3+4)を1,2+3,4+*の順に入力する. これは大変理にかなっていて, 私が以前実装したHappy Hacking Calculatorも勿論そうなっている. ただHP-16Cはスタックが4段で, 手前から(HPのマニュアルでは下から)x,y,z,tしかない. つまり上の例ではまず1がxに入り, カンマで示したENTERキーでその1がyへ移動. 2がxに入り, +で和の3がxに出来る. 3を入力すると, 和の3がyへ移動. xが新入力の3になり,

  • Piの近似値

    多面体描画道楽 (19) 微分解析機 (17) 再帰曲線 (14) Christopher StracheyのGPM (10) 曜日の計算 (8) 素因数探し (7) 菱形六十面体 (7) EDSACのプログラム技法 (6) Life Game (6) 古い計算機 (6) SATソルバ (5) ビットごとの秘法と技法 から (5) ビットスワップ (5) 開平法 (5) 面積計を使う調和解析器 (5) ARMのプログラム技法 (4) HP-16Cのプログラム技法 (4) Rubicキューブのシミュレータ (4) 乗算表 (4) 個人用電卓のプログラミング (4) 入れ子のかっこ (4) 復活祭公式 (4) 15パズル (3) 3シリンダ機関車 (3) Maxwellの面積計 (3) PDP8のプログラム技法 (3) Piの1000桁 (3) unix time (3) フィボナッチ数の話題

    Piの近似値
    dowhile
    dowhile 2015/02/09
  • 割込み

    私が2年ほど前にツィートした割込みの話がいまでも時々リツィートされているようだ. 今日はその割込み(英語ではinterrupt)の昔話しを書いてみたい. 私がいた研究室, つまり東大物理学科の高橋研究室では, 院生の後藤さんが発明したパラメトロンを使って計算機を自作した. 1958年のことである. Parametron Computer No.1ということで, 通称はPC-1という. 当時計算機とかプログラミングでは, 英国ケンブリッジ大学のEDSACのがあったので, 計算機を作ろうとすると, EDSACが手であった. PC-1ではEDSACのアーキテクチャを十分検討し, ほとんどそのまま採用したものもあれば, 我々の哲学に従って変更したものもある. 入出力命令も変更した部類であった. EDSACの入力命令 I n は, 5単位紙テープの1列を, n番地の右端に読み込む; 出力命令 O

    dowhile
    dowhile 2014/09/29
  • Illiacのブートストラップ

    アメリカイリノイ州のIllinois大学で1950年頃に作られた計算機がIlliacである. この計算機は最初のプログラムの入れ方が面白かった. 最近 同僚が神田の古書店で, 電気通信研究所から放出された図書の山から「M1プログラム作製法」を見つけてきたというので, 見せてもらった. 早速プログラムを最初に入れるブートストラップのところを読んだ. 今回はそれをちょっと書いてみたい. 1959年頃の計算機は, 内部は二進法であっても, 機械語のプログラムは十進数で書く. 相対番地も使える. それを読み込み, 二進に直し, 相対番地を絶対番地に直す短いプログラムが用意してあった. イギリスCambridge大学のEDSAC計算機ではそれをイニシアルオーダーといった. アメリカIllinois大学のIlliacではD.O.I.(Decimal Order Input)といった. 東大PC-1は

  • 十六進算盤

    このブログに八進法算盤のことを2回書いた. 2008年9月14日と2011年4月15日だ. そのとき十六進の算盤も考えられるとも書いた. 当時私の考えた十六進算盤は, 天(梁の上)に4珠が3つ, 地(梁の下)に1珠が3つのものだ. ところが最近Wikipediaを見ていたら, 昔の中国の算盤に5珠が2つ, 1珠が5つのものがあり, これは5X2+1X5=15だから16進法のものだという記述があって驚いた. 十六進算盤はどちらが使い易いか. ちょっと検討してみたい. まず私が小学生の頃習った5珠1つ, 1珠4つの標準的十進算盤で, 加算の仕方をおさらいしよう. 0から9が置いてあるある桁に, 0から9を足すわけだが, 加算のアルゴリズムとしては(A,B)が置いてあるある桁に, (C,D)を足す; ただし A,C={0,5} (天の値) B,D={0,1,2,3,4} (地の値) である. ま

    dowhile
    dowhile 2013/06/20
  • 曜日の計算

    1989年12月19日に59歳で他界された基礎論の数学者, 島内剛一(しまうち たかかず)先生を知る人はもう少ないに違いない. 私はプログラミング言語の設計などで, 島内さんには多くの影響を受けた. 基礎論の専門家だけあって, 計算機の見方も一種独特であり, 島内マニュアルは「計算機は順序のあるビットの有限集合である.」のように書き始める. 島内さんの多くの特技の1つが, 曜日の計算であった. 年月日をいうと10秒くらいで何曜と返ってくる. その秘法は何か. 私の推測では, 島内さんは, m 1月 2月 3月 4月 5月 6月 7月 8月 9月10月11月12月 h 2 5 5 1 3 6 1 4 0 2 5 0 のような, 月始めの曜日の表h(m)だけを記憶していたらしい. すると, 21世紀中の 2000+y年m月d日の曜日は, y+floor(y/4)+h(m)+d+4 mod 7

  • unix time

    unixには1970年1月1日正子(0時0分)からの延秒数を数えている32ビットの時計がある. 2038年1月19日にサインビットが立つといわれ, 2000年問題みたいになにか起きかもしれないが, 私は多分もうこの世にはいず, 状況を知ることはかなわぬ. この時計の元は, MITのMulticsではないか. Multicsには, 1900年1月1日正子からのマイクロ秒を数える52ビット時計があった. マイクロは10-6だから, 20ビット程度であり, unixの32ビットに対して52ビットなのは分かる. 私がMITに滞在したのは, 1973年9 月から74年7月までだが, その時計のサインビットが立ったのは, その少し前のたしか5月だったとある院生から聞いた. まず脱線して, それがいつだったか計算してみよう. 例の個人用電卓が活躍する. 251は2251799813685248. これを

  • 複素数用計算尺

    複素数用の計算尺があると知って, 例によってその絵を書いてみることにした. 複素数 x+iy の対数は実部が (log (sqrt (+ (* x x) (* y y)))), 虚部が(atan (/ y x))なので, Schemeで実験する. SchemeにはComplex型があるので, こういう時は便利だ. (* 2+i 3+2i) => 4+7i (define (clog x y) (list (log (sqrt (+ (* x x) (* y y)))) (atan (/ y x)))) と定義し (clog 2 1) => (.8047189562170503 .4636476090008061) ;log 2+i (clog 3 2) => (1.2824746787307684 .5880026035475675) ;log 3+2i (clog 4 7) => (2.

    複素数用計算尺
  • 再帰曲線

    dragon曲線ですぐ思い出すのは, TAOCP(The Art of Computer Programming)4.1にあるtwindragonのフラクタルの絵である. 右上に灰色の竜がいる. その左下に黒の半分の大きさの竜がいる. さらにその下に灰色の半分の大きさの竜がいる. この後, 黒, 灰, と交互に小さくなり, 最後は同じ大きさの黒と灰が並んで終る. よくよく見ると, 一番大きい灰色の竜は, 相似形の小さい竜で出来ている. 小さい竜は128個ある. 黒竜はよく見えないがこれも同様な小竜で出来ている. 最後の竜は, 小竜1個だ. 種明かしをすると, この絵は i-1進法の小数を示すものだ. 通常の2進小数(.a1a2a3a4...) 2(ai=0,1)は, n = &Sigma i=1 ai*2-i を表わすが, i-1進法では, この式の2の代りにi-1を使う. iはいうまでも

    再帰曲線
  • 1