Planka kaj plafona funkcioj

eta|dekstra|La planka funkcio
eta|dekstra|La plafona funkcio
[eta|dekstra|Rondigo al nulo - funkcio *(int)* en [C (programlingvo)|C]]

En matematiko kaj komputiko, la **planka funkcio** \lfloor x \rfloor estas funkcio kiuj konvertas reelan nombron *x* en la plej proksiman entjeron ne pli grandan ol la fonta nombro.

:  \lfloor x \rfloor=\max\, \{n\in\mathbb{Z}\mid n\le x\}

La **plafona funkcio** \lceil x \rceil estas funkcio kiuj konvertas reelan nombron *x* en la plej proksiman entjeron ne pli malgrandan ol la fonta nombro.

:  \lceil x \rceil=\min\{n\in\mathbb{Z}\mid x\le n\}

Ekzemple:

Por nenegativa *x*, pli tradicia nomo por planka funkcio estas la **entjera parto**. La funkcio x -\lfloor x\rfloor, ankaŭ skribata kiel *x* mod 1, aŭ *{x}*, estas nomata kiel la **frakcia parto** de *x*. Ĉiu nenegativa nombro estas sumo de sia entjera parto kaj frakcia parta.

Por negativa *x*, nomo **entjera parto** povas esti diverse komprenita.

**Rondigo al nulo** por pozitiva aŭ nula *x* ĝi egalas al planka funkcio de *x* kaj por negativa aŭ nula *x* ĝi egalas al plafona funkcio de *x*.

## Propraĵoj 
*  x-1 
*  \lfloor x\rfloor \le x 
*  x \leq \lceil x \rceil 
*  \lceil x-1 \rceil 
*  \lfloor x\rfloor = x se kaj nur se *x* estas entjero
*  \lceil x \rceil = x se kaj nur se *x* estas entjero
*  \lceil x \rceil = - \lfloor - x \rfloor
* Por ĉiu entjero *k* kaj ĉiu reela nombro *x*,
:  \lfloor k+x \rfloor = k + \lfloor x \rfloor
:  \lceil k+x \rceil = k + \lceil x \rceil
* Se *x* estas reela nombro kaj *n* estas entjero do:
: *n ≤ x* se kaj nur se  n \le \lfloor x \rfloor 
: *n > x* se kaj nur se  n > \lfloor x \rfloor 
: *n ≥ x* se kaj nur se  n \ge \lceil x \rceil 
: *n  n 
* Por ĉiu entjero *k*
: \lfloor k / 2 \rfloor + \lceil k / 2 \rceil = k
* Se *x* kaj *n* estas pozitivaj entjeroj
:  \left\lfloor \frac{n}{x} \right\rfloor \geq \frac{n}{x} - \frac{x-1}{x} 
* \lfloor\lfloor x\rfloor\rfloor=\lfloor x\rfloor
*  \lceil\lceil x \rceil\rceil = \lceil x \rceil
* La ordinara rondigo de la nombro *x* al la plej proksima entjero povas esti esprimita kiel  \lfloor x + 0,5 \rfloor , ĉi tio tamen ne estas tute vera por nombroj -0,5, -1,5, -2,5, ... .
* Planka kaj plafona funkcioj ne estas kontinuaj. Sed planka funkcio estas supra duonkontinua kaj plafona funkcio estas malsupra duonkontinua. Ĉiu el ili estas popece konstanta funkcio, derivaĵo de ĉiu el ili estas nulo tie kie ĝi ekzistas, tio estas, ĉie krom entjeroj.
* Funkcio  \lfloor x \rfloor - x  estas perioda funkcio kun periodo 1. Tiel ekzistas la serio de Fourier de planka funkcio, kiu egalas al valoro de la fonta funkcio por ĉiu reela ne-entjera *x*:
:\lfloor x\rfloor = x - \frac{1}{2} + \frac{1}{\pi} \sum_{k=1}^\infty \frac{\sin(2 \pi k x)}{k}
* Se *m* kaj *n* estas reciproke primaj pozitivaj entjeroj, tiam
:\sum_{i=1}^{n-1} \lfloor im / n \rfloor = (m - 1) (n - 1) / 2
* Por ĉiu pozitiva entjero *k*, kvanto de ciferoj de ĝia prezento en cifereca bazo *b* estas:
:\lfloor \log_{b}(k) \rfloor + 1
* Kun la planka funkcio ekzistas kelkaj eksplicitaj (kvankam nepraktikaj) formuloj por primoj.

## Komputilaj realigoj 
Normo POSIX por programlingvo C enhavas funkcion *floor()* por la planka funkcio.

Plejparto de tabelkalkulilaj programoj subtenas iun formon de plafona funkcio.

Funkcio de Microsoft Excel, nomata kiel plafona funkcio, estas fakte rondiga al nulo.

La OpenDocument dosiera aranĝo, uzata de OpenOffice.org kaj aliaj, sekvas la matematikan difinon de la plafona funkcio.

### Operatoro (int) en C 
C kaj similaj programlingvoj havas tipkonverton kiu permesas konverti flosantan punktan valoron en entjero per prefiksigo de ĝi per *(int)*. Ĉi tiu operacio estas la rondigo al nulo, por pozitiva aŭ nula *x* ĝi egalas al planka funkcio de *x*, por negativa aŭ nula *x* ĝi egalas al plafona funkcio de *x*.

Ĉi tiu operacio povas grave perdi precizecon. Ekzemple, *(int)(0.6/0.2)* redonas valoron 2 en plejparto de realigoj de C, kvankam matematike 0,6/0,2=3. La kaŭzo estas tio ke komputilo laboras ene kun la duuma sistemo, kaj en ĝi ne eblas precize prezenti la nombroj 0,6 kaj 0,2 per finia duuma frakcio. Tiel iuj rondigaj eraroj okazas, kaj la rezulto estas komputita kiel ekzemple 2,99999999999999955 kiu per la tipkonverto *(int)* konvertiĝas al 2.

Multaj aliaj programlingvoj, inter ili Javo (testita kun Sun JDK versio 1.5.0_05), Perl (kiel en versio 5.8.0), kaj PHP (testita en versio 5.2.1) kondutas simile.

## Printado 
La planka kaj plafona funkcio estas kutime priskribataj per maldekstra kaj dekstra kvadrataj krampoj kie la supra (por planka funkcio) aŭ suba (por plafona funkcio) rekoj forestas.

Unikodo enhavas signojn por ĉi tio *U+2308* ... *U+230B*: ⌈ ⌉ ⌊ ⌋ . Vidu ankaŭ en listo de signoj de Unikodo 2000-23FF.

En la LaTeX kompostado de ĉi tiuj simboloj povas esti farita per la esprimoj *\lfloor, \rfloor, \lceil, \rceil* en *math* reĝimo.

## Vidu ankaŭ 
* Tranĉo
* Rondigo

Kategorio:Specialaj funkcioj