「これはヤバかったな」という遅刻エピソード

掛け算、割り算の混在する計算における最終的な答えの有効数字は、「最も小さい有効桁数にまとめる」ことがJISで定められています。
 例 5桁x3桁÷2桁x4桁→2桁にまとめる

しかし、この考え方は本当に正しいでしょうか?

例えば、有効数字0.90に対する0.01の影響は約1%です。
これに対して、有効数字0.20に対する0.01の影響は5%で、上記よりもはるかに影響が大です。

単に「”桁数”で見切って処理する」というやり方は、理論的に間違っているのではないでしょうか?

統計理論上の質問です。

A 回答 (13件中1~10件)

2桁×2桁の結果を2桁取るということは3桁取っても無意味であるという意味です。

1桁目は確かです。結果の2桁目の数字は誤差を含んでいます。その数字の両側に±αと幅を持っています。α が4とか5になれば2桁目の数字はほとんど意味のないものになってしまいます。α が1とか2程度であれば2桁目の数字は曖昧さはあるが無意味ではないということになります。誤差の大きさ α は元の2桁の数字の組み合わせによって変化します。
これは難しい理屈を使ったものではありません。はじめ四捨五入で考えた曖昧さが結果にどう響いていくかを計算で示しただけのものです。

>(例えば)乗除算のルールで「2桁x2桁の乗除算では2桁をとる」という手法は、数値信頼性の観点からは一歩引いている(採用された数値の精度が2桁あることを保証するものではない)と考えてよろしいでしょうか?

上に書いたような意味ですのでいいと思います。ただこれしか選択の余地がないのです。2桁目が誤差を含んでいるからと言って1桁目だけにするのであれば荒っぽすぎます。
    • good
    • 0
この回答へのお礼

度々のご回答有難うございました。

この場を借りてお二方にお礼を申し上げます。

お礼日時:2007/01/07 18:45

#8で値0.110は0.097~0.123であり有効数字2桁とあります。

従って値は0.11です。でもこの2桁目の1は曖昧さを持っています。
前に引用した文章をもう一度引用します。
>信頼性について言っているのなら「ここまでは信用できます」という数字ではなく「これ以上は信頼できません」という数字だと理解する必要があると思います。

この文章を有効数字2桁に当てはめてみます。
3桁目は全く信用できません。3桁目は0です。この0は全く意味を持ちません。
1桁目の1はどうでしょう。これは確かと言っていいでしょう。
問題は2桁目です。2桁目の1はちょっと曖昧なんです。全く意味がないわけではありません。でも必ず1であるとも言えません。2であるか0であるか分かりません。でも3とか4であるということはないでしょう。だから誤差を含んでいますが無意味ではない数字なんです。
有効数字の最後の桁は曖昧さのある数字の中央値を表しています。
でもいつも意味があるとはかぎりません。12%の誤差があっても意味を持ったのは0.110にたいしての12%だったからです。0.50に対しての12%だったら0.44~0.56になりますので2桁目はどんな値でも構わないということになり、無意味になります。この場合だと0.5と有効数字を1桁にするしかないことになります。
前に書いたように同じ2桁でも1.0と9.9では精度という意味では大きな差があります。
0.11の有効数字2桁というのは数字は2つという意味であって実質的な精度でいうと1桁でしょう。0.09と精度的な内容はあまり変わらないということです。これは#7で1.0×9.0の例で考えたのと同じ内容になります。

この回答への補足

度々のご回答有難うございました。

ご意見の繰り返しになるかもしれませんが、分かりやすい言葉でまとめたいと思います。

(例えば)乗除算のルールで「2桁x2桁の乗除算では2桁をとる」という手法は、数値信頼性の観点からは一歩引いている(採用された数値の精度が2桁あることを保証するものではない)と考えてよろしいでしょうか?

補足日時:2007/01/07 14:45
    • good
    • 0

> であれば、21回の演算で(上から)2桁目に誤差を持つようになった数値を


> 有効数字2桁で採用するということは、科学的ではない、ことになりませんか?
> (信頼性があるのは一桁だけ)

私は実験家ではないので,誤差を含む桁 (有効数字の最下位の桁) が
実際どう扱われているのか,またどう扱うべきなのか知りませんが,
数学的には次のように考えられるのではないでしょうか?

