Calcular Probabilidades de Poisson em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderá a calcular probabilidades de Poisson em C. A distribuição de Poisson é uma distribuição de probabilidade que expressa a probabilidade de um determinado número de eventos ocorrerem num intervalo fixo de tempo ou espaço. Primeiro, aprenderá a ler o parâmetro lambda (λ) e o valor de k, e, em seguida, implementará a fórmula da probabilidade de Poisson para calcular a probabilidade de exatamente k eventos ocorrerem num determinado intervalo.

O laboratório cobre o processo passo a passo de escrita de um programa em C para calcular probabilidades de Poisson, incluindo a manipulação de entrada do utilizador, a implementação da fórmula da probabilidade de Poisson e a impressão da probabilidade calculada.

Ler λ (lambda) e k

Neste passo, aprenderá a ler o parâmetro lambda (λ) e o valor de k para calcular probabilidades de Poisson em C. A distribuição de Poisson é uma distribuição de probabilidade que expressa a probabilidade de um determinado número de eventos ocorrerem num intervalo fixo de tempo ou espaço.

Primeiro, vamos criar um novo ficheiro C para implementar o nosso cálculo de probabilidade de Poisson:

cd ~/project
nano poisson_prob.c

Agora, adicione o seguinte código para ler os valores de lambda e k:

#include <stdio.h>
#include <math.h>

int main() {
    double lambda;
    int k;

    printf("Introduza lambda (número médio de eventos): ");
    scanf("%lf", &lambda);

    printf("Introduza k (número de ocorrências): ");
    scanf("%d", &k);

    printf("Lambda (λ): %.2f\n", lambda);
    printf("k: %d\n", k);

    return 0;
}

Exemplo de saída:

Introduza lambda (número médio de eventos): 3.5
Introduza k (número de ocorrências): 2
Lambda (λ): 3.50
k: 2

Vamos analisar o código:

  • Usamos double para lambda para permitir valores decimais.
  • scanf() é usado para ler a entrada do utilizador para lambda e k.
  • O especificador de formato %lf é usado para valores double (long float).
  • O especificador de formato %d é usado para valores inteiros.
  • Imprimimos os valores introduzidos para confirmar a entrada.

Compile o programa:

gcc -o poisson_prob poisson_prob.c -lm

Execute o programa:

./poisson_prob

P(X=k)=e^(-λ)*λ^k/k!

Neste passo, implementará a fórmula da probabilidade de Poisson para calcular a probabilidade de exatamente k eventos ocorrerem num determinado intervalo.

Abra o ficheiro anterior para modificar o código:

cd ~/project
nano poisson_prob.c

Atualize o código para incluir o cálculo da probabilidade de Poisson:

#include <stdio.h>
#include <math.h>

// Função para calcular o fatorial
double factorial(int n) {
    if (n <= 1) return 1;
    double result = 1;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}

// Calcular a probabilidade de Poisson
double poisson_probability(double lambda, int k) {
    double numerator = pow(lambda, k) * exp(-lambda);
    double denominator = factorial(k);
    return numerator / denominator;
}

int main() {
    double lambda;
    int k;

    printf("Introduza lambda (número médio de eventos): ");
    scanf("%lf", &lambda);

    printf("Introduza k (número de ocorrências): ");
    scanf("%d", &k);

    double probability = poisson_probability(lambda, k);

    printf("Lambda (λ): %.2f\n", lambda);
    printf("k: %d\n", k);
    printf("Probabilidade P(X = %d): %.4f\n", k, probability);

    return 0;
}

Compile o programa:

gcc -o poisson_prob poisson_prob.c -lm

Exemplo de saída:

Introduza lambda (número médio de eventos): 3.5
Introduza k (número de ocorrências): 2
Lambda (λ): 3.50
k: 2
Probabilidade P(X = 2): 0.1674

Pontos chave no código:

  • A função factorial() calcula k!
  • poisson_probability() implementa a fórmula da probabilidade de Poisson
  • pow() calcula λ^k
  • exp() calcula e^(-λ)
  • O resultado é a probabilidade de exatamente k eventos ocorrerem.

Execute o programa:

./poisson_prob

Imprimir a Probabilidade

Neste passo final, irá melhorar o programa de cálculo de probabilidade de Poisson, adicionando uma impressão e formatação mais detalhadas da probabilidade.

Abra o ficheiro anterior para modificar o código:

cd ~/project
nano poisson_prob.c

Atualize o código para melhorar a apresentação da probabilidade:

#include <stdio.h>
#include <math.h>

// Função para calcular o fatorial
double factorial(int n) {
    if (n <= 1) return 1;
    double result = 1;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}

// Calcular a probabilidade de Poisson
double poisson_probability(double lambda, int k) {
    double numerator = pow(lambda, k) * exp(-lambda);
    double denominator = factorial(k);
    return numerator / denominator;
}

int main() {
    double lambda;
    int k;

    printf("Calculadora de Probabilidade de Poisson\n");
    printf("---------------------------------------\n");

    printf("Introduza lambda (número médio de eventos): ");
    scanf("%lf", &lambda);

    printf("Introduza k (número de ocorrências): ");
    scanf("%d", &k);

    double probability = poisson_probability(lambda, k);

    printf("\nResultados do Cálculo:\n");
    printf("Lambda (λ): %.2f\n", lambda);
    printf("k: %d\n", k);
    printf("Probabilidade P(X = %d): %.4f\n", k, probability);
    printf("Percentagem: %.2f%%\n", probability * 100);

    return 0;
}

Compile o programa:

gcc -o poisson_prob poisson_prob.c -lm

Exemplo de saída:

Calculadora de Probabilidade de Poisson
---------------------------------------
Introduza lambda (número médio de eventos): 3.5
Introduza k (número de ocorrências): 2

Resultados do Cálculo:
Lambda (λ): 3.50
k: 2
Probabilidade P(X = 2): 0.1674
Percentagem: 16.74%

Melhorias chave:

  • Adicionou um título para a calculadora.
  • Incluiu a representação em percentagem.
  • Melhorou a formatação da saída.
  • Seções de saída mais descritivas.

Execute o programa:

./poisson_prob

Resumo

Neste laboratório, aprendeu a ler o parâmetro lambda (λ) e o valor de k para calcular probabilidades de Poisson em C. Implementou então a fórmula da probabilidade de Poisson para calcular a probabilidade de exatamente k eventos ocorrerem num determinado intervalo. A distribuição de Poisson é uma distribuição de probabilidade que expressa a probabilidade de um determinado número de eventos ocorrerem num intervalo fixo de tempo ou espaço. Também aprendeu a criar uma função fatorial para suportar o cálculo da probabilidade de Poisson.

Os passos-chave abordados neste laboratório incluem a leitura dos valores de entrada, o cálculo da probabilidade de Poisson usando a fórmula P(X=k)=e^(-λ)*λ^k/k! e a impressão da probabilidade resultante.