床関数と天井関数

曖昧さ回避 この項目では、数学関数について説明しています。プログラミング言語の関数については「端数処理」をご覧ください。
床関数
天井関数

床関数(ゆかかんすう、: floor function)と天井関数(てんじょうかんすう、: ceiling function)は、実数に対してそれぞれ、自身以下の最大、自身以上の最小の整数を出力する関数である。

"floor" や "ceiling" といった名称、" {\displaystyle \lfloor \quad \rfloor } ", " {\displaystyle \lceil \quad \rceil } " などの記法は、1962年ケネス・アイバーソンによって導入された[1]

床関数と天井関数の間には

x = x {\displaystyle \lceil x\rceil =-\lfloor -x\rfloor }

の関係があるため、どちらで表しても本質的には同様となる。

床関数

床関数は、実数 x に対して x 以下の最大の整数と定義され、

  • x {\displaystyle \lfloor x\rfloor }
  • floor ( x ) {\displaystyle \operatorname {floor} (x)}
  • [ x ] {\displaystyle [x]}

などと書かれる。3つめの記号ガウス記号と呼ばれる。カール・フリードリヒ・ガウスが7つの証明を示した平方剰余の相互法則の3番目の証明に用いた(1808年)ことに由来する[2][3]。日本、中国、ドイツなどでよく使われている。日本の高校数学や大学入試ではガウス記号が使われることがほとんどである。

床関数の定義を数式で表すと次のようになる:

x := max { n Z n x } . {\displaystyle \lfloor x\rfloor :=\max\{n\in \mathbb {Z} \mid n\leq x\}.}

実数 x に対し、 x {\displaystyle \lfloor x\rfloor } 整数部分 x x {\displaystyle x-\lfloor x\rfloor } 小数部分と呼ぶ。小数部分は x mod 1{x} とも書かれる。例えば、入力値が0以上や整数なら以下のようになる:

n を任意の整数とすると、

  • n = n , { n } = 0 {\displaystyle \lfloor n\rfloor =n,\;\{n\}=0}
  • 1.7 = 1 , { 1.7 } = 0.7 {\displaystyle \lfloor 1.7\rfloor =1,\;\{1.7\}=0.7}
  • 4 3 = 1 , { 4 3 } = 1 3 {\displaystyle \left\lfloor {\frac {4}{3}}\right\rfloor =1,\;\left\{{\frac {4}{3}}\right\}={\frac {1}{3}}}
  • 3 = 1.732 = 1 , { 3 } = 3 1 = 0.732 {\displaystyle \lfloor {\sqrt {3}}\rfloor =\lfloor 1.732\cdots \rfloor =1,\;\{{\sqrt {3}}\}={\sqrt {3}}-1=0.732\cdots }
  • π = 3.14 = 3 , { π } = π 3 = 0.14 {\displaystyle \lfloor \pi \rfloor =\lfloor 3.14\cdots \rfloor =3,\;\{\pi \}=\pi -3=0.14\cdots }
  • e = 2.71 = 2 , { e } = e 2 = 0.71 {\displaystyle \lfloor e\rfloor =\lfloor 2.71\cdots \rfloor =2,\;\{e\}=e-2=0.71\cdots }

π円周率eネイピア数

しかし入力値が負非整数の場合は、整数部分・小数部分は小数表示のそれぞれ小数点以上・以下の部分とならないことに注意する必要がある:

  • 1.7 = 2 , { 1.7 } = 0.3 {\displaystyle \lfloor -1.7\rfloor =-2,\;\{-1.7\}=0.3} 1.7 {\displaystyle \lfloor -1.7\rfloor } は−1, { 1.7 } {\displaystyle \{-1.7\}} は0.7ではない)
  • 4 3 = 2 , { 4 3 } = 2 3 {\displaystyle \left\lfloor -{\frac {4}{3}}\right\rfloor =-2,\;\left\{-{\frac {4}{3}}\right\}={\frac {2}{3}}}
  • 3 = 1.732 = 2 , { 3 } = 2 3 = 0.267 {\displaystyle \lfloor -{\sqrt {3}}\rfloor =\lfloor -1.732\cdots \rfloor =-2,\;\{-{\sqrt {3}}\}=2-{\sqrt {3}}=0.267\cdots }
  • π = 3.14 = 4 , { π } = 4 π = 0.85 {\displaystyle \lfloor -\pi \rfloor =\lfloor -3.14\cdots \rfloor =-4,\;\{-\pi \}=4-\pi =0.85\cdots }

