2021-07-18

anond:20210718161714

https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%89%E3%83%AF%E3%83%BC%E3%83%89%E3%83%BB%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84

Wikipedia引用すると、

計算結果の検証のため同一のデータを初期値として複数回シミュレーションを行うべきを、

ここまではよくわかる。それで物理学数学的なカオス理論を押す連中が間違っていると思うのが、

二度目の入力の際に手間を惜しみ、初期値の僅かな違いは最終的な計算結果に与える影響もまた小さいだろうと考えて、小数のある桁以降の入力を省いたところ、

ここ。ここが諸悪の根源だ。まず計算科学の連中が大学に入って最初に引っかかるミス大御所がひっかっている。たとえば、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

もう一度、特に高校物理をやった人は考えてほしい。数値を切り捨てしないだけで、これだけの差が生じるのだ。そりゃ、ローレンツ大先生も驚くわな。現実世界では起きないような気がするのはなぜか?、と思うじゃん。そこで、わたしはこう思うわけですよ、

計算機は実数を正しく扱えない」

とね。だからこそ、

計算機を正しく扱わないことで生じる偏見差別

というもの科学する学問があって良いのじゃないかと。つまり

それこそが【計算科学】というもの

なのではないかと。


異論は認める

  • なんで?

    • なんというか、これって人工知能っぽいみたいな雰囲気を受けそうな AI を信頼できる?

      • お前はその辺の人間の頭の中が本当に「知能」なのか自信を持って判定できるのか?

        • 逆に聞くけど、質問を質問で返すのは詭弁のガイドラインに抵触するのは承知の上で、貴方は「計算機が実数を扱っているという前提が間違っている」のを知っているのか?たとえば、...

          • 浮動小数点演算の誤差がカオス理論を生んだということ? 知らんけど

            • https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%89%E3%83%AF%E3%83%BC%E3%83%89%E3%83%BB%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84 Wikipedia で引用すると、 計算結果の検証のため同一のデータを初期値として複数回のシ...

              • 求める精度がすべてでは デカイ値が必要なときに下の桁の正確な値なんかどうでもいいことのほうが多いし

                • デカイ値が必要なときに下の桁の正確な値なんかどうでもいいことのほうが多いし そこだ。その下の数値が、十進数から二進数に切り替わるときにゴーストが生まれる。二進法になっ...

          • 逆に聞くけど、質問を質問で返すのは詭弁のガイドラインに抵触するのは承知の上で、貴方は「計算機が実数を扱っているという前提が間違っている」のを知っているのか? 逆に何で...

            • 数学における定義なんか知らねーよ。オレは計算機で扱う数値と数学の数値には齟齬があって、その差は埋められないと思っているだけだ。数学者が間違って計算機を使って、現実と一...

            • 数学という学問は「反例があったら、仮説を否定できる」という学問なんだよな?だったら、数学的な問題を計算機で処理できなければ「計算機科学=数学」を否定できるのだろ?なら、...

              • WolframAlphaで④の式を計算させたら0が出力されたぞ。 https://ja.wolframalpha.com/input/?i=x%E3%81%8C%E7%84%A1%E9%99%90%E5%A4%A7%E3%81%AB%E8%BF%91%E4%BB%98%E3%81%8F%E3%81%A8%E3%81%8D%E3%81%AE+%28x%5E2%29%2F2%5Ex%E3%81%AE%E6%A5%B5%E9%...

                • えっ、たしかに不定形になるけど、俺が間違ってるの? lim(n→∞)n^2 / 2 ^ n は 0 に収束するのじゃないの?

                  • ④の式を計算機で処理することはできないというあなたの説に反論する為に、WolframAlphaに④の式を計算させるリンクを張ったのだけれども、意図を全く理解してないようだな。 ∞の理解...

                    • ∞と∞を不等号で比較することはできないんだ。 それは事実。∞/∞ は定義されてないよ。知ってるよ。でもさ、数式的にわかっているときに発散具合で、関数自体は比較できるのじ...

                      • あんた高校レベルの数学が理解できていないんだから無理するな。関数自体の比較って、何の比較なのか意味不明だぞ。 それより発散速度の比較なら、具体的な数値を代入したりグラフ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん