14.3.07

Linux no Blog: Gnu Scientific Library

tópico sujerida por Vagner Jeger (http://blogoeublogastu.blogspot.com/)


Para quem não conhece a Gnu Scientific Library (GSL), trata-se de uma biblioteca matemática para programadores em C e C++ totalmente gratuíta. A GSL disponibiliza um amplo espectro de rotinas matemáticas, tais como número aleatórios, funções especiais, métodos de regressão linear e não linear, transformadas rápidas de Fourier, etc. Esta biblioteca pode ser baixada daqui


Em programação matemática é muito comum a utilização de números aleatórios. É muito comum também encontrarmos programadores que não se preocupam com a confiabilidade e a performance do gerador de números aleatórios utilizado. Claro que o nível de preocupação que se deve ter é proporcional à relevância do trabalho que está sendo desenvolvido e também a quantidade de números que serão sorteados. Se estamos sorteando números para um bolão da Mega Sena não há a necessidade dessa preocupação, mas se estamos realizando uma simulação com método Monte Carlo por exemplo, aí sim devemos nos preocupar.

A geração de números aleatórios confiáveis e o que significa esta confiabilidade é um assunto bastante complexo e não vamos entrar em maiores detalhes. Sumariamente falando, os números aleatórios gerados por um computador são obtidos de forma recursiva. Estes números constituem uma sequência com a seguinte particularidade: os últimos k números gerados determinam a sequência seguinte. Esta sequência é finita e o seu tamanho é usualmente denominado de período ou tamanho do ciclo. Em outras palavras, existe uma quantidade finita de elementos que podem ser gerados até que comecem a ser geradas sequências repetidas. A performance ou velocidade que estes números serão gerados irá depender do algoritmo utilizado e evidentemente dá sua máquina. Existem dezenas de algorítmos conhecidos, dos mais simples ao mais sofisticados (para saber mais sobre geradores de números aleatórios, clique aqui. Um gerador de números aleatórios bastante utilizado no meio científico é o Mersene Twister 19937. Trata-se de um excelente gerador, de período longo (2 elevado a 19937 - 1) e boa performance (para saber mais sobre a performance dos geradores, clique aqui. Quem já está familiarizado com a GSL, não terá dificuldade em utilizar algumas funções específicas com a finalidade de gerar números aleatórios, sejam inteiros, reais, com uma distribuição uniforme, gaussiana ou outras. Mas de qualquer forma segue abaixo um pequeno exemplo mostrando a inicialização do gerador.




















(endereço dafigura acima: http://www.ift.unesp.br/users/wanzeler/Program.jpg)

1 Comments:

At 26/3/08 23:30, Blogger Jeferson dos Santos said...

Por um acaso vc tem algum tuto prático de c++? To querendo aprender mas ainda nao achei um que seja simples e objetivo.



Abraços
Jeferson Santos
http://www-linux.blogspot.com

 

Postar um comentário

<< Home