Roberto Colistete Jr.

Blog sobre computação científica e móvel : Mathematica, Python, CUDA, smartphone & tablets, Linux, etc

Archive for the ‘Mathematica’ Category

Mathematica CAS (da Wolfram Research)

Computação simbólica CAS (Computer Algebra System) em smartphones e tablets

Posted by robertocolistete em 27/12/2012

CAS (Computer Algebra System) são softwares que permitem computação simbólica, i.e., com símbolos literais que não tem valores atribuídos. Essa é a forma comum de se calcular boa parte dos problemas da área de exatas no ensino superior. Um CAS pode ser usado para se calcular quase tudo o que é pedido nas disciplinas de “Cálculo” (limite, derivadas, integrais, etc), por exemplo. Porém usualmente o CAS não fornece os passos intermediários do cálculo, só o resultado final do cálculo. CAS normalmente também têm recursos de computação numéricas e gráfica.

Devido à grande evolução de hardware e sistema operacional dos celulares, smartphones (celulares inteligentes) e tablets, hoje temos diversos CAS disponíveis. Esse artigo visa então listar a maioria dos CAS para celulares, smartphones e tablets, e assim motivar o uso de tais equipamentos no ensino superior e pesquisa.

Softwares de cálculos somente numéricos e gráficos foram excluídos, bem como calculadoras científicas, gráficas, tabelas de fórmulas matemáticas, etc. Embora esses softwares sejam maioria nas “lojas” de softwares para smartphones e tablets, eles não são CAS.

CAS online (via Internet e navegador web)

Temos CAS completos ou com alguns recursos disponíveis via Internet, funcionando dependendo do navegador web do celular/tablet. Ou seja, um celular de R$100 que tenha um navegador web bom (com JavaScript habilitado, etc) pode acessar alguns dos sites abaixo !

CAS completos, permitindo comandos em sequência, uso de variáveis, etc :

  • SymPy Live : escrito totalmente em Python, SymPy é um CAS que tem se desenvolvido muito via uma comunidade bem ativa, e SymPy Live tem uma interface com vários tipos de saída, documentação acessível, exemplos, ‘Tab’ completa comandos, histórico de comandos, etc. Tem versão SymPy Live Mobile para telas pequenas de celulares. Foi citado em artigo anterior do blog;
  • Mathics : é um CAS recente e muito completo, com interface de notebook online, documentação acessível, exemplos, gráficos 2D e 3D (que giram se WebGL funcionar no navegador web), notebooks que podem ser salvos e lidos (precisa criar uma conta/login gratuito), etc. Mathics é um CAS baseado em SymPy e Sage, porém com sintaxe do Mathematica da Wolfram Research. Não funciona em qualquer navegador web pois precisa de suporte a MathJax, sendo recomendado Firefox (para Android, Maemo, MeeGo), Chrome (Android, iOS) e Safari (iOS), sendo que o navegador web do Android também funciona. Em meus testes, a melhor experiência é usando Firefox (no MeeGo Harmattan e Android).

Mais comum é encontrar funções específicas de CAS acessíveis via Internet :

  • Wolfram Alpha : é uma mistura de Google com CAS (comercial Mathematica da Wolfram Research), permitindo fazer pesquisas com texto em inglês bem como cálculos usando sintaxe “solta”. Tem ampla documentação, saída em vários formatos, etc.
  • Wolfram Mathematica Online Integrator : calcula integrais indefinidas de uma variável (x) usando o CAS comercial Mathematica da Wolfram Research, um dos mais completos e melhores CAS;
  • SymPy Gamma : faz cálculos diversos, bem simples de usar, com vários exemplos, usa o SymPy (CAS em Python). Foi citado em artigo anterior do blog;
  • Integral Calculator : calcula integrais indefinidas ou definidas de uma variável, com entrada com sintaxe “solta” e saída em MathJax (clique com o botão direito do mouse sobre o resultado e veja a expressão em TeX ou MathML, podendo copiar), exemplos, opção de simplificar o resultado, etc. Usa o CAS gratuito e de código-fonte aberto Maxima, que é um dos mais completos dentre os gratuitos;
  • Derivative Calculator : calcula derivadas de 1a até 3a ordem de uma variável, com entrada com sintaxe “solta”, saída em MathJax (clique com o botão direito do mouse sobre o resultado e veja a expressão em TeX ou MathML, podendo copiar), exemplos, opção de simplificar o resultado, opção de mostrar os passos intermediários do cálculo, etc. Usa o CAS gratuito e de código-fonte aberto Maxima, que é um dos mais completos dentre os gratuitos.

CAS instalados localmente

