Fatorial

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Na matemática, o fatorial (AO 1945: factorial) de um número natural n, representado por n!, é o produto de todos os inteiros positivos menores ou iguais a n. A notação n! foi introduzida por Christian Kramp em 1808.

Definição[editar | editar código-fonte]

A função fatorial é normalmente definida por:

n!=\prod_{k=1}^n k\qquad\forall n\in\mathbb{N}

Por exemplo,

5! = 1 \times 2 \times 3 \times 4 \times 5 = 120

Note que esta definição implica em particular que

0! = 1

porque o produto vazio, isto é, o produto de nenhum número é 1. Deve-se prestar atenção neste valor pois este faz com que a função recursiva

(n + 1)! = n! \times (n + 1)

funcione para n = 0.

A função fatorial também pode ser definida (inclusive para não-inteiros) através da função gama:

z!=\Gamma(z+1)=\int_{0}^{\infty} t^z e^{-t}\, dt

A sequência dos fatoriais (sequência A000142 na OEIS) para n = 0, 1, 2,... começa com:

1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800,...

Aplicações[editar | editar código-fonte]

Os fatoriais são importantes em análise combinatória. Por exemplo, existem n! caminhos diferentes de arranjar n objetos distintos numa sequência. (Os arranjos são chamados permutações) E o número de opções que podem ser escolhidos é dado pelo coeficiente binomial. Veja também binômio de Newton.

{n\choose k}={n!\over k!(n-k)!}.

Os fatoriais também aparecem em cálculo. Por exemplo, no teorema de Taylor, que expressa a função f(x) como uma série de série de potências em x. A razão principal é que o n derivativo de xn é n!. Os fatoriais também são usados extensamente na teoria da probabilidade.

Os fatoriais são também frequentemente utilizados como exemplos simplificados de recursividade, em ciência da computação, porque satisfazem as seguintes relações recursivas: (se n ≥ 1):

n! = n (n − 1)!

Como Calcular Fatoriais[editar | editar código-fonte]

O valor numérico de n! pode ser calculado por multiplicação repetida se n não for grande demais. É isto que as calculadoras fazem. O maior fatorial, que a maioria das calculadoras suportam é 69!, porque 70! > 10100.

Quando n é grande demais, n! pode ser calculado com uma boa precisão usando a aproximação de Stirling:

n!\sim \sqrt{2\pi n}\left(\frac{n}{e}\right)^n.

Esta é uma versão simplificada que pode ser provada usando a matemática básica do ensino secundário; a ferramenta essencial é a indução matemática. Esta é aqui apresentada na forma de um exercício:

\left({n \over 3}\right)^n <n! < \left({n \over 2}\right)^n\ \mbox{se}\ n\geq 6.

Logaritmo de Fatorial[editar | editar código-fonte]

O logaritmo de um fatorial pode ser usado para calcular o número de dígitos que a base de um fatorial irá ocupar. ln(n!) pode ser facilmente calculado da seguinte forma:

\ln(n!)=\sum_{k=1}^n{\ln(k)}

Note que esta função, demonstrada graficamente, é quase linear para valores baixos; mas o fator {\ln(n!)} \over n cresce de maneira arbitrária, embora vagarosa. Por exemplo, este é o gráfico de seus primeiros 20 mil valores:

Log-factorial.PNG
\ln(n!) \approx n\ln(n) - n + \frac {\ln(n)} {2} + \frac {\ln(2 \pi)} {2}.

Uma boa aproximação para ln(n!) é fazer o logaritmo da fórmula de Stirling.

Generalidades[editar | editar código-fonte]

A função gama similar[editar | editar código-fonte]

A função gama Γ(z) é definida para todos os números complexos z exceto os inteiros não positivos (z = 0, −1, −2, −3, ...). Relaciona-se aos fatoriais pelo fato de que satisfaz um relacionamento recursivo similar àquele da função fatorial:

n!=n(n-1)!
\Gamma(n+1)=n\Gamma(n)

Junto com a definição Γ(1) = 1 isto gera a equação

\Gamma(n+1)=n!\qquad\forall n\in\mathbb{N},n\ge1.

Devido a este relacionamento, a função gama é frequentemente tida como uma generalização da função fatorial para o domínio dos números complexos. Isso é justificado pelas seguintes razões:

  • Significado compartilhado — a definição canônica da função factorial é o relacionamento recursivo mencionado, compartilhado por ambos.
  • Unicidade — a função gama é a única função que satisfaz o relacionamento recursivo mencionado para o domínio dos números complexos e é holomórfica e cuja restrição ao eixo positivo real é convexa no log. Ou seja, é a única função que poderia ser uma generalização da função fatorial.
  • Contexto — a função gama é geralmente usada num contexto similar ao dos factoriais (mas, é claro, onde um domínio mais geral for de interesse).

Multifactoriais[editar | editar código-fonte]

Uma notação relacionada comum é o uso de múltiplos pontos de exclamação para simbolizar um multifactorial, o produto de inteiros em passos de dois (n!!), três (n!!!), ou mais.

