利用者:Flightbridge/sandbox/床関数と天井関数

en:Floor and ceiling functions oldid=727328879

床関数(ゆかかんすう、: floor function)と天井関数(てんじょうかんすう、: ceiling function)は、任意の実数に対し整数を対応付ける関数である。実数 x に対して床関数は x より小さい最大の整数を、天井関数は x より大きい最小の整数をそれぞれ対応付ける。

表記[編集]

床関数に用いられる記号 [x] は、カール・フリードリヒ・ガウスが7つの証明を示した平方剰余の相互法則の3番目の証明に用いた(1808年)ので、ガウス記号と呼ばれる。この表記は、ケネス・アイバーソンが "floor" および "ceiling" という言葉とそれに対応する表記 x⌋, ⌈x を、書籍 A Programming Language(1962)において導入するまで標準であった。現在ではどちらの記号も用いられているが、日本の高校数学や大学入試ではガウス記号が使われることがほとんどである。

実数 x に対して x整数部分と呼ぶが、x が負のときは代わりに x を整数部分とすることもある。プログラミング言語APLでは整数部分を表すのに表記 ⌊x を用いている。その他の言語では次のような表記が一般に用いられている。数学においては、太字の角括弧 [x] または二重角括弧 x なども用いられる。

整数部分 x に対して x − ⌊x小数部分と呼び、{x} と表記する。これはのこぎり関数であり、任意の実数 x に対して 0 ≤ {x} < 1 を満たす。

天井関数は、APL以外の言語では通常 ceil(x) または ceiling(x) と表記される。APLの後継であるJ言語では、>. を天井関数に、<. を床関数に用いている。数学においては、括弧を裏返した ]x[x という表記もある。

[編集]

下表の x = −2.7 の場合について。小数部分が 0.7 ではなく 0.3 となっているのは、上述した小数部分の定義 {x} = x − ⌊x に従って計算しているためである。また上述の通り実数 x の整数部分は x であるから、−2.7 の整数部分は ⌊−2.7⌋ = −3 となる。

x 床関数 x 天井関数 x 小数部分 {x}
2 2 2 0
2.4 2 3 0.4
2.9 2 3 0.9
−2.7 −3 −2 0.3
−2 −2 −2 0

組版[編集]

床関数・天井関数は、 のように上下の欠けた角括弧で表される。これは、LaTeX では \lfloor\rfloor\lceil\rceil と書かれる。Unicode では U+2308U+230B に割り当てられている。

記号 Unicode JIS X 0213 文字参照 名称
U+2308 - &lceil;
&#x2308;
&#8968;
LEFT CEILING
U+2309 - &rceil;
&#x2309;
&#8969;
RIGHT CEILING
U+230A - &lfloor;
&#x230A;
&#8970;
LEFT FLOOR
U+230B - &rfloor;
&#x230B;
&#8971;
RIGHT FLOOR

定義と性質[編集]

以下 x, y を実数、k, m, n を整数、Z整数全体の集合とする。

床関数と天井関数は次のように定義することができる。

また、長さ 1 の半開区間には常に整数がただ一つ存在することから、任意の実数 x に対して次式を満たす整数 m, n が一意に定まる。これらによって x⌋ = m, ⌈x⌉ = n と定義することもできる。

同値変形[編集]

順序理論英語版によれば床関数は剰余写像英語版であり、ガロア接続の片翼を担っている。床関数は整数を実数へ埋め込む関数の上随伴である。

次の式は、整数の増減による関数の値への影響を表す。

両者の関係[編集]

  • 定義より明らかに x⌋ ≤ ⌈x が成り立つ。ここで、この式の等号が成立するのは x が整数の時に限るので、次式が成り立つ。
  • 任意の整数 n に対して n⌋ = ⌈n⌉ = n が成り立つ。
  • 中身の符号を変えたものは、外側の符号を変えて且つ床関数と天井関数を取り替えたものに等しい。
ゆえに
  • 小数部分の中身の符号を変えたものは補数となる。

応用[編集]

コンピューターにおける実装[編集]

床関数と天井関数は多くのプログラミング言語(C言語C++PHPPythonなど)において標準で定義されている。

表計算ソフト[編集]

殆どの表計算ソフトは何らかの形で天井関数に対応している。ソフト毎に細かい違いはあるが、殆どの実装では第二引数(基準値)に対応しており、天井関数は与えられた数を基準値の倍数となるように切り上げる。例えば ceiling(2, 3) であれば 2 を超える最も近い 3 の倍数は 3 なので 3 が戻り値となる。ただしこの「切り上げる」の意味はソフト毎に差異がある。

Excel 2010 以前の Microsoft Excel における天井関数 CEILING は 0 から離れる方向に切り上げを行っており(正の方向に切り上げるのが正しい)、そのため引数が負のとき正しい値を返さなかった。この仕様は Office Open XML 形式にまで採用された。正しい天井関数は -INT(-引数) とすることで求められる。Excel 2010 では CEILING は標準的な定義に従うようになり、一方以前の天井関数は ROUNDUP 関数として利用できる。