「……計算できるのかこれ?」
よくある拡散方程式、ではない。原理上解析的に扱えないんじゃないかという気配さえある。じゃあどうすればいいのかについては見当もつかない。
必要なのは核熱炉の中における中性子の動きである。もちろん実験して確かめればいいのだが、それをやるためには材料の見積もりが必要で、そのためには計算をしたいという問題がある。
もちろん海軍には金がありますよ、多めに材料があったらその分を次の炉であるとかより大きな炉に使えるので無駄にはなりませんとも。だからといってものには限度というのがあるのだ。
「これはそういうこと詳しい人に話を聞きに行くか……」
数学者によって計算できないなら、残る方法は三つしかない。
足し算と掛け算とか、そういうものを片っ端からやりたいとする。参考までに引き算とは負の数の足し算であり、割り算とは逆数の掛け算であり、あるいは指数や対数を用いればより広い計算も取り入れられるし、掛け算も桁をずらしながらの足し算なので結局足し算なのだが、ともかくここでは足し算と掛け算だけを考えるとしよう。
段付きの歯車を回転させることで計数を行う、というのは基本だ。親歯車が一回転、十歯分動くとする。それと子歯車の噛み合う場所をずらすことで一歯も噛み合わない状態から全部の十歯が噛み合うようにすることもできる。あとは噛み合った結果によって次の噛み合う場所を動かす、みたいなことを組み合わせれば結構色々なことができる。
軍関係ではこの手の計算は求められがちだった。例えば砲。遠くを狙う時に、毎回諸元を計算していては間に合わない。距離から砲の仰角をすぐに出せる表が求められるのだ。あとは潮の満ち干きとかもそう。それと天文学関係でも求められるね。あるいは統計。保険業務を回すためには多くの計算をこなさなくちゃいけない。会計分野でも最終的にまとめるとなると人間が入り込んで間違える可能性を減らせるなら減らしたくなるのだ。
まあともかく、
離散的に数を扱うので、機械的な部品の位置の誤差が吸収される、ということでもある。これを突き詰めて部品点数を削減するためには十進法ではなく三進法で扱うべきという意見もあるが、人間に読みやすい形に戻すことができないので良くない。
これに対して
整数の足し算であると誤差が出てくる分面倒そうに見えるが、
「……それで、どう思いますか。ミセス・ブラッケン」
うちの屋敷の女中長はこの手のことについてそれなりに詳しい。間違いなく私よりも。
「計算をすると容量が足りないでしょうね」
彼女は紙に数字を書きながら言った。
「容量?」
「覚えておくことのできる数、と言えばいいでしょうか」
「ああはい、でもそれは
「書き込みと読み取りには時間がかかります。一回の計算において、直前の時間の状態から求めるとなるとかなりの量の計算結果をまとめておく必要があります」
「最終的に欲しいのはそこまでの量じゃないのに……」
「一杯のスープを作るための手間のようなものです。まとまった分量を作るのであればいいものができる、ということは多く、それを考えれば一杯だけ欲しいと言われても鍋一つ分作るほうがかえって安くなるのですよ」
「そういうものか……」
ミセス・ブラッケンが言うなら諦めるしかないのだろうか、と私は息を吐いた。
「……この手の問題は物理学の話で見たことがありますが」
「えっ、知らない」
「拡散の問題を粒子の運動とみなして解くものです」
「……あー、相互作用を考えない?」
「一つ一つの粒子の動きを見ます」
「……その分計算量が膨大にならない?」
「相互作用を考えなくて良いので、大量の並列計算が可能です」
「おお、それなら容量も少なくてすむ」
保存しておきたいのは位置と速度ぐらいだものな。そうなれば四つか。あとはどういう時に衝突して、速度が変わるかをうまく式にすればいいのか? いや違うな、衝突を確率で出すべきか。乱数表の問題だな。
「……乱数表を
「そういう時は最後のほうの桁を適当に掛け算すればいいのです」
「……頻度の計算ぐらいはしておかないとな」
やはりこういうのは専門家に相談すると話の見通しが良くなるな。あとは少しまとめてみたら海軍のほうがどうにかしてくれるだろう、きっと。
I cannot assert this with certainty yet, but it seems to me very likely that the instructions given on this "computing sheet" do not exceed the "logical" capacity of the ENIAC. I doubt that the processing of 100 "neutrons" will take much longer than the reading punching, and (once) sorting time of 100 cards, i.e., about 3 minutes. Hence, taking 100 "neutrons" through 100 of these stages should take about 300 minutes, i.e., 5 hours.
上記の計算のために暫定的な「計算表」を添付しておく。もちろん、これは(人間)
まだ確言はできないが、この「計算表」に示された指示群は、
VON NEUMANN, John. [Letter to R. Richtmyer]. 1947. In: Statistical Methods in Neutron Diffusion (LAMS-551)
ジョン・フォン・ノイマンよりロバート・デイビス・リヒトマイヤーへの手紙、