プロが教えるわが家の防犯対策術!

有効数字について
以前質問をした時、有効数字は計算途中では考えないから、途中で計算結果を丸めてはいけないと言われたのですが、下のサイトでは途中式の計算結果を丸めているのですがこれは間違いですか?

http://www.nagaoka-ct.ac.jp/~araki/s/sisoku.html

A 回答 (9件)

#7です。



有効数字ルールを使うことが間違いだとする#8さんの意見に1票!

ところで、#7の「ある数値の区間を100分割すると、小数点以下のすごく下の桁での精度が悪化する」の件、

100だったら割り切れるじゃないの?と思われるかもしれませんが、PC演算では、100分割は割り切れません。128分割とか256分割であれば割り切れます。

ご質問とは直接関係ない話ですが、コイツ何言っているんだ。と思われたくなかったので補足しました。

最近は、こういう刻みのテクニックとかが本に書いてないなあ、と思います。昔の陳腐な計算機じゃないせいですかねぇ。
    • good
    • 0

これは、有効数字の運用としては何が正しいかを聞いているんでしょうか?


それとも、誤差少なく計算するためには有効数字の運用をどう改変すれば
よいかを聞いているんでしょうか? 大前提として、有効数字ルールは
誤差評価の方法として間違っており、時として大きな誤差を生むということを
理解していなければなりません。計算法として簡単ではあるけれど、
簡単なこと以外に特に長所は無いのが有効数字です。

有効数字ルールとしては、演算の度に毎回有効数字がどこまでか
を確認するのが正しい。そうでないと、乗除算と加減算が混在した時に
最後にまとめて有効数字を決めようとしても、どこが有効桁か知る方法が
無いからです。しかし、ルールにのっとってそうやってしまうと、
他の回答者が書いているように誤差が大きくなってしまう場合があります。
そこで「途中で計算結果を丸めてはいけない」となるのですが、
この「いけない」が曲者です。これを言っている人は、何が有効数字として
正しいかを言っているのではなく、正しく計算するには有効数字ルールを
どう変更すればよいかを言っているのです。

何が間違いか?といえば、そもそも有効数字ルールを使うことが間違いです。
それ以上の話でも、それ以下の話でもありません。
    • good
    • 0

計算途中で丸めるのが危険な事例の追加です。



他の同様な質問にも投稿した話で恐縮ですが・・・、

計算精度の問題は、上の桁(普通の人が有効数字と考えているような桁)が重要ではなく、下の桁が重要というケースが一杯あります。

一例として数値微分が挙げられます。

微分の精度を上げようとして刻み幅hをどんどん小さくしていくと、途中から逆に精度が悪くなるのです。

これは丸め誤差が原因なのです。それも、すごく下の桁での誤差です。簡単に言えば刻みの増分が不揃いになるからです。

ある数値の区間を100分割するときに、有効数字が上三桁と考えるのは全くの間違いで、小数点以下のすごく下の桁での精度が重要です。

そして、いよいよ解を示す段階になって有効数字を考慮する、というのが良いと思います。

ご参照されているサイトでは、そういうことが全く考慮されていません。
一言、言及すべきです。
    • good
    • 0

計算途中で丸めると危険な例を示します。



ある加減算で有効桁が小数点以下第2位として、第3位まで0だったら結果を0にします。
それが、後に割り算の分母に代入されるとしたら、どうするのでしょう!
ご参照されているサイトでは、そういうことが全く考慮されていません。
一言述べるべきです。

複雑な数値計算を、かのサイトの桁揃えに沿って計算していたら、とんでもないことになります。

ご参照されているサイトでは、そもそも割り算を避けているのが姑息というか何というか。1箇所だけですよね。

過去の質問で、「途中式の計算結果を丸めてはならない」と意見された方は、計算過程でどのような数値の使われ方をされるか分からない(割り算もある)ので、できる限り可能な精度(コンピュータで言う倍精度など)で数値を持っておくべきだ、という意味で述べられたと思います。

数値計算というのは、そのような代入計算もあれば、カッコ、累乗、平方根、対数などが含まれるので、途中の計算はしっかりやるべきです。

そいて、いよいよ解を示す段階になって有効数字を考慮する、というのが良いと思います。
    • good
    • 0

No.3 です。

ちょっと補足。

