














































































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
Os melhores documentos à venda: Trabalhos de alunos formados
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
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
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) Portugal@Lncc.Br
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(%);
(^) evalf50;
(^) 4/3*sin(2.);
(^) Digits; 10
Digits := 20; Digits := 20
Vejamos agora o n´umero de Euler com vinte d´ıgitos:
(^) exp(1.);
(^) ((1+sqrt(5))/2)^2;
(
(^) 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