この項目では、数学関数について説明しています。プログラミング言語の関数については「端数処理 」をご覧ください。
床関数
天井関数
床関数 (ゆかかんすう、英 : floor function )と天井関数 (てんじょうかんすう、英 : ceiling function )は、整数関数の一種で、実数 に対してそれぞれ、自身以下の最大、自身以上の最小の整数 を出力する関数 である。
英語の floor , ceiling といった名称と、
⌊
x
⌋
{\displaystyle \lfloor x\rfloor }
,
⌈
x
⌉
{\displaystyle \lceil x\rceil }
という記法は、プログラミング言語 APL の元となる A Programming Language という本の中でケネス・アイバーソン によって1962年 に導入された[ 1] 。floorは切下げ関数 、ceulingは切上げ関数 とも訳される(非整数部分を「切る」という意味)。
床関数と天井関数の間には
⌈
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 }
を小数 部分 と呼ぶ。整数部分は整数、小数部分は 0 以上 1 未満である。小数部分は 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 の整数部分を −1 と定義する流儀(「0への丸め 」)もあるが一般的ではない。
正の有理数 の帯分数 表示は、この整数部分と小数部分(真分数 )の和分解への表示である。
床関数と密接に関係しているのが天井関数 である。天井関数は実数 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 が整数のとき、n ≤ x と
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 以上の整数、φ は黄金比 )
正の整数 k を n 進法 で表すと、
⌊
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 }
と上下の欠けた角括弧で表される。これらは、La Te X では \lfloor
, \rfloor
, \lceil
, \rceil
と書かれる。Unicode では U+2308
から U+230B
に割り当てられている。
記号
Unicode
JIS X 0213
文字参照
名称
⌈
U+2308
-
⌈
⌈
⌈
LEFT CEILING
⌉
U+2309
-
⌉
⌉
⌉
RIGHT CEILING
⌊
U+230A
-
⌊
⌊
⌊
LEFT FLOOR
⌋
U+230B
-
⌋
⌋
⌋
RIGHT FLOOR
脚注
参考文献
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 。
外部リンク