














































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
apostila curso maple
Tipologia: Notas de estudo
Oferta por tempo limitado
Compartilhado em 09/02/2008
1 documento
1 / 86
Esta página não é visível na pré-visualização
Não perca as partes importantes!















































































Em oferta
©^ c Copyright, Renato Portugal, 2002.
(^1) [email protected]
O Maple ´e uma linguagem de computa¸c˜ao que possui quatro aspectos gerais que s˜ao:
eles se inter-relacionam. As vers˜oes utilizadas foram Maple 6 e 7.
1.2 A Worksheet
Nos microcomputadores com o Maple instalado, a worksheet ´e disparada clicando-se no ´ıcone do programa. Em outros sistemas, ela ´e disparada pelo comando xmaple (ou maple) dado no sinal de pronto do sistema operacional. Ela ´e o principal meio para gravar e ler os trabalhos desenvolvidos no Maple. A worksheet utiliza os recursos de janelas para facilitar a intera¸c˜ao do usu´ario com o Maple. Por exemplo, um comando batido errado pode ser facilmente corrigido voltando- se o cursor para a posi¸c˜ao do erro e substituindo os caracteres errados. N˜ao h´a ne- cessidade de digitar todo o comando novamente. Na worksheet, o usu´ario pode tecer coment´arios, colar gr´aficos e gravar todo o conjunto em um arquivo para ser lido e even- tualmente modificado posteriormente. A worksheet pode ser impressa selecionando-se a op¸c˜ao Print... depois de clicar em File , ou pode ser convertida em um arquivo LATEX^1. Um exemplo de uso das worksheets ´e este curso. Ele foi desenvolvido em worksheets e posteriormente convertido em LATEX para ser impresso. A worksheet ´e um caderno virtual de anota¸c˜oes de c´alculos. A vantagem do caderno virtual ´e que qualquer coisa j´a escrita pode ser modificada sem necessidade de fazer outras altera¸c˜oes, pois o trabalho se ajusta automaticamente `as mudan¸cas. Essa id´eia ´e a mesma dos processadores de textos que substitu´ıram as m´aquinas de escrever. A worksheet n˜ao ´e um processador de textos. Ela funciona de maneira satisfat´oria como um editor de textos, e a parte referente ao processamento de textos pode ser feita em LATEX. No desenvolvimento de um trabalho usando a worksheet, ´e importante que ele seja feito em ordem e que todo rascunho seja apagado assim que cumprido seu objetivo. O comando restart pode encabe¸car o trabalho. Depois de gravar a worksheet, o usu´ario pode sair do Maple. No momento em que a worksheet ´e lida novamente, os resultados que aparecem na tela n˜ao est˜ao na mem´oria ativa do Maple. E necess´´ ario processar os comandos novamente para ativar os resultados. A worksheet ´e gravada com a termina¸c˜ao .mws. A worksheet tem quatro tipos de linhas: 1. linhas de entrada de comandos que usam a cor vermelha e s˜ao precedidas pelo sinal de pronto “>”, 2. linhas de sa´ıda dos comandos na cor azul, 3. linhas de texto na cor preta e 4. linhas de gr´afico. Algumas dessas linhas podem ser convertidas umas nas outras. Os bot˜oes Copy , Paste e Cut s˜ao bastantes ´uteis neste contexto. Nos casos que envolvem tipos diferentes de linha, os bot˜oes Copy as Maple Text e Paste as Maple Text podem ser o ´unico meio de executar a tarefa. As linhas de sa´ıda usam recursos gr´aficos das janelas para escrever as letras, os s´ımbolos e desenhar os gr´aficos. O sinal de integral aparece na tela como
∫ , o somat´orio como
∑ e as letras gregas como α, β, γ, · · ·. Existe uma op¸c˜ao que faz com que as linhas de sa´ıda usem os mesmos caracteres do teclado. Essa op¸c˜ao ´e ´util para gravar resultados em um arquivo ASCII (acrˆonimo de American Standard Code for Information Interchange). A worksheet possui diversos recursos para escrever textos. E poss´´ ıvel criar se¸c˜oes e sub-se¸c˜oes. As letras podem ter diversos tamanhos e estilos, e podem ser em (^1) LATEX ´e um processador de textos de dom´ınio p´ublico. Veja o site http://www.latex-project.org.
Para obter os melhores resultados, este texto dever´a ser lido junto com o uso do Maple, de forma que os exemplos possam ser testados. Neste caso, as d´uvidas e as dificuldades ficar˜ao mais vis´ıveis.
O Maple usualmente trabalha com os n´umeros de maneira exata. Nenhuma aproxima¸c˜ao ´e feita: > (^) (34*3 + 7/11)^2; 1274641 121 Podemos ver que o resultado ´e um n´umero racional. Para obter uma aproxima¸c˜ao decimal, devemos usar o comando evalf (evaluate in floating point): > (^) evalf(%);
> Digits := 20; Digits := 20
Vejamos agora o n´umero de Euler com vinte d´ıgitos: > (^) exp(1.);
(
> (^) expand(%); 3 2
Observe que a entrada n˜ao foi simplificada at´e que isto fosse pedido. Esta ´e uma regra do Maple. As express˜oes n˜ao s˜ao simplificadas a menos que o usu´ario pe¸ca. Somente s˜ao feitas as simplifica¸c˜oes mais elementares, envolvendo as opera¸c˜oes aritm´eticas b´asicas. Vamos ver agora um exemplo mais elaborado: > (^) sin(2Pin)/5!; 1 120
sin(2 π n)
Pedimos para o Maple calcular sin(2 π n) e dividir por fatorial de 5. Poder´ıamos achar que o resultado deveria ser zero, j´a que o seno de um m´ultiplo de π ´e zero. Com um pouco de reflex˜ao mudar´ıamos de opini˜ao, j´a que n ´e uma letra sobre a qual nada foi dito. N˜ao ´e razo´avel esperar que o Maple assuma que ela ´e uma vari´avel inteira. Para o Maple, ela ´e uma letra como qualquer outra. A princ´ıpio, todas est˜ao em p´e de igualdade. Isso pode ser mudado com o seguite comando: > (^) assume(n,integer); > (^) sin(2Pin)/5!; 0 > (^) cos(Pi*n); (−1)n˜
De agora em diante, o Maple tratar´a n como uma vari´avel inteira. Ela passa a ser mo- strada na tela com um til, da forma n˜, para o usu´ario saber que essa vari´avel tem uma determinada propriedade atribu´ıda pelo comando assume. E poss´´ ıvel inibir o apareci- mento do til nessas vari´aveis com o comando > (^) interface(showassumed=0);
Outro detalhe que podemos observar do ´ultimo exemplo, ´e que o n´umero π ´e escrito com P mai´usculo. A vari´avel pi com p min´usculo n˜ao tem nenhuma rela¸c˜ao com a constante matem´atica π. Vamos retirar a declara¸c˜ao antes de continuar: > (^) n := ’n’; n := n Agora, vamos ver um exemplo com n´umeros complexos. Queremos encontrar as ra´ızes c´ubicas de: > (^) z := (-8)^(1/3); z := (−8)^1 /^3
O resultado tamb´em pode ser atribu´ıdo a uma vari´avel: > (^) solucao1 := %[1];
solucao1 := −
> (^) solucao2 := %%[2]; solucao2 := −
Podemos confirmar que solucao1 ´e de fato uma solu¸c˜ao da equa¸c˜ao: > (^) expand(subs(x=solucao1, equacao)); 0 = 0 Note que o sinal de igualdade “=” tem um papel bem diferente do sinal de atribui¸c˜ao “:=”. O sinal de igualdade n˜ao modifica o valor de uma vari´avel. Vejamos:
> (^) y = x + 1; y = x + 1
O valor de y continua sendo ele pr´oprio: > (^) y; y
Vejamos agora: > (^) y := x + 1; y := x + 1 > (^) y; x + 1
Para retirar a atribui¸c˜ao (“limpar a vari´avel”), usa-se > (^) y:=’y’; y := y
De modo equivalente: > (^) unassign(’y’);
2.3 Avalia¸c˜ao Completa
Vamos fazer uma s´erie de atribui¸c˜oes em cadeia: > (^) A := B; A := B > (^) B := C; B := C > (^) C := 3; C := 3
Agora, observe o valor que o Maple retorna para a vari´avel A: > (^) A; 3
O que aconteceu foi que A foi avaliado como sendo B que por sua vez foi avaliado como sendo C que foi avaliado como sendo 3. Isso se chama “avalia¸c˜ao completa” de uma vari´avel. Existem v´arias excess˜oes a essa regra como veremos ao longo deste texto. Estas excess˜oes s˜ao muito importantes. Podemos adiantar uma, a saber, no comando abaixo a vari´avel A n˜ao ser´a avaliada:
> (^) A := 10; A := 10
Caso A tivesse sido considerado com o valor 3, ter´ıamos o comando 3 :=10, o que n˜ao ´e admitido. Existe uma maneira de retardar a avalia¸c˜ao de uma vari´avel. Sabemos que o comando A; vai retornar 10. Por´em, podemos retardar esta avalia¸c˜ao:
> (^) ’A’; A > (^) %; 10
Isso explica por que o comando A:=’A’; “limpa” a vari´avel A. O recurso de retardar a avalia¸c˜ao, seja de uma vari´avel, seja de um comando, ´e utilizado com muita frequˆencia.
2.4 Tipos de Objetos
Para usar o Maple de maneira eficiente, ´e necess´ario conhecer a forma de alguns objetos desta linguagem. Outro nome para objetos do Maple comumente usado ´e estrutura de dados. Os principais s˜ao as listas, conjuntos, arrays, sequˆencias e tabelas. V´arios comandos do Maple tˆem estes objetos como resultado. Podemos precisar selecionar um elemento do resultado e, para isto, ´e necess´ario compreender a estruturas destes objetos. O resultado do comando solve pode ser uma sequˆencia de ra´ızes de uma equa¸c˜ao, como vimos acima. Vejamos outro exemplo:
> (^) x^8+2x^7-13x^6-24x^5+43x^4+58x^3-67x^2- 36*x+36; x^8 + 2 x^7 − 13 x^6 − 24 x^5 + 43 x^4 + 58 x^3 − 67 x^2 − 36 x + 36 > (^) sequencia_de_solucoes := solve(%); sequencia de solucoes := − 3 , 3 , − 1 , − 2 , − 2 , 1 , 1 , 1
O resultado do comando solve foi uma sequˆencia de ra´ızes, sendo que as ra´ızes repetidas aparecem tantas vezes quanto for a multiplicidade. No caso acima, a ra´ız 1 tem multi- plicidade 3 e a ra´ız -2 tem multiplicidade 2. Podemos, agora, colocar esta sequˆencia de ra´ızes na forma de outros objetos. Por exemplo, na forma de uma lista:
> (^) lista_de_solucoes := [ sequencia_de_solucoes ]; lista de solucoes := [− 3 , 3 , − 1 , − 2 , − 2 , 1 , 1 , 1]
Outra possibilidade ´e armazenar as ra´ızes na forma de um conjunto:
> (^) conjunto_de_solucoes := { sequencia_de_solucoes }; conjunto de solucoes := {− 1 , 1 , − 2 , − 3 , 3 }
Este m´etodo ´e o mesmo n˜ao importa o n´umero de ra´ızes. Um erro comum de ser cometido no primeiro m´etodo ´e usar x−2 no lugar de x+2. No segundo n˜ao se corre este risco. Aqui foi usado o comando map (mapping). Ele est´a associado `as estruturas de dados. Todos os comandos que usamos at´e agora atuavam em um ´unico elemento. No entanto, quando estamos lidando com estrutura de dados ou objetos com muitos elementos, precisamos aplicar comandos ou fun¸c˜oes a todos os elementos da estrutura. O comando que faz isso ´e o map. No exemplo acima, queremos somar x a cada elemento do conjunto de solu¸c˜oes. A nota¸c˜ao ´e elem → x + elem. Esta opera¸c˜ao deve ser realizada em todos os elementos do conjunto de solu¸c˜oes. O primeiro argumento do comando map deve ser a lei transforma¸c˜ao. O segundo argumento tem qqe ser o conjunto ou qualquer objeto com v´arios elementos. O resultado foi o desejado. Cada elemento foi somado a x. Falta mais um passo para obter o polinˆomio, que ´e converter o conjunto em produto. O produto ´e especificado no Maple como ‘*‘. As crases s˜ao necess´arias, pois o asterisco ´e um caracter n˜ao alfanum´erico. O comando convert espera que o seu segundo argumento seja um nome. O asterisco n˜ao ´e um nome, mas sim o operador de multiplica¸c˜ao. As crases fazem com que ele seja apenas um nome, ou um caracter como qualquer outra letra. Podemos converter uma lista em um conjunto e vice-versa: > (^) convert( conjunto_de_solucoes, list); [− 1 , 1 , − 2 , − 3 , 3] Os conjuntos s˜ao objetos inspirados nos conjuntos usados em Matem´atica. Podemos fazer a uni˜ao, interse¸c˜ao e subtra¸c˜ao de conjuntos com os comandos union, intersect e minus. Por exemplo:
> (^) {1,2,3} union {a,b,c,d}; { 1 , 2 , 3 , a, b, c, d}
> (^) % intersect {3,a,c,w,z}; { 3 , a, c}
> (^) %% minus %; { 1 , 2 , b, d} Os conjuntos e as listas que tˆem uma certa regra de forma¸c˜ao podem ser gerados com o comando seq (sequence). Por exemplo, o conjunto dos 10 primeiros n´umeros primos:
> (^) { seq(ithprime(i), i=1..10) }; { 2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 } A lista dos dez primeiros n´umeros da forma 2p^ − 1: > (^) [ seq(2^i-1, i=1..10) ]; [1, 3 , 7 , 15 , 31 , 63 , 127 , 255 , 511 , 1023] A lista das derivadas de x ln(x) em rela¸c˜ao a x at´e ordem 5: > (^) [ seq(diff(x*ln(x),x$i), i=1..5) ];
[ln(x) + 1,
x
x^2
x^3
x^4
Vimos como selecionar um ´unico elemento de uma estrutura de dados. Agora, como podemos obter um sub-conjunto de um conjunto ou uma sub-lista de uma lista? A nota¸c˜ao para obter sub-listas ou sub-conjuntos ´e:
OBJETO[ a .. b ]
onde a ´e a posi¸c˜ao do primeiro elemento e b ´e a posi¸c˜ao do ´ultimo elemento da parte que queremos selecionar. Por exemplo: > (^) lista1 := [a, b, c, d, e]; lista1 := [a, b, c, d, e] > (^) sublista := lista1[2..4]; sublista := [b, c, d]
Os comandos mais usados para simplificar express˜oes alg´ebricas s˜ao: expand, normal, simplify, collect, combine e factor.
3.2 Expand
Quando um usu´ario entra uma express˜ao, o Maple a mant´em na mesma forma por via de regra. A express˜ao n˜ao tem a sua forma alterada at´e que o usu´ario pe¸ca. N˜ao h´a um padr˜ao predeterminado de apresenta¸c˜ao das express˜oes alg´ebricas. Por isto, elas s˜ao armazenadas internamente, na forma em que foram fornecidas. Por exemplo, uma express˜ao dada na forma fatorada, permanece nesta forma at´e que sua expans˜ao seja pedida, e vice-versa:
> (^) (x-1)^5; (x − 1)^5 > (^) expand(%); x^5 − 5 x^4 + 10 x^3 − 10 x^2 + 5 x − 1 > (^) factor(%); (x − 1)^5 O comando expand serve para expandir as express˜oes no sentido de tirar os parˆenteses, e serve tamb´em para expandir fun¸c˜oes trigonom´etricas, logar´ıtmicas, etc. Por exemplo:
> (^) sin(2alpha+beta) = expand(sin(2alpha+beta)); sin(2 α + β) = 2 cos(β) sin(α) cos(α) + 2 sin(β) cos(α)^2 − sin(β) > (^) ln(x^2y^2) = expand(ln(x^2y^2)); ln(x^2 y^2 ) = 2 ln(x) + 2 ln(y) > (^) Psi(2x) = expand(Psi(2x)); # Psi e’ a funcao digamma
Ψ(2 x) = ln(2) +
Ψ(x) +
Ψ(x +
Em certos casos, queremos expandir uma express˜ao sem expandir um certo peda¸co. Para isso, devemos colocar a parte que queremos congelar como segundo argumento do comando expand:
> (^) (x + sin(gamma + delta))^2; (x + sin(γ + δ))^2 > (^) expand(%,sin); x^2 + 2 sin(γ + δ) x + sin(γ + δ)^2 > (^) sin(omega*(t+t0)+delta); sin(ω (t + t0 ) + δ) > (^) expand(%,t+t0); sin(ω (t + t0 )) cos(δ) + cos(ω (t + t0 )) sin(δ)
Nestes ´ultimos exemplos, os resultados seriam bem diferentes se n˜ao tiv´essemos colocado o segundo argumento. No caso da express˜ao sin(γ + θ) basta colocar sin no segundo ar- gumento do comando expand para obter o efeito desejado. Evidentemente, se tiv´essemos colocado sin(γ + θ) em vez de sin, obter´ıamos o mesmo resultado. Um terceiro efeito do comando expand se refere a express˜oes com denominador. Ele coloca o denominador embaixo de cada numerador, sem expandir o denominador: > (^) expr := (x+y)^2/(a+b)^2;
expr :=
(x + y)^2 (a + b)^2 > (^) expand(expr); x^2 (a + b)^2
x y (a + b)^2
y^2 (a + b)^2 Para expandir o denominador, ´e necess´ario primeiro usar o comando normal com a op¸c˜ao expanded e depois expandir com expand: > (^) normal(expr, expanded); x^2 + 2 x y + y^2 a^2 + 2 a b + b^2 > (^) expand(%); x^2 a^2 + 2 a b + b^2
x y a^2 + 2 a b + b^2
y^2 a^2 + 2 a b + b^2
3.3 Combine
Vimos na se¸c˜ao anterior como expandir express˜oes. A expans˜ao ´e um procedimento simples computacionalmente. O mesmo n˜ao podemos dizer do procedimento inverso. Ao contr´ario, podemos afirmar que a fatora¸c˜ao ´e um processo complexo, baseado em um longo algoritmo desenvolvido com conceitos da Algebra Moderna.´ A fatora¸c˜ao ´e feita pelo comando factor. Al´em do comando factor, os comandos normal e combine fazem o contr´ario do que faz o comando expand. Destes trˆes, o comando combine requer maior aten¸c˜ao, pois para us´a-lo com eficiˆencia ´e necess´ario conhecer as op¸c˜oes que devem ser fornecidas como segundo argumento. A sintaxe ´e:
combine( express˜ao, op¸c˜ao )
A op¸c˜ao pode ser: exp, ln, power, trig, Psi, polylog, radical, abs, signum, plus, atatsign, conjugate, plot, product ou range entre outras. A op¸c˜ao trig engloba todas as fun¸c˜oes trigonom´etricas e a op¸c˜ao power express˜oes que envolvem potencia¸c˜ao. Vejamos alguns exemplos: > (^) (x^a)^2x^b = combine((x^a)^2x^b, power); (xa)^2 xb^ = x(2^ a+b) > (^) 4sin(x)^3 = combine(4sin(x)^3, trig); 4 sin(x)^3 = −sin(3 x) + 3 sin(x) > (^) exp(x)^2exp(y) = combine(exp(x)^2exp(y), exp); (ex)^2 ey^ = e(2^ x+y)
> (^) expand(convert(%,trig)); cos(x) + sin(x) > (^) convert(cosh(x),exp); 1 2
ex^ +
ex > (^) convert(arcsinh(x),ln); ln(x +
x^2 + 1) Vejamos alguns exemplos relacionados com a fun¸c˜ao factorial: > (^) n! = convert(n!, GAMMA); n! = Γ(n + 1) > (^) convert(%,factorial);
n! =
(n + 1)! n + 1 > (^) expand(%); n! = n! > (^) binomial(n,k) = convert(binomial(n,k), factorial);
binomial(n, k) =
n! k! (n − k)!
3.5 Simplify
O comando simplify ´e um comando geral de simplifica¸c˜ao. Uma das primeiras coisas que ele faz ´e procurar dentro da express˜ao a ocorrˆencia de fun¸c˜oes matem´aticas, como as fun¸c˜oes trigonom´etricas. Caso encontre, ele usa as propriedades de simplifica¸c˜ao destas fun¸c˜oes. O mesmo ocorre com as ra´ızes quadradas, os radicais e as potˆencias. No entanto, ´e poss´ıvel aplicar as regras de simplifica¸c˜ao de determinadas fun¸c˜oes de maneira selecionada. Para isso deve-se dar o nome da fun¸c˜ao em quest˜ao no segundo argumento do comando simplify, que pode ser um dos seguintes nomes: trig, hypergeom, radical, power, exp, ln, sqrt, BesselI, BesselJ, BesselK, BesselY, Ei, GAMMA, RootOf, LambertW, dilog, polylog, pg, pochhammer e atsign (“@”). Por exemplo, no primeiro comando simplify abaixo, tanto as regras de simplifica¸c˜ao das fun¸c˜oes trigonom´etricas como da fun¸c˜ao exponencial foram usadas, enquanto que no segundo somente as regras das fun¸c˜oes trigonom´etricas foram usadas:
> (^) expr := (sin(x)^3 + cos(x)^3)*exp(a)/exp(a+b);
expr :=
(sin(x)^3 + cos(x)^3 ) ea e(a+b) > (^) simplify(expr); −(−sin(x) + sin(x) cos(x)^2 − cos(x)^3 ) e(−b) > (^) simplify(expr, trig);
−
ea^ (−sin(x) + sin(x) cos(x)^2 − cos(x)^3 ) e(a+b)
O comando simplify tem uma op¸c˜ao bastante ´util para simplifica¸c˜ao de uma express˜ao com v´ınculos adicionais. Estes v´ınculos devem ser colocados em um conjunto, mesmo que haja um ´unico v´ınculo, e repassados como segundo argumento do comando simplify. Por exemplo, queremos calcular o valor de a^4 + b^4 + c^4 com a, b e c satisfazendo as seguintes equa¸c˜oes: a + b + c = 3, a^2 + b^2 + c^2 = 9 e a^3 + b^3 + c^3 = 24: > (^) vinculos := {a+b+c=3, a^2+b^2+c^2=9,a^3+b^3+c^3=24}; vinculos := {a + b + c = 3, a^2 + b^2 + c^2 = 9, a^3 + b^3 + c^3 = 24} > (^) simplify(a^4+b^4+c^4, vinculos); 69 Outro exemplo de aplica¸c˜ao do comando simplify com v´ıculos ´e na substitui¸c˜ao de dois termos de um produto por um n´umero. Por exemplo, queremos queremos substituir a b por 10 na express˜ao a b c: > (^) expr := abc; expr := a b c > (^) subs( ab=10, expr); a b c Podemos ver que n˜ao funcionou. Agora, usando o comando simplify com v´ınculos: > (^) simplify( expr, {ab=10}); 10 c E poss´^ ´ ıvel tamb´em dizer ao comando simplify que as vari´aveis obedecem as certas restri¸c˜oes, que s˜ao as mesmas usadas no comando assume. Por exemplo, a ra´ız quadrada do produto de v´arios termos s´o ´e o produto das ra´ızes quadradas se os termos forem reais e positivos. Vejamos: > (^) expr := simplify(sqrt(x^2*y^2)); expr :=
√ x^2 y^2 > (^) simplify(expr, assume=nonneg); x y
A op¸c˜ao assume=nonneg faz com que todas as vari´aveis sejam declaradas temporaria- mente como vari´aveis n˜ao negativas. No caso da express˜ao acima, temos outra forma de obter o mesmo resultado: > (^) simplify(expr, symbolic); x y