Opção à emulação: coLinux

9 de Maio de 2009, por Desconhecido - 0sem comentários ainda

O coLinux é um projeto razoavelmente velho, parece estar ativo pelo menos desde 2004, e que é uma opção ao VBox e outras ferramentas para emular sistemas operacionais. É comum usarmos estas ferramentas para rodarmos um sistema Unix junto com o Microsoft Windows. O problema é que os recursos de sistema não são compartilhados. Daí a vem a idéia: o coLinux realiza uma CVM (Cooperative Virtual Machine), compartilhando diversos recursos entre os dois sistemas operacionais, criando um ambiente quase nativo para o Linux.

... If Linux runs on every architecture, why should another operating system be in its way?

Acesse o wiki do projeto aqui. Sinceramente, só de ver a possibilidade de usar o Shell no meu Windows já me agrada bastante... Ops, não tenho mais Windows instalado... ¬¬

Logo que postei sobre o coLinux em meu Twitter, um colega enviou uma obsrvação sobre esta opção que vale a pena ler. Eu não tive estes problemas, mas vai de sistema pra sistema.O coLinux também compartilha recursos físicos como som (veja aqui sobre compatibilidade) e vídeo (via XcoLinux).

Vale comentar que muitos estão utilizando o Ubuntu como linux cooperativo, embora isto não seja necessário: qualquer distribuição linux pode ser usada (me parece que até Slackware, para os mais descrentes). Abaixo, um exemplo em que o usuário está usando KDE.

Que tal agora um outro com Fedora, que é meu atual xodózinho Rindo

Bom, está é só uma pequena divulgação desta ferramenta, principalmente porque a última versão lançada parece razoavelmente estável e pode ajudar algum possível leitor perdido que vier parar por estas bandas...

Em caso de experiências e possíveis comentários, pls post!



Flutuações e Estatística: Modelagem para o Decaimento Radioativo

6 de Maio de 2009, por Desconhecido - 1Um comentário

Na verdade, eu fiquei super impressionado com o SlideShare ao ver o prof. Ewout usá-lo, então quis postar aqui um trabalho que realizei no primeiro semestre de 2008 que me tomou praticamente por completo.

No curso de física aqui do IFSC, temos uma disciplina chamada de Laboratório Avançado. Toda sexta, fazemos uma experiência (em geral envolvendo física moderna). Na semana seguinte, apresentamos um relatório sobre como correu a experiência e quais resultados foram obtidos. Ao final do semestre, uma das práticas deve ser apresentada em um Workshop, oralmente, frente a uma banca examinadora. A banca decide parte da nota final da disciplina. O tema do Workshop é escolhido logo no começo das aulas. A seguir, o Workshop em que trabalhei.

Flutuações e Estatísticas: Estudo sobre o Decaimento Radioativo

A idéia era investigar o decaimento radioativo do césio e tentar obter alguma informação estatística sobre a amostra. Eu e meu colega, Brenno, criamos alguns modelos que poderiam descrever muito bem a amostra. Diversos deles faliram, até que um, o mais simples deles, sugeriu uma solução muito interessante. Isto que estou descrevendo aqui não está na apresentação.

A idéia foi criar uma [tex]\sigma[/tex]-álgebra com funções degrau. Definindo que o evento decair é como um sinal que, no domínio do tempo, é como um sinal em degrau, sendo que a subida do degrau ocorre exatamente no tempo em que o decaimento ocorre, usamos unicamente uma hipótese. Seja [tex]A_t[/tex] o evento "decai no tempo t", definido no espaço de probabilidade [tex](\Omega,<A>,\mathcal{P})[/tex], então

 [tex]\mathcal{P}\left( A_{t+s}^C | A_{t}^C \right) = \mathcal{P}\left( A_s \right)[/tex].

Disso, podemos tirar uma relação funcional para a medida [tex]\mathcal{P}[/tex],

 [tex]\mathcal{P}\left( A_t \right) = 1-e^{-\lambda t}[/tex].

À priore, [tex]\lambda[/tex] não significa nada. Porém, se fizermos umas continhas (que prefiro não divulgar nesse momento), podemos definir uma variável aleatória "tempo de espera", que fornece o tempo que demora até que a amostra decaia. A partir do conhecimento de [tex]\mathcal{P}[/tex], descobrimos a distribuição de probabilidade associada a essa variável aleatória. Guess what? A média desta distribuição é exatamente [tex]\lambda^{-1}[/tex]. Isto significa que [tex]\lambda^{-1}[/tex] é exatamente o parâmetro que é usualmente medido: tempo de vida média.