例に示されたサイトの「もともとの数値がどういったものか分かりませんが」と書いたのは、例えばそこで使われている「50」という数値が「個数」を表わしているものだとすれば、その「50」はピッタリ50で誤差はありません。
そして、計算結果が
 50[個] × 0.650 = 32.5[個]
だとしたら、個数に「0.5」はあり得ないので、この結果は
 32個 or 33個
ということになります。

「四捨五入」だと常に「0.5 は切上げ」になって均等の扱いではなくなる可能性があるため、「五捨五入」という考え方は、端数がちょうど「真ん中」のときには
 31.5 なら 32 (小数第1位で切上げ)
 32.5 なら 32 (小数第1位で切捨て)
 33.5 なら 34 (小数第1位で切上げ)
 34.5 なら 34 (小数第1位で切捨て)
と「一の位」が偶数か奇数かで「切上げ」「切捨て」を分ける方法です。

なお、「個数」のような「整数でないとおかしい」数値であれば、計算途中であっても「整数に丸める」という処理をすることはあり得ます。
処理のしかたは「その数値の性質によってその都度適切に判断する」というのが正しい考え方だと思います。
「有効数字」というのは、そういった処理を「機械的にやればよい」という簡便さが最大のメリットなので、「途中経過は機械的に処理して、最終結果だけに適用する」という運用方法でよいと思います。
    • good
    • 0

#2です。



3)で32へ丸めているのは、この先、加減算しかしないからだと思います。

有効数字は最後に調整すれば良いです。

それに対して計算途中で丸めるのは筆算で楽をしたいからであり、最終結果の上位桁に影響を及ぼさない範囲で楽をしましょうってことです。影響が無ければ丸めても構わないだけであり、間違いではありません。

計算機で計算を行うときは、計算途中で丸めることは絶対にしません。むしろ桁落ちを避けるため、さらなる配慮が必要です。
    • good
    • 0

はい。

間違いだと思います。

そもそもの元の数値がどういったものか分かりませんが
 12.3 ± 0.05
 50 ± 0.5
 0.650 ± 0.0005
という誤差で
 12.3 + 50 × 0.650
という演算をしたとするならば、その結果は
 44.8 ± 0.33
ぐらいです。
これは、与えられた数値が上のような標準偏差を持つ正規分布だとみなしたときの、最終演算結果が
 平均値:44.8、標準偏差 0.33
ぐらいに分布しそうということです。

これを「2桁」にするときに「45」とするか「44」とするかの話ですが、「45」とした方が誤差が少なそうな気がします。

お示しのサイトでは、これを「44」にしているわけですが、演算結果の取り扱いとしてはちょっと疑問です。
そもそも、まっとうに誤差を評価せずに、「有効数字」というという判断で誤差を丸めてあたかも正しそうな「決定数値」で表わすこと自体が「乱暴」なやり方なので、何が「正しいやり方か」を議論しても無駄な気がします。

お示しのサイトでは「小数1位以下は1位のちょうど半分(0.50)なので、小数1位を五捨五入する。1位は偶数(2)なので切り捨てる。」ということをしています。
これは下記の JIS (Z8401)で取り入れている考え方です。
「四捨五入」だと「切上げ」の確率が高くなるので(1/2 処理をしたら必ず「切上げ」になってしまう)、「切上げ」と「切捨て」の確率を均等にするやり方です。ただし、この JIS は「有効数字の処理方法」を規定しているわけではありませんので念のため。
リンク先の「前のページ」でそれを紹介しているので、このページの事例でそれを実践しているのだと思います。

http://www.nagaoka-ct.ac.jp/~araki/s/yukousuji.h …

↓ JIS Z8401「数値の丸め方」
http://kikakurui.com/z8/Z8401-2019-01.html

お示しのサイトの最終ページ「誤差伝播」のところまで読んで、ご自分で判断してください。
    • good
    • 1

途中で丸めているといっても、加減算だけですよね。

    • good
    • 0
この回答へのお礼

すみません、示し方が悪かったです。
3)の計算において、50×0.650=32.5を32に丸めています。

お礼日時:2021/10/08 10:04

おはようございます。



詳しくはありませんが、最終的にどれ位の正確な数字の結果が必要かに
よるかと思います。
例えば、有効数字3桁とかの計算でしたら、余り桁数が多すぎても計算が
大変ですし、有効数字3桁に影響がない範囲での丸め込みは、実質的には
 問題ないと思います。
有効数字3桁なら、有効数字5桁で計算していれば、充分かと思います。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています