読者です 読者をやめる 読者になる 読者になる

円周率に、有効数字という概念が当てはまらない。

togetter.com


さて。


タイトルで書きましたが、科学計算において、円周率をどうするかというのは、「まあ好きにせよ」とは思うのですが、「測定値の有効桁数で丸める」という意味は全くないのでご注意下さい。
また、円周率の3.14は便宜上そこまでの数値で計算すると決めたものであり、いわゆる有効桁数の定義とは異なります。3.14だったら「有効桁数3桁だ」とは思わないで下さい。工学系ではおおよそ3と教えられますが、それは円周率を厳密に用いて計算しても「だいたいしか意味がなので実際には流量計などを用いて流体力学的な径を測ったりするという事がある為です。


ここの話は、理系の大学生でも理解している人が少ないかと思います。
有効桁数とは「測定の曖昧さを含んだ値」に「ここまでの数字は有効であると丸めた値」の事であり、真の値は推測するしかないのですが、円周率には真の値は無理数なだけで、一意に決まっています。


有効桁数は、測定値の曖昧さを表現する為のものです。

追記:

円周率の有効桁数は「ない」です。計算の都合で適当に打ち切ってるものです。
「円周率は3.14とする」と定義されてるなら、それが定義なので定義に従え。「3.13」なら3.13で計算しろ。書かれてないモノを読み取るのは醜悪に過ぎる。


で、敢えて「3.14」を円周率を何らかの形で丸めたものと仮定して、「意味あるの?」って言ってる人がいるけどさ、
キミらのやってる話だと、
「円周率は3.135〜3.1449999999.....という風に認識してる」と解釈されるのだけど、それでいいの?
円周率が3.135なら379.335だし、円周率が3.1449999....なら380.54499999.....だし、有効桁数として実際一桁減らす必要が出るのだよね(保守的な有効桁数の使い方として、計算結果に対しては有効桁数を一桁減らすという形もあるけど、無論こちらの流派の問題は、計算していく度に有効桁数が減ってしまって、有効桁数で精度表現する限界にすぐにぶち当たるというものがある。有効桁数減らさない方はその問題を回避しているんだけど、結局計算結果の誤差表現として、有効桁数が大して有効でないという事の証左)。
円周率でこのネタは起きやすく、小学校ぐらいで塾で騒いだ記憶があるが、実は3.14という仮定は、真の値より0.05%程度しか違いがないため、本来減りそうな有効桁数を減らさなくて済んでいるだけ。
都合よく、たまたま半径11cmだったから、真の値とのズレが、3.14の計算結果を丸めた方がより真の値に近いから、誤解のネタになるんだけど。

半径 円周率=pi()(EXCEL)で計算 円周率=3.14で計算 誤差(%) 円周率=3.14で計算後、有効桁数3桁で四捨五入 誤差(%) 誤差大小(誤差(絶対値)を比較)
1 3.14159265358979 3.14 -0.0507 3.14 -0.0507
2 12.5663706143592 12.56 -0.0507 12.6 0.26761
3 28.2743338823081 28.26 -0.0507 28.3 0.09078
4 50.2654824574367 50.24 -0.0507 50.2 -0.13027
5 78.5398163397448 78.5 -0.0507 78.5 -0.0507
6 113.097335529233 113.04 -0.0507 113 -0.08606
7 153.9380400259 153.86 -0.0507 154 0.04025 !!>
8 201.061929829747 200.96 -0.0507 201 -0.0308 !!>
9 254.469004940773 254.34 -0.0507 254 -0.18431
10 314.159265358979 314 -0.0507 314 -0.0507
11 380.132711084365 379.94 -0.0507 380 -0.03491 !!>
12 452.38934211693 452.16 -0.0507 452 -0.08606
13 530.929158456675 530.66 -0.0507 531 0.01334 !!>
14 615.752160103599 615.44 -0.0507 615 -0.12215
15 706.858347057703 706.5 -0.0507 707 0.02004 !!>
16 804.247719318987 803.84 -0.0507 804 -0.0308 !!>
17 907.92027688745 907.46 -0.0507 907 -0.10136
18 1017.87601976309 1017.36 -0.0507 1020 0.20867
19 1134.11494794592 1133.54 -0.0507 1130 -0.36283
20 1256.63706143592 1256 -0.0507 1260 0.26761
誤差(絶対値)平均 0.0507 0.1115


3.14で計算した値をそのまま使った方が、誤差についてはだいぶマシ。また、下手に四捨五入をつけると、真の値よりも大きい小さいという部分がブレる。これも一つの厄介な性質だよ。
幾つかの計算結果については、3.14で計算した値そのままより丸めた方が真の値に近くなる(一応、Excelの円周率も近似値ではあるけど、真の値との比較では、3.14ぐらいの精度とは比較にならないぐらい真の値に近い)。が、平均して真の値より遠くなる。


Webでのお遊びとして有効桁数主張するのはもう勝手にしてくれればいいんだけど、大人になっても勘違いしたまま社会人になって、仕事上で言われると、ぶっ殺していいかなと思ったりする。
流石に円周率はそのまんま倍精度浮動小数型の精度でフルに使うけど、計算機上の数値の精度ってそもそも2進数と10進数の差異みたいなの簡単に出ちゃうからねえ。