Até agora, trabalhamos com uma [tex]\sigma[/tex]-álgebra que só faz sentido se a amostra contiver apenas um objeto que pode decair. Em geral, uma amostra de césio, por exemplo, têm diversos objetos instáveis que decaem aleatoriamente. Criamos para descrição completa uma segunda hipótese: os diversos decaimentos não dependam um do outro. Assim, é possível criar um espaço amostral que é o produto do espaço original (algo como [tex]\Omega^N[/tex], seguindo a notação). Neste caso, fica fácil provar que a distribuição de probabilidade para algum objeto decair deve ser uma distribuição binomial.

O problema está no fato de a distribuição binomial ser a pior distribuição em termos estatísticos (ok, estamos agora mudando de disciplina, ok?). Isto porque é difícil conseguir, por exemplo, um bom estimador não viciado com esta distribuição. Com mais alguns passos, é possível provar que uma certa variável aleatória é dada pela soma das diversas funções degrau e caimos na distribuição normal, que é bem simples de ser tratada. Também conseguimos demonstrar que pode haver uma tendência em distribuição para Poisson, outro caso bem simples.

O resto está na apresentação. Ainda queremos continuar este trabalho, porque temos alguns modelos diferentes que sugerem correções e novas soluções que, para decaimentos  radioativos não fazem sentido algum, mas que para outras áreas podem ser úteis. Se você tiver algum conhecimento no assunto, por favor comente o que acha disso tudo e se tiver interesse em conhecer nossos modelos de verdade (afinal, estou passando por cima dos dados mais importantes e não comprovei nada do que disse), podemos tentar algum contato. Ambos, eu e o Brenno, temos interesse em levar isto adiante, mas não é nosso projeto principal.

Para ser sincero, no estágio em que este trabalho está, ele pode na verdade ser encarado como um grande exercício de probabilidade e estatística.



Instalação Leksah em Fedora 10

6 de Maio de 2009, por Desconhecido - 0sem comentários ainda

Leksah é uma IDE para Haskell (talvez a única dedicada) que trata dos seus programas como projetos e organiza suas tarefas. O Leksah é escrito em Haskell mesmo e usa outros programas para auxiliar sua execução. E é aí que o problema mora: a instalação no Windows e Ubuntu parecem estar bem documentadas e existem diversos tutoriais passo a passo para se seguir. No entanto, encontrei diversas dificuldades ao tentar instalá-lo no Fedora 10. Segue então o que eu fiz para conseguir instalá-lo.

Primeiramente, instale os seguintes pacotes (que podem ser encontrados no repositório padrão):

  1. haskell
  2. cabal-install
  3. ghc-gtk2hs-common (ghc-gtk2hs-compat)
  4. gtksourceview2
  5. ghc-gtksourceview2

Os nomes dos pacotes devem bater com os nomes corretos a menos das versões. O Leksah verifica se as versões dos pacotes presentes no sistema obedecem a uma certa regra (em geral, os pacotes têm uma versão mínima). No repositório padrão do Fedora 10, todos os pacotes estão em versões aceitáveis para o Leksah.

Após a instalações destes pacotes, abra o terminal e execute o seguinte comando como root.

# cabal update

Isto deverá baixar novos arquivos para o cabal, e dentre eles está toda a instalação do Leksah. Então, execute também como root o seguinte comando.

# cabal install leksah

Quando finalizado, uma mensagem de sucesso deverá ser a última linha em seu terminal Rindo

Eu gostaria de dar uma certa atenção ao quinto pacote: ghc-gtksourceview2. Este pacote não é dependência do gtksourceview (que instala a conhecida biblioteca GTKSourceView) e portanto não será instalado automaticamente. Um problema que notei ser frequente é a ausência deste pacote gerar uma mensagem de erro esquisita: em vez de avisar sobre a ausência do ghc-gtksourceview2, ele fala que o gtksourceview tem versão inferior à que é requerida.

Este pacote encrenqueiro é muito importante para que o Leksah (suas janelas) rodem corretamente.Trata-se de um binding do gtksourceview para o ghc.

A Gtk+ binding for the functional language Haskell featuring automatic memory management, unicode support, and wide coverage of Gtk+ 2 widgets.
This package contains a Haskell binding of the gtksourceview2 library.

Outra questão que pode tomar algum tempo é sobre a localização do executável. Segundo documentação, o executável deveria estar localizado em /usr/local/leksah-x.xx.xx/bin/leksah ou em algum local que deveria estar definido no arquivo de instalação. Além de ser complicado de encontrar o arquivo de instalação do Leksah, note que uma pasta oculta deverá ser criada em seu diretório raiz: /home/USUÁRIO/.cabal/. Em meu sistema, o Leksah foi todo instalado nesta pasta. O caminho final para o executável foi dado como ~/.cabal/bin/leksah, e portanto bastou criar um atalho para este local. Tudo funcionou corretamente.

Não que esta IDE possa fazer falta aos que estão programando em Haskell, mas pode ajudar para aplicações grandes (ou colaborativas). Eu ainda estou mais com o Emacs do que com qualquer outra coisa. Há também a possibilidade de usar o Eclipse.

Comentários, dúvidas ou sugestões (que facilitem nossas vidas!), comentem! : ) Eu gostaria muito de citar os posts do Walrus, que precedem este texto, mas não pude achá-los Triste. Assim que achá-los,adiciono.



Ping pong para medir velocidade da luz?!

21 de Abril de 2009, por Desconhecido - 22 comentários

É bem isso: uns malucos de Youngstown (parece brincadeira o nome, né? mas é em Ohio) utilizaram ping e pong para medir a velocidade da luz com precisão excelente e custos baixíssimos!

Ok, não é a clássica brincadeira de mesa: é a brincadeira em uma rede de computadores. Existe um programa que é chamado pelo nome ping, em que um pacote ethernet é enviado a um endereço determinado (como argumento). Quer ver um negócio legal? Eu não sei como se faz isso em Windows (se alguém aí souber, post please!), mas se você tiver um linux em mãos, teste:

# ping -c 5 stoa.usp.br

Isto deve fazer com que seu computador envie pacotes para o servidor do Stoa. O servidor envia a você respostas, que são exibidas na sua tela. Algo como...

[thiago@khlovzjertin ~]$ ping -c 5 stoa.usp.br
PING stoa.usp.br (200.144.189.56) 56(84) bytes of data.
64 bytes from web.stoa.usp.br (200.144.189.56): icmp_seq=1 ttl=52 time=28.0 ms
64 bytes from web.stoa.usp.br (200.144.189.56): icmp_seq=2 ttl=52 time=29.1 ms
64 bytes from web.stoa.usp.br (200.144.189.56): icmp_seq=3 ttl=52 time=30.9 ms
64 bytes from web.stoa.usp.br (200.144.189.56): icmp_seq=4 ttl=52 time=29.4 ms
64 bytes from web.stoa.usp.br (200.144.189.56): icmp_seq=5 ttl=52 time=30.7 ms

--- stoa.usp.br ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4034ms
rtt min/avg/max/mdev = 28.080/29.685/30.980/1.086 ms

Estes são na verdade os pacotes recebidos pelo servidor de volta. É aí que entra o pong: além de enviá-los, seu computador esperou pela resposta do alvo (no caso, Stoa). Além disso, o DNS a que estou conectado me informou que o nome stoa.usp.br resolve-se em 200.144.189.56.

O que os malucos tentaram fazer pode ser compreendido como um experimento barato e com razoável precisão (aproximadamente, 7%!!!) para medir a velocidade da luz. O método consiste em analizar o roundtrip time (algo como o tempo de viagem) de pacotes ethernet entre dois computadores, o que envolve mínimos recursos, matemática bem simples e demonstra a utilidade da ressonância estocástica no tratamento (na recuperação) de sinais.

Ao lado está a montagem experimental (parece, na verdade, um experimento feito na cozinha deles, não?). Clique para aumentar a imagem. O mais incrível é que os resultados são muito precisos. O artigo saiu no arxiv (link ao final do texto) em 2 de Fevereiro de 2008 (há um ano), mas tive contato apenas esses dias com este experimento. Inicialmente, eles identificam os computadores e os equipamentos em detalhes. Depois mostram resultados para a medida dos roundtrip times. Ao final, eles usam um odelo simples de eletromagnetismo para modelar o cabo (category 5) e conseguem obter uma relação entre a velocidade medida na transmissão dos sinais e a velocidade da luz. A expressão final deles apresenta uma dependência com o material do cabo (representada no modelo pela constante dielétrica do meio que engloba os fios). Esta expressão é

 [tex]v=c\sqrt{\dfrac{\log\left(\frac{d}{2r}+\sqrt{\frac{d^2}{4r^2} - 1}\right)}{\epsilon \log\left( \frac{d-r}{r} e^{1/4} \right)}} ,[/tex]

