Você está na página 1de 6

Breves Considera co es Sobre a Utilidade dos Sistemas de Computa c ao Alg ebrica

Lenimar Nunes de Andrade UFPB Jo ao Pessoa 31 de maio de 2013

Introdu c ao

A Computa ca o, em suas v arias formas, tem produzido signicativas transforma co es sociais, econ omicas e culturais no mundo contempor aneo. E, de fato, hoje em dia, e imposs vel imaginar nosso cotidiano sem uma efetiva utiliza ca o do computador. Tradicionalmente, o voc abulo computar tem sido utilizado com o signicado de efetuar c alculos com n umeros. A Computa ca o Num erica envolve n ao s o as opera co es aritm eticas b asicas de adi c ao, subtra c ao, multiplica c ao, divis ao e radicia ca o, mas tamb em atividades mais sosticadas, a exemplo do c alculo das ra zes de um polin omio. Nesse tipo de computa ca o, os dados iniciais e os resultados nais s ao n umeros. Apesar de atender ` as exig encias de um usu ario nas mais diversas situa c oes, os c alculos puramente num ericos, em geral, n ao s ao exatos, porque eles acabam por embutir algum tipo de erro nos c alculos. Por exemplo, a simples divis ao de 1 por 3 em nota ca o decimal e aproximadamente igual a 0, 33333333. N ao importam quantas casas decimais sejam utilizadas, esse valor ser a sempre aproximado: ao ser multiplicado por 3, o produto dar a 0, 99999999. Se fosse um c alculo exato, a resposta deveria ser igual a 1. Al em disso, esse pequeno erro inicial da ordem de 0, 00000001 se for agregado a outros c alculos tamb em aproximados, tende a se propagar e aumentar. Devido ` as inconveni encias da Computa c ao Num erica, como a falta de exatid ao nos resultados apresentada acima, e que se tem estudado, h a seis d ecadas, uma outra variedade de computa c ao denominada Computa c ao Simb olica ou Computa ca o Alg ebrica. Nessa modalidade de computa ca o, os objetos matem aticos podem ser representados por s mbolos, n ao obrigatoriamente num ericos. Esses s mbolos podem representar n umeros inteiros, racionais, irracionais, imagin arios, ou, ainda, polin omios, fun c oes, matrizes, sequ encias, sistemas de equa c oes e at e mesmo estruturas mais abstratas, como grupos e an eis.
1

O principal objetivo da Computa ca o Alg ebrica e obter resultados exatos base ados nas regras usuais da Algebra, f ormulas consideradas fechadas. Por exemplo, um programa de Computa ca o Alg ebrica efetua c alculos com a raiz quadrada de dois sem a necessidade de represent a-la em forma decimal aproximada. Em vez de usar aproxima co es num ericas, o programa conhece as regras e propriedades alg ebricas dos objetos envolvidos. Ele sabe que o objeto raiz quadrada de dois e positivo e que se for elevado ao quadrado, indicar a como resultado dois. Isso basta para efetuar c alculos em in umeras situa c oes. Ao se calcular 2 3 usando uma calculadora ou um programa de Computa c ao Num erica, o resultado ser a 1, 4142135 1, 7320508 = 2, 4494897. No entanto, programa de qualquer computa ca o alg ebrica mostrar a resultado como sendo 2 3 = 6, algo bastante pr oximo do que se faz em sala de aula. Outro exemplo: um programa de Computa ca o Alg ebrica tamb em percebe que (a + b)2 = a2 + 2ab + b2 ou que (a + b)(a b) = a2 b2 , sem ser necess ario atribuir quaisquer valores num ericos para a e b.

Sistemas de Computa c ao Alg ebrica

