62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
|
|
## 取整函数及其性质
|
|||
|
|
|
|||
|
|
### 1、取整函数定义及分类
|
|||
|
|
|
|||
|
|
取整函数是一类将实数映射到相近的整数的函数。
|
|||
|
|
|
|||
|
|
常用的取整函数有两个,分别是**下取整**函数和**上取整**函数。
|
|||
|
|
|
|||
|
|
|
|||
|
|
* [Floor and ceiling functions - Wikipedia](https://en.wikipedia.org/wiki/Floor_and_ceiling_functions#Number_of_digits)
|
|||
|
|
|
|||
|
|
* [Useful Properties of the Floor and Ceil Functions](https://janmr.com/blog/2009/09/useful-properties-of-the-floor-and-ceil-functions/)
|
|||
|
|
|
|||
|
|
下取整函数在数学中一般记作$\left \lfloor x \right \rfloor$,比自己小的最大整数,在计算机科学中一般记作$floor(x)$;
|
|||
|
|
|
|||
|
|
上取整函数在数学中一般记作$\left \lceil x \right \rceil$,比自己大的最小整数,在计算机科学中一般记作$ceil(x)$。
|
|||
|
|
|
|||
|
|
### 2、性质:(仅列举计算机学习中经常用到的性质)
|
|||
|
|
* 任意实数$x$,有: $x−1<⌊x⌋≤x≤⌈x⌉<x+1$
|
|||
|
|
<br>
|
|||
|
|
|
|||
|
|
* 下取整函数为等幂运算: $\left \lfloor \left \lfloor x \right \rfloor \right \rfloor = \left \lfloor x \right \rfloor.$
|
|||
|
|
<br>
|
|||
|
|
* 对任意的整数 $k$ 和任意实数 $x$,$\left \lfloor k+x \right \rfloor = k + \left \lfloor x \right \rfloor$
|
|||
|
|
<br>
|
|||
|
|
* 一般的数值修约规则可以表述为将$x$映射到 $floor(x + 0.5)$。
|
|||
|
|
<br>
|
|||
|
|
* $\left \lceil x \right \rceil = - \left \lfloor -x \right \rfloor$
|
|||
|
|
<br>
|
|||
|
|
|
|||
|
|
* 对于整数$k$有:$\left \lfloor k/2 \right \rfloor + \left \lceil k/2 \right \rceil = k$
|
|||
|
|
|
|||
|
|
### 3、对数与取整函数的关系
|
|||
|
|
二者关系为:
|
|||
|
|
|
|||
|
|
$\left \lceil \log (x+1) \right \rceil = \left \lfloor \log x \right \rfloor +1, x\in Z, x\geqslant 1$
|
|||
|
|
|
|||
|
|
**证明:**
|
|||
|
|
|
|||
|
|
令$m = \left \lfloor \log x \right \rfloor$,
|
|||
|
|
|
|||
|
|
则 $m \leq \log x < m+1$ ①
|
|||
|
|
|
|||
|
|
由式①可得
|
|||
|
|
|
|||
|
|
$2^{m} \leq x < 2^{m+1}$ ②,
|
|||
|
|
|
|||
|
|
进而可得
|
|||
|
|
|
|||
|
|
$2^{m} < x+1 \leq 2^{m+1}$
|
|||
|
|
|
|||
|
|
因为 $x\in Z$, 所以 $m < \log (x+1) \leq m+1$.
|
|||
|
|
|
|||
|
|
所以 $\left \lceil \log (x+1) \right \rceil = m+ 1= \left \lfloor \log x \right \rfloor + 1$.
|
|||
|
|
|
|||
|
|
### 4、向下取整与向上取整的转换方法
|
|||
|
|
我们知道,一般在程序语言中,两个整数相除都是向下取整。例如,$5/3=1,2/3=0$;
|
|||
|
|
|
|||
|
|
那么向上取整该如何表示呢,也就是说,**向上取整能不能通过向下取整的方式来表达**?
|
|||
|
|
|
|||
|
|
当然可以,下面是转换公式:
|
|||
|
|
<center><img src='https://img-blog.csdn.net/20140113090723046'></center>
|