• 追加された行はこの色です。
  • 削除された行はこの色です。
* 【作成中】 [#b6c0f42e]

* 概要 [#f3b1b5eb]
;,世の中には実数を全て厳密に表すことができず、実験や工学では近似値として扱う必要がある。
;,そこで、有効数字という概念が登場し、近似値が表すことになる値の区間を考える必要がある。
;,有効数字を正しく扱えないと、正しい結果が保障されなくなる。

;,しかし、世の中には便利な区間表記が無いせいか、
;,高校や大学の授業で有効数字の扱い方を教しえるものの、
;,有効数字の誤差を区間として厳密に扱う例はあまり見かけない。

;,そこで、最近見かけた誤差の問題を区間として扱ってみる。

* 問題 [#ge721ab8]
;,https://twitter.com/y_bonten/status/649834242617118720 より
;,大きい整数の桁数を予測する問題において、誤答に至る例が紹介された。
;,ご丁寧に、正解とされた方も、有効数字に対する配慮が足りないがために、
;,当たりが悪ければ誤解と成りうることまで言及されている。

;,例題に丁度良いので、以下引用:
#ceq(e)
>〔教師による不正解〕
>   $$ \log_{10} 36^{2001} $ = $ \log_{10} $ 6^{4002} $ = $ 4002 $ \log_{10} $ 6 $$
>   $$ \phantom{\log_{10} 36^{2001}} $ = $ 4002 $ ( $ \log_{10} $ 2 $ + $ \log_{10} $ 3 $ ) $$
>   $$ \phantom{\log_{10} 36^{2001}} $ = $ 4002 $ \times $ ( $ 0.3010 $ + $ 0.4771 $ ) $$
>   $$ \phantom{\log_{10} 36^{2001}} $ = $ 4002 $ \times $ 0.7781 $ = $ 3113.9562 $$
> よって,
>   $$ 311\iro[ak]3 $$≦$$ \log_{10} 36^{2001} $$ < $$ 311\iro[ak]4 $$
> したがって,
>   $$ 36^{2001} $$は$$ 311\iro[ak]4 $$桁の整数である。

#ceq(c)
> 〔生徒による正解〕
>   $$ \log_{10} 36^{2001} $ = $ \log_{10} $ 6^{4002} $ = $ 4002 $ \log_{10} $ 6 $$
>   
>   $$ \phantom{\log_{10} 36^{2001}} $ = $ 4002 $ \times $ 0.7782 $$
>   $$ \phantom{\log_{10} 36^{2001}} $ = $ 3114.3564 $$
> よって,
>   $$ 311\iro[ak]4 $$≦$$ \log_{10} 36^{2001} $$ < $$ 311\iro[ak]5 $$
> したがって,
>   $$ 36^{2001} $$は$$ 311\iro[ak]5 $$桁の整数である。

#ceq(d)

;,結論から言うと、有効数字の観点から、どちらも「よって」が言えない。
;,両方とも対数を有効数字4桁の近似値に直しているため、
;,結果が有効なのは4桁までしかなく、一の位が変わり得る。

* 区間演算で見る有効数字 [#h58cd9f3]
** 区間演算による解答例 [#q99ce680]
;,以下では、同じ問題を区間演算で考え得るずれを可視化してみる。
;,なお、式の可読性を良くするため、一般的でない凌宮数学の区間表記を用いる。
;,四捨五入が使われるため、誤差を半開区間として扱う:
#ceq
  $$ a{:}.b $ = $ \{ $ x $ \pipe $ a $$ ≦ $$ x $$ < $$ b $ \} $$
#ceq(end)
;,なお、ここでは以下の誤差表記を用いる。
    |*凌宮表記|$$ a{:}.b $ = $ \{ $ x $ \pipe $ a $$ ≦ $$ x $$ < $$ b $ \} $$|
    |*工学表記|$$ k^{+b}_{-a} $ = $ (k-a){:}.(k+b) $$|
    |^        |$$ k{\pm}a $ = $ (k-a){:}.(k+a) $$      |

;,まずは、本当に誤答に至った 〔教師による不正解〕
;,  $$ \log_{10} 36^{2001} $ = $ \log_{10} $ 6^{4002} $ = $ 4002 $ \log_{10} $ 6 $$
;,  $$ \phantom{\log_{10} 36^{2001}} $ =   $ 4002 $ ( $ \log_{10} $ 2 $ + $ \log_{10} $ 3 $ ) $$
;,  $$ \phantom{\log_{10} 36^{2001}} $ \in $ 4002 $ \times $ ( $ 0.3001 $ + $ [-0.00005{:}.0.00005] $ + $ 0.4771 $ + $ [-0.00005{:}.0.00005] $ ) $$
;,  $$ \phantom{\log_{10} 36^{2001}} $ =   $ 4002 $ \times $ ( $ 0.7781 $ + $ [-0.0001{:}.0.0001] $ ) $$ 
;,  $$ \phantom{\log_{10} 36^{2001}} $ =   $ 3113.9562 $ + $ [-0.4002{:}.0.4002] $$
;,  $$ \phantom{\log_{10} 36^{2001}} $ =   $ 3113.5560{:}.3114.3564 $$
;,よって、$$ 3113.5560 $$≦$$ \log_{10} 36^{2001} $$ < $$ 3114.3564 $$
;,したがって、$$ 36^{2001} $$は$$ 3114 $$桁&font(#C00,b){または};$$ 3115 $$桁の整数である。

;,つぎに、正答とされている 〔生徒による正解〕
;,  $$ \log_{10} 36^{2001} $ = $ \log_{10} $ 6^{4002} $ = $ 4002 $ \log_{10} $ 6 $$
;,  $$ \phantom{\log_{10} 36^{2001}} $ \in $ 4002 $ \times $ ( $ 0.7782 $ + $ [-0.00005{:}.0.00005] $ ) $$
;,  $$ \phantom{\log_{10} 36^{2001}} $ =   $ 3114.3564 $ + $ [-0.2001{:}.0.2001] $ ) $$
;,  $$ \phantom{\log_{10} 36^{2001}} $ =   $ 3114.1563{:}.3114.5565 $$
;,よって、$$ 3114.1563 $$≦$$ \log_{10} 36^{2001} $$ < $$ 3114.5565 $$
;,したがって、$$ 36^{2001} $$は$$ 3115 $$桁の整数である。

;,不正解の方は下限の$$ 3113.5560 $$と上限の$$ 3114.3564 $$の整数部が異なるため、
;,推定できる桁数が唯一に決まらず、幅を持った解答になる。
;,対して、正解の方は上限$$ 3114.1563 $$と下限$$ 3114.5565 $$の整数部が一致し、
;,推定できる桁数が唯一に決まる。

** 相違の原因 [#ed619421]

;,結論として、誤差の話ではあるが、所謂1桁増やせば済むレベルではなく、
;,誤差付き小数表記では見えない厄介なことが起きている。
;,結論として、誤差の話ではあるが、所謂1桁増やせば済む問題ではなく、
;,一般的な誤差表記では見えない厄介なことが起きている。

;,ここで言う誤差付き小数表記は、四捨五入に基づく小数表記による表記法である。
;,表記値を中心に、最小桁の重みに等しい誤差の幅を持つと決められている。
;,例えば、上記の計算では対数の値を表す小数表記が該当する。
;,ここで言う一般的な誤差表記は、四捨五入に基づく表記法である。
;,表記値を中心に、最小桁の重みに等しい幅の誤差を持つ区間と決められている。

;,例えば、上記の計算では対数の値を表す小数が該当する。
;,$$ 0.3001 $$は$$ 0.30005{:}.0.30015 $$という区間を表し、
;,$$ \log_{10} $ 2 $ = $ 0.3001 $$は対数の値が区間の中に存在することを意味する
((そのため、凌宮数学では一般的な$$ = $$や$$ \approx $$の他に、明示的に$$ \in $$を使うこともある。))。

;,誤差区間の幅を表記の最小桁に決め打ちしているため、
;,殆どの演算では厳密に一致せず、近似している結果で表すことになる。
;,そこで厄介なのが、狭い区間で広い区間を近似する場合、検討漏れが発生する点である。

;,誤差付き数に関して、単純な加法も厳密に成立たないのが厄介な問題である。
;,問題を単純にするため、有効数字1桁の$$ 1 $ + $ 1 $ = $ 2 $$について考えると:
#ceq
  $$ 1 $ + $ [-0.5{:}.0.5] $ + $ 1 $ + $ [-0.5{:}.0.5] $ = $ 2 $ + $ \iro[ak]{[-1{:}.1]} $ \iro[ak]{\neq} $ 2 $ + $ \iro[ak]{[-0.5{:}.0.5]} $$
#ceq(end)
;,つまり、$$ 1 $ + $ 1 $ = $ 2 $$が成立せず、$$ 1 $ + $ 1 $ \supset $ 2 $$の関係で近似されることにある。
;,両方の$$ 1 $$とも$$ 0.9 $$から近似された場合、$$ 0.9 $ + $ 0.9 $ = $ 1.8 $ \approx $ 2 $$で問題無いが、
;,両方の$$ 1 $$とも$$ 0.6 $$から近似された場合、$$ 0.6 $ + $ 0.6 $ = $ 1.2 $ \approx $ 1 $ \neq $ 2 $$となり、
;,$$ 2 $$を使って性質を議論する場合は、$$ 1 $$になる可能性を無視したことを意味する。
;,両方の$$ 1 $$とも$$ 0.6 $$から近似された場合、$$ 0.6 $ + $ 0.6 $ = $ 1.2 $ \approx $ 1 $ \neq $ 2 $$となる。
;,$$ 1 $ + $ 1 $ = $ 2 $$はもはや成立せず、$$ 1 $ + $ 1 $ \supset $ 2 $$の関係で近似されているのが分る。

加算では誤差区間の幅が$$ 2 $$倍に拡大されるため、
;,簡易表記は厳密ではなく、演算する度に近似が入ることになる。
;,例えば、$$ \log_{10} $ 2 $ + $ \log_{10} $ 3 $ = $ \log_{10} $ 6 $$が厳密に成り立つが、
;,対応する$$ 0.3001 $ + $ 0.4771 $ = $ 0.7782 $$に直した途端、
;,左の誤差区間が$$ [-0.0001{:}.0.0001] $$になるのに対し、右辺の$$ 0.7782 $$は定義通りの誤差区間$$ [-0.00005{:}.0.00005] $$の誤差付きを表す。))しか表せず、等号が厳密には成立しない。
;,同様に、$$ \log_{10} $ 2 $ + $ \log_{10} $ 3 $ = $ \log_{10} $ 6 $$が厳密に成り立つものの、
;,対応する$$ 0.3001 $ + $ 0.4771 $ = $ 0.7782 $$は$$ 0.3001 $ + $ 0.4771 $ \supset $ 0.7782 $$である。
;,加算の方が区間が広いため、推定できる桁数が唯一でなくなるのが区間演算の結果である。

;,問題を単純にするため$$ 1 $ + $ 1 $ = $ 2 $$について考えると:
;,幅が1の誤差付き数を足した結果の幅は2になるため、厳密には簡易表記では表せない。
;,このように、本来は足し算一つでも神経を使う必要がある。
** 誤答する可能性がある、もう一つの原因 [#p3bd1a0d]

;,


%bodynote
* まとめ・つなぎ [#ja30b7ae]
;,対数の有効数字を扱った例: http://photo-m.tp.chiba-u.jp/~yjo/tips/sign_figures.html

    数学 一覧 検索 最新 バックアップ リンク元   ヘルプ   最終更新のRSS