CGER-I163-2023_計算で挑む環境研究
123/140

 桁数が少ないと何が難しいかというと、大きい数字と小さい数字を足すときに、小さい数字がなくなってしまうということです。両方8桁だとしても、101と10-10というのをただ足してしまうと、10-10の数字は全部消えてしまいます。引き算のときはもっとひどくて、16桁と16桁の数値があって、15桁目だけ違う数値の場合は、引き算しても、有効数字が2桁しか残らない。倍精度であっても桁落ちが発生して、精度がどんどん落ちていく。(有効数字の話は、たしかに高校の数学や物理で習った記憶があります。) 大きい数字と大きい数字の引き算は、如実に精度が落ちます。プログラミングするときは、いかにそういうことを回避して書くかということが結構重要なのです。今回は、単精度にしてシミュレーションしたとき、結果が倍精度のときとまったく変わってしまった式を順番に探していって、単精度でもほぼ見合った精度が担保されるように書き直していきました。ミュレーションの式を書き直しているということですか。ですけれどね。編集局:単精度と倍精度で結果を比較して、違いが大きくなるところは、シ八代:そうです。結果として倍精度に戻して計算しても精度がよくなったの編集局:では、単精度でやったあと、倍精度でも計算したのですか。八代:はい。どっちでも使えるように、切り替えられるようにしてあります。 単精度で計算すると、基本的に8桁しかないから、どんどん計算していくと、その桁のないところで、今までの倍精度の計算からずれていく部分があります。それが、どのくらいシミュレーションの結果に影響するかということについて、いろいろ調べた結果、割と大丈夫だと。編集局:「割と」というのはどのような基準で「割と」なのですか。

元のページ  ../index.html#123

このブックを見る