真値の範囲から,その桁の数字が取りうる範囲を考えたとき,
10通りのうちのN通りの値を取り得るとすると,
その桁の「有効桁数」は log10(10/N) である.

例えば,その桁の誤差が±0であればN=1なので「有効桁数」は1.
誤差が±5ならばすべての数字を取りうる (N=10) なので「有効桁数」は0.
#8 の例のYの3桁目は-1~+2のN=4通りの値を取りうるので「有効桁数」は 0.4.

現実的には,この「有効桁数」に適当なしきい値を設定して,
それ以上かどうかで有効桁として扱うか否かを決めることに
なるのではないかと思いますが,どうでしょうか?
    • good
    • 0

#7です。



>「桁数(処理)の規則は、科学的とは言えない」と認識してよろしいでしょうか?

「科学的とはどういう事でしょうか。」
私は#7で
>信頼性について言っているのなら「ここまでは信用できます」という数字ではなく「これ以上は信頼できません」という数字だと理解する必要があると思います。これは混同されているのではないでしょうか。

と書きました。「これ以上書いても無意味ですよ」というのは十分に科学的な判断ではないでしょうか。得られた数値は使わなければ意味がないです。当たらずとも遠からずで何らかの判断を下したいわけです。有効数字1桁でもオーダーが分かれば一つの結果です。原子の大きさが1/10^8程度というのが分かるだけでも凄いことなんです。
信頼できない数字を書くと言うことは科学的ではありません。曖昧さがあればその曖昧さを明らかにした上で数字を示すというのが科学的なんです。
#6の補足に書かれている信頼性の部分の推論はおかしいと思います。
#8で書かれているように誤差は演算を繰り返す毎に増幅されていきます。0.6%だった曖昧さが12%に大きくなっています。
あまりたくさんの数値を組み合わせる計算をやる必要がないように数式の変形等で工夫をしておかなければいけないだろうというのが結論になるでしょう。

この回答への補足

そうですね。
「演算を繰り返すことで誤差は大きくなって行く」、のでしたね。

ところで、お二方の理論を結合させて申し訳ないですが・・・

>ANo.8 有効数字2桁目に誤差を含むので,3桁目以下を書いても意味がありません.
>ANo.10 信頼できない数字を書くと言うことは科学的ではありません。

であれば、21回の演算で(上から)2桁目に誤差を持つようになった数値を有効数字2桁で採用するということは、科学的ではない、ことになりませんか?
(信頼性があるのは一桁だけ)

補足日時:2007/01/06 20:25
    • good
    • 0

#8 の訂正です.m(_ _)m



誤:したがって,Xの有効数字「0.09」の21乗である
正:したがって,Xの有効数字「0.90」の21乗である
    • good
    • 0
この回答へのお礼

訂正、訂正と何度も繰り返すのは見苦しいです。
読むほうも考えを混乱させられます。
今後は、もっと文章を推敲してから書き込むようにしましょう。

度々のご回答、有難うございました。

お礼日時:2007/01/07 17:40

> 「0.6%の精度を持つ数値を使って演算した結果が4.5%の精度になる」


> というのは、おかしいとは思われませんか!

これは,「0.6%の精度の数値を使って演算した結果は0.6%」
だとおっしゃりたいのでしょうか?

だとしたら違います.なぜなら,一般には演算によって相対誤差が増幅されるからです.

観測値Xの真値の範囲が 0.895~0.905 の場合,
Y=X^21 の真値の範囲がどうなるか考えてみてください.

0.895^21 ~ 0.905^21,つまり 0.097338… ~ 0.122919… となります.
この範囲は 0.110128… ± 0.012790… とも書けます.
つまりYの精度は4.5%どころか,約 ±12% しかありません.

したがって,Xの有効数字「0.09」の21乗である 0.1094189… は
有効数字2桁目に誤差を含むので,3桁目以下を書いても意味がありません.
だからYの有効数字は2桁です.

そういうわけで,

> ちなみに、上記の数字の丸めで「3桁」をとり、0.109を採用していれば、
> 精度は約0.5%が確保できます。

