Universidade Estadual de Campinas - UNICAMP Leonardo Loures Lopes RA 024307 Engenharia de Computação MA211 – Turma K Professor Márcio Antônio de Faria Rosa Tutorial do MuPAD Light 2.5.2 Baixando Para baixar o software MuPAD, entre no site www.mupad.de Já na tela de abertura, clique na figura e logo após clique em Você será levado para uma tela com diversas opções de download. Escolha aquela que corresponda ao seu Sistema Operacional. Este tutorial foi feito utilizando a versão MuPAD Light 2.5.2 for Windows. Instalando Após baixar o programa, instala-lo é bastante simples. Siga as instruções. Leia o termo de compromisso do programa. Se concordar com o termo de compromisso, selecione a opção “I accept the license agreement” e clique em “Next”. Após isto, vá clicando em “Next” que em menos de 20 segundos, o MuPAD já estará instalado em seu computador. Fazendo Cálculos Para calcular uma expressão algébrica do tipo 3+5, basta digitar a operação seguida de um <enter> Ao digitar esta seqüência, o resultado é expresso logo abaixo: • 3+5 <enter> 8 A potenciação é calculada utilizando-se o símbolo ^. Portanto, 2^5 representa o valor de 2 elevado à quinta potência: • 2^5 32 Para se calcular a raiz quadrada temos a função sqrt(). Temos também as funções trigonométricas seno, coseno, tangente, etc... Podemos entrar com várias operações separadas por vírgula como abaixo: • sqrt(9), sin(PI), cos(PI/6), arctan(1) 1/2 3 PI 3, 0, ----, -2 4 Como podemos perceber acima, a constante π é representada pela palavra “PI”. O resultado das expressões também são exibidos separados por vírgula e na ordem que aparecem. Para se calcular logaritmos empregamos a função log(b, x) onde b representa a base que estamos trabalhando e x o valor que queremos extrair o logaritmo. O logaritmo natural requer apenas um parâmetro e tem o escopo ln(x). O número de “euler” é representado pela letra “E” maiúscula. Portanto log(E, x) é equivalente a ln(x) como podemos perceber abaixo: • log(2, 1024), log(E, 1), ln(1), ln(E) 10, 0, 0, 1 Exibindo o valor numérico de expressões Se tentamos calcular o arco tangente de 3, por exemplo, o MuPAD nos responde da seguinte maneira: • arctan(3) arctan(3) o que não está errado, pois arctan(3) vale realmente arctan(3). Mas se desejamos saber o valor numérico de arctan(3), temos que utilizar a função “float” como segue: • float(arctan(3)) 1.249045772 O mesmo pode ser utilizado para obtermos os valores do π e do número de “euler”: • float(PI), float(E) 3.141592654, 2.718281828 Diferenciais e Integrais O comando diff(e, v) deriva a expressão “e” em função da variável “v”. Para derivarmos a expressão 3x^3 + 2x^2y^2 + xy + sen(x) + cos(y), fazemos: • diff(3*x^3 + 2*x^2*y^2 + x*y + sin(x) + cos(y), x) 2 y + cos(x) + 9 x 2 + 4 x y Para integrar, podemos utilizar o comando int(e, v) que significa que iremos integrar a expressão “e” em função da variável “v”. Para acharmos a integral indefinida da expressão acima em função de “x”, fazemos: • int(3*x^3 + 2*x^2*y^2 + x*y + sin(x) + cos(y), x) 4 2 3 2 3 x x y 2 x y x cos(y) - cos(x) + ---- + ---- + ------4 2 3 Se estamos fazendo várias operações com uma determinada expressão, como no caso apresentado acima, o MuPAD nos permite associar uma expressão a uma determinada palavra através do operador “:=” (dois pontos igual). Por exemplo, podemos associar a expressão acima à palavra “exp1” e então, só precisaremos digitar diff(exp1, x) para obtermos a derivada da expressão. Segue um exempl: • exp1 := 3*x^3 + 2*x^2*y^2 + x*y + sin(x) + cos(y) 3 x y + cos(y) + sin(x) + 3 x 2 + 2 x 2 y • diff(exp1, x) 2 y + cos(x) + 9 x 2 + 4 x y • int(exp1, x) 4 2 3 2 3 x x y 2 x y x cos(y) - cos(x) + ---- + ---- + ------4 2 3 Para calcularmos integrais definidas, basta entrarmos com os extremos: • int(x^2,x=0..1) 1/3 Limites Limites são calculados utilizando-se o comando limit que possui dois parâmetros separados por vírgula, sendo o primeiro uma expressão e o segundo uma variável seguida de um sinal de igual seguida por um valor. “x=0” por exemplo representa “x tente a 0”. O limite fundamental da trigonometria, por exemplo, sem(x)/x, com x tendendo a 0 pode ser obtido da seguinte forma: • limit(sin(x)/x, x=0) 1 Um símbolo muito importante que precisamos ao calcular limites é o ∞ (infinito). Este símbolo é representado pela palavra “infinity”. Veja: • limit(1/x, x=infinity) 0 Declarando Funções A declaração de funções no MuPAD é bastante simples. Para declarar a função F(x) = x^3 + x^2 basta fazermos: • F := x -> (x^3 + x^2) x -> x^3 + x^2 • F(x) 2 x 3 + x • F(2) 12 • F(a+b) 2 (a + b) 3 + (a + b) Podemos declarar funções de várias variáveis apenas colocando as variáveis entre parênteses: • G := (x,y)->(x+y) (x, y) -> x + y Como as expressões, podemos derivar, integrar as funções. É bastante intuitiva a maneira de fazermos tais operações. • int(G(a,b),b) 2 b a b + -- 2 Podemos também considerar a função como uma equação e isolar uma variável ou então encontrar o valor de uma das variáveis tendo o valor da outra. Para isso utilizamos o comando solve. No próximo item estudaremos este comando mais detalhadamente para a resolução de Sistemas Lineares. • solve(G(x,y)=5,y) {5 - x} • solve(G(x,7),x) {-7} Sistemas Lineares O comando solve visto anteriormente é utilizado para a resolução de sistemas lineares. Sua sintaxe é a seguinte: solve({equação 1,equação 2,...,equação n},{variável 1, variável 2,..., variável m}) Por exemplo, vamos resolver o sistema linear a seguir: x+y+z=6 x+y–z=0 2x + y + 2z = 10 Podemos utilizar o operador “:=” para simplificar os cálculos: • equacoes := { x+y+z=6, x+y-z=0, 2*x+y+2*z=10 } {x + y + z = 6, x + y - z = 0, 2 x + y + 2 z = 10} • incognitas := { x, y, z } {x, y, z} • solve(equacoes, incognitas) {[x = 1, y = 2, z = 3]} Gráficos em duas dimensões O MuPAD possui objetos gráficos (plot::Group) que primeiro são criados e só depois são mostrados como gráfico. Por exemplo, temos campos escalares (plot::contour), curvas em duas dimensões (plot::Curve2d), superfícies em três (plot::Surface3d) etc. Primeiro temos que criar estes objetos, para depois, utilizando o comando plot(), mostrarmos o gráfico gerado. Podemos colocar mais de um objeto com o comando plot(). Por exemplo, plot(objeto1, objeto2, ..., objeton) o que lhe faz muito semelhante ao comando Show[] do Mathematica. Vamos começar mostrando como traçar curvas de nível e gráficos em duas dimensões utilizando o terceiro exercício da Primeira Parte do Projeto. Mas antes vamos dar uma visão geral dos comandos utilizados para tal fim. c := plot::contour([x, y, f(x,y)], x=[a,b], y=[c,d]) No comando acima, “c” está recebendo o objeto gerado pelo comando plot::contourn(...). Este comando consiste de três parâmetros. O primeiro [x, y, f(x,y)] significa que a função f(x,y) que depende das variáveis “x” e “y” é que está sendo traçada. Note que f(x,y) pode ser substituída por qualquer função, como por exemplo x^2 + y^2. Os dois segundos parâmetros representam os intervalos de “x” e “y” que devem ser considerados. Para parametrizar uma superfície em duas dimensões utilizamos o comando: c := plot::Curve2d([x(t), y(t)], t=[a,b]) No comando acima “c” está recebendo o objeto gerado pelo comando plot::Curve2d(...). Este comando recebe como entrada as componentes “x” e “y” parametrizadas em função de “t” da curva que está sendo gerada, e o intervalo em que “t” irá variar. Vamos dar agora um exemplo de como resolver o terceiro exercício da Primeira Parte do Projeto. Primeiro geramos a parametrização da elipse de centro (8,6) e semi-eixos 4 e 3 sendo as componentes “y” dos dois focos iguais. • f := (t)->[4*cos(t)+8, 3*sin(t)+6] t -> [4*cos(t) + 8, 3*sin(t) + 6] Agora temos que construir a função do campo escalar da variação de temperatura: • g := (x,y)->(x+y) (x, y) -> x + y Agora que já temos as duas funções podemos gerar seus gráficos: • graficof := plot::Curve2d(f(t),t=[0,2*PI]) plot::Curve2d([4 cos(t) + 8, 3 sin(t) + 6], t = 0..2 PI) • graficog := plot::contour([x,y,g(x,y)], x=[-1,13], y=[0,10], Contours=[-1,1,3,5,7,9,11,13,15,17,19,21,23]) plot::Group() Veja que foi utilizado a opção “Contours = [v1, v2, ..., vn]” na construção das curvas de níveis da função g(x,y). Agora com os dois gráficos, podemos utilizar o comando plot(graficof, graficog) para mostrar na tela os dois gráficos sobrepostos: • plot(graficof,graficog) Também é possível traçar gráfico de funções não parametrizadas. Estes gráficos são traçados diretamente sem a utilização do comando plot(). Veja: • plotfunc2d(sin(x)/x,x=-3*PI..3*PI) Cabe mencionar apenas que este comando requer o intervalo escrito sob a forma x=a..b e não x=[a,b] como vínhamos utilizando. Também é possível criar campos vetoriais com o MuPAD. O comando é o seguinte: c := plot::vectorfield([x, y], x=a..b, y=c..d) Veja um exemplo: • plot(plot::vectorfield([y,-x],x=-2..2,y=-2..2)) Gráficos em três dimensões Os comandos para gráfico em três dimensões são muito semelhantes aos de duas dimensões. Portanto, darei apenas a sintaxe dos comandos e já entrarei com os exemplos. Para plotar curvas parametrizadas em três dimensões utilizamos o comando plot::Curve3d como segue: c := plot::Curve3d([x, y, z], t=ª.b) Para superfícies parametizadas utilizamos: c := plot::Surface3d([x, y, z], u=a..b, v=c..d) Para exemplificar o uso destes comandos iremos utilizar a quarta questão da prova que era pra achar a intersecção de uma esfera de raio R centrada na origem com um cilindro que possui somente z negativo e de circunferência geratriz de raio R/2 centrada no ponto (0,R/2,0). Iremos considerar aqui R=1 para simplificar os cálculos. A circunferência é parametrizada da seguinte forma: x = sen(f)cos(t) y = sen(f)sen(t) z = cos(f) Substituindo estes valores na equação cartesiana do cone encontramos t em função de teta. Substituindo os novos valores de t nas componentes da esfera obtemos a parametrização da intersecção do cone com a esfera. Primeiro geramos a esfera: • esf:=plot::Surface3d([sin(f)*cos(t),sin(f)*sin(t),cos(f)],f=[0,P I],t=[0,2*PI]) plot::Surface3d([sin(f) cos(t), sin(f) sin(t), cos(f)], f = 0..PI, t = 0..2 PI) Neste caso, diferentemente da parametrização em 2d, a função que queremos parametrizar foi digitada diretamente dentro do comando plot::Surface3d. No caso da parametrização em duas dimensões, criamos uma função funcaof e só depois geramos o gráfico. Repare também que são utilizadas aqui 2 intervalos de valores. Um para f (f=[0,PI]) e outro para t (t=[0,2*PI]). O cone também pode ser parametrizado da seguinte forma: • cone:=plot::Surface3d([cos(a)/2,sin(a)/2+1/2,b],a=[0,2*PI],b=[1,0]) / -- cos(a) sin(a) -plot::Surface3d| | ------, ------ + 1/2, b |, a = 0..2 PI, b = \ -2 2 -\ -1..0 | / Como encontramos dois valores para t, t=f e t=PI-f, teremos que parametrizar duas curvas que chamaremos de int1 e int2. Segue: • int1:=plot::Curve3d([sin(f)*cos(f),sin(f)*sin(f),cos(f)],f=[PI/2 ,PI],Color=RGB::Blue,LineWidth=50) / 2 PI \ plot::Curve3d| [cos(f) sin(f), sin(f) , cos(f)], f = --..PI | \ 2 / • int2:=plot::Curve3d([sin(f)*cos(PI-f),sin(f)*sin(PIf),cos(f)],f=[PI/2,PI],Color=RGB::Blue,LineWidth=50) / 2 PI \ plot::Curve3d| [-cos(f) sin(f), sin(f) , cos(f)], f = --..PI | \ 2 / Repare que foram utilizadas duas opções novas nesses comandos. A opção Color=RGB::Blue que diz para traçar a curva na cor azul e LineWidth=50 que diz para a grossura da linha da curva ser 50. Essas duas opções facilitaram a visualização da curva sobre a superfície. Agora que temos os quatro gráficos podemos mostra-los na tela utilizando o comando plot. Utilizamos a opção Scaling=Constrained para termos a mesma escala nos eixos x, y e z. • plot(esf,int1,int2,cone,Scaling=Constrained) Outro comando semelhante ao plot::Function2d é o plot::Function3d. Segue um exemplo: • plot(plot::Function3d(sin(x)*cos(y), x=[0,2*PI], y=[0,2*PI]))