Para celulares não-smartphones que rodam Java (J2ME) :

  • JaSymCA 2 (gratuito e de código-fonte aberto) : é um CAS leve e com recursos razoáveis, tendo documentação, programação (com variáveis, funções, if/else, while/for, etc), cálculos númericos (à la Octave/MatLab/SciLab, de vetores e matrizes, resolução de equações, etc), cálculos simbólicos à la Maxima (derivada ordinária, integral indefinida/definida em relação a uma variável, série de Taylor de uma variável, EDO (equação diferencial ordinária) simples, etc), gráficos 2D (de uma variável, paramétricos, coloridos, logarítmicos, etc). Vide mais detalhes em artigo “Usando softwares científicos em celulares (quase) smartphones”.

Listando agora os sistemas operacionais móveis (de tablets e smartphones) :

Para Android há várias opções de CAS, inclusive algumas que apareceram em 2012 :

  • Maxima on Android (gratuito e de código-fonte aberto) : lançado em 10/2012 para Android, o CAS gratuito e de código-fonte aberto Maxima é um dos mais completos dentre os gratuitos. A versão para Android tem saída tipografada, documentação completa, gráficos 2D/3D, salvar/restaurar sessão, etc. Vide site do projeto “Maxima on Android” para maiores detalhes;
  • MathScript Scientific Calc Trial (gratuito) : usa o CAS SymPy para os cálculos, com interface de fácil uso, saída tipografada, gráficos 2D, documentação, exemplos, salvar/abrir sessão (em arquivo), etc. Versão de final de 2012 corrigiu problemas anteriores de saída tipografada. Na versão gratuita aos poucos vai aparecendo mensagens de espera importunando;
  • MathScript Scientific Calc (US$5) : idem acima, porém sem mensagens de espera;
  • MathStudio (US$9,99) : é um CAS leve com cálculos numéricos, simbólicos (integrais em relação a uma variável, etc), saída tipografada, gráficos 2D e 3D com animações, documentação, salvar/abrir sessão (em arquivo), etc. Vide site do software para documentação, exemplos de sessões, galeria de gráficos, etc. Tem versão para iOS;
  • JaSymCa 3 para Android (gratuito) : semelhante ao JaSymCA 2 citado acima para celulares nã0-smartphones, porém com interface melhorada na versão para Android;
  • Python SL4A + SymPy (gratuito e de código-fonte aberto) : no Android a instalação é manual, não tem saída tipografada nem gráficos, com uso via execução de arquivos .py. SymPy é um CAS escrito totalmente em Python;
  • Sage Math beta (gratuito e de código-fonte aberto) : versão lançada em 2012, é cliente do Sage com cálculo remoto em servidor web (logo precisa de conexão Internet), tem saída tipografada, gráficos, notebooks, etc. É versão beta com parte dos recursos do Sage para PC desktop implementados. Sage é um CAS baseado em Python / SymPy com muitos recursos avançados;
  • MathSys Calculator Shell alpha (gratuito) : lançada no 2o semestre de 2012, é uma nova interface continuando o trabalho da equipe do MathScript Scientific Calc citado acima. Tem interface touch fácil de usar, saída tipografada, gráficos 2D e 3D. Está em testes ainda (versão alfa), só funcionando em alguns tablets e smartphones Android com bom desempenho e tela de alta resolução. Internamente usa Python e os módulos SymPy, NumPy e MatPlotLib, infelizmente NumPy e MatPlotLib não são acessíveis de fora do MathSys, p.e., no Python SL4A;
  • wxMaxima e Maxima (gratuitos e de código-fonte aberto) : (wx)Maxima é a melhor interface gráfica para o CAS Maxima, ambos podem ser instalados em Linux dentro do Android (desde que se possa “rootear”), vide artigo de blog “Usando Linux dentro do Android no Asus Transformer“, onde vemos que o wxMaxima gasta 1-4 s para abrir em um tablet típico de 2 núcleos Cortex A9. Para instalar no Ubuntu (dentro do Android) é simples, via comando “$ sudo apt-get install –no-install-recommends maxima wxmaxima maxima-share”;
  • SymPy & IPython Notebook (gratuitos e de código-fonte aberto) : a maior parte do ambiente Python científico de PC funciona no Linux dentro do Android (instalável se for possível “rootear” o Android) : IPython 0.12 com interface Notebook, NumPy & MatPlotLib, SymPy, etc. Mas PyGlet e gráficos via Plot no SymPy dificilmente funcionam. Para instalar no Ubuntu (dentro do Android) basta o comando “$ sudo apt-get install –no-install-recommends python-mpmath python-sympy python-numpy python-matplotlib ipython ipython-notebook”.