元のYの精度が約±12% (有効数字2桁) しかない以上,
3桁目以降を書いたとしても,それは何の意味もありません.
「書いた有効桁数に応じて精度が決まる」のではなく,
「元の数値の精度が○○%だから,有効数字は(高々)○桁と決める」のです.
    • good
    • 0

有効数字というのが単に計算上の数値打ち切りの規則を言っているのか信頼性を言っているのかです。



信頼性について言っているのなら「ここまでは信用できます」という数字ではなく「これ以上は信頼できません」という数字だと理解する必要があると思います。これは混同されているのではないでしょうか。

「2桁×2桁の場合は結果を2桁で示す」というのは「3桁は無意味ですよ」ということであり、2桁で表した数字が充分信頼性があるという意味ではありません。質問に書かれている
>例 5桁x3桁÷2桁x4桁→2桁にまとめる
では「3桁以上出しても意味がありません」という意味になります。

数値の組み合わせによっては2桁目もかなりあやしいということが起こります。2桁×2桁×2桁だと2桁で表した結果はもっと曖昧になるでしょう。数値の組合わせによっては1桁しか信頼性がないという場合も起こるかもしれません。
2桁×3桁を2桁で表した場合は2桁×2桁を2桁で表した場合よりも信頼性は高いです。
加減の場合は絶対誤差が足し合わさってきますが乗除の場合は相対誤差が足し合わさってきます。
同じ2桁の数字でも1.0と9.9では相対誤差にほとんど10倍の差があります。この意味では機械的に桁数だけで信頼性を考えるのは無理があるというになります。

やはり例を出した方がいいでしょう。
1.0×9.0=9.0はどれくらいの信頼性でしょう。
#1の方がやっておられるのと同じやり方で計算します。
1.0 は 0.95~1.04  です。
9.0 は 8.95~9.04  です。
1.0×9.0 は 8.5025~9.4025 です。
8.5~9.4まで幅があれば9.0ではなくて9としなければいけないでしょう。形式上は有効数字が1桁少なくなっています。でもこれは桁落ちしたのではありません。1.0という数字の有効桁数が実質1桁しかないからです。
1.00×9.0だと
8.905~9.076 ですから9.0±0.1ぐらいになります。

いくつかの数字を掛けたり割ったりして結果を求める場合を考えます。
○測定の桁数は一番測定の難しい量の桁数よりも1桁余分であるようにする。(1桁余分に取ることで充分です。2桁と3桁も余分に取る必要はありません。)
○頭の数字が1になる場合は1桁余分に測定しておく。

質問文では桁数の規則と信頼性がごっちゃになっているところがあるように思います。でも「信頼性は相対誤差で考えなくてはいけないのではないか」という点は正しいと思います。

この回答への補足

「桁数(処理)の規則は、科学的とは言えない」と認識してよろしいでしょうか?

補足日時:2007/01/06 15:26
    • good
    • 0

○加減法における有効数字は計算する数値のうち、有効数字の桁数が一番大きなものに合わせます。


Ex. 13.5+3.21=16.71
  有効数字は小数点以下第一位までしかない13.5に合わせて16.7

○乗除では質問者様の指摘どおり最も小さい有効数字の桁数に合わせます。
Ex. 2.45*1.8=4.41
  有効数字は2桁の1.8に合わせて4.4

加減乗除が混在する場合はこのルールに則り、適宜有効数字を決めます。

>しかし、この考え方は本当に正しいでしょうか?
これは正しいと言えると思います。
というより自然なことです。
確かに与えられた数字を機械的に計算していけば、今回の質問のように誤差に疑問を抱くでしょう。
しかし、もしそれほど誤差が大きくなることが予想されるのなら、あらかじめ有効数字をもう一桁取れるようにすればいいのです。
統計ならサンプル数を大きくするなどして、より大きな有効数字を使えるようにするなど…
200mlの液体を量る場合、1Lメスシリンダーでなく、500mlメスシリンダーでもなく、300mlメスシリンダーを使ったほうが、より正確な値が取れるのと同じです。

この回答への補足

ここに「0.90」という有効数字2桁の観測値があると仮定します。

