はてなキーワード: 有効数字とは
有効数字的には1.000gだな
「○○から△△までは、だいたい20kmあります」と言われた場合、有効数字の観点からは、
「だいたい」の範囲を、19.5〜20.5kmだと考える人と、15〜25kmだと考える人が居ると思う。
まあ、後者は極端だとしても、18〜22kmなどと、ある程度広いレンジを考えるのが、自然だと思う。
一方で、「○○から△△までは、だいたい32kmあります」と言われた場合は、「だいたい」の範囲を、31.5〜32.5kmと考えるのが自然だろう。
よって、「20km」のように、数値の下位に当たる数字がゼロだと、その値は丸められている可能性があるため、
その値が示すレンジを幅広く見積もる、ということを私達は自然とやっているのだ。
つまり、下位の数字がゼロであるかどうかは、私達の感覚に影響を与える要素のひとつなのだ。
だから、表題の通り、20マイルを「約32km」と訳すのには違和感がある。
その違和感の理由は、端的に言うと、値の信頼度が違うだろうということだ。
つまり、「約32km」などと「約」をつけたところで、読み手が想定する値のレンジは、31.5〜32.5kmだ。
「20マイル」という、ざっくりとした値だという感覚は、適切に表現されていない。
なので、個人的には、20マイルは「約30km」、30マイルは「約50km」と、値を丸めて表現した方が正しい気がする。
杓子定規に、単位変換を一の位まで計算して計算して表現することは、意味が無い気がする。
(もちろん、原典となる文章が有効数字を示唆しているなら、その限りではない。)
数値の翻訳をどうするか、という議論を見たことがない(科学論文レベルになれば、使用される単位系が国によって異なるということがないはずなので、
そもそも値を翻訳する必要がない。だから、議論もされないのだろう)のだが、最低限でも、値の有効数字は維持されるべきだと思う。
通勤中、足元をアリが横切るのをみた。危うく踏むところだった。
今回は踏まずに済んだが、今までに何度となく踏んでしまっているに違いない。
気の毒だが、実際どれくらいの頻度で踏んでいるかを計算してみよう。
まず、アリを踏んづけるとはどういうことか。ここでは、ヒトの足の面積のなかにアリがたまたまいることを踏んだとみなす。土踏まずを考慮せず、靴の凹凸も考慮しない。
言い換えるなら、アリがどれくらいの確率である面積の下にいるかを求めることになる。
つまり、ランダムで移動してくる面積の中に任意のアリが収まるかどうかを考える。
人の足の裏の総面積は、足のサイズを25cm×10cmの長方形で近似すると、これに80憶人をかけて2.0×10^12平方センチメートル、つまり200平方キロメートルだ。実際には両脚なのでその倍、400平方キロメートルになる。
一方のアリは面積は、クロオオアリだと1cm×0.3cmはあるだろう。
アリとヒトがいるのは南極大陸をのぞいた陸地の面積だから、1億5000万平方キロメートルから1366万平方キロメートルを引いて、1億3634万平方キロメートルだ。
もちろん熱帯雨林とシベリアとでは人とアリの人口の密度が全く違うが、概算のため省く。
また、ヒトは移動している。1秒に1歩踏み出すとすれば、アリが踏まれる場所は1秒ごとに変わっていく。前提として、ヒトは1日に2時間歩いているとする。狩猟採集民族の女性が9km歩くというデータがあるし、都会の人間も通勤とランチを合わせるとそのくらいだろう。最初の1桁があっていればいい概算レベルの話だ。もともとこの計算は、ヒトとアリが地上に均等に分布していると仮定している。
https://natgeo.nikkeibp.co.jp/atcl/web/18/071000013/091800005/?P=4
そしてアリの総数は、具体的な数字が出てこないが、アリの体重の合計と人の体重の合計がほぼ等しいといわれているのでそこから算出する。老若男女の平均体重を60kgとし、これが80億人。働きアリ1匹の体重は1mgから5mg、間を取って2.5mgとすると、1.92×10^17匹。日本語にすると19.7京。英語で検索するとone quadrillion~ten quadrillion(1000兆から1京)と出てきて、桁として1つずれる。だが、以下のBBCの記事を見ても桁数に幅があるし、そもそもこの説に対する疑問が述べられている。1京どころか100兆程度だとも言われているのだ。諸説あるが、間を取って1兆としたい。
https://www.bbc.com/news/magazine-29281253
さて、実際の計算だ。
まず、1個人が1日でアリを踏む確率は、ランダムに分布するアリの面積と自分の足の裏の面積が重なる確率、これに試行回数を考える。
これはある範囲から点を選ぶのではなく、面で考える確率になる。たぶん積分を使うことになるので計算が厄介だが、ここでは概算を出せばいい。つまり、地球上をアリの面積の数だけのセルに分割し、足の面積もセルに分割、そのなかにアリがいる確率を出す。
=1-{[(南極をのぞいた陸地の総面積/アリの面積)-(足の裏の面積/アリの面積)]/[南極をのぞいた陸地の総面積]}^(アリの総数)
=1-{[(南極をのぞいた陸地の総面積)-(足の裏の面積)]/[南極をのぞいた陸地の総面積]}^(アリの総数)
=1-{[1億3634万平方キロメートル-250平方センチメートル]/[ 1億3634万平方キロメートル]}^1兆
=0.00022202。
グーグルの電卓では無理だったが、エクセルだと1兆乗も計算できるとは驚きだ。
さて、アリの面積が消えてしまっているが、これは足の裏に対してアリが十分に小さいので大丈夫だろう。これは任意の点がある面積に含まれる確率と同じになる。
これを2時間続けるとなると、2時間後(実質1日の)アリを踏む確率は、先ほどの確率をpとおき、1秒で左右の2歩とすると
1-(アリを踏まない確率)^(2×60×60×2)
=1-(1-p)^(2×60×60×2)
=0.959133405535374
有効数字はせいぜい1桁から2桁なのだが、普通に歩いていたらおおよそ96%の確率でアリを少なくとも1匹は踏んでしまうことが明らかになった。もちろん、都心のオフィスや人工的な舗装道路を歩く都会のビジネスパースンはこれよりも確率がぐっと下がることだろう。もちろん、ざっくりした推定なので1、2桁ほどぶれる可能性はあるが、全くの的外れではないはずだ。
せっかく総人口の足の裏の面積を求めたので、全人類が一歩踏み出してアリを踏まない確率を求める。
=1-(任意のアリが全人類の足の裏にいない確率)^(アリの総数)
=1-{[(南極をのぞいた陸地の総面積/アリの面積)-(全人類の足の裏の面積/アリの面積)]/[南極をのぞいた陸地の総面積]}^(アリの総数)
=1-{[(南極をのぞいた陸地の総面積)-(足の裏の面積)]/[南極をのぞいた陸地の総面積]}^(アリの総数)
=1-{[1億3634万平方キロメートル-200平方キロメートル]/[ 1億3634万平方キロメートル]}^1兆
=1
気の毒に、エクセルでは桁が切り捨てられて、全人類が一歩歩くたびにアリが ほぼ確実に踏みつぶされることがわかった。人類がアリを一切殺さない確率を出そうと思ったが、あまりにも確率が低すぎて無理らしい。合掌。
【追記】
トラバとブクマの通り、計算がおかしかった。なぜか間を取った値ではなく1000兆ではなく1兆で計算してしまった。
せっかくなのでアリの総数とpとの関係を表にするとこうなる。
なお、1日で踏む確率はp2と置いた。
アリの総数 | 1兆 | 10兆 | 100兆 | 1000兆 | 1京 | 10京 |
---|---|---|---|---|---|---|
p | 0.00022202 | 0.002217983 | 0.021959756 | 0.19912036 | 0.891439325 | 1 |
p2 | 0.959133406 | 1 | 1 | 1 | 1 | 1 |
このようにアリの総数が10兆を超えると、1日の間にほぼ確実に踏んでしまう。
ただし、確かに自然環境では土壌と素足の間にアリがいても、アリが圧死するとかは限らないという指摘も事実だろう。
コンクリートと靴のほうが例外だし、かなり意図的に踏みつけないときっとアリは死なない。
『新世紀ヱヴァンゲリヲン・序』では、旧作より遥かに強力になった使徒が登場するが、最期に彼は敵と刺し違えようとするかのように芦の湖湖畔の二子山と思われる山の半分を融解させた。今回はこの暴挙にどれだけのエネルギーを消費するかを概算する。
まずは地図を引っ張り出し、二子山の体積を計算する。今回は等高線ごとに面積を調べて積分するという方法ではなく、円錐と仮定して近似する。標高は上二子山とした場合1091m、麓はおおよそ800mである。裾野の半径は600mとして計算すると、
1/3×6002×π×(1091-800)[m3]
となる。以下これをVと置く。(有効数字については後で)
次に山の質量を求める。これは岩石の主成分である二酸化珪素で代用する。すなわち2200kg/m3である。
今度は溶かすために必要な熱をもとめる。これには1gの物体を1K(この場合摂氏でも構わない)温めるために必要な熱量である。それは二酸化珪素の場合1.0×103J/(g・K)である。また岩石の融解温度は溶岩の最も低い温度摂氏700度とする。簡便化のために気温は0度とする。
以上より、求める熱量は、
なんだペタジュールって……。
実感を得るためにあげると、現在の日本国の総発電量は一兆kWh。一秒当たり1.0×1015Jであり、ラミエルがそれだけのエネルギーを一秒で放出したとすれば八十四倍のエネルギーと勝負することになる。もし零号機が旧世紀版と同じく17秒耐えたとすれば、SSTOの底では勝負になるまい。
ここまではよくわかる。それで物理学と数学的なカオス理論を押す連中が間違っていると思うのが、
二度目の入力の際に手間を惜しみ、初期値の僅かな違いは最終的な計算結果に与える影響もまた小さいだろうと考えて、小数のある桁以降の入力を省いたところ、
ここ。ここが諸悪の根源だ。まず計算機科学の連中が大学に入って最初に引っかかるミスに大御所がひっかっている。たとえば、0.4 - 0.3 は計算機科学では 0.1 じゃない。それは十進法から二進法に変換するという計算機の特性を理解してない人がやるミスだ。嘘だと思ったら、0.4 - 0.3 == 0.1 と C なり Ruby なり Python なり Java なり Haskell なりでやってくれ。ちなみに JavaScript なら 0.4 - 0.3 === 0.1、Lisp族の Clojure は (== (- 0.4 0.3) 0.1)、PHP はちょっと自信がないので省かせてもらう...。浮動演算ユニットがついているプロセッサで IEEE 754 の類をサポートしているなら「偽」となるはずだ。ここでは「桁あふれ」「丸め誤差」なんかは説明しないが、計算機で小数を扱うのは注意が必要ってことだ。閑話休題、つまり計算機で数学や物理学が実数のように小数点を扱うなら 3.0 と 3.1と 3.14 は別物として扱う必要があって、カオス理論の創始者であるローレンツは「有史に残る」ミスを犯した。
結果が大きく異なった。
これは金融界隈のエンジニアたちにとっては、コンピュータが現れてからは悪夢のような形で襲っていて、ゴースト・イン・ザ・シェルの題材にすらなっている「既知の未知」という類のエラーだ。はっきりいうと、大御所にこんなことを言うことは憚れるが、エンジニアだと3年目以降だとしないミスを MIT のエリートがやっているという、なんというか「そりゃ、そうなるだろ」的なミスをしでかした結果なんだよ。例えば、古典物理学だと有効数字のひとつ下の数値は切り上げて四捨五入するというのは教科書的には正しい。だがね、計算機科学だと小数点の扱いは事故の元なんだよ。具体例を出すと「Ruby で円周率を100回掛け合わせる、Ππ(パイパイ、n=100)みたいなことをする。
puts [3.0, 3.1, 3.14].map{|i| 100.times.reduce(i) {|j, k| j *= k + 1}} # 2.7997864633183236e+158 # 2.893112678762268e+158 # 2.930443164939848e+158
もう一度、特に高校の物理をやった人は考えてほしい。数値を切り捨てしないだけで、これだけの差が生じるのだ。そりゃ、ローレンツ大先生も驚くわな。現実世界では起きないような気がするのはなぜか?、と思うじゃん。そこで、わたしはこう思うわけですよ、
とね。だからこそ、
というものを科学する学問があって良いのじゃないかと。つまり、
なのではないかと。
逆に聞くけど、質問を質問で返すのは詭弁のガイドラインに抵触するのは承知の上で、貴方は「計算機が実数を扱っているという前提が間違っている」のを知っているのか?
逆に何でその程度のことすら知らないと想定してんだよ。意味不明すぎるだろ。そもそも「計算機が実数を扱っているという前提」なんて存在しねーぞ。お前は実数の定義を知ってるのか?有理数を完備化したもんだぞ?有理数が稠密だということを理解してるのか?そもそも自然界に「実数」が存在してるなんて証拠は一個でもあるのか?物理学が実数体でないと致命的におかしくなるケースが一個でもあるのか?
たとえば、カオス理論が起きるのは「計算機科学で物理学と同じように小数を扱ったから」なのだけど、あれは古典物理学を学んてきた人がおかすミスなんだよ。あれはローレンツが有効数字というまやかしに引っかかって起きたのと、十進法と二進法の互換性が無いことに起因したケアレスミスなんだよ。俺はカオス理論を否定するのじゃなくて、カオス理論も偶然が生んだ産物だという上で言っているのよ、念の為。
意味不明。カオスは初期値に鋭敏だというだけだぞ(細かいことを言えば色々あるが)。計算機がどうとか関係ねーし有理数も実数も関係ねー。パイこね変換のカオスは離散系だろうが。何言ってんだ。
逆に聞くけど、質問を質問で返すのは詭弁のガイドラインに抵触するのは承知の上で、貴方は「計算機が実数を扱っているという前提が間違っている」のを知っているのか?たとえば、カオス理論が起きるのは「計算機科学で物理学と同じように小数を扱ったから」なのだけど、あれは古典物理学を学んてきた人がおかすミスなんだよ。あれはローレンツが有効数字というまやかしに引っかかって起きたのと、十進法と二進法の互換性が無いことに起因したケアレスミスなんだよ。俺はカオス理論を否定するのじゃなくて、カオス理論も偶然が生んだ産物だという上で言っているのよ、念の為。それで、主訴に戻るけど、この複雑性が計算機というレイヤーの上で物理学(放射線などのビットのエラー)や計算機科学の限界を無視して数学で演繹的に表すことが可能なのか?、という疑問に対して「無理」なんではないかと思っているわけ。
算数のテストで2.8+4.2の筆算の答として7.0を書くと不正解になることがあるらしい.7でないと×だとか.
当然「なぜ?」という疑問が生じるわけだが,SNSでついた色んなリプライを読んでいると色々な考えがあって面白かったので,まとめておく.
2.8+4.2の筆算の答として7.0と書いた場合の対応である.
この議論によれば,「2.8」は2.75以上2.85未満の数で,「4.2」は4.15以上4.25未満の数だから,「2.8」+「4.2」は6.9以上7.1未満の数を指す.
つまり有効数字を考慮した「7.0」より少しだけ広い範囲になるっぽい.たとえば「2.8」の真の値が2.84で「4.2」の真の値が4.24だとすると,その和は2.84+4.24=7.08で,「7.0」の指す範囲から外れてしまう.
「でも理科ではそうなっているから!」と言われると「これは算数(数学)だから」としか反論できない.
長岡亮介さんの『東大の入試問題を楽しむ』によれば,1958年の東大入試の一般数学でこの辺りを考慮しないと正答が出ない問題が出題されているらしい.これも面白い問題だ.
見かけの美しさを追求するとこの考えに行きつく.確かに問題に小数点があれば答に小数点をつけたくなる気持ちも分かる.プログラミングで,変数の型を変更しているように見えるのかもしれない.
4.2+3は4.2+3.0であるべきであり,問題が美しくないから答えないという選択もできるわけだ.これはとても面白い考え方だけど,間違いなく×にされると思う.
ある人が作った数学のルールに発展性があれば万人がそれを認める.例えば,交換法則ab=baや結合法則a(b+c)=ab+acをルールとするのは納得できる.
1+1=2はよくあるルール(本当は定理らしい)だが,1+1=0をルールの一つとしてもそれはそれで面白い世界が広がる.
しかし「小数点以下の末尾の0を消す」というのは発展性のなさそうなルールだから,数学が好きな人は嫌いそうだ.
全く同じものだから○という議論は単純だが面白い.たとえば2.8+4.2の答を2.8+4.2と書いたら,全く同じものだからと言って○にしてくれるだろうか?
6.999…も7と同じだが,○になるだろうか?
答はできるだけ簡単にするものだというなら,7.0も簡単にして7にすべきのような気もする.その境界はどこに設定するのがよいだろうか.
1/10の位までの小数の計算は小学3年生で,それより下の位までの計算は4年生で学ぶ.
文部科学省の指導要領に0を消すことについての文言は見当たらなかった(探し方が悪いだけか?)が,教科書会社の学習指導案には「0を消す」と書いてあった.「0.1が10個で1.0とは言わないから」らしい.
そうかもしれないけど,積は他にも意味づけることができるので,それだけを根拠にするのは弱い気がする.あと,「俺は1.0って言う」って人がいたらどうなんだろう.
それよりも問題なのは,これが罷り通ると生徒が先生と議論する機会が失われてしまうことだ.言われたことに粛々と従うだけの人格が形成されるのは,良くないことだと思う.
これは○にせざるを得ない!俺は権威に媚び諂う卑しい人間なんだ.定額給付金くれよ.げへへ.
…というのは冗談で,これも議論の機会が失われるので良くないことだと思う.
その世界的数学者が間違っていると主張しているわけではないのでお間違えなきよう.
受験は良くも悪くも世間に大きな影響を与えているのだと分かる.小学生みなが受験をするわけではないと思うので,小学校の先生がこのように考えることはないと思うが.
しかしこれも権威に諂う考え方だなあと思う.疑問から逃げているようにも思える.
なるほどこの考えは盲点だった.計算技術の話をしているので,言われた通りにしないと×にする.同じかどうかとは無関係だ.
微積分の計算や開平計算など,技術の習得が理解に先立つこともある.まずは計算に習熟してからあとでその計算の意味を理解するという考えがあってもおかしくない.
末尾の0を消すのは意味を考えているということだろうから,技術の習得が優先とする考え方だと消さない方が良いような気がしてくる.
他にもあるかもしれないけど,こんなところだろうか.
私は,ちゃんと計算の仕方が分かっていることが読み取れれば○にすべきだと思っていた.だから7.0でも7でも6.999…でも○にすべきだし,2.8+4.2は×にすべきだと思う.3+4とだけ書いてあったら,迷った末に,揶揄っているだけで計算の仕方は分かっていると思って,○にするだろうな.筆算の技術の習得の観点から見たら×になるのかな.小学校の先生は大変だ.
「スーパーの入店がイニシャルごとになったら」を計算するというその着眼点は非常に興味深いものだと思うが、
やはり日本人には、アルファベット分けより、平仮名分けの方がわかりやすいだろ。
やや古いが、ア行は本当に多いのか?というブログ記事にある2011年時点のデータを使うと、
イニシャル | 世帯数 |
---|---|
ア行 | 18.1% |
カ行 | 15.7% |
サ行 | 13.7% |
タ行 | 10.6% |
ナ行 | 8.7% |
ハ行 | 10.3% |
マ行 | 10.9% |
ヤ行 | 9.3% |
ラ行 | 0.7% |
ワ行 | 2.0% |
らしいぞ。(ただし、元データは有効数字が揃っていなかったので、小数第1位で四捨五入した。)
入店を2分割にしたいのなら、タ~ヤ行(合計:49.8%)と、それ以外(合計:50.2%)で分割すると、ほぼ半々になるぞ。
3分割にしたいのなら、ア・カ行(合計:33.8%)、サ・タ・ナ行(合計:33.0%)と、それ以外(合計:33.2%)で分割すると、いい感じだぞ。