n!! denota o factorial duplo de n e é definido recursivamente por


  n!! =
  \left\{
   \begin{matrix}
    1,\qquad\quad\ &&\mbox{se }n=0\mbox{ ou }n=1;
   \\
    n(n-2)!!&&\mbox{se }n\ge2.\qquad\qquad
   \end{matrix}
  \right.

Por exemplo, 8!! = 2 · 4 · 6 · 8 = 384 e 9!! = 1 · 3 · 5 · 7 · 9 = 945. A sequência de factoriais duplos para n = 0, 1, 2,... é :1, 1, 2, 3, 8, 15, 48, 105, 384, 945, 3840, ...

Algumas identidades envolvendo factoriais duplos são:

n!=n!!(n-1)!!
(2n)!!=2^nn!
(2n+1)!!={(2n+1)!\over(2n)!!}={(2n+1)!\over2^nn!}
\Gamma\left(n+{1\over2}\right)=\sqrt\pi{(2n-1)!!\over2^n}

Deve-se ser cuidadoso para não interpretar n!! como o factorial de n!, que deveria ser escrito (n!)! e é um número muito maior (para n>2).

O factorial duplo é a variante mais comumente usada, mas pode-se definir o factorial triplo do mesmo modo (n!!!) e assim por diante. Em geral, o k-ésimo factorial, notado por n!(k), é definido recursivamente como


  n!^{(k)} =
  \left\{
   \begin{matrix}
    1,\qquad\qquad\ &&\mbox{se }0\le n<k;
   \\
    n(n-k)!^{(k)},&&\mbox{se }n\ge k.\quad\ \ \,
   \end{matrix}
  \right.

Hiperfactoriais[editar | editar código-fonte]

Ocasionalmente o hiperfactorial de n é considerado. É escrito como H(n) e definido por


  H(n)
  =\prod_{k=1}^n k^k
  =1^1\cdot2^2\cdot3^3\cdots(n-1)^{n-1}\cdot n^n

Para n = 1, 2, 3, 4,... os valores de H(n) são 1, 4, 108, 27648,...

A função hiperfactorial é similar à factorial, mas produz números maiores. A taxa de crescimento desta função, contudo, não é muito maior que um factorial regular.

Superfactoriais[editar | editar código-fonte]

Neil Sloane e Simon Plouffe definiram o superfactorial em 1995 como o produto dos primeiros n fatoriais. Assim, o superfatorial de 4 é

\mathrm{sf}(4)=1!\times 2!\times 3!\times 4!=288

No geral,


  \mathrm{sf}(n)
  =\prod_{k=1}^n k! =\prod_{k=1}^n k^{n-k+1}
  =1^n\cdot2^{n-1}\cdot3^{n-2}\cdots(n-1)^2\cdot n^1.

A sequência de superfatoriais começa (de n=0) como:

1, 1, 2, 12, 288, 34560, 24883200, ... (sequência A000178 na OEIS)

Esta ideia pode ser facilmente estendida para superduperfatorial como o produto dos primeiros n superfactoriais (iniciando com n=0), assim

1, 1, 2, 24, 6912, 238878720, 5944066965504000, ... (sequência A055462 na OEIS)

e aí em diante, recursivamente para todos os fatoriais múltiplos, onde o m-factorial de n é o produto dos primeiros n (m-1)-factoriais, i.e.

\mathrm{mf}(n,m) = \mathrm{mf}(n-1,m)\mathrm{mf}(n,m-1)
  =\prod_{k=1}^n k^{n-k+m-1 \choose n-k}

onde \mathrm{mf}(n,0)=n para n>0 e \mathrm{mf}(0,m)=1.

Hiperfatoriais (definição alternativa)[editar | editar código-fonte]

Clifford Pickover, no seu livro Keys to Infinity, de 1995, define o superfactorial de n, escrito comodidade n$ (o $ deveria, na verdade, ser um sinal de fatorial ! com um S sobrepusto) como

n\$=n^{(4)}n

onde a notação científica (4) denota o operador hyper4, ou usando a notação da seta de Knuth,

n\$=(n!)\uparrow\uparrow(n!)

Esta sequência de superfatoriais começa quando se usa:

1\$=1
2\$=2^2=4
3\$=6\uparrow\uparrow6=6^{6^{6^{6^{6^6}}}}

Fatoração prima de fatoriais[editar | editar código-fonte]

A potência de p que ocorre na fatoração prima de n! é

\sum_{i=1}^{\infty} \left\lfloor \frac{n}{p^i} \right\rfloor

Esta fórmula permite que fatoriais grandes sejam fatorados eficientemente.

O Teorema de Wilson diz que (p-1)! + 1 é um múltiplo de p se, e somente se, p for um número primo.

Algoritmo[editar | editar código-fonte]

Um exemplo clássico do cálculo de fatorial na linguagem de programação C.

Recursivo[editar | editar código-fonte]

int fatorial (int número) {
    return número == 0 ? 1 : número * fatorial (numero - 1);
}

Iterativo[editar | editar código-fonte]

int fatorial (int numero) {
    int resultado = numero;
    if (numero == 0) resultado++;
    while (numero > 1) resultado *= --numero;
    return resultado;
}

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]