−1.2 の整数部分を −2 と定義する流儀(「0への丸め」)もあるが一般的ではない。ただしプログラミング言語によっては「0への丸め」を採用しているものがある。小数部分は0 以上 1 未満となる。

有理数帯分数表示は、この整数部分と小数部分(真分数)の和分解への表示である。

天井関数

床関数と密接に関係しているのが天井関数である。天井関数は実数 x に対して x 以上の最小の整数と定義され、

  • x {\displaystyle \lceil x\rceil }
  • ceil ( x ) {\displaystyle \operatorname {ceil} (x)}
  • ceiling ( x ) {\displaystyle \operatorname {ceiling} (x)}

などと書かれる。これを数式で表すと次のようになる:

x := min { n Z x n } . {\displaystyle \lceil x\rceil :=\min\{n\in \mathbb {Z} \mid x\leq n\}.}

例えば、以下のようになる。

n を任意の整数とすると、

  • n = n {\displaystyle \lceil n\rceil =n}
  • 1.7 = 2 {\displaystyle \lceil 1.7\rceil =2}
  • 3 = 1.732 = 2 {\displaystyle \lceil {\sqrt {3}}\rceil =\lceil 1.732\cdots \rceil =2}
  • π = 3.14 = 3 {\displaystyle \lceil -\pi \rceil =\lceil -3.14\cdots \rceil =-3}

床関数と天井関数の性質

基本的性質

以下 x は任意の実数とする。

  • x {\displaystyle \lfloor x\rfloor } 整数
  • x x < x + 1 {\displaystyle \lfloor x\rfloor \leq x<\lfloor x\rfloor +1}

であるが、上記2つが床関数を特徴付ける。

同様に、天井関数は

  • x {\displaystyle \lceil x\rceil } は整数
  • x 1 < x x {\displaystyle \lceil x\rceil -1<x\leq \lceil x\rceil }

によって特徴付けられる。

床関数と天井関数の関係は、x が整数、非整数であるかによってそれぞれ

  • x x {\displaystyle \lceil x\rceil -\lfloor x\rfloor } は 0 か 1

となる。床関数と天井関数の基本不等式を併せると

  • x 1 x x x x + 1 {\displaystyle \lceil x\rceil -1\leq \lfloor x\rfloor \leq x\leq \lceil x\rceil \leq \lfloor x\rfloor +1}
  • 任意の整数 n に対し、
    n + x = n + x {\displaystyle \lfloor n+x\rfloor =n+\lfloor x\rfloor }
    n + x = n + x {\displaystyle \lceil n+x\rceil =n+\lceil x\rceil }

床関数と天井関数は互いに他方を表せる:

  • x = x {\displaystyle \lceil x\rceil =-\lfloor -x\rfloor }
  • x = x {\displaystyle \lfloor x\rfloor =-\lceil -x\rceil }
  • 床関数・天井関数は冪等である:
    x = x {\displaystyle \lfloor \lfloor x\rfloor \rfloor =\lfloor x\rfloor }
    x = x {\displaystyle \lceil \lceil x\rceil \rceil =\lceil x\rceil }
  • 任意の整数 n に対し、
    n 2 + n 2 = n {\displaystyle \left\lfloor {\frac {n}{2}}\right\rfloor +\left\lceil {\frac {n}{2}}\right\rceil =n} .

解析的性質

  • 床関数と天井関数は広義増加である:
    x 1 < x 2 x 1 x 2 {\displaystyle x_{1}<x_{2}\Rightarrow \lfloor x_{1}\rfloor \leq \lfloor x_{2}\rfloor }
    x 1 < x 2 x 1 x 2 {\displaystyle x_{1}<x_{2}\Rightarrow \lceil x_{1}\rceil \leq \lceil x_{2}\rceil }