Nas u ltimas d ecadas, houve consider avel progresso na teoria envolvendo algoritmos simb olicos ou alg ebricos. O conjunto de programas de computador relacionados com esse tipo de teoria passou a se chamar Sistema de Computa c ao Alg ebrica ou Sistema de Manipula c ao Simb olica, dentre outras denomina co es. Os Sistemas de Computa ca o Alg ebrica (SCA) podem ser utilizados em in umeras areas da ci encia e da tecnologia, e podem ser divididos em duas categorias: sistemas de uso espec co e sistemas de uso geral. O que esses sistemas t em em comum e uma grande capacidade de efetuar rapidamente c alculos anal ticos que podem ser bastante trabalhosos. Os sistemas de uso espec co foram desenvolvidos para resolver problemas em areas espec cas da F sica ou da Matem atica. S ao alguns exemplos desses sistemas: Sheep, Camal, GAP, Magma, Singular e Macaulay. Os sistemas de uso geral possuem n ao s o recursos alg ebricos, podendo tamb em incorporar recursos num ericos ou gr acos, al em de serem verdadeiras linguagens de programa ca o para c alculos anal ticos. Alguns s ao comercializados como o Maple e o Mathematica, outros s ao livres e gratuitos. Alguns exemplos desses sistemas livres s ao: ecada de 70, era um programa comercial e Maxima antigamente, na d chamava-se Macsyma. Hoje em dia, e um SCA gratuito, com muitos recursos, muito bem documentado, e com p agina pr opria na Internet: a maxima.sourceforge.net.
2

Reduce surgido no nal da d ecada de 60, e um dos mais antigos SCA, mas est a em pleno funcionamento hoje em dia. Pode ser copiado a partir do URL reduce-algebra.com. MuPAD um SCA gratuito na sua vers ao Light 2.5.2 de 2006. A partir de 2008, foi incorporado ao programa comercial Matlab. Yacas Yet Another Computer Algebra System, um SCA gratuito e bastante completo, que pode ser copiado de yacas.sourceforge.net. um SCA Axiom surgiu em 1971 e, antigamente, chamava-se Scratchpad. E gratuito de uso geral e foi originalmente desenvolvido pela IBM. Dispon vel para diversos sistemas operacionais a partir da p agina axiom-developer.org Muitos desses SCA possuem documenta ca o disponibilizada na Internet em v arios idiomas, e alguns deles t em at e manuais em portugu es. Em geral, possuem vers oes para v arios sistemas operacionais tais como Windows, Linux e Mac-OS.

Exemplos

Na gura acima, e mostrada uma tela com um exemplo de utiliza c ao do Maxima, um SCA umeras fun co es. Nessa tela s ao mostradas uma matriz gratuito com in a b c M = c a b , al em do c alculo da sua inversa M 1 e do seu determinante b c a
3

det(M ) = c(c2 ab) + a(a2 bc) b(ac b2 ). Note que os valores envolvidos nos c alculos n ao s ao num ericos, mas o programa n ao se intimida com isso e realiza os c alculos na maior rapidez. Na segunda gura, e mostrado um exemplo de utiliza ca o do Reduce, outro mostrado todo o desenvolvimento da SCA gratuito e com bastantes recursos. E pot encia (x + y + z )5 , o c alculo do fatorial de 40, a solu c ao da equa c ao biquadrada x4 10x2 +23 = 0 e a fatora ca o dos polin omios x4 16 e x5 + x +1. A apresenta c ao dos resultados e toda em formato usual.

Praticamente todos esses programas podem ser usados como uma linguagem de programa ca o. Apesar desse tipo de recurso exigir um pouco mais de estudo para sua utiliza c ao, alguns exemplos simples podem ser executados. Por exemplo, no Maxima, um comando como for n from 1 thru 100 do print(n, float(sqrt(n))); mostra uma listagem com n e sua respectiva raiz quadrada para todo n de 1 a 100, enquanto que for k from 100 thru 200 do if primep(k) then print(k, " e primo"); lista os inteiros primos de 100 a 200.

Um assistente matem atico

Um programa de Computa ca o Alg ebrica pode ser usado como um assistente matem atico, simplicando express oes alg ebricas, encontrando ra zes de equa c oes, fatorando polin omios, efetuando opera c oes com matrizes, construindo gr acos de fun co es, al em de ser u til na resolu ca o de problemas de Geometria Anal tica e de outros assuntos. Esses programas s ao capazes de obter respostas que podem ser comparadas com aquelas de que o usu ario j a disp oe. Podem, tamb em, efetuarem a parte mais trabalhosa de c alculos, deixando para o usu ario apenas a an alise e conclus ao a respeito dos resultados. Por tudo isso, esse tipo de programa pode ser considerado como uma ferramenta de ajuda valiosa, tornando-se um aliado em todo o processo de ensino-aprendizagem. Apresentamos aqui duas atividades que podem ser realizadas em sala de aula. S ao atividades conceitualmente simples, mas trabalhosas sob o ponto de vista da execu ca o dos c alculos de modo que justicam a utiliza ca o de um recurso computacional para sua realiza ca o. Escolhemos um tema que enfatiza a capacidade desse tipo de programa em manipular express oes alg ebricas: polin omios e equa co es polinomiais. Utilizamos o Maxima nos exemplos, mas poderia ter sido usado outro SCA com as devidas adapta co es nos comandos.
Atividade 1

