数学塾variée@吉祥寺

数学塾の中の人の日記

負の数の四捨五入(1990東工大後期)

昔の東工大の問題を眺めていたら,「負の場合はヤバイ」みたいなことが書いてあったので調べました。

東工大の問題

(x+1)(x-2) の小数第1位を四捨五入したものが 1+5x と等しくなるような実数 x を求めよ。

普通に解く分にはなんの問題もありません。負の数の四捨五入も整数部分と小数部分にわければ簡単です。


では,いったい何が「ヤバイ」のでしょうか?

負の数の四捨五入の定義

負の数の四捨五入の定義を調べてみましょう。まずは wikipedia から。

0.5を足して切り捨てるという、単純なアルゴリズムで得られる。なお、負の数に対して正常な結果を得ようとすれば、切り捨ては負の無限大への丸めである必要がある(0への丸めだと、たとえば-2が-1に丸められてしまう)。ただし、0.5を足して負への無限大へ丸めると、端数が0.5の場合に絶対値が減る(たとえば、-1.5は-1へと丸められる)。一方、JIS Z 8401では、負の数は絶対値として丸める(-1.5は-2へと丸められる)。実際に、コンピュータで負の数に「0.5を足して切り捨て」た場合どうなるかは、負の数と切り捨ての実装による。
端数が0.5のとき常に増える方向に丸められるため、わずかに正のバイアスがある。
http://ja.wikipedia.org/wiki/端数処理
http://en.wikipedia.org/wiki/Rounding

前段の「丸め」の説明をカットしたのでわかりにくいかもしれませんが,「実装による」がまずそうなのはわかると思います。英語版 wikipedia には実装の例が載っていて,round down/round up/round toward zero/round away from zero/round to nearest で使う関数がすべて違います。

次は JIS Z8401:1999 です。

この規格では対象となる数値として正の数値しか想定していない。負の数値を対象とする場合は,その絶対値に適用しなけれはならない。
http://kikakurui.com/z8/Z8401-1999-01.html

なんと絶対値をとってから四捨五入するのが正しいらしいです。

ISO 80000-1:2009 Annex B にも規定がありましたが,残念ながら中身は読めませんでした(有料でした)。おそらく JIS と同じだろうと思われます。

これでわかりました。

負の数の四捨五入には様々な方法があり,特に JIS では「絶対値を四捨五入」と定められている。常識的な「小数部分を四捨五入」は不正解とされる可能性がある。

ということなのだろうと思います。細かいw そもそも負の数の四捨五入は学校ではあつかわないらしく,他の大学は正の数しか出さなかったり,「誤差の絶対値は 0.05 以下」のように指定していたりします。東工大は問題作成のツメが甘かったわけです。「n は(自然数ではなく)実数のつもりだった」とか平気で言う学校なので,「またか」ぐらいに軽く流していいと思います。

設定が曖昧な問題には「私はこう解釈しました」を書きましょう。たとえば「増加関数であることを示せ」は狭義の増加なのか広義の増加なのかはっきりしませんが,「だから解けません」ではお話になりません。こういうときは「f’(x)>0 を示す」「f’(x)≧0 を示す」など方針を書きましょう。

解答はどう変わるか

「小数部分を四捨五入」と「絶対値を四捨五入」では途中式の不等号が変わるだけで,最終的な答えは変わりません。P=(x+1)(x-2)<0, Q=1+5x とします。

「小数部分を四捨五入」の場合


「絶対値を四捨五入」の場合


どちらで解いたとしても正解でしょう。


東京工業大学数学入試問題50年―昭和31年(1956)~平成17年(2005)

東京工業大学数学入試問題50年―昭和31年(1956)~平成17年(2005)