sexta-feira, 29 de maio de 2009

Distribuição Binomial



Força Bruta é para os fracos!

Se você precisa realizar alguma operação que envolva a distribuição binomial, nem tente calcular o termo B(N,n,p) através de sua fórmula padrão (envolvendo coeficiente binomial). Para uma certa combinação de valores entre N e n, o coeficiente binomial será um número tão grande que somente com o auxílio de alguma biblioteca especializada (tal como a GMP) você conseguirá calculá-lo. Além do mais, isto tornaria seu programa muito, eu disse muito, lento.

Há uma técnica rápida, que utiliza uma relação de recorrência existente para os termos da distribuição binomial. A referida relação pode ser vista na figura ao lado. Sabendo que o pico de uma distribuição binomial ocorre em n=nmax=pN, fazemos B(N,nmax,p)=1.0 e calculamos os demais termos através da
relação. No fim, basta normalizar a curva, i.e, dividir cada termo da distribuição pela soma de todos os termos.

Aqui segue um código que escrevi para calcular a distribuição utilizando a técnica descrita acima:

const N = 100;
long double p;
long double B[N+1];
long double Sum_B;
int nmax;

nmax = int(N * p);

B[nmax] = 1.0;

for(int n = nmax+1; n <= N; n++)
B[n] = B[n-1] * double(N-n+1)/double(n) * (p/(1.0-p));

for(int n = nmax-1; n >=0; n--)
B[n] = B[n+1] * (double(n+1)/double(N-n)) * ((1.0-p)/p);

Sum_B=0.0;
for(int n = 0; n <= N; n++)
Sum_B = Sum_B + B[n];

for(int n = 0; n <= N; n++)
B[n]=B[n]/Sum_B;

//Aqui, B[n] é a distribuição binomial B(N,n,p)

//Darlan Araújo Moreira (2009)



Referências:
M.E.J. Newman and R. M. Ziff, Physical Review E, 64, 016706 (2001)

segunda-feira, 11 de maio de 2009

GNU

Programas científicos sofisticados, em geral, incluem muitas etapas que envolvem algoritmos clássicos (aqueles contidos no Numerical Recipies: busca por zeros, cálculo de auto-valores, geradores de números aleatórios, wavelets, etc). A implementação (codificação + teste) de tais algoritmos consome um tempo considerável. Este tempo pode ser poupado com uso de bibliotecas públicas disponíveis na internet.
Destacamos duas bibliotecas públicas que são distribuidas sob a égide da GNU:

GNU Scientific Library
Biblioteca científica da GNU - Esta biblioteca contém muitos dos métodos numéricos clássicos.


GNU multiple precision arithmetic library
Biblioteca para aritmética de alta precisão - Trabalha com a precisão que a memória do seu computador permitir. É utilizada para o cálculo de Pi com milhões de casas decimais.

GNU é um acrônimo recursivo: GNU's Not Unix. A idéia básica por trás do GNU é a liberdade na distribuição dos códigos (você pode até cobrar pelo ato físico de executar a cópia de um código GNU, mas não pode cobrar pelo código). Esta distribuição gratuita de códigos e permissão para liberdade total em seus empregos gera benefícios para todos.




domingo, 10 de maio de 2009

Em uma aula de Direito...
Professor
: - O que é uma fraude ?
Aluno: - É o que o Sr. Professor está fazendo.
Professor
: - (O professor muito indignado) Explique-se...
Aluno
: - Segundo o Código Penal comete fraude todo aquele que se aproveita da ignorância do outro para prejudicá-lo!!!

terça-feira, 5 de maio de 2009

Algumas razões para ser um cientista!


A seguir há um link para um uma excelente fonte de incentivo para aqueles que, apesar de se sentirem vocacionados, não se sentem motivados o suficiente para se tornarem um cientista!

Sugestão de leitura: Vitaly L. Ginzburg - Página 27.

Download PDF 2.9 MB.

sexta-feira, 1 de maio de 2009

A liberdade de ver os outros



“Dois peixinhos estão nadando juntos e cruzam com um peixe mais velho, nadando em sentido contrário. Ele os cumprimenta e diz:

Bom dia, meninos. Como está a água?

Os dois peixinhos nadam mais um pouco, até que um deles olha para o outro e pergunta:

Água? Que diabo é isso?

Não se preocupem, não pretendo me apresentar a vocês como o peixe mais velho e sábio que explica o que é água ao peixe mais novo. Não sou um peixe velho e sábio. O ponto central da história dos peixes é que a realidade mais óbvia, ubíqua e vital costuma ser a mais difícil de ser reconhecida. Enunciada dessa forma, a frase soa como uma platitude – mas é fato que, nas trincheiras do dia-a-dia da existência adulta, lugares comuns banais podem adquirir uma importância de vida ou morte.

Texto Completo: PDF

Um dos escritores mais admirados de sua geração, o americano David Foster Wallace se suicidou no mês passado, aos 46 anos, enforcando-se. Este texto foi tirado de seu discurso de paraninfo para formandos do Kenyon College, há três anos. (Revista Piauí - out/2008)