Apostila Do Maxima - PDF

download Apostila Do Maxima - PDF

of 18

Transcript of Apostila Do Maxima - PDF

Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 1 Adriana dos Santos Morais UNIVERSIDADE FEDERAL DO PAR CAMPUS DE SANTARM FACULDADE DE MATEMTICA PROJETO DE EXTENSO: Uso de software livre como ferramenta de apoio ao ensino da Matemtica, Cincia e Fsica nas Escolas Pblicas de Ensino Fundamental e Mdio. COORDENADOR DO PROJETO DE EXTENSO: Professor: Jos Antonio Oliveira Aquino APOSTILA: MAXIMA AUTORES DA APOSTILA:

Aluna: Adriana dos Santos Morais Aluno: Anderson Tavares Neres Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 2 Adriana dos Santos Morais EstaapostilafoicriadabaseadanomanualdoSoftwareMaxima.(Estemanualencontra-se disponvel no site: http://maxima.sourceforge.net/docs/manual/pt_BR/maxima.html#SEC_Top Parafazermosdownloaddoprogramaouobtermosoutrasinformaes,visiteositeoficialdo Maxima. (http://maxima.sourceforge.net). OMaximaumSistemadeComputao Algbrica,decdigoabertosobalicenaGPL(General PublicLicense),desenvolvidoporWillianF.Shelter,implementadoemLisp.,baseadonaimplementao original do MacSyma no MIT.Nesta apostila estaremos utilizando a verso (Maxima 5.14.0) para Linux.OProgramaMaximapodeseracessadopelokonsoledoLinuxdigitando-semaxima.Umambiente um pouco mais amigvel tambm pode ser acessado no Linux pelo comando xmaxima Na tela principal do maxima veremos informao da verso e uma linha de comando. Termine cada comandoMaximacomumpontoevrgulaepressioneenter.Nomaximacomentriossocomandos constitudosdetextosenmeroscontidosentreoscaracteres/*e*/ouentreaspas()nessecasoos comentrios sero exibidos na tela. Termine uma sesso com o comando "quit(); CONSIDERAES SOBRE A FIGURA ACIMA: (%i nmero) (%o nmero) so etiquetas. A letra i indica uma entrada de dados e o nmero, os passos j executados ou as linhas j utilizadas no programa que serviro como referncia para uso posterior. A letraoindicaasada.Parausarumresultadoemclculosposteriores,pode-seatribuiressevalorauma variveloureferir-seaessemesmovaloratravsdeseurtulogeradoautomaticamente.Temosqueo smbolo%refere-seaomaisrecenteresultadocalculado.Casonofordesejadomostraroresultadoda operao pode-se usar o $ (cifro) ao final da sentena a ser processada. DEFININDO VARIVEIS Variveis: Uma varivel corresponde ao nome simblico de um espao de memria que armazena um valor. O operador usado para definir variveis o : (dois pontos). A lgica a seguinte: ComandoO que ele faz? x:a;Atribui o valor a varivel x kill(x);Apaga o valor atribudo varivel x. Veja o exemplo: (%i1) x:3.75;(%o2) 3.75(%i4) x; (%o1) 3.75(%i3) kill(x);(%o4) x (%i2) x;(%o3) done Obs.: No MAXIMA, os nmeros decimais no so escritos com o uso de vrgula como aprendemos na escola e sim com ponto. Por exemplo: 3,75 para ns so 3.75 no MAXIMA como vimos acima. Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 3 Adriana dos Santos Morais (%i1) a:2; b:3; c:1; d:5;e:4; f:0; Como vemos ao lado, podemos definir vrias variveis em uma mesma linha de comando. Podemos atribuir outros valores e no apenas nmero s variveis. Vamos a um exemplo: EXERCCIO Atribua os seguintes valores para as variveis: a=12; b=37; c=43; d=169; e=4; f=0 e calcule o valor das expresses a seguir. Expresso Resultado +a b 25 ( ) +2 a 3 ( ) +d 1 4590 a|\

|||+db2 a2 b24 a c4 a 349028 + +a d2b d c 349028 +d 27 e+c 6 5 |\

||||+1 a+1 b 1 c+d 1f 1 DICAS Se colocarmos uma expresso, o MAXIMA conservar a forma simblica: Para que a operao seja executada utiliza-se o comando numer. %,numer; Em casos que voc definiu os valores para variveis e no quer ver o resultado de uma expresso, utilize o sinal de apstrofe antes da expresso. Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 4 Adriana dos Santos Morais FUNES BSICAS DO MAXIMA Sintaxe no MaximaFunoSintaxe no MaximaFuno abs(x)|x|acsc(x)arccosec(x) exp(x) e ee ex acot(x)arccotg(x) sign(x)xx sinh(x)senh(x) sqrt(x) x cosh(x)cosh(x) sin(x)sen(x)tanh(x)tgh(x) cos(x)cos(x)sech(x)sech(x) tan(x)tg(x)csch(x)csch(x) sec(x)sec(x)coth(x)cotgh(x) csc(x)cosec(x)asinh(x)arcsenh(x) cot(x)cotg(x)acosh(x)arcosh(x) acos(x)arccos(x)atanh(x)arctanh(x) asin(x)arcsen(x)asech(x)arcsech(x) atan(x)arctan(x)acsc(x)arccosech(x) asec(x)arcsec(x)acoth(x)arccotgh(x) factorial (x)x! Ou calcule o fatorial de nmero n por n! max(a,b,c)Calcula o mximo entre os valores dados. min(a,b,c)Calcula o mnimo entre os valores dados. binomial (x, y) O coeficiente binomial x!/(y! (x - y)!). Se x e y forem inteiros, ento o valor numrico do coeficiente binomial calculado. Se y, ou x - y, for um inteiro, o coeficiente binomial expresso como um polinmio. divsum (n, k)divsum (n)- divsum (n, k) retorna a adio dos divisores de n elevados k'sima potncia.- divsum (n) retorna a adio dos divisores de n.fib (n)Retorna o n'simo nmero de Fibonacci. fib(0) igual a 0 e fib(1) igual a 1, e fib (-n) igual a (-1)^(n + 1) * fib(n).Aps chamar fib, prevfib iguala fib (x - 1), o nmero de Fibonacci anterior ao ltimo calculado.ifactors (n) Para um inteiro positivo n retorna a fatorao de n. Se n=p1^e1..pk^nk for a decomposio de n em fatores primos, ifactors retorna [[p1, e1], ... , [pk, ek]]. inrt (x, n) Retorna a parte inteira da n'sima raz do valor absoluto de x.lcm (expr_1, ..., expr_n)Retorna o menor mltiplo comum entre seus argumentos. Os argumentos podem ser expresses gerais tambm inteiras. next_prime (n)Retorna o menor primo maior que n.load ("functs") chama essa funo.prev_prime (n) Retorna o maior primo menor que n.Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 5 Adriana dos Santos Morais primep (n) Teste de primalidade. Se primep (n) retornar false, n um nmero compostro e se esse teste retornar true, n um nmero primo com grande probabilidade.totient (n) Retorna o nmero de inteiros menores que ou iguais a n que so relativamente primos com n.log(x) Representa o logartmo natural (base e) de x. ln(x) Maxima no possui uma funointerna para logartmo de base 10 ou de outras bases. Sugesto de funo para calculo de log em outras bases. logaritmo(base,antilog):= solve (base ^ logaritmo = antilog , logaritmo); CONSTANTES ESPECIAIS Htrsconstantesespeciaisquesolistadosnatabelaabaixoesuarespectivarepresentaodentro do MAXIMA. Constante (smbolo)NomeRepresentao no MAXIMA e Nmero de Euler%e Pi%pi Infinitoinf Constante de Euler%gamma DEFININDO FUNES NO MXIMA AformadedefiniodefunonoMXIMAumadasmaissimplesqueexiste.Paracriaruma funo, por exemplo, f(x) voc apenas tem que digitar f(x):= expresso; Vamos a um exemplo: IDENTIFICADORES:Osidentificadores(nomesdevariveis,nomesdefunes,...)podemser formadosporletras,dgitosdecimaiseocaractere"sublinhado"(_).Umidentificadordevecomearcom uma letra e no podem conter espaos, letras acentuadas ou cedilhadas. RESULTADOS EXATOS E APROXIMADOS OMAXIMApossuiporpadroumnmerodecasasdecimaisiguala16.Estenmeropodeser modificado mudando o valor da varivel fpprec. Um nmero real como e, ,2 , ln(3) e outras podem seraproximadospornmerosdecimais(oquesechamadentrodoMAXIMAdepontoflutuante).O comando para isto bem simples: float (); ou bfloat (); Vejamos alguns exemplos: Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 6 Adriana dos Santos Morais RESOLVENDO SISTEMAS LINEARES E EQUAES O mtodo mais utilizado para resolver equaes o comando solve, ele capaz de resolver equaes lineares, no lineares e sistemas com essas equaes, veja a definio abaixo. solve(expresso = expresso,varivel) Se o sistema for incompatvel, o Maxima retorna: Inconsistent equations: ( ) ATRIBUINDO VALORES (NUMRICO OU NO) A VARIVEISO comando que faz esta atribuio o subst(,,);. Este comando faz o seguinte: substitui por em . Veja os exemplos: Obs.: 1.Naturalmente que esta substituio pode ser por outras expresses e no somente por nmeros como vimos acima. 2.Outra maneira de dizer ao maxima para re-avaliar uma funo inserindo o smbolo apostrofe duas vezes antes do nome da funo a ser reavaliada. Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 7 Adriana dos Santos Morais COMO EXPANDIR, FATORAR E SIMPLIFICAR COM O MAXIMA. ComandoO que faz? expandExpanso simples factorFatora (polinmios) ratsimpSimplifica expresses polinomiais radcanSimplifica expresses que contenham radicais Ex.: NMEROS COMPLEXOS Nmeroscomplexospodemserdefinidosutilizandoooperador%iou%Iparaoi(nmero complexo tal que i2 = -1) da parte imaginria. Os comandos realpart e imagpart fornecem respectivamente a parte real e a parte imaginria de um nmero complexo. Vejamos o exemplo a seguir: Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 8 Adriana dos Santos Morais DIVISIBILIDADE Dados dois inteiros d e n dizemos que d divide n (ou que d divisor de n; ou que n mltiplo de d) seexistiruminteiroqtalquen=dq. Aqchamamosquocientedadivisodenpord.Quandoddividen escrevemos:d|n. QUOCIENTE E RESTO Para todo o de n o existe um nico q e um nico r tais que n = dq + r; 0 r < d; O q chamado de quociente e r de resto. Oquocienteerestodadivisointeirasoobtidos,respectivamente,pelasfunesquotiente remainder. As funes do Mxima tambm aceitam argumentos negativos. O resto negativo sempre que n negativo; o quociente negativo se n e d tm sinais opostos: Outra forma de obter o quociente e o resto atravs da funo divide cujo resultado uma lista em que o primeiro elemento o quociente e o segundo elemento o resto da diviso. FUNES DO MXIMA ASSOCIADAS DIVISIBILIDADE OmximodivisorcomumemnimomltiplocomumestoimplementadosemMximapelas seguintes funes: * gcd(p1, p2, var1,...) - calcula o mximo divisor comum de p1 e p2; Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 9 Adriana dos Santos Morais *ezgcd(p1,p2,...)-devolveumalistacujoprimeiroelementoom.d.c.dospolinmiosp1,p2,...,eos restantes elementos so os polinmios divididos pelo m.d.c.; A funo ezgcd devolve uma lista, em que o primeiro elemento o m.d.c. Se pretendermos obter apenas este valor podemos usar a funo part para nos devolver um elemento da lista. *lcm(exp1,exp2,...)-calculaomnimomltiplocomumdosseusargumentos.Fazerload(functs)$para acessar esta funo. O mnimo mltiplo comum entre 12 e 21 84. Como vemos a seguir: Ex.:-1divisvelpor383?Umamaneiraderesponderaquestoatravsdoseguintecomandono Maxima: PRIMOS Um inteiro positivo n > 1 diz-se primo se ele tem precisamente 2 divisores: 1 e n (ou seja, se no tiver divisores prprios). Um nmero no primo diz-se composto. OTeoremaFundamentaldaAritmticadizquequalquerinteironmaiorque1podeserexpresso como um produto: x x... x Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 10 Adriana dos Santos Morais Ondeospi'ssonmerosprimosdistintoseosei'ssointeirospositivos.Mas,afirmaqueesta factorizao nica a menos da ordem dos fatores. Pretende-se determinar se 31418506212244678577 , ou no, primo. Uma maneira muito pratica de saber a resposta consiste em usar o factor: Tambm possvel decidir se um nmero primo ou no sem calcular a sua fatorizao! Em Maxima usamos a funo primep: TIPOSDEOBJETOSINTERNOS Umobjetorepresentadocomoumaexpresso.Osmaisimportantestiposdeobjetosinternosso listas, matrizes, e conjuntos. Listas: Uma lista indicada dessa forma: [a, b, c]. Se L uma lista, L[i] seu i simo elemento.L[1] o primeiro elemento. FUNES DEFINIDAS PARA LISTAS A funo map: constri e avalia uma expresso usando itens individuais de uma listade argumentos. Os argumentos de uma expresso so sempre avaliados (mesmose eles no puderem ser avaliados de outra forma). O resultado uma lista. map(f , L) aplica fa cada elemento de L. map("+",[1,2,3],[a,b,c]); map("=",[a,b],[-0.5,3]); A funo apply: constri e avalia uma expresso.Os argumentos da expresso so sempre avaliados (mesmo se eles no puderem ser avaliados de outra forma). apply("+",L:[a,b,c,d,e]); a soma dos elementos de L. A funo lambda: constri uma expresso lambda (uma funo sem nome). A expresso lambda pode ser usada em alguns contextos como uma funo comum que possui nome.lambda no avalia o corpo da funo. f: lambda ([x,y],(x+y)*(x-y)); A funo length(L): o numero de elementos em L. Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 11 Adriana dos Santos Morais INTRODUO A CONJUNTOS Umconjuntoumacoleodeobjetos. Aordemnaqualoselementossolistadosirrelevantee, por conseguinte, dois conjuntos so iguais se contm os mesmos elementos. Maximafornecefunesdeconjunto,taiscomointersecoeunio,paraconjuntosfinitosqueso definidosporenumeraoexplcitamente.Maximatratalistaseconjuntoscomoobjetosdistintos.Esse recurso torna possvel trabalhar com conjuntos que possuem elementos que so ou listas ou conjuntos. Paraconstruirumconjuntocomelementosa_1,...,a_n,escrevaset(a_1,...,a_n)ou{a_1,...,a_n}; para construir o conjunto vazio, escreva set() ou {}. Para insero de dados, set(...) e { ... } so equivalentes. Conjuntossosempremostradosentrechaves({...}).Seumelementolistadomaisdeumavez,a simplificao elimina o elemento redundante.Obs: Para construir um conjunto dos elementos de uma lista, use setify.setify ([b, a]); FUNES PARA CONJUNTOS. union(A, B) : a unio dos conjuntos A e B. intersection(A, B) ou intersect(A,B) : a interseco dos conjuntos A e B. cardinality(A) : o nmero de elementos no conjunto A. setdifference(A,B): a diferena entre conjuntos A e B. cartesian_product (b_1, ... , b_n) Retorna umconjunto de listas da forma[x_1, ..., x_n], onde x_1, ..., x_n so elementos dos conjuntos b_1, ... , b_n, respectivamente.cartesian_product ({0, 1}, {0, 1}); divisors(n):Representaoconjuntodosdivisoresden.divisors(n)simplificaparaumconjuntode inteiros quando n for um inteiro no nulo. O conjunto dos divisores inclui os elementos 1 e n. Os divisores de um inteiro negativo so os divisores de seu valor absoluto. Para verificar quando um elemento pertence, ou no, a um conjunto, usamos a funo elementp, que uma funo Booleana. A:{-4,1,3}; elementp(0,A); O Maxima permite tambm determinar um subconjunto de um dado conjunto: subset (a, f):Retorna o subconjunto de um conjunto a que satisfaz o predicado f.Por exemplo, se pretender determinar o subconjunto dos nmeros pares de um dado conjunto, faz-se: subset({1,2,7,8,9,14},evenp); Obs.: Em Maxima, existe a funo evenp para avaliar se uma expresso par, e a funo oddp para avaliar se uma expresso mpar. Para vermos se um conjunto subconjunto de outro conjunto, usamos a funo subsetp subsetp (a, b): Retorna true se e somente se o conjunto a for um subconjunto de b.subsetp ({1, 2, 3}, {a, 1, b, 2, c, 3}); symmdifference (a_1, ..., a_n): Retorna a diferena simtrica, isto , o conjunto dos elemetnos que ocorrem em exatamente um conjunto a_k.symmdifference({1, 2, 3}, {a, 1, b, 2, c, 3}); permutations (a): Retorna um conjunto todas as permutaes distintas dos elementos da lista ou do conjunto a. Cada permutao uma lista, no um conjunto. Quando a for uma lista, elementos duplicados de a so includos nas permutaes.permutations ([a, a, b]); powerset (a): Retorna o conjunto de todos os subconjuntos de a, ou um subconjunto de a. powerset(a) tem 2^cardinality(a) elementos.powerset (a, n): retorna o conjunto de todos os subconjuntos de a que possuem cardinalidade n.Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 12 Adriana dos Santos Morais powerset ({a, b, c}); powerset ({w, x, y, z}, 3); MATRIZES A introduo de uma matriz no Maxima pode ser feita da seguinte forma: Seja a matriznmA, ento: Matrix([vetor da 1 linha],[vetor da 2 linha],...,[ vetor da nsima linha]; Exemplo: ||||\|1 1 11 0 53 1 2 A: matrix([2,1,3],[-5,0,1],[1,1,-1]); TRABALHANDO COM MATRIZES: O que faz?Comandos Definindo matrizes A: matrix([1,2],[0,1]); B: matrix([1,1],[1,1]); Soma ou subtrao de matrizesA+B; ou A-B; Produto de matrizes, elemento por elemento;A * B; Diviso de matrizesA/B; Matriz para um expoente escalarA ^ 3; ou B ^ 3; Base escalar para um expoente matriz, elemento por elemento. exp(A); ou exp(B); Base matriz para um expoente matriz. Essa no realizada elemento por elemento. A ^ B; ou B ^A; Multiplicao no comutativa de matrizes.A.B; ou B.A; Exponenciao no comutativa de matrizesA ^^ 3; ou B ^^ 3; Inversainvert(A); ou A^^-1; Determinantedeterminant(A); Posto da matriz Arank(A); Transposta da matriz Atranspose(A); Polinmio caractersticocharpoly(A,x); Auto-valores da matriz Aeigenvalues (A); Auto-vetores da matriz Aeigenvectors (A); Forma triangular da matriz Atriangularize (A); Forma escalonada da matriz Aechelon (A); Forma adjunta da matriz Aadjoint (A); Retorna o nmero de linhas de A.length(A); Retorna o nmero de colunas de A.length(transpose(A)); Retorna a i'sima coluna da matriz Acol (A, i); Cpia da matriz A.copymatrix (A); Retorna uma matriz diagonal de tamanho n por n com os elementos da diagonal todos iguais a x. diagmatrix (n, x); Retorna uma matriz identidade (o mesmo que ident (n)). diagmatrix (n, 1); Retorna uma matriz m por n, todos os elementos da qual so zero exceto para o elemento [i, j] que x. ematrix (m, n, x, i, j); Retorna uma matriz com elemento i,j igual a f(A[i,j]) matrixmap (f, A); Retorna true se expr uma matriz, de outra forma retorna false. matrixp (expr); Retorna o i, j menor do elemento localizado na linha i coluna j da matriz A. minor (A, i, j); Fevereiro de 2008 [MAXIMA PROJETO: INFORMTICA SOLIDRIA] Autores: Anderson Tavares Neres Pgina 13 Adriana dos Santos Morais OPERADORES ESPECIAIS E OUTRAS FUNES. print (expr_1, ..., expr_n)Avaliaemostraexpr_1,...,expr_numaapsaoutra,daesquerdaparaadireita,iniciandonolado esquerdo do console. O valor retornado por print o valor de seu ltimo argumento. print no gera rtulos de expresso intermediria. Obs.:timedate()Retornaumaseqnciadecaracteresrepresentandoadataehoraatuais.A seqnciadecaracterestemoformatoHH:MM:SSDia,mm/dd/aaaa(GMT-n),Ondeoscampossohoras, minutos, segundos, dia da semana, ms, dia do ms, ano, e horas que diferem da hora GMT.d: timedate ()$ print ("timedate mostra o tempo atual", d)$ Operadores Relacionais,operadores diversos e funes de avaliao Operador: < Operador: = Operador: > Operador: # Representa a negao da igualdade sinttica =. Operador and: O operador lgico de conjuno. Operador or: O operador lgico de disjuno. Operador not: O operador lgico de negao. Funo compare (x, y): Retorna um operador de comparao op (=, =, ou #) tal que is (x op y) avalia para true; quando ou x ou y dependendo de %i e x # y, retorna notcomparable; Quando no existir tal operador ou Maxima no estiver apto a determinar o operador, retorna unknown. Funo is (expr): Tenta determinar se a expr predicada (expresses que avaliam para true ou false) dedutvel de fatos localizados na base de dados de assume. Se a dedutibilidade do predicado for true ou false, isretornatrueoufalse,respectivamente.Deoutraforma,ovalorderetornogovernadoatravsdo sinalizadorglobalprederror.Quandoprederrorfortrue,isreclamacomumamensagemdeerro.Deoutra forma, is retorna unknown. Funo maybe (expr): Tenta determinar se a expr predicada dedutvel dos fatos na base de dados de assume. Se a dedutibilidade do predicado for true ou false, maybe retorna true ou false, respectivamente. De outra forma, maybe retorna unknown. maybe funcionalmente equivalente a is com prederror: false, mas o resultado computado sem atualmente atribuir um valor a prederror. OPERADOR ESPECIAL: IF Representa avaliao condicional.A estrutura de if.emsua forma mais simples : IF condio THEN expressao1 ELSE expressao2; Secondioresultatrue,entoaexpressao1executada;seelaresultafalse,entoaexpressao2 executada.O valor da condio determinado automaticamente.H(x):= if x