Para iOS, em 2012 tivemos basicamente atualizações dos softwares já existentes de CAS :

  • MathStudio (US$9,99) : é um CAS leve com cálculos numéricos, simbólicos (integrais em relação a uma variável, etc), saída tipografada, gráficos 2D e 3D com animações, documentação, etc. Vide site do MathStudio para documentação, exemplos de sessões, galeria de gráficos, etc. Tem versão para Android;
  • iCAS (US$14,99) : versão iOS do REDUCE (CAS que começou na década de 60), bem complexo, tem saída tipografada, gráficos 2D e 3D, arquivos com comandos, etc. Vide site do iCAS para mais exemplos, documentação, etc;
  • PocketCAS Pro (US$4,99): outro CAS leve com cálculos numéricos, simbólicos, saída tipografada, gráficos 2D e 3D, teclado matemático, editor de arquivos de comandos, documentação, etc. Vide site do PocketCAS for iOS para maiores detalhes, documentação, etc.
  • PocketCAS lite (gratuito): vide PocketCAS Pro acima, porém com algumas funções desabilitadas;
  • Python Math (gratuito) : basicamente Python que inclui o CAS SymPy, não tem saída tipografada nem gráficos, tem editor de arquivos de comandos (US$0,99), teclado optimizado para Python (US$0,99), documentação, etc. Vide site do software para maiores detalhes, assim como o artigo “SymPy for smartphones & tablets” com análise detalhada desse software;
  • Python for iOS (US$2,99) : basicamente Python que inclui o CAS SymPy, não tem saída tipografada nem gráficos, tem editor de arquivos de comandos, documentação, etc. Vide site do software para maiores detalhes, bem como o artigo “SymPy for smartphones & tablets” com análise detalhada desse software;
  • Calcul (US$1,99) : CAS bem simples para computação simbólica, com saída tipografada.

Para Maemo 5 (Nokia N900, um smartphone lançado em no final de 2009 e vendidas 1-2 milhões de unidades mundo afora), há algumas opções, todas gratuitas :

  • SymPy Interactive Shell (gratuito e de código-fonte aberto) : CAS SymPy de fácil instalação e completo, incluindo IPython 0.10.2, SymPy 0.7.1/0.7.2, ícone, saída bidimensional, gráficos 2D e 3D interativos (via instalação de PyGlet), uso interativo completo do IPython 0.10.2, etc. SymPy para Maemo 5 é o mais completo dentre todos smartphones e tablets, vide análise comparativa no artigo “SymPy for smartphones & tablets”. Para mais recursos em cálculos numéricos e gráficos, temos NumPy 1.4.0 e MatPlotLib 1.0.0 também facilmente instaláveis no Maemo 5, via “$apt-get install python-numpy python-matplotlib” com repositório extras-devel habilitado. O artigo “Python científico em computadores, tablets e smartphones” mostra que o Maemo 5 é um dos dois melhores sistemas operacionais móvel para uso de Python. “SymPy Interactive Shell” foi empacotado pelo autor desse blog, desde 10/2011 até hoje (28/12/2012) tem mais de 66 mil downloads (uns 40 mil downloads únicos excluindo atualizações) para Nokia N900;
  • Integral (gratuito e de código-fonte aberto) : interface de fácil uso para calcular integrais com muitos recursos : definidas ou definidas ou numéricas (precisão arbitrária), em relação a 1 a 3 variáveis, resultados em vários formatos (simples, bidimensional, LaTeX, MathML, C, Fortran), opções de simplificação do resultado, com recurso de histórico e completar linhas de entrada, etc. Usa Python e o CAS SymPy v0.7.1/0.7.2. Vide também o tópico sobre “Integral” no fórum Talk Maemo.org. Foi criado pelo autor desse blog, desde 08/2011 até hoje (28/12/2012) tem mais de 82 mil downloads (uns 65 mil downloads únicos excluindo atualizações) para Nokia N900;
  • Derivative (gratuito e de código-fonte aberto) : interface de fácil uso para calcular derivadas ordinárias ou parciais (até 3 variavéis), gradiente, divergente, rotacional e laplaciano em 3 dimensões (coordenadas cartesianas, cilíndricas e esféricas), solução numérica com precisão arbitrária, resultados em vários formatos (simples, bidimensional, LaTeX, MathML, C, Fortran), opções de simplificação do resultado, com recurso de histórico e completar linhas de entrada, etc. Usa Python e o CAS SymPy v0.7.1/0.7.2. Vide também o tópico sobre “Derivative” no fórum Talk Maemo.org. Foi criado pelo autor desse blog, desde 10/2011 até hoje (28/12/2012) tem mais de 64 mil downloads únicos para Nokia N900;
  • Limit (gratuito e de código-fonte aberto) : interface de fácil uso para calcular limites simbólicos ou numéricos (com precisão arbitrária), resultados em vários formatos (simples, bidimensional, LaTeX, MathML, C, Fortran), opções de simplificação do resultado, com recurso de histórico e completar linhas de entrada, etc. Usa Python e o CAS SymPy v0.7.1/0.7.2. Vide também o tópico sobre “Limit” no fórum Talk Maemo.org. Foi criado pelo autor desse blog, desde 11/2011 até hoje (28/12/2012) tem mais de 57 mil downloads únicos para Nokia N900;
  • wxMaxima e Maxima (gratuitos e de código-fonte aberto) : (wx)Maxima é um dos CAS mais completos e maduros, disponível no Maemo 5 via Easy Debian. É muito fácil instalar o Easy Debian dentro do Maemo 5, i.e., um Debian ARM via chroot, permitindo instalar quase 30 mil pacotes ARM. Dentro do Easy Debian, basta habilitar o repositório sid e instalar via “$ apt-get install –no-install-recommends maxima wxmaxima maxima-share”.