床関数・天井関数は、区分的定数関数であり、整数点(すなわち、整数となる x)で不連続であるが半連続(床関数は上半連続、天井関数は下半連続)である。床関数・天井関数の非整数点での微分係数が存在し、0 である。

  • x が整数でないとき、床関数と天井関数は次のようにフーリエ級数展開できる:
x = x 1 2 + 1 π k = 1 sin ( 2 π k x ) k . {\displaystyle \lfloor x\rfloor =x-{\frac {1}{2}}+{\frac {1}{\pi }}\sum _{k=1}^{\infty }{\frac {\sin(2\pi kx)}{k}}.}
x = x + 1 2 + 1 π k = 1 sin ( 2 π k x ) k . {\displaystyle \lceil x\rceil =x+{\frac {1}{2}}+{\frac {1}{\pi }}\sum _{k=1}^{\infty }{\frac {\sin(2\pi kx)}{k}}.}
x = x 1 π arccot ( cot ( π x ) ) . {\displaystyle \lfloor x\rfloor =x-{\frac {1}{\pi }}\operatorname {arccot} {\bigl (}\cot(\pi x){\bigr )}.}
x = x + 1 π arccot ( cot ( π x ) ) . {\displaystyle \lceil x\rceil =x+{\frac {1}{\pi }}\operatorname {arccot} {\bigl (}\cot(-\pi x){\bigr )}.}
  • 床関数と天井関数の平均は次のようにフーリエ級数展開できる:
    1 2 ( x + x ) = x + 1 π k = 1 sin ( 2 π k x ) k . {\displaystyle {\frac {1}{2}}\left(\lfloor x\rfloor +\lceil x\rceil \right)=x+{\frac {1}{\pi }}\sum _{k=1}^{\infty }{\frac {\sin(2\pi kx)}{k}}.}

床関数の性質

  • x が整数、nの整数のとき、次の式が成り立つ。
    x n x n n 1 n . {\displaystyle \left\lfloor {\frac {x}{n}}\right\rfloor \geq {\frac {x}{n}}-{\frac {n-1}{n}}.}
  • n が整数のとき、nx n x {\displaystyle n\leq \lfloor x\rfloor } は同値である。意匠を凝らした言い方では、床関数はガロア接続の片翼を担っており、整数を実数へ埋め込む関数の上随伴である。
  • 床関数を用いると、いくつかの素数生成式を作ることができる(ただしこれらは実際の計算には役立たない)。1つの例として、n番目の素数 pn
p n = 1 + j = 1 2 n n i = 1 j cos 2 ( i 1 ) ! + 1 i π n . {\displaystyle p_{n}=1+\textstyle \sum \limits _{j=1}^{2^{n}}\left\lfloor {\sqrt[{n}]{\dfrac {n}{\sum \limits _{i=1}^{j}\left\lfloor \cos ^{2}{\frac {(i-1)!+1}{i}}\pi \right\rfloor }}}\right\rfloor .}
  • エルミートの恒等式 (Hermite’s identity):実数 a, 正の整数 n に対し、
    n a = i = 0 n 1 a + i n . {\displaystyle \lfloor na\rfloor =\textstyle \sum \limits _{i=0}^{n-1}\left\lfloor a+{\dfrac {i}{n}}\right\rfloor .}
  • 互いに素である正の整数 m, n に対し、次の式が成り立つ[4]
    i = 1 n 1 i m n = ( m 1 ) ( n 1 ) 2 . {\displaystyle \textstyle \sum \limits _{i=1}^{n-1}\left\lfloor {\dfrac {im}{n}}\right\rfloor ={\dfrac {(m-1)(n-1)}{2}}.}
  • 自然数 n に対し、n の 1 以外の正の約数の個数を an とすると、
    i + j = n + 1 i , j 1 i j = k = 2 n + 1 a k {\displaystyle \textstyle \sum \limits _{\scriptstyle i+j=n+1 \atop \scriptstyle i,j\geq 1}\left\lfloor {\dfrac {i}{j}}\right\rfloor =\textstyle \sum \limits _{k=2}^{n+1}a_{k}} オンライン整数列大辞典の数列 A002541)
  • レイリーの定理は、1 より大きい無理数が、床関数を用いて自然数の集合を2つに分ける方法を表している。
  • ワイソフのゲーム(2山の片方からまたは、両方から同数ずつ取る石取りゲーム)の後手必勝形は
    ( n φ , n φ 2 ) {\displaystyle (\lfloor n\varphi \rfloor ,\lfloor n\varphi ^{2}\rfloor )} n は 0 以上の整数、φ黄金比
  • 正の整数 kn進法で表すと、 log n k + 1 {\displaystyle \lfloor \log _{n}k\rfloor +1} 桁となる。
  • ルジャンドルの公式:自然数 n階乗が素数 p で(整数の範囲で)割り切れる回数は i = 1 log p n n p i {\displaystyle \textstyle \sum \limits _{i=1}^{\lfloor \log _{p}n\rfloor }\left\lfloor {\dfrac {n}{p^{i}}}\right\rfloor }
  • n角形(n は3以上の自然数)の対角線の長さの種類は n 2 1 ( = 2 n 5 + ( 1 ) n 4 ) {\displaystyle \left\lfloor {\frac {n}{2}}\right\rfloor -1{\Bigl (}{=}\;{\frac {2n-5+(-1)^{n}}{4}}{\Bigr )}} だけある。

