Subfatorial
O subfatorial, representado pelo símbolo $\large !n$, também conhecido como permutação caótica, fatorial reverso ou inverso fatorial, é um conceito intrigante e menos conhecido que o fatorial tradicional.
Ele se refere ao número de permutações de $n$ elementos em que nenhum elemento está na sua posição original. Imagine um conjunto de $n$ pessoas em uma fila. O subfatorial de $n$ conta quantas maneiras diferentes podemos organizar essa fila sem que ninguém esteja no mesmo lugar que estava inicialmente.
Fórmula:
$$\large !n = n! \sum_{k=0}^n \dfrac{(-1)^k}{k!}$$
Sendo:
- $n! :$ Fatorial de $n.$
- $\sum_{k=0}^n:$ Representa a soma dos $k$ termos, de $0$ até $n.$
- $(-1)^k:$ Um negativo elevado à potenciação do $k$ termo.
- $k! :$ Fatorial do $k$ termo.
Python :
numero = n
fat = 1
valor = []
for n in range(numero+1):
num = 1
w = max(list(num := num * s if n > 0 else 1 for s in list(reversed(range(0, n+1)))))
t = (-1)**n / w
valor.append(t)
fat_num = max(list(fat := fat * s for s in list(reversed(range(1, numero+1)))))
subf = fat_num * sum(valor)
Julia :
subf = factorial(n) * sum(map(x -> (-1)^x / factorial(x), n:-1:0))
Libs:
Exemplo
$$\small !4 = 4! \cdot \left[ \dfrac{(-1)^0}{0!} + \dfrac{(-1)^1}{1!} + \dfrac{(-1)^2}{2!} + \dfrac{(-1)^3}{3!} + \dfrac{(-1)^4}{4!} \right]$$
$$\small !4 = 24 \cdot \left[ \dfrac{1}{1} + \dfrac{-1}{1} + \dfrac{1}{2} + \dfrac{-1}{6} + \dfrac{1}{24} \right]$$
$$\small !4 = 24 \cdot \left[ 1 + (-1) + 0.5 + (-0.166) + 0.0416 \right]$$
$$!4 = 24 \cdot 0.375$$
$$\color{lime} !4 = 9$$
Python
numero = 4
fat = 1
valor = []
for n in range(numero+1):
num = 1
w = max(list(num := num * s if n > 0 else 1 for s in list(reversed(range(0, n+1)))))
t = (-1)**n / w
valor.append(t)
fat_num = max(list(fat := fat * s for s in list(reversed(range(1, numero+1)))))
subf = fat_num * sum(valor)
Julia
n = 4
subf = factorial(n) * sum(map(x -> (-1)^x / factorial(x), n:-1:0))
Quando usar o subfatorial:
- O número de formas de misturar objetos sem que fiquem nas posições originais.
- Problemas como o “problema dos chapéus” (quantas formas diferentes $n$ pessoas podem pegar chapéus que não sejam os seus?).
Primorial
O primorial é uma operação matemática, denotada pelo símbolo $\large \#$ que consiste no produto dos números primos até o número inteiro dado.
Exemplo
$$\large 5\# = 5 \cdot 3 \cdot 2 = 30$$
Libs:
Termial
O termial é uma operação matemática, denotada pelo símbolo $\large ?$ que consiste na soma de todos os números inteiros positivos de 1 até um número inteiro não negativo dado.
Exemplo
$$\large 5? = 5 + 4 + 3 + 2 + 1 = 15$$
O termial pode ser definido através da função::
$$\large n? = \frac{n^2 + n}{2}$$
Exemplo
$$\large 5? = \dfrac{5^2 + 5}{2} \to \dfrac{30}{2} \to 15$$
Python :
sum(list(reversed(range(1, x+1))))
sum(reversed(range(1, x+1)))
sum(range(x, 0, -1))
Julia :
sum(x:-1:1)
sum(reverse(range(1, x)))
sum(range(x, 1, step=-1))
sum(collect(x:-1:1))
Deixe um comentário