SymPy rodando dentro do IPython Notebook no Nokia N9


SymPy 0.7.2 rodando dentro do IPython Notebook 0.13.1 no Nokia N9

Para MeeGo Harmattan (Nokia N9, vendidas algumas poucas milhões de unidades desde meados de 2011), além de somente um software (SymPy) CAS nativo do MeeGo Harmattan, temos softwares CAS do Debian (via chroot de imagem) que funcionam muito bem no Nokia N9, vide artigo “Easy Debian Harmattan para Nokia N9 com teclado virtual transparente“. As imagens científicas do Debian acumularam quase 7 mil downloads entre Agosto e Dezembro de 2012, atestando a popularidade e facilidade de uso do Easy Debian Harmattan (do qual o autor desse blog é mantenedor).

Para Symbian, há poucos soluções CAS :

  • JaSymCA 2 (gratuito e de código-fonte aberto) : tal como citado acima para celulares não-smartphones, funciona também no Symbian;
  • Python + SymPy (gratuito e de código-fonte aberto) : no Symbian a instalação é manual, não tem saída tipografada nem gráficos, com uso interativo bem limitado ou via execução de arquivos de comandos Python. SymPy é um CAS escrito totalmente em Python.

Os sistemas operacionais BlackBerry OS e Windows Phone não têm CAS disponíveis atualmente.

Conclusões

Sobre considerações entre vantagens x desvantagens entre computadores, tablets e smartphones, bem como opções de compras de smartphones e tablets, vide final do artigo “Python científico em computadores, tablets e smartphones”.

Enfim, minha opinião :

  • mesmo celulares não-smartphones podem rodar CAS, instalado localmente ou acessando CAS online via navegador web;
  • há várias opções de CAS online completos ou só com funções específicas, acessíveis via navegador web;
  • a maioria dos sistemas operacionais móveis (de smartphones e tablets) pode rodar CAS instalado localmente;
  • SymPy (CAS totalmente escrito em Python) está em todos os sistemas operacionais móveis que rodam CAS e em alguns CAS online, atestando a portabilidade da linguagem Python;
  • os melhores CAS gratuitos, Maxima e SymPy, ambos rodam em Android, Maemo 5 e MeeGo Harmattan, tendo bom desempenho e boa funcionalidade;
  • o Nokia N9 com MeeGo Harmattan é o melhor smartphone atual para rodar CAS, pois tem versões de 2012 dos melhores CAS gratuitos : SymPy 0.7.2 + IPython Notebook 0.13.1 com gráficos embutidos e wxMaxima/Maxima (via Easy Debian Harmattan);
  • Android atualmente é o sistema operacional móvel que tem a maior variedade de hardware (i.e, smartphones, tablets e Mini-PC’s de diversos tamanhos, formatos, preços e fabricantes) combinada com um bom leque de softwares CAS.

(Atualização em 12/02/2013) : adicionada citações a SymPy 0.7.2 para Maemo 5/MeeGo Harmattan (07/01/2013), IPython 0.13.1 terminal, Notebook e Qt console para MeeGo Harmattan (22/01/2013), MatPlotLib 1.2.0 para MeeGo Harmattan (09/02/2013) e NumPy 1.7.0 para MeeGo Harmattan (11/02/2013).

(Atualização em 13/02/2013) : adicionadas screenshots do SymPy 0.7.2 rodando no IPython Notebook 0.13.1 no Nokia N9.

Posted in Android, CAS, iOS, Maemo, Maemo 5 Fremantle, Mathematica, MeeGo, Mini-PC, Nokia N9, Python, Smartphones, Symbian, SymPy, Tablets | 4 Comments »

Geração Kepler : Nvidia GeForce GTX 680 com 1536 núcleos e GDDR5 @ 6 GHz !

Posted by robertocolistete em 24/03/2012

A Nvidia lançou em 22/03/2012 a nova geração Kepler de placa-de-vídeo, começando pela GTX 680.

Tal placa-de-vídeo possibilita programação CUDA (Compute Unified Device Architecture), que é uma arquitetura de computação paralela para GPU (Graphical Processing Units), permitindo programação em C/C++ e outras linguagens (Python via PyCUDA, Mathematica 8 CUDA, etc) usando paralelismo das GPU que têm dezenas até mais de mil núcleos de processamento (enquanto CPU’s tem alguns núcleos, tipicamente  2 ou 4 atualmente).

São muitas mudanças entre a geração Fermi anterior e a nova Kepler :

  • a arquitetura GK104 (Kepler) usa tecnologia de fabricação de 28 nm ao invés de 40 nm, apresentando o dobro da eficiência de desempenho por dissipação de energia em Watts;
  • 1536 núcleos (cores em inglês) na GTX 680 ao invés de 512 cores na GTX 580 (Fermi);
  • 3090 GFlops (sim, 3 TeraFlops, obviamente em condições ideais) na GTX 680 versus 1581 GFlops da GTX 580;
  • memória de vídeo GDD5 a 6.008 MHz ao invés de 4.008 MHz;
  • barramento de 256 bits a 1.502 MHz na GTX 680 versus 384 bits a 1.002 MHz na GTX 580 resulta na mesma capacidade de transferência, 192 GB/s;
  • 3,54 bilhões de transístores em 294 mm^2 ao invés de 3 bilhões em 520 mm^2 na Fermi;
  • 195 W (GTX 680) versus 244 W (GTX 580 Fermi).

Veja mais detalhes em várias matérias sobre a Nvidia GeForce GTX 680 :

Interessante será analisar o impacto dessa geração Kepler na programação CUDA, por exemplo via tal matéria : The GeForce GTX 680: A Developer’s Perspective. A 1a tabela da matéria acima da AnandTech deixa claro que o desempenho de precisão dupla (FP64) no GK104 é somente 1/24 da precisão simples, enquanto que era 1/8 na Fermi. Ou seja, em precisão dupla a GTX 680 parece ser inferior a GTX 580.

Também foi anunciada a versão para notebooks, a linha GeForce 600M, mas somente a GPU GK107 é da geração Kepler, com 384 cores (1/4 do GK104) e barramento de 128 bits (versus 256 bits do GK104). Para variar, a nomenclatura de GeForce para notebooks é confusa, com GTX 670M e 675M na verdade usando a GPU Fermi GF114 e das GTX para notebook, só a GTX 660M tem GPU Kepler. Das GT 6xx M, a GT 640M e 650M são da geração Kepler.

Como curiosidade, as gerações de GPU da Nvidia têm nomes de físicos : Tesla (65 nm) em 2007, Fermi (40 nm) em 2009, agora Kepler (28 nm) em 2012, Maxwell (22 nm) para 2013, etc.

Posted in CAS, CUDA, Mathematica, Python | 3 Comments »

SymPy Live & Gamma

Posted by robertocolistete em 26/02/2012

Tal como abordado antes, o SymPy roda em qualquer sistema operacional (de mesa ou móvel) que tenha Python.

Mas também tem o SymPy Live e Gamma, permitindo usar o SymPy via navegador web e Internet.O SymPy Live é um SymPy quase completo (sem gráficos) via interface web, com o cálculo sendo feito em servidor remoto.  O SymPy com interface web para desktop foi totalmente remodelado no final de 2011 :
http://live.sympy.org/
agora tem muitos recursos novos, dentre eles :
– tab para completar;
– histórico de linhas via Ctrl+Up/Down;
– vários tipos de saídas (ASCII, Unicode, LaTeX, etc).

E uma grande novidade é uma versão mobile :
http://live.sympy.org/shellmobile
com recursos simplificados e optimizada para telas menores de celulares.

Tem também o SymPy Gamma (um ‘Wolfram Alpha‘ simplificado), que faz vários cálculos relativos a um objeto (digite ‘sin(x)’, por exemplo) : http://gamma.sympy.org/

Posted in CAS, Mathematica, Python, SymPy | 2 Comments »

 
%d blogueiros gostam disto: