Kertoma

Positiivisen kokonaisluvun n **kertoma** on luvun n ja kaikkien sitä pienempien positiivisten kokonaislukujen tulo, ja se merkitään n!. Esimerkiksi

:4 ! = 4  \times  3  \times  2  \times  1 = 24  \ 

Kertoma kuvaa äärellisen joukon alkioiden permutaatioiden lukumäärää: esimerkiksi 4 ihmistä voivat olla jonossa 24 eri tavalla.

Kertoma voidaan yleistää luonnollisilta luvuilta kompleksilukuihin saakka, tavallisin yleistys on gammafunktio.

Merkinnän n! esitti ranskalainen matemaatikko Christian Kramp vuonna 1808.

Kertomaa käytetään yleensä pitkien kertolaskujen esittämiseen. Esimerkiksi

: 8  \times  7  \times  6  \times  5 \times  4  \times  3  \times  2  \times  1 = 40 320  \  voidaan esittää muodossa 8 ! 
Kolmiolukuja voidaan pitää kertoman yhteenlaskullisena vastineena.

## Määritelmä
Luvun n kertoma määritellään seuraavasti: 
n! = \prod_{k=1}^n k = 1 \cdot 2 \cdot 3 \cdot \ldots \cdot n kaikilla luonnollisilla luvuilla n \in \mathbb.
Esimerkiksi 
5! = 5 \cdot 4 \cdot 3 \cdot 2 \cdot 1 = 120.
On lisäksi määritelty, että 0! = 1, koska tyhjä tulo on 1.
Luvun n kertomaa ei ole määritelty negatiivisille luvuille tai desimaaliluvuille, ainoastaan luonnollisille luvuille.

## Stirlingin approksimaatio

**Stirlingin approksimaatiolla** voidaan arvioida kokonaisluvun kertomaa. Tämän likimääräismenetelmän tarkkuus suurenee kun käsitellään suuria kokonaislukuja. Arvioinnin menetelmää pidetään yleisesti skottilaisen matematiikon James Stirlingin kehittämänä, joskin samoihin aikoihin myös ranskalainen matematiikko Abraham de Moivre oli tutkinut aihetta.
Tilastollisessa termodynamiikassa tarkastellaan hiukkasjoukkoa, jonka suuruus vastaa Avogadron vakiota. Entropiaa laskettaessa tarvitaan näin suuresta hiukkasjoukosta ottaa kertoma, jonka laskeminen ilman likimääräismenetelmää on työlästä.

Stirlingin approksimaation johtamiseksi tarkastellaan kertoman logaritmia kun n otetaan suurena lukuna:

::\begin{align}\ln n! &\,=\,\ln\Big[n\cdot(n-1)\cdot(n-2)...(2)\cdot(1)\Big]\\ &\,=\,\sum_{i=1}^n \ln(i) \simeq \int_1^n \ln(i)di\\ &\,=\,\Bigg|_{i=1}^{n} n\ln n-n\,\simeq n\ln n - n\end{align}

Euler-MacLaurin -yhtälöä käyttäen saadaan tarkempi approksimaatio:

::\ln n!\,=\,n\ln n - n + \frac{1}{2}\ln(2\pi\,n)+ \frac{1}{12n} - \frac{1}{360n^3}  + \frac{1}{1260n^5} -...

Tästä yhtälöstä kaksi ensimmäistä termiä ovat täysin riittäviä kertoman luonnollisen logaritmin approksimaation laskemiseksi käsiteltäessä hyvin suurta hiukkasjoukkoa. Oheisessa kuvassa on esitetty havainnollisuuden vuoksi yhtälön kahden ensimmäisen termin ja toisaalta kolmen ensimmäisen termin laskentatarkkuudella suhteellisen virheen pieneneminen tarkasteltavana olevan hiukkaslukumäärän kasvaessa.  

Kertoman logaritmiton Stirlingin approksimaatio on n! \simeq \left( \frac{n}{e} \right)^n \sqrt{2 \pi n}. Tämän lisäksi kaikilla luonnollisilla luvuilla n on voimassa arvio:
\sqrt{2 \pi}n^{n+\frac{1}{2}}e^{-n+\frac{1}{12n+1}}

Esimerkkejä approksimaation käytöstä:

## Lukuteoria
Kertomilla on monia sovellutuksia lukuteoriassa. Erityisesti n! on jaollinen kaikilla lukua n pienemmillä ja yhtäsuurilla alkuluvuilla. Siitä seuraa, että n > 5 on yhdistetty luku, jos
(n-1)!\ \equiv\ 0 \ ({\rm mod}\ n).
Vahvempi tulos on Wilsonin lause, jonka mukaan
(p-1)!\ \equiv\ -1 \ ({\rm mod}\ p),
jos p on alkuluku.
Ainoa kertoma, joka on myös alkuluku, on 2. On kuitenkin olemassa monia alkulukuja muotoa \scriptstyle n! \pm 1. Näitä alkulukuja kutsutaan kertoma-alkuluvuiksi.

## Kertomafunktion arvo gammafunktion avulla
Kertomafunktio voidaan ilmaista kokonaislukuargumenttisen gammafunktion \Gamma(x), (x\in \mathbb{N})  avulla:

n! = \Gamma (n+1).

Gammafunktion avulla kertoma voidaan määritellä myös muille kuin luonnollisille luvuille, mutta tällöin kertoman sijasta yleensä viitataan suoraan gammafunktioon.

## Kertomafunktion arvo alkulukutekijöiden tulona
Kertomafunktion arvo voidaan laskea kaavasta
n! = \prod_{p\leq n} p^{ \sum_{k=1}^{\infty} \left\lfloor \frac{n}{p^k} \right\rfloor },
missä luvut p ovat alkulukuja.

## Ohjelmallinen toteutus
Kertoma on laskettavissa JavaScriptillä rekursiolla seuraavalla funktiolla:


```javascript
function kertoma(n) {
    if (n == 0) {
        return 1;
    } else if (n > 0) {
        return n * kertoma(n-1);
    }
}
```


## Katso myös

* Todennäköisyyslaskenta
* Gammafunktio
* Binomikerroin
* Kertomafunktio
* Primorial
* Fibonaccin kertoma

## Lähteet

## Aiheesta muualla

* Mathworld: Factorial 
* Mathworld. Stirling's Approximation 
* http://factorielle.free.fr 
*  Online laskimet kertoma