Como primeira atividade, vamos calcular o m aximo divisor comum de dois polin omios usando o conhecido algoritmo da divis ao euclidiana. Inicialmente, fornecemos dois polin omios p e q na vari avel x: p: x^7 + 5*x^6 - 9*x^5 + 27*x^4 - 56*x^3 - 16*x - 112 q: x^6 + x^5 - 4*x^4 - 2*x^3 - 3*x^2 - 15*x - 10 Usamos o programa para dividir p por q , digitando r: divide(p, q); cuja resposta e [x + 4, 9x5 + 45x4 45x3 + 27x2 + 54x 72]. Esse resultado e da forma [r1 , r2 ], onde r1 e o quociente da divis ao e r2 e o resto. A seguir, dividimos q pelo resto r[2]: s: divide(q, r[2]); Depois, dividimos r[2] pelo resto da divis ao anterior s[2]: 76 440x3 +440x+880 ] t: divide(r[2], s[2]); cuja resposta e [ 21x 49 , 49 Dividimos s[2] pelo resto da divis ao anterior t[2]: w: divide(s[2], t[2]); 1029x1421 que o programa responde [ 440 , 0]. Como o resto dessa divis ao e igual a zero, encerramos o processo de sucessivas divis oes e conclu mos que mdc(p, q ) e o resto t[2] da divis ao de r[2] por s[2], dividido [2] pelo coeciente do termo de maior grau, ou seja, que mdc(p, q ) = t440 = x3 + x + 2.
49

Podemos tamb em aproveitar a capacidade do programa em resolver equa c oes polinomiais para comprovar que as ra zes do m aximo divisor comum de p e q ea interse c ao dos conjuntos das ra zes de p com as ra zes de q . Para vericar isso, basta digitar os comandos a seguir: mdc: gcd(p, q);

solve(mdc = 0, x); solve(p = 0, x); solve(q = 0, x);


Atividade 2

Como segunda atividade, vamos determinar todas as poss veis ra zes racionais de uma equa ca o polinomial de coecientes inteiros f (x) = 0 e, depois, testar uma por uma para vericar qual delas e raiz da equa c ao. Denimos f (x) com um comando f(x) := 21*x^3-482*x^2-1089*x+350; Calculamos uma lista q dos divisores do coeciente do termo de maior grau q: listify(divisors(21)) e o programa responde [1, 3, 7, 21]. Calculamos os divisores do termo constante p: listify(divisors(350)) que o programa responde [1, 2, 5, 7, 10, 14, 25, 35, 50, 70, 175, 350]. for j from 1 thru length(p) do for k from 1 thru length(q) do (r: p[j]/q[k], if (f(r)=0) then print(r," e raiz") else print(r,"n~ ao e raiz"), if (f(-r)=0) then print(-r," e raiz") else print(-r,"n~ ao e raiz")); Nesse caso, para cada elemento da lista de divisores p e cada elemento de q , e pj pj testado se r = qk ou r = qk e uma raiz da equa c ao. Depois que a verica c ao e executada, s ao mostradas mensagens como -1 n~ ao e raiz ou 2/7 e raiz. poss E vel a resolu c ao direta da equa ca o com um comando solve(f(x)=0) para comparar com as respostas mostradas anteriormente.

Refer encias
[1] SymbolicNet, Symbolic Mathematical Computation Information Center, dispon vel na Internet em www.symbolicnet.org. [2] Galv an, J. R. R., Maxima con wxMaxima: software libre en el aula de matem aticas, Ocina de Software Libre de la Universidad de C adiz.