em que [tex]r[/tex] é o raio dos dois cabos (do modelo), [tex]d[/tex] é a disântica entre eles e [tex]\epsilon[/tex] é a citada constante dielétrica. A velocidade da luz, [tex]c[/tex], é determinada como [tex]( \, 2.9 \pm 0.2 \, ) \, 10^8 \, m/s[/tex].

O texto inicial do artigo também é muito banaca, vale a pena ler. Leia o artigo completo aqui. Sinceramente, às vezes penso... como é que não pensei nisso antes!? Mas a verdade é que é uma idéia muito boa, engenhosa e realizada.

 

<div class="notas">Update</div>

22/04/09 . Link para o artigo corrigido, a saber http://xxx.lanl.gov/abs/physics/0201053 .



Exercíciode Eletro-fismat

19 de Abril de 2009, por Desconhecido - 44 comentários

Um dos exercícios que resolvi para a última lista de Eletromagnetismo A (cuja data de entrega era hoje) me interessou bastante, muito embora eu não tenha conseguido resolvê-lo por completo. O exercício é o 3.16 da terceira edição do Jackson (Classical Eletrodynamics) ou 3.14 da segunda edição. Vou postar a seguir a solução da letra a (parcial para não passar a solução do exercício para futuros estudantes).

O exercício pede que seja comprovada a relação

 [tex]\dfrac{\delta(r-r_0)}{r} = \int\limits_0^{\infty} dk \, k \, \mathcal{J}_m(kr) \, \mathcal{J}_m(kr_0), [/tex]

em que [tex]\mathcal{J}_m[/tex]  é a função de Bessel de ordem [tex]m[/tex]. Esta equação assemelha-se muito a uma relação de ortogonalização, mas na verdade trata-se de uma relação de completeza. Não que isso seja de grande importância para o que se segue, mas isso sugere não tentarmos calcular algo como o produto [tex]\left(\mathcal{J}_m,\mathcal{J}_n\right)[/tex].

Comecemos com a definição da função Delta de Dirac,

[tex]\delta(x-x_0)\delta(y-y_0) = \int\limits_{-\infty}^{\infty} dk_x \dfrac{e^{ik_x(x-x_0)}}{2\pi} \, \, \int\limits_{-\infty}^{\infty} dk_y \dfrac{e^{ik_y(y-y_0)}}{2\pi} [/tex] 

[tex]\delta(x-x_0)\delta(y-y_0) = \int\limits_{-\infty}^{\infty} \, \int\limits_{-\infty}^{\infty} dk_y dk_x \dfrac{e^{ik_x(x-x_0)} e^{ik_y(y-y_0)}}{\left(2\pi\right)^2} [/tex]

[tex]\delta(x-x_0)\delta(y-y_0) = \frac{1}{\left(2\pi\right)^2} \int\limits_{-\infty}^{\infty} \, \int\limits_{-\infty}^{\infty} dk_y dk_x e^{i\left(k_x x + k_y y \right)} e^{-i\left(k_x x_0 + k_y y_0 \right)} [/tex] 

[tex]\dfrac{\delta(r-r_0)}{r}\delta(\alpha-\alpha_0) = \frac{1}{\left(2\pi\right)^2} \int\limits_0^{\infty} \, \int\limits_0^{2\pi} d\alpha \, dk \, k \, e^{i k r \cos\left(\theta - \alpha \right)} e^{-i k r_0 \cos\left(\theta - \alpha_0 \right)} , [/tex] 

em que [tex]k = k_x^2 + k_y^2[/tex] e [tex]\alpha[/tex] ([tex]\alpha_0[/tex]) é o ângulo entre [tex]\vec{k} = (k_x,k_y)[/tex] e [tex]\vec{r} = (x,y)[/tex] (ou [tex]\vec{r}_0 = (x_0,y_0)[/tex], equivalentemente). Vamos expandir as exponenciais complexas em termos de funções de Bessel,

[tex]e^{ikr \cos\left(\theta - \alpha\right)} = \sum\limits_{m=0}^{\infty} i^m e^{im(\theta - \alpha)} \, \mathcal{J}_m (kr).[/tex] 

