- Imprima o resultado da função sigmóide aplicada em 3 pontos aleatórios usando a função random.random do módulo random (import random).
Passo 1
O enunciado pede para imprimir o resultado da função sigmóide aplicada em 3 pontos aleatórios gerados com a função
random.random do módulo random (faça import random). Informações relevantes fornecidas:- Usar a função sigmóide.
- Gerar 3 pontos aleatórios usando
random.random. - Imprimir os resultados (ou seja, aplicar a sigmóide a cada ponto e mostrar o valor).
Passo 2
O que é a função sigmóide e qual a fórmula que vamos usar. A sigmóide (também chamada de função logística) é uma função que transforma um número real em um valor entre 0 e 1. A definição matemática é:
onde:
-
é o valor da sigmóide no ponto ; -
é a base dos logaritmos naturais (aproximadamente ); -
é o número real de entrada (no nosso caso, cada número aleatório gerado por random.random).
Por que essa fórmula funciona (intuição curta): para valores grandes de
temos
pequeno e
perto de
; para valores muito negativos de
temos
muito grande e
perto de
. No intervalo intermediário a função é contínua e em forma de S.
Passo 3
Como gerar 3 pontos aleatórios com . Se quisermos resultados reproduzíveis (útil para estudo e para mostrar um exemplo fixo), podemos fixar uma semente com
random.random. A função random.random() retorna um número em ponto flutuante no intervalo
random.seed(valor). Vou usar random.seed(42) para que qualquer pessoa rodando o mesmo código obtenha exatamente os mesmos 3 números aleatórios (a instrução original continua sendo “aleatórios”, estamos apenas tornando o exemplo determinístico para fins didáticos).Com
random.seed(42) os três primeiros valores retornados por random.random() são (obtidos executando o gerador padrão do Python):Obs.: Eu peguei esses números do gerador do Python depois de fixar a semente com
42. Se você não definir semente, os números serão diferentes a cada execução — mas o procedimento é o mesmo.Passo 4
Como calcular a sigmóide em um número passo a passo. Para cada
usaremos a fórmula
. Passos para cada ponto:
- calcular
(a exponencial negativa); - somar
; - inverter para obter
.
Vou fazer isso para cada um dos três
, mostrando aproximações decimais razoáveis para que você consiga reproduzir à mão se precisar.
Passo 5
Cálculo para
.
- Calcular
. Aproximando: (usei expansão/exponenciação numérica para essa aproximação). - Somar:
- Inverter:
Passo 6
Cálculo para
.
- Calcular
. Aproximação via série: - Somar:
- Inverter:
Passo 7
Cálculo para
.
- Calcular
. Aproximação: - Somar:
- Inverter:
Passo 8
Código Python completo (copie e cole em um arquivo .py ou em um REPL Python). Esse código fixa a semente para reproduzibilidade, gera os 3 pontos aleatórios, define a função sigmóide e imprime os resultados com 6 casas decimais:
import random
import math
random.seed(42) # fixa semente para exemplo reproduzível
def sigmoid(x):
return 1.0 / (1.0 + math.exp(-x))
for _ in range(3):
x = random.random()
s = sigmoid(x)
print(x, s)
Se você quiser apenas os valores da sigmóide formatados com 6 casas:
for _ in range(3):
x = random.random()
print("{:.16f} -> {:.6f}".format(x, sigmoid(x)))