sábado, 24 de setembro de 2011

Sage: uma alternativa aos pacotes matemáticos comerciais

Vários problemas em engenharia, e em outras ciências, são resolvidos com ferramentas matemáticas como sistemas de álgebra computacional (Mathematica, Maple) e sistemas para cálculo numérico (como o MATLAB).

O problema desses três pacotes é o custo deles: mesmo as licenças para fins acadêmicos não são baratas (US$ 199 não me parece barato para um estudante :). Se a sua universidade ou empresa tem o programa, muito bom, mas se ela não tem? Sobram 2 alternativas: faça-você-mesmo ou usar alternativas livres.

Embora seja plenamente possível desenvolver um programa (por exemplo, usando a NumPy, a SciPy, a GSL etc...) que resolva o mesmo problema, isso traz aquela desagradável sensação de reinvenção da roda.

Já para a segunda opção, um dos meus maiores problemas com as alternativas livres era justamente a falta de integração das diversas ferramentas, e fazê-los falar entre si às vezes era uma saga épica.

Para resolver essa necessidade, a ferramenta que acabei adotando foi o Sage, cujo objetivo é criar uma alternativa open-source viável às ferramentas como o Maple, o Mathematica, o MATLAB etc... usando as várias ferramentas livres já existentes (mais de 90, conforme os próprios desenvolvedores).

E justamente é essa a maior qualidade dele, na minha opinião: não se reinventa a roda, aproveita-se o trabalho que já existe, apenas implementando lógica para fazer a interface entre essas ferramentas (quisera eu que todos os softwares livres pensassem assim).

Uma das motivações para esse projeto é também servir de contraponto à arquitetura fechada das caixas pretas comerciais, justamente pela necessidade de "tudo ser aberto para inspeção" - ou seja, a reprodutibilidade necessária ao método científico. 

Ele nasceu voltado à matemática pura, como atestam os diversos papers que o citam, mas também é plenamente utilizável para a matemática aplicada, as engenharias etc... Embora seja uma pena que a documentação pouco ou nada fale sobre esses usos.

Para quem já desenvolve em Python, melhor ainda: ele pode ser usado como um ambiente de desenvolvimento para aplicações científicas nessa linguagem, também sendo possível utilizar as diversas bibliotecas para ela disponíveis.

Outra característica bastante útil dele é a possibilidade de executá-lo em um servidor dedicado e acessado via web (acredito que nenhuma ferramenta comercial faça isso por padrão), tornando ele interessante para uso em sala de aula.

Aliás, se você não quiser instalá-lo para testar (o download tem mais de 300MB, por ser inteiramente auto-contido, não precisa de dependências externas), pode fazer isso pela internet, especialmente para os usuários Windows (não há versão nativa ainda, nem compilada no Cygwin - espera-se que isso mude logo).

(figura: fractal de Mandelbrot plotado no Sage)

2 comentários:

  1. Parece ser interessante, apesar de pecar ainda no multiplataforma, mas qual a vantagem dele perante o scilab?

    ResponderExcluir
  2. Prazado Guilherme, o Silab é um software focado no cálculo numérico, semelhante ao Matlab. O SAGE é mais que isso. Além da possibilidade de se trabalhar com calculo númérico, trabalha-se perfeitamente bem com o cálculo simbólico. Tenho tido boas experiências com ele em Astrofísica. Um ótimo lugar para ver suas potencialidades é o site oficial. Lá pode-se, inclusive, encontrar um benchmark comparando-o ao Mathematica.

    Abraços.

    ResponderExcluir

Não são lidos e não me responsabilizo pelo conteúdo deles.