この観測値の持つ意味は、「真値は0.895000・・・から0.90499・・・の間にある」ということのはずです。
つまり、±約0.6%の精度があります。
(細かいところは省きます)

ここで、何かの演算の必要があって、この数値を21乗したとします。
そうすると、0.10942・・・という計算値が得られるので、前記のルールに則ってこの数値を0.11と2桁に丸めます。
この数値の持つ意味は、、「真値は0.105・・・から0.114999・・・の間にある」ということのはずです。
つまり±4.5%の精度です。

「0.6%の精度を持つ数値を使って演算した結果が4.5%の精度になる」というのは、おかしいとは思われませんか!

ちなみに、上記の数字の丸めで「3桁」をとり、0.109を採用していれば、精度は約0.5%が確保できます。

>あらかじめ有効数字をもう一桁取れるようにすればいいのです。

これはおかしいです。
測定では常に上位の測定法があるとは限りません。
「与えられた条件下で得られた観測値をどう処理するか」を詰めておく必要があるから質問しているものです。

補足日時:2007/01/06 15:07
    • good
    • 0

さらに #2 を訂正します.m(_ _)m



X' * Y' の最初の有効桁の数字をaとします.


> この最大値は,m≠nならば約 ±5 * 10^(-min(m, n)),m=nならば約 ±10^(1-m).
> 後者の場合は,有効数字m桁目に±1の誤差を含むことになり,
> それ以下の桁は全く信用できません.したがって有効桁数はmです.

誤:±1
正:最大±a程度

したがって,aが小さければ有効桁数はm,大きければm-1.
ただし上記の「最大±a程度」は相対誤差の絶対値が最大と仮定した場合で,
実際にはaが大きくなると相対誤差が小さくなるため,
絶対誤差も小さくなります.


> 前者の場合は,有効数字 min(m,n)+1 桁目に±5の誤差を含むことになり,
> この桁以下は全く信用できません.したがって有効桁数は min(m, n) です.

誤:±5
正:最大±5a程度

したがって,有効数字 min(m,n) 桁目に最大±a/2程度の誤差を含むことになり,
aが小さければ有効桁数は min(m,n),大きければ min(m,n)-1.
この場合も上記の「最大±5a程度」は相対誤差の絶対値が最大と仮定した場合で,
実際にはaが大きくなると相対誤差が小さくなる点は同じです.


●例

(1) m=n=3の場合
 ・aが最小の1となる例として,X'=1.00,Y'=1.00 とすると,
  X = 0.995 ~ 1.005
  Y = 0.995 ~ 1.005
  ∴ X * Y = 0.990025 ~ 1.010025
  したがって (X * Y)'=1.00 の3桁目に±1程度の誤差を含む.

 ・aが最大の9となる例として,X'=3.00,Y'=3.33 とすると,
  X = 2.995 ~ 3.005
  Y = 3.325 ~ 3.335
  ∴ X * Y = 9.958375 ~ 10.021675
  したがって (X * Y)'=9.99 の3桁目に±3程度の誤差を含む.

(2) m=3,n=4の場合
 ・aが最小の1となる例として,X'=1.00,Y'=1.000 とすると,
  X = 0.995 ~ 1.005
  Y = 0.9995 ~ 1.0005
  ∴ X * Y = 0.9945025 ~ 1.0055025
  したがって (X * Y)'=1.00 の4桁目に±5程度の誤差を含む.

 ・aが最大の9となる例として,X'=3.00,Y'=3.330 とすると,
  X = 2.995 ~ 3.005
  Y = 3.3295 ~ 3.3305
  ∴ X * Y = 9.9718525 ~ 10.0081525
  したがって (X * Y)'=9.99 の3桁目に±2程度の誤差を含む.
    • good
    • 0

誤解してたかもしれないので,ちょっと考え直しました.



> 例えば、有効数字0.90に対する0.01の影響は約1%です。
> これに対して、有効数字0.20に対する0.01の影響は5%で、
> 上記よりもはるかに影響が大です。

これは,有効数字と 0.01 を加減算するという意味ではなくて,
有効数字に含まれる相対誤差のことをおっしゃっているんでしょうか?
それならば #1 は取り消します.
ただ,それが有効桁数に与える影響は #2 に書いたとおりです.
    • good
    • 0

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