1. Crie um programa que calcule o desvio padrão para o lucro das N simulações do exercício anterior (3). Dica: math. sqrt () .

Passo 1

O enunciado pede: criar um programa que calcule o desvio padrão para o lucro das N simulações do exercício anterior. Informações dadas e assumidas:
  • Temos uma lista com os lucros das N simulações; chamo essa lista de \{x_1,x_2,\dots,x_N\}.
  • O número de simulações é N (ou seja, N = tamanho da lista).
  • A dica indica usar \texttt{math.sqrt()} para obter a raiz quadrada.
  • Vou assumir que queremos o desvio padrão populacional (denominador N), porque estamos calculando a dispersão dos N resultados simulados, todos disponíveis.
O que o programa deve fazer, então:
  • Receber os N lucros (por exemplo, uma lista).
  • Calcular a média dos lucros.
  • Calcular a variância populacional.
  • Tirar a raiz quadrada da variância para obter o desvio padrão.
  • Tratar casos especiais (lista vazia).

Passo 2

O que é média aritmética e como calculá-la aqui.
A média aritmética \bar{x} de N valores x_1,\dots,x_N é a soma dos valores dividida por N:
\bar{x} = \frac{1}{N}\sum_{i=1}^{N} x_i.
Explicando as partes:
  • \bar{x} é a média (o “centro” dos dados).
  • x_i é o i-ésimo lucro.
  • \sum_{i=1}^{N} x_i significa somar todos os lucros.
  • Depois dividimos por N para obter a média.
Na prática, em Python: calcular a soma com \texttt{sum(lista)} e dividir por \texttt{len(lista)}.

Passo 3

O que é variância e por que usamos quadrados das diferenças.
A variância populacional \sigma^2 mede a média dos quadrados das diferenças entre cada valor e a média:
\sigma^{2} = \frac{1}{N}\sum_{i=1}^{N} (x_i - \bar{x})^{2}.
Explicando:
  • Cada x_i - \bar{x} é o desvio do i-ésimo valor em relação à média.
  • Elevamos ao quadrado para que desvios negativos não cancelem positivos e para dar peso maior a desvios maiores.
  • Somamos todos esses quadrados e dividimos por N (população).
O desvio padrão \sigma é a raiz quadrada da variância:
\sigma = \sqrt{\sigma^{2}}.
Por isso a dica de usar \texttt{math.sqrt()}.

Passo 4

Por que escolhi a fórmula populacional (dividir por N) e não a amostral (dividir por N-1).
  • Fórmula populacional (denom. N) descreve a dispersão dos próprios N resultados que você tem — faz sentido quando você tem todas as simulações que quer analisar.
  • Fórmula amostral (denom. N-1) é usada quando você quer estimar a variância de uma população maior a partir de uma amostra. Aqui, como a pergunta fala dos N lucros das simulações, estamos usando a fórmula populacional.
    Se precisar do desvio amostral na prova, a única mudança é dividir por N-1 em vez de N (e tratar N<2 como caso inválido).

Passo 5

Algoritmo passo a passo que o programa fará (duas passagens simples):
  1. Calcular N = número de elementos da lista. Se N = 0, lançar erro (não faz sentido calcular).
  2. Calcular \bar{x} = \dfrac{1}{N}\sum_{i=1}^{N} x_i.
  3. Calcular \text{S} = \sum_{i=1}^{N} (x_i - \bar{x})^{2}.
  4. Calcular \sigma^{2} = \dfrac{\text{S}}{N}.
  5. Calcular \sigma = \sqrt{\sigma^{2}} com \texttt{math.sqrt()}.
  6. Retornar \sigma.
Complexidade: tempo O(N) (duas passadas sobre os dados) e memória adicional O(1).

Passo 6

Exemplo numérico passo a passo (para você ver que fica bem “mastigado”).
Suponha os lucros \{100,120,80,90\}. Aqui N=4.
  1. Média:
\bar{x} = \frac{100+120+80+90}{4} = \frac{390}{4} = 97{,}5.
  1. Diferenças e quadrados:
100-97{,}5 = 2{,}5,\quad (2{,}5)^2 = 6{,}25;
120-97{,}5 = 22{,}5,\quad (22{,}5)^2 = 506{,}25;
80-97{,}5 = -17{,}5,\quad (-17{,}5)^2 = 306{,}25;
90-97{,}5 = -7{,}5,\quad (-7{,}5)^2 = 56{,}25.
  1. Soma dos quadrados:
\text{S} = 6{,}25 + 506{,}25 + 306{,}25 + 56{,}25 = 875.
  1. Variância populacional:
\sigma^{2} = \frac{875}{4} = 218{,}75.
  1. Desvio padrão:
\sigma = \sqrt{218{,}75} \approx 14{,}797.
Isso confirma que o processo funciona e dá números plausíveis.

Passo 7

Casos especiais e escolhas de implementação prática:
  • Lista vazia ( N=0): não dá para calcular média; o programa deve levantar um erro (ou retornar None). Vou escolher lançar um ValueError com mensagem clara.
  • Lista com um único valor ( N=1): variância populacional será zero (diferença ao quadrado é zero), então o desvio padrão é 0,0.
  • Se quiser o desvio amostral em vez do populacional, mudar o divisor para N-1 e exigir N\ge 2.
  • Se os lucros forem valores grandes, cuidado com erro numérico: implementação em duas passadas (média depois soma dos quadrados das diferenças) é estável o suficiente para a maioria dos casos de prova. Há algoritmos de uma passada (Welford) para maior estabilidade numérica, mas não é necessário aqui.

Passo 8

Implementação em Python (explicação do que cada linha faz, depois eu te dou o código final):
  • Importar math.
  • Definir uma função que recebe a lista de lucros.
  • Calcular N com \texttt{len()}.
  • Calcular a média com \texttt{sum() / N}.
  • Somar (x - \text{média})**2é para cada x.
  • Dividir pela quantidade N e aplicar \texttt{math.sqrt()}.
  • Retornar o valor.
Agora, no campo de resposta final eu coloco o programa pronto para você copiar e rodar.

Resposta

import math

def desvio_padrao_populacional(lucros):
    """
    Calcula o desvio padrão populacional dos lucros.
    lucros: iterável de números (lista, tupla, etc.)
    Retorna: desvio padrão (float)
    Lança ValueError se a lista estiver vazia.
    """
    n = len(lucros)
    if n == 0:
        raise ValueError("A lista de lucros está vazia; não é possível calcular o desvio padrão.")
    # média
    media = sum(lucros) / n
    # soma dos quadrados das diferenças
    soma_quadrados = 0.0
    for x in lucros:
        diff = x - media
        soma_quadrados += diff * diff
    # variância populacional
    variancia = soma_quadrados / n
    # desvio padrão
    return math.sqrt(variancia)

# Exemplo de uso:
# lucros = [100, 120, 80, 90]
# print(desvio_padrao_populacional(lucros))  # deve imprimir perto de 14.797

Exercícios relacionados