Fatorial
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.
Índice |
Definição [editar]
A função fatorial é normalmente definida por:
Por exemplo,
Note que esta definição implica em particular que
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
funcione para n = 0.
A função fatorial também pode ser definida (inclusive para não-inteiros) através da função gama:
A sequência dos fatoriais (sequência A000142 na OEIS) para n = 0, 1, 2,... começa com:
Aplicações [editar]
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.
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]
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:
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:
Logaritmo de Fatorial [editar]
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:
Note que esta função, demonstrada graficamente, é quase linear para valores baixos; mas o fator
cresce de maneira arbitrária, embora vagarosa. Por exemplo, este é o gráfico de seus primeiros 20 mil valores:
Uma boa aproximação para ln(n!) é fazer o logaritmo da fórmula de Stirling.
Generalidades [editar]
A função gama similar [editar]
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:
Junto com a definição Γ(1) = 1 isto gera a equação
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]
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
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:
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
Hiperfactoriais [editar]
Ocasionalmente o hiperfactorial de n é considerado. É escrito como H(n) e definido por
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]
Neil Sloane e Simon Plouffe definiram o superfactorial em 1995 como o produto dos primeiros n fatoriais. Assim, o superfatorial de 4 é
No geral,
A sequência de superfatoriais começa (de n=0) como:
Esta idéia pode ser facilmente estendida para superduperfatorial como o produto dos primeiros n superfactoriais (iniciando com n=0), assim
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.
onde
para
e
.
Hiperfatoriais (definição alternativa) [editar]
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
onde a notação científica (4) denota o operador hyper4, ou usando a notação da seta de Knuth,
Esta sequência de superfatoriais começa quando se usa:
Fatoração prima de fatoriais [editar]
A potência de p que ocorre na fatoração prima de n! é
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]
Um exemplo clássico do cálculo de fatorial na linguagem de programação C.
Recursivo [editar]
int fatorial (int numero) { if (!numero) return 1; return numero * fatorial (numero - 1); }
Iterativo [editar]
int fatorial (int numero) { int resultado = numero; if (numero == 0) resultado++; while (numero > 1) resultado *= --numero; return resultado; }




