Simplesmente substituindo na expressão para as deltas, obtemos

 [tex]\dfrac{\delta(r-r_0)}{r}\delta(\alpha-\alpha_0) = \frac{1}{\left(2\pi\right)^2} \int\limits_0^{\infty} \, \int\limits_0^{2\pi} d\alpha \, dk \, k \, \sum\limits_{m=0}^{\infty} \sum\limits_{m'=0}^{\infty} \, \, \times \, \, \Big[[/tex]

[tex] i^{m} e^{im(\theta - \alpha)} (-i)^{m'} e^{-im'(\theta - \alpha)} \, \mathcal{J}_m (kr) \, \mathcal{J}_{m'} (kr_0) \, \, \Big].[/tex]

Separando a parte em [tex]\theta[/tex], obtemos

[tex]\int\limits_0^{2\pi} d\alpha \, e^{i\alpha (m-m')} = 2\pi \delta_{m,m'},[/tex] 

o que significa que apenas os termos com [tex]m=m'[/tex] contribuem para a soma. Assim, [tex]i^{m}(-i)^{m} = 1[/tex] e a soma facilita-se de forma considerável:

[tex]\dfrac{\delta(r-r_0)}{r}\delta(\alpha-\alpha_0) = \dfrac{1}{2\pi} \sum\limits_{m=0}^{\infty} \, e^{im(\alpha - \alpha_0)} \, \int\limits_0^{\infty} \, dk \, k  \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) .[/tex] 

Para por aqui, já temos uma relação interessante: um tipo de relação de completeza para duas dimensões. Mas precisamos eliminar ainda os ângulos [tex]\alpha[/tex] e [tex]\alpha_0[/tex]. Propomos então a seguinte operação:

 [tex] \int\limits_0^{2\pi} d\alpha \dfrac{\delta(r-r_0)}{r}\delta(\alpha-\alpha_0) \, e^{-iq\alpha} = \dfrac{\delta(r-r_0)}{r} e^{-iq\alpha_0}. [/tex]

Integrando o outro lado da equação, obtemos

 [tex]\frac{1}{2\pi} \int\limits_0^{\infty} \, dk k \sum\limits_{m=0}^{\infty} \, \int\limits_0^{2\pi} d\alpha e^{im(\alpha - \alpha_0)} \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) \, e^{-iq\alpha} [/tex]

 [tex]= \frac{1}{2\pi} \int\limits_0^{\infty} \, dk k \sum\limits_{m=0}^{\infty} \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) \, e^{-im\alpha_0} \, \int\limits_0^{2\pi} d\alpha \, e^{-i(m-q)\alpha} [/tex] 

 [tex]= \frac{1}{2\pi} \int\limits_0^{\infty} \, dk \, k \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) \, e^{-iq\alpha_0} \, 2\pi [/tex]  

 [tex]=\int\limits_0^{\infty} \, dk \, k \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) \, e^{-iq\alpha_0}. [/tex]   

Reunindo os dois lados novamente, obtemos

[tex]\dfrac{\delta(r-r_0)}{r} e^{-iq\alpha_0} = =\int\limits_0^{\infty} \, dk \, k \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) \, e^{-iq\alpha_0} [/tex]

 e, portanto, chegamos à

[tex]\dfrac{\delta(r-r_0)}{r} = \int\limits_0^{\infty} \, dk \, k \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) .[/tex]

Esta é exatamente a expressão que gostaríamos de obter. Note que se refizermos tudo, mas trocarmos [tex]r_0[/tex] por um [tex]k_0[/tex], obteríamos algo análago para o coeficiente [tex]k[/tex].

Este exercício ainda pede para que a relação

[tex]\dfrac{1}{\left|\vec{r}-\vec{r}_0\right|} = \sum\limits_{m=0}^{\infty} \int\limits_0^{\infty} \, dk \, k \, e^{im\left(\phi - \phi_0\right)} \, \mathcal{J}_m (kr) \, \mathcal{J}_{m} (kr_0) \, e^{-k\left(z_{>} - z_{<} \right)} ,[/tex]

mas eu não consegui terminá-la. Eu consigo chegar a relações muito parecidas com esta, mas não consigo obtê-la realmente. Alguém aí sugere pode me dar alguma dica? A lista já foi e não encontrei alguém que pudesse me mostrar como fazê-lo, então não se preocupem: não vale mais nota alguma, hehe.