sexta-feira, 28 de dezembro de 2012

CAS


1. Definição
CAS é o acrónimo de “Computer Algebra System” que, em português, se pode traduzir por “Sistema de Computação Algébrica” ou “Sistema Algébrico Computacional”. O termo refere-se a uma classe de programas de computador que têm a capacidade de “manipular” expressões matemáticas. Tal como uma calculadora, estes programas são capazes de efectuar computação numérica, isto é, aquela que envolve não só as operações aritméticas básicas com números mas também cálculos mais avançados como achar os zeros de um polinómio, as raízes de uma equação, o valor numérico de uma função num ponto ou operar com matrizes. Mas aquilo que verdadeiramente os distingue e identifica é a sua capacidade de lidar com símbolos em vez de números, ou seja, de efectuar computação simbólica e algébrica. Tal significa que, usando as regras da Álgebra, realizam computação de símbolos que representam objectos matemáticos. Exemplos deste tipo de computação podem ser, por exemplo, a simplificação de uma expressão, a factorização de um polinómio, a determinação da derivada de uma função ou o cálculo de um integral indefinido.
Em termos simples, um CAS é um sistema para realizar matemática com um computador (slogan utilizado por Stephen Wolfram para promover a sua criação, o Mathematica, “Mathematica: A System for Doing Mathematics by Computer”).

2. Categorias
O aparecimento e a evolução deste tipo de programas aconteceram ao longo das últimas quatro décadas, a par do desenvolvimento de uma nova disciplina, a Computação Simbólica (também chamada de Manipulação Simbólica ou Álgebra Computacional, entre outras designações). Com o tempo, foram criadas categorias para este tipo de programas. Podemos, por exemplo, classificar um CAS de acordo com o propósito para o qual foi criado. Um primeiro grupo refere-se aos programas em que é possível implementar soluções para satisfazer um leque específico de problemas, usualmente associadas a uma determinada área ou assunto (o SCHOONSCHIP, na Física, ou o KANT, na Teoria dos Números, por exemplo). Um segundo grupo engloba os CAS’s que possuem uma quantidade alargada de estruturas e funções matemáticas que cobrem um conjunto geral de aplicações e áreas (MACSYMA, REDUCE, DERIVE, Maple ou Mathematica, por exemplo).
Uma outra categorização destes programas pode ser feita de acordo com o modo como são disponibilizados. Alguns são comercializados pelas empresas que os criaram ou detêm a suas patentes, outros estão disponíveis livremente segundo uma licença GPL. Seguem-se três links que disponibilizam informação sobre a variedade de programas existentes:

3. Funcionalidades
Para além das capacidades descritas, usualmente, um CAS apresenta outras funcionalidades, nomeadamente, as que se relacionam com a apresentação de gráficos de funções ou condições e com a disponibilização de uma linguagem de programação para que o utilizador possa construir os seus próprios procedimentos.
É também habitual em alguns programas encontrar uma separação entre a parte responsável pela computação, o núcleo, e a parte responsável pela interacção com o utilizador, o interface (na forma de Notebook em alguns casos). É assim possível encontrar diferentes interfaces para o mesmo núcleo (caso dos interfaces xMaxima e wxMaxima para o Maxima) e tornar mais acessível ao utilizador a linguagem específica do programa. As interfaces mais actuais fornecem menus e janelas próprios para a introdução dos comandos e dos símbolos necessários à construção das expressões a avaliar. Existem até webinterfaces disponíveis online para alguns destes programas (o WolframAlpha é, talvez, o exemplo mais refinado).

4. Prós e contras
A finalidade da utilização de um CAS é a automatização do processo de resolução de um problema (matemático). Por si só o programa não fará tal automatização. Cabe ao utilizador usar os recursos que o CAS disponibiliza, maximizando-os se possível, para efectivar tal automatização. Em meu entender, o CAS é um instrumento para a realização de matemática, não um fim em si mesmo. No entanto, para desempenhar esse papel o CAS obriga ao conhecimento da sua linguagem, facto que exige tempo e disponibilidade. Este processo de familiarização com a linguagem do CAS pode ser, ele próprio, um processo de aprendizagem matemática. Na verdade ele obriga, por exemplo, à visualização e reconhecimento de estruturas ou à adopção de processos de testagem, capacidades inerentes à matemática.
Sem procurar contextualizar a utilização destes programas nos diferentes níveis de ensino (tema que merece uma análise profunda), enunciam-se, em seguida, algumas vantagens na sua utilização em geral:
  • Capacidade de lidar com grandes quantidades de computação algébrica, isto é, a capacidade de manipular expressões matemáticas que, tratadas com papel e lápis, obrigariam a grande esforço e dispêndio de tempo.
  • O CAS pode ajudar à demonstração de resultados e teoremas que, sem auxílio da tecnologia, obrigariam, mais uma vez, a dispêndio de tempo em cálculos e simplificações muitas vezes repetitivos. Acontece até que existem exemplos de demonstrações matemáticas cujos resultados foram primeiro comprovados por um CAS e só depois pelos processos de demonstração universal e matematicamente aceites.
  • Ao deixar para o CAS a parte computacional (cálculos, simplificações, etc), podemos concentrar-nos melhor no essencial de um problema matemático.
  • O CAS pode ser uma ferramenta importante na realização de experiências matemáticas. Tal facilita a testagem de conjecturas, por exemplo.

 Em contrapartida, devemos estar preparados para algumas contrariedades quando usamos um CAS. Acrescento que é necessário desmistificar a ideia que muitas vezes nos assola e que já antes referi. O CAS é um meio, não um fim. Como tal não o devemos considerar logo à partida, como a solução de todos os nossos problemas (matemáticos). Não devemos abandonar o nosso espírito crítico aceitando sempre, sem reservas, aquilo que ele nos fornece.
Com base na literatura existente apresento dois exemplos de contrariedades.
  • Devemos estar preparados para as exigências destes programas em termos, por exemplo, de memória do nosso computador ou de tempo de computação (em termos de matemática avançada, claro está). Uma eficiente programação e a utilização de bons modelos matemáticos minimizarão o risco de tal acontecer.
  • Um outro problema está relacionado com o output de resultados, quer no que se refere ao seu tamanho, quer no que respeita ao seu formato e possível reutilização. Quando eles são grandes, as linhas disponíveis no nosso interface podem não ser suficientes. Esta questão do output implica um conhecimento profundo da linguagem específica do CAS em questão. Tal necessidade pode ser, por si só, uma contrariedade.

Referências:
Herget, W., Heugl, H. Kutzler, B., & Lehmann, E. (2000). Indispensable Manual Calculation Skills in a CAS Environment. Disponível em:
Heck, André (2003). Introduction to Maple. Disponível em: 
Computer Algebra System. Disponível em:

Sem comentários: