Você está na página 1de 10

Maxima : um completo programa de Computaao Algbrica c e

Lenimar Nunes de Andrade UFPB Joo Pessoa a 14 de setembro de 2011

Introduo ca

Maxima um programa que executa clculos numricos e simblicos, em desenvolvimento desde e a e o 1969. Seu nome original era Macsyma e foi elaborado nos laboratrios do MIT, nos Estados Unidos, o com nanciamento de vrias agncias governamentais norte-americanas. a e E capaz de simplicar expresses algbricas e trigonomtricas, efetuar clculos com matrizes e o e e a com nmeros complexos, construir diversos tipos de grcos, fatorar polinmios, resolver diversos u a o tipos de equaoes e sistemas etc. c Trata-se de um programa livre. Pode ser copiado, utilizado e distribu gratuitamente. Isso do faz com que o Maxima seja uma excelente ferramenta pedaggica, facilmente acess a todos. o vel E considerado um Sistema de Computao Algbrica de uso geral, podendo ser usado nos ca e sistemas operacionais Windows, Linux e Mac-OS.

Interface wxMaxima

So vrias as formas pelas quais o Maxima comunica-se com o usurio. Neste artigo, citamos a a a apenas a interface denominada wxMaxima, que bastante amigvel, intuitiva e fcil de se usar. e a a Sua tela inicial parecida com a mostrada a seguir: e

Podemos digitar os comandos para o Maxima linha por linha, e observar as respostas dadas pelo programa. Para isso, seguimos as seguintes regras: Os comandos vo sendo digitados ao lado de (%i1), (%i2), (%i3) etc. e o Maxima vai dando a suas respostas ao lado de (%o1), (%o2), (%o3) etc.
1

A linha de comando deve ser encerrada com um ponto e v rgula ou com um cifro. Se a for encerrada com um ponto e v rgula, o resultado obtido mostrado imediatamente. Se e for encerrada com um cifro, o resultado no ser mostrado de imediato, cando guardado a a a internamente. As operaoes aritmticas bsicas so indicadas pelos s c e a a mbolos +, , (multiplicao), ca / (diviso) e ^ (potenciaao). a c A raiz quadrada de x indicada por sqrt(x), o logaritmo natural de x log(x), as funoes e e c trigonomtricas so sin(x), cos(x), tan(x), sec(x), cot(x), csc(x) e as trigonomtricas inversas e a e so asin(x), acos(x), atan(x). a Uma varivel pode ter seu nome formado por uma unica letra como x, y, z, . . . ou ter um a nome longo onde apaream vrias letras, algarismos e caracter de sublinhado como em expr1, c a expr2, result 1, result 2, . . . . Podemos atribuir valor a qualquer varivel digitando-se o seu nome seguido de dois pontos e a do valor da varivel como em x : 2, y : 4, z : 1 . . . a O ultimo resultado calculado pode ser referenciado por um s mbolo de porcentagem (%). As constantes matemticas = 3, 14159 . . . , e = 2, 71828 . . . , i = 1, = 1+2 5 so a a representadas por %pi, %e, %i e %phi, respectivamente. Usamos o comando f loat(x) para obtermos a representaao decimal de x. c Uma funo pode ser denida utilizando-se um :=, como no exemplo f (x) := cos(x)+x/53. ca Algumas vezes, ao invs de digitar linhas de comando, pode-se escolher uma janela no menu e principal e us-la exclusivamente para digitao do comando. O menu principal aparece no topo a ca da tela: Arquivo Editar Clula Maxima Equaoes Algebra . . . . e c A seguir, alguns exemplos de comandos digitados no Maxima , bem como suas respectivas respostas. Calculamos 30 50 + 8 10, fatoramos o resultado em produto de potncias de primos, e 81 c calculamos a = 49, b = 6 , a + b, x = log(cos( ) + sen( )) e a sua representaao decimal. 6 4 (%i1) 30*50 + 8*10; (%o1) 1580 (%i2) factor(%); (%o2) 22 5 79 (%i3) (%o3) a:
17 2

sqrt(49)$

b:

sqrt(81)/6$

a+b; float(x);

(%i4) x: log(cos(%pi/6) + sin(%pi/4)); 1 (%o4) log( 23 + 2 ) (%o5) 0.45306865422064

Um comando executado pressionando-se [Enter], [Shift][Enter] ou [Ctrl][Enter] na linha, dee pendendo do que estiver denido em Editar/Conguraes/Enter calcula clulas no menu co e principal. Muitos outros exemplos podem ser encontrados nas referncias bibliogrcas ou nas telas de e a ajuda do prprio programa. o

Simplicao e desenvolvimento de expresses ca o

Expresses algbricas podem ser simplicadas com o comando ratsimp(...) e desenvolvidas com o e um comando expand(...). Se houver alguma funao trigonomtrica envolvida, ento a expresso c e a a pode ser simplicada com um trigsimp(...) e ser desenvolvida com um trigexpand(...). (%i6) (%o6) ex1: a^3/((a-b)*(a-c)) + b^3/((b-c)*(b-a)) + c^3/((c-a)*(c-b)); a3 b3 c3 + + (a b)(a c) (b c)(b a) (c a)(c b)

(%i7) ratsimp(ex1); (%o7) c + b + a (%i8) (%o8) (%i9) ex2:((3*x^2+4*x+1)^2-(3*x^2+10*x+1)^2)/((3*x^2+11*x+1)^2-(3*x^2+3*x+1)^2); (3x2 + 4x + 1)2 (3x2 + 10x + 1)2 (3x2 + 11x + 1)2 (3x2 + 3x + 1)2

ratsimp(ex2); 3 (%o9) 4 (%i10) (%o10) y: (sin(x)^3 - cos(x)^3)/(sin(x) - cos(x)); sin(x)3 cos(x)3 sin(x) cos(x)

(%i11) trigsimp(y); (%o11) cos(x) sin(x) + 1

Operaoes com polinmios c o

Diversas operaoes com polinmios podem ser efetuadas com o Maxima . A fatoraao realizada c o c e com um comando f actor(...), o mximo divisor comum entre f e g feita com um gcd(f, g) e a a e diviso com um divide(f, g). O resultado da diviso apresentado no formato [q, r] onde q o a a e e quociente e r o resto da diviso. e a Neste exemplo, denimos os polinmios f = x4 + 2x3 4x2 5x 84 e g = (x + 4)(x2 + x + 7)2 , o fatoramos e calculamos o MDC entre eles. Por m, dividimos f por x2 + 3x + 7. (%i12) f: x^4 + 2*x^3 - 4*x^2 - 5*x - 84; (%o12) x4 + 2x3 4x2 5x 84 (%i13) factor(%); (%i13) (x 3)(x + 4)(x2 + x + 7) (%`14) g: expand((x + 4)*(x^2 + x + 7)^2); (%o14) x5 + 6x4 + 23x3 + 74x2 + 105x + 196 (%i15) factor(%); (%o15) (x + 4)(x2 + x + 7)2 (%i16) gcd(f, g); (%o16) x3 + 5x2 + 11x + 28

(%i17) divide(f, x^2 + 3*x + 7); (%i17) [x2 x 8, 26x 28]

Equaoes e sistemas c

Uma equaao pode ser resolvida com um comando solve(equao, varivel). Podemos digitar c ca a uma linha de comando ou fornecer a equaao em uma janela exclusiva para entrada de equaoes. c c Para obter essa janela de equaes, escolhemos no menu principal do programa a opao Equaes co c co e depois escolhemos Resolver . . . . Resolvemos a equao x4 5x2 + 6 = 0. ca

(%i18) solve(x^4 - 5*x^2 + 6 0, x); = (%o18) [x = 2, x = 2, x = 3, x = 3] Um sistema pode ser resolvido da mesma forma que uma equao, bastando colocar as equaes ca co e as variveis entre colchetes. Resolvemos o sistema linear formado pelas equaes 3x + 4y = 2 e a co 2x y = 3. (%i19) solve([3*x + 4*y = 2, 2*x - y = 3], [x, y]); 5 (%o19) [[x = 14 , y = 11 ]] 11 Equaes mais complicadas podem ter ra no interior de um intervalo [a, b] encontradas com co zes um comando nd root(equao, varivel, a, b). Neste exemplo, determinamos uma raiz da equao ca a ca sen(3x) 2 sen(x) = 1 no intervalo [1, 1]. (%i20) find root(sin(3*x) - 2*sin(x) = 1, x, -1, 1); (%o20) 0.86437521331831

Operaoes com matrizes c

E poss fornecer uma matriz ao Maxima com um comando matrix([linha 1], [linha 2], ...) vel ou atravs de uma janela espec e ca, obtida nos itens Algebra e Introduzir matriz... do menu principal. A multiplicao de matrizes pode ser feita com um ponto como em A.B, o determinante ca com um comando determinant(...) e a inversa com um comando invert(...). Denimos neste exemplo uma matriz M e calculamos seu determinante e sua matriz inversa.

(%i21) matrix( [-3,7,1], [4,5,0], [10,2,-5]); M: 3 7 1 (%o21) 4 5 0 10 2 5 (%i22) determinant(%); (%o22) 173 (%i23) invert(%); 25 37 5 173 173 173 20 5 4 (%o23) 173 173 173 42 76 43 173 173 173 (%i24) . M; M 47 16 8 (%o24) 8 53 4 72 70 35 (%i25) matrix( [1,0,0], [0,1,0], [0,0,1]); I: 1 0 0 (%o25) 0 1 0 0 0 1 (%i26) P: x*I - M$ expand(determinant(P)); (%o26) x3 + 3x2 63x 173

Grcos a

O Maxima constri vrios tipos de grcos planos ou tridimensionais. A construao do mais o a a c simples tipo de grco plano com x [a, b] e y [c, d] pode ser feita com um comando a a dos em um mesmo plot2D(funo, [x, a, b], [y, c, d]) . Mais de um grco podem ser constru ca sistema de eixos, bastando colocar a lista de funes envolvidas entre colchetes e separadas entre co si por v rgulas. Neste exemplo constru mos os grcos de sen(6x), sec(x) e tg(x) com x e y variando de 5 a a 5. Uma janela exclusiva para a digitao dos dados do grcos pode ser obtida com a opo ca a ca Grco do menu principal, depois escolhendo-se Grco2D . . . . a a (%i27) plot2D( [sin(6*x), sec(x), tan(x)], [x, -5, 5], [y, -5, 5] );

Uma opao como [color, green] pode ser acrescentada para alterar a cor do grco ou c a [style, [lines, 5]] para alterar a largura do trao. c

Grcos tridimensionais a

O grco tridimensional de uma funao f (x, y), com x [a, b] e y [c, d] pode ser constru a c do com um comando plot3d(f(x,y), [x, a, b], [y, a, b], opes) ou fornecendo-se os dados do grco co a nas janelas Grco e Grco3D . . . no menu principal. a a (%i28) plot3d(cos(x)*sin(y),[x,-5,5],[y,-5,5],[palette,false],[color,red,blue]);

Se a superf for denida por equaoes paramtricas, poss constru fornecendo-se as cie c e e vel -la equaoes entre colchetes. c (%i29) plot3d( [u*cos(v), u*sin(v), v], [u, 0, 3], [v, 0, 10] );

Depois de constru do, um grco tridimensional pode ser girado pressionando-se o boto do a a mouse e arrastando-o para uma nova posio. ca

Limites

O limite de f (x) quando x tende a x0 calculado com um comando limit(f (x), x, x0 ). O ine nito pode ser codicado por inf e o menos innito por minf. Se for colocado um apstrofo antes o do comando, ele ser apenas mostrado, mas no calculado. a a (%i30) limit(sin(4*x)/x, x, 0); (%o30) 4 (%i31) limit((1 + 3/n)^n, n, minf); (%o31) %e3 (%i32) (%o32) (%i33) (%o33) limit( sqrt(x + sqrt(x)) - sqrt(x), x, inf); lim x + x x limit( sqrt(x + sqrt(x)) - sqrt(x), x, inf);
1 2

10

Derivadas

A derivada de f (x) com relao a x pode ser calculada com um dif f (f (x), x). Se for colocado ca um apstrofo antes do nome do comando, ele no ser executado. o a a

(%i34) diff(x^7 + 11*sin(x), x); (%o34) 11 cos(x) + 7x6 (%i35) (%o35) diff(cos(x^5), x) = diff(cos(x^5, x); d cos(x5 ) = 5x4 sin(x5 ) dx
7

Derivadas parciais e derivadas de ordem superior tambm podem ser calculadas, conforme e mostrado nos seguintes exemplos: (%i36) diff((3*x + 5*y^3)^7, y); (%o36) 105y 2 (5y 3 + 3x)6 (%i37) diff(tan(x), x, 6); (%o37) 32 sec(x)2 tan(x)5 + 416 sec(x)4 tan(x)3 + 272 sec(x)6 tan(x) (%i38) f(x, y, z) := x^3 * y^4 * z^5 $ (%i39) diff(f(x, y, z), x, 2, y, 2, z, 3); (%o39) 4320xy 2 z 2

11

Integrais
Integrais denidas em [a, b] podem ser calculadas com comando do tipo integrate(f (x), x, a, b).

(%i40) integrate( x^4*cos(x), x); (%o40) x4 cos(x)dx (%i41) integrate( x^4*cos(x), x); (%o41) (x4 12x2 + 24) sin(x) + (4x3 24x) cos(x) (%i42) integrate(x^5, x, a, b) = integrate(x^5, x, a, b); b b6 a 6 (%o42) x5 dx = 6 6 a (%i43) integrate(%e^(-x^2), x, 0, inf) = integrate(%e^(-x^2), x, 0, inf); x2 (%o43) e dx = 2 0

12

Equaoes diferenciais c

O Maxima possui vrios comandos para resoluao de equaoes diferenciais. Um deles, o a c c ode2(EDO, var1, var2) resolve equaoes diferenciais ordinrias EDO de primeira ou segunda orc a dens, com var1 sendo a varivel dependente e var2 a independente. Neste caso, preciso que se a e digite um apstrofo antes das derivadas. Nas soluoes, o Maxima apresenta as constantes genricas o c e como sendo %c, %k1, %k2 etc. (%i44) eqn1: diff(y, x) + 4*y = cos(x); d y + 4y = cos(x) (%o44) dx (%i45) ode2(eqn1, y, x); ( 4x ) %e (sin(x) + 4 cos(x) 4x (%o45) y = %e + %c 17 (%i46) (%o46) eqn2: diff(y, x, 2) - 5*diff(y, x) + 6 = 0; ( ) d d2 y5 y +6=0 dx2 dx
8

(%i47)

ode2(eqn2, y, x); 30x + 6 (%o47) y = %k1%e5x + + %k2 25

13

Programao com o Maxima ca

O Maxima possui comandos que permitem que ele seja usado tambm como uma linguagem de e programaao, permitindo que sejam elaborados programas com essa linguagem. Alguns comandos c para programaao so: c a if condio then comando1 else comando2: executa comando1 se a condio for verdadeira ou ca ca o comando2 se a condiao for falsa. c print(mensagem1, varivel1, mensagem2, varivel2, ...): mostra uma ou vrias mensagens a a a entre aspas seguidas dos valores de uma ou vrias variveis. a a for varivel from in thru trmino step passo do comando: o comando fornecido depois do do a cio e executado para cada valor da varivel no intervalo [in e a cio, trmino] com passo dado. e while condio do comando: executa o comando enquanto a condio for verdadeira ca ca block([variveis locais], comando1, comando2, ..., return(valor)): permite construo de um a ca bloco de comandos. Se houver um comando return(valor), ento o valor retornado; seno, a e a retornado o ultimo valor calculado no bloco. e Exemplos: if x > 2 then print(maior do que 2) else print(menor ou igual a 2); for k from 1 thru 20 step 2 do print(k); f(x) := block(if x < 2 then return(1) else return(x*f(x-1))); x: 1; while (x < 30) do (print(factor(x)), x: x+1);

14

De onde copiar

O Maxima tem sua prpria o pgina a na Internet, no endereo c http://maxima.sourceforge.net/download.html . E denominada Maxima, a Computer Algebra System e a partir dela pode-se copiar o programa (cerca de 30 megabytes), alm da sua docue mentao em diversos idiomas. ca

Referncias e
[1] J. R. R. Galvn (2007), Maxima con wxMaxima: software libre en el aula de matemticas, a a Ocina de Software Libre de la Universidad de Cdiz, dispon na Internet em PDF. a vel [2] Gmez, A. J. A. e outros, Prcticas de Matemticas con Maxima, dispon em o a a vel http://recursos.pnte.cfnavarra.es/~msadaall/geogebra/index.htm [3] Urroz, G. E., Maxima Book, dispon em vel http://www.neng.usu.edu/cee/faculty/gurro/Maxima.html [4] Maxima Manual (2000), dispon em vel http://maxima.sourceforge.net/docs/manual/en/maxima.pdf [5] Macsyma Inc. (1998), Macsyma Scientic Graphics Reference Manual, dispon vel em www.cs.berkeley.edu/fateman/macsyma/docs/ [6] Macsyma Inc. (1996), Macsyma Mathematics and System Reference Manual, 16th ed., dispon em www.cs.berkeley.edu/fateman/macsyma/docs/ vel [7] Macsyma Inc. (1996), Macsyma Users Guide, www.cs.berkeley.edu/fateman/macsyma/docs/ 2nd ed., dispon vel em

[8] Neble, M. V. R., Galvn, J. R. R. (2005), Introduccin a Maxima, Universidad de Cdiz, a o a dispon na Internet em PDF. vel [9] M. R. Riotorto (2008), Primeros www.telefonica.net/web2/biomates pasos en Maxima, dispon vel em

[10] J. E. Villate (2007), Introduo aos Sistemas Dinmicos Uma abordagem prtica com ca a a Maxima, dispon em http://fisica.fe.up.pt/maxima/book/sistdinam-1 2.pdf vel

10