高校数学の本を読んでいてときどき出てくるのが「ガウス記号 [ ]」。
数学の世界も面白いもので「文化差」があるらしく、このガウス記号も世界中で使われているワケではないらしい(Wikipediaでは「
床関数と天井関数」という項目の中で取り上げられている)。早い話が「小数点以下切り捨て」を行った後の整数を表す記号(「小数点以下切り捨て」という操作(関数)を表す記号?)で、最近書籍化された人気Webサイト「
高校数学の美しい物語」でもガウス記号を取り上げているWebページのURLを見ると「
kirisute」とされている。
ガウス記号は、「[x]はxを超えない最大の整数」を表す(らしい)。難しい言い方だが、具体例から考えると、
[2.8] = 2
[2] = 2
[-2] = -2
[-2.8] = -3
と、やはり「切り捨て」と考えるのが一番簡単だろう。
先日、『関数を考える』(遠山啓(著) 1972年 岩波書店)を読んでいたら、「ガウス記号を用いて『切り上げ』を行うにはどうすればいいか?」という「練習問題」が出てきた。
「切り捨て」や「四捨五入」なら簡単なのだ。「切り捨て」なら単に「[x]」でいいわけだし、「四捨五入」も「[x + 0.5]」でOKだ。しかし、「切り上げ」となると…、意外と難問だった(僕には)。
それと言うのも、仮に「[x + 1]」としてしまうと、xが整数のときに不要な「切り上げ」が発生してしまうのである。整数のときにはそのままxを返して欲しいんだけど。
しかし、俺もプログラマの端くれだ(と思っているのだが…)、意地を見せろ!と頑張って捻り出したのが次の式、
[x + 1] - [ 1 - ( x - [x])]
カッコを外すと、
[x + 1] - [[x] - x + 1]
いかにも「美しくない」が、一応「切り上げ」が実現できているハズである。
一応説明すると…、原則としてxに1を足して「切り捨て」を行うのだが、xが整数である場合は1を、整数でない場合には0を「引き直して」いる。この「xが整数である場合は1、整数でない場合は0」を表現しているのが「[ 1 - ( x - [x])]」ないし「[[x] - x + 1]」の部分で、ここら辺は数学というよりやはりプログラミングの知識と経験が役立った。プログラムではときどき「0か、さもなければ1か」という処理をちょっとした計算で記述することがあるので。
ところが…、巻末の「練習問題の答」を見て愕然。そこには、
-[-x]
という、何ともシンプルで「美しい」答えが…。
考えてみれば、「切り上げ」は「切り捨て」の「引っくり返した処理」で、数直線上の左右の向き(つまり、正負の向き)を「引っくり返す」「逆転させる」にはマイナスを掛ける、というのは、数学的な処理の基本だよなぁ…。
僕にはこういう「数学的な発想」が皆目なかった。これを「美しい」と感じて悔しがる感覚をもっているだけでも、まだマシなのだが…。

0