- Transforme a rotina sigmoide em função sigmoide usando a palavra reservada return, no lugar de print.
Passo 1
O enunciado pede que a rotina chamada “sigmoide” que atualmente usa
print seja transformada em uma função que use a palavra reservada return para devolver o valor calculado. Informações relevantes que temos (presumidas, pois é o caso padrão nesta tarefa):- A função deve receber um número
(um escalar real). - A função deve calcular a função sigmoide clássica.
- Em vez de apenas imprimir o resultado na tela com
print, a função deve retornar o valor comreturn(para que possamos usar esse valor em outras partes do código).
Passo 2
Antes de codificar, vamos lembrar a fórmula matemática da sigmoide. A função sigmoide é definida por:
Explicando cada símbolo:
-
é a entrada (um número real). -
é a base dos logaritmos naturais (aprox. 2,718…). -
é o valor de saída, que fica no intervalo .
Um valor prático famoso: para
,
Passo 3
Agora vamos transformar essa fórmula em código Python. Estrutura básica de uma função em Python:
def nome_da_funcao(parametros):inicia a função.return valordevolve o valor calculado para quem chamou a função.
Implementação direta (forma simples):
- Usamos
math.exppara calcular. - A função recebe
xe devolve1 / (1 + math.exp(-x)).
Exemplo de código (explicando cada parte):
import mathimporta funções matemáticas (comoexp).def sigmoide(x):define a função com parâmetrox.return 1 / (1 + math.exp(-x))calcula a fórmula e retorna o resultado.
Passo 4
Por que
return e não print?print(...)apenas escreve algo na saída padrão (tela). A função que usaprintdevolveNone, logo você não pode armazenar ou reutilizar o resultado.return ...faz a função devolver o valor calculado ao chamador. Assim você pode fazery = sigmoide(0)e trabalhar comy.
Exemplo prático do problema com
print (para comparar):- Se tivéssemos
def sigmoide(x):
print(1 / (1 + math.exp(-x)))
entãoy = sigmoide(0)fariayserNonee apenas mostraria0.5na tela — isto é pouco útil em programas maiores.
Passo 5
Vamos testar mentalmente a função com alguns valores para ver como é o resultado (mostrando como calcular na prova):
- Para
: - Para
: primeiro calcule . Sabemos que . Então
Esses cálculos mostram como avaliar a função na prova sem depender só da implementação.
Passo 6
Observação sobre estabilidade numérica (útil em provas/implementações): para valores muito negativos de
o cálculo de
pode estourar (ficar muito grande). Uma implementação numericamente estável usa duas formas equivalentes dependendo do sinal de
:
- Se
: - Se
: usar a forma que evita calcular grande. Em código, isso vira um ifque melhora robustez para entradas grandes em módulo.
Passo 7
Também existe versão para arrays (vetores) usando NumPy, se precisar aplicar a sigmoide elemento a elemento em listas ou vetores. Exemplo simples:
import numpy as npdef sigmoide_np(x): return 1 / (1 + np.exp(-x))
Essa versão aceitaxcomo um arraynp.ndarrayou como escalar.
Passo 8
Resumo prático do que você precisa colocar na prova:
- Declare a função com
def sigmoide(x):. - Dentro da função, calcule a fórmula da sigmoide.
- Use
returnpara devolver o resultado, nãoprint. - Se quiser ser cuidadoso com overflow, use a versão condicional mostrada no Passo 6.
Resposta
import math
def sigmoide(x):
return 1 / (1 + math.exp(-x))
return 1 / (1 + math.exp(-x))