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
doublepara lambda para permitir valores decimais. scanf()é usado para ler a entrada do utilizador para lambda e k.- O especificador de formato
%lfé usado para valoresdouble(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 Poissonpow()calcula λ^kexp()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.