四捨五入の床関数表示など

実数 x ≥ 0 に制限すると、床関数・天井関数とは小数第1位での切り捨て・切り上げである。これを利用して、位取り記数法表示での任意の位での切り捨てや四捨五入を床関数で表すことができる。

  • 実数 x の小数点以下を四捨五入した値は、次の式で表される:
    x + 0.5 ( x 0 ) {\displaystyle \lfloor x+0.5\rfloor \quad (x\geq 0)}
    x 0.5 ( x 0 ) {\displaystyle \lceil x-0.5\rceil \quad (x\leq 0)}

以下十進法表示とする。実数 x ≥ 0 に対して、

  • 10nの位での切り捨ては
    10 n + 1 x 10 n + 1 {\displaystyle 10^{n+1}\left\lfloor {\frac {x}{10^{n+1}}}\right\rfloor }
  • 小数第n位での切り捨ては
    1 10 n 1 10 n 1 x {\displaystyle {\frac {1}{10^{n-1}}}\lfloor 10^{n-1}x\rfloor }
  • 10nの位での四捨五入は
    10 n + 1 x 10 n + 1 + 0.5 {\displaystyle 10^{n+1}\left\lfloor {\frac {x}{10^{n+1}}}+0.5\right\rfloor }
  • 小数第n位での四捨五入は
    1 10 n 1 10 n 1 x + 0.5 {\displaystyle {\frac {1}{10^{n-1}}}\lfloor 10^{n-1}x+0.5\rfloor }

組版

床関数は x {\displaystyle \lfloor x\rfloor } 、天井関数は x {\displaystyle \lceil x\rceil } と上下の欠けた角括弧で表される。これらは、LaTeX では \lfloor, \rfloor, \lceil, \rceil と書かれる。Unicode では U+2308 から U+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

脚注

[脚注の使い方]
  1. ^ Iverson 1962
  2. ^ ガウス 2012, pp. 13–19
  3. ^ Gauss 1808, pp. 5–8
  4. ^ 整数問題としての[ガウス記号] (2) (2015.8.25) 犬プリ(赤阪正純)

参考文献

  • Iverson, Kenneth E. (1962) (English), A Programming Language, Wiley, ISBN 0-471-43014-5, OCLC 523128 
  • Gauss, Carl Friedrich (1808) (Latin), Theorematis arithmetici demonstratio nova, 16, Commentations societatis regiae scientiarum Gottingensis, pp. 5-8, https://gdz.sub.uni-goettingen.de/id/PPN23599524X?tify=%7B%22pages%22:%5B9%5D%7D 
  • J.C.F.ガウス 著、高瀬正仁 訳『ガウス 数論論文集』筑摩書房〈ちくま学芸文庫〉、2012年7月10日。ISBN 978-4-480-09474-2。 

外部リンク

  • 『ガウス記号の定義と3つの性質』 - 高校数学の美しい物語
  • ブリタニカ国際大百科事典 小項目事典『階段関数』 - コトバンク
  • Weisstein, Eric W. "Floor Function". mathworld.wolfram.com (英語).
  • Weisstein, Eric W. "Ceiling Function". mathworld.wolfram.com (英語).