見出し画像

円周率の話とハヤブサの軌道計算の疑問

昔、ぼっーとNHKの番組を眺めていたらおもしろい円周率の話がありました。調べたら2013年のNHK「頭がしびれるテレビ」かな。

その番組ではさまざまな業界における円周率の近似値を紹介していました。正確な桁数は忘れてしまったのですが、確か、指輪業界は3桁(3.14)、陸上トラックは5桁(3.1416)で円周率を近似するなど、同じ円周率でも業界によって値が違っていて、面白い話だなぁと思いながら視聴していました。その最後には、精密科学の象徴であるJAXAの宇宙探査の話が出てきました。なんでも、探査機ハヤブサの軌道計算ではイトカワから地球に帰るために円周率を(確か)16桁で計算してるそうです。求められる精度は日本から南米の昆虫を弓矢で射抜く精度が必要だとか。

私は理論的には無限に続く円周率が、実用に応じて業界ごとにいろんな桁数で落とされていく様相が面白くて、そのNHKの番組の話を色々な人に話していました。

あるとき、そのハヤブサが16桁の精度で円周率を計算しているとの話をしたところ「いくら精密な制御ができる探査機でも、探査機の軌道の制御をそんな桁の精度でできるわけないから、その計算精度に意味はないのでは?」とのツッコミが。
確かに、角度制御、速度制御どちらも16桁の精度で制御しようと思うと、量子力学の世界に入ってしまうので、原理的に制御ができるわけがありません。たぶん、実際の精度って、どう頑張っても4~5桁が限界でないでしょうか。

振り返って考えてみると、例えの日本から南米の昆虫を弓矢で射抜ける精度って、昆虫の全長を1cmとして、地球の直径は10の10乗cm程度なので、10桁程度です。単にイトカワへの発射軌道の精度だけを考えても16桁は6桁余分です。

なぜハヤブサは16桁もの精度を持って円周率を計算しているのでしょうか?質問への良い回答が思いつかないまま、この疑問は2020年までもやもやした気持ちで過ごしています。


今のところ私の推測の中で最も合理的な回答は、「ハヤブサの制御に用いられているプログラムが円周率を単にdouble型で指定していて16桁以下の処理ができないから」というもの。

あんまりメモリの話とかはわかっていませんが、32bit double なら小数点以下15桁あたりが浮動小数点の処理としてできる限界らしく、精度16桁というのはdouble型で計算していれば、なんとなく整合性が取れそうです。通常のプログラムの計算で使われる32bit float型の精度は8桁くらいらしいので、8桁ではちょっと心もとないので、double型で!みたいな。

しかし、この回答が正だとすると、NHKやJAXAが「ハヤブサの軌道計算の精度は16桁」と紹介することは不誠実な気がします。だって、その論法なら、通常のプログラミングを用いて計算する業界はすべて32bit float型の精度である8桁で計算していますってオチになりませんか?指輪や競技トラックをCADで設計すれば、きっと円周率の精度は8桁ですけど、それは話の趣旨と違いますよね。

というわけで、真相が上記の話であることはあってほしくないので、きっと別のちゃんとした理由があると信じています。が、その理由が分からなくて、いつか知っている人に尋ねてみたい。が、その方法が分からない!

この記事が気に入ったらサポートをしてみませんか?