############################################################################## # FÍSICA COMPUTACIONAL II # # por # # Francisco Carlos Lavarda # ############################################################################## Tutorial de MAXIMA: Cálculo Vetorial ==================================== ** Carregamento da livraria "vcalc.mac" Esta livraria foi construída por Ed Woollett, a quem agradeço. Para todas as versões: se de algum modo o arquivo vcalc.mac fôr depositado no diretório share/contrib dentro do diretório de instalação do Maxima, basta digitar load("vcalc.mac"); para carregar a livraria. Ocorre muitas vezes que não se tem permissão de administrador para colocar o arquivo neste diretório. Aí a saída é: Se você estiver usando o wxMaxima: 1. Salve o arquivo http://www.csulb.edu/~woollett/vcalc.mac em algum folder. 2. Dentro do wxMaxima, clique em arquivo:carregar pacote e então procure por vcalc.mac e carregue-a. 2. Se você estiver usando alguma versão unix: 1. Peça ao administrador do sistema para depositar o arquivo vcal.mac no diretório descrito anteriormente. ** Para os exemplos abaixo, crie a função escalar f(x,y,z) com o comando a seguir: f(x,y,z):=x^2*y^3*z^4; ** Diga para o Maxima que o sistema de coordenadas para os cálculos a seguir é o cartesiano: setcoord(c(x,y,z)); Isto é necessário pois, e.g., o gradiente em coordenadas esféricas possui uma expressão diferente do que em coordenadas cartesianas. Mesmo em coordenadas cartesianas, você poderia usar nomes diferentes para as coordenadas. Por exemplo, (u,v,w): setcoord(c(u,v,w)); Só que aí a função f(x,y,z) deveria ser escrita como f(u,v,w) para os exemplos que se seguirão. Caso nossos exemplos fossem em coordenadas esféricas: setcoord(s(r,t,f)); ou cilíndricas: setcoord(cy(r,f,z)); ** Calcule o gradiente de f(x,y,z): grad(f(x,y,z)); A resposta mostra uma lista com as 3 componentes do vetor "gradiente de f". ** Crie a função vetorial g como sendo igual ao gradiente de f(x,y,z): g:grad(f(x,y,z)); A resposta mostra uma lista com as componentes gx, gy e gz de g. ** Calcule o divergente de g: div(g); ** Calcule o rotacional de g: curl(g); Que neste caso, por coincidência, resulta em um vetor nulo. ** Calcule o laplaciano de f(x,y,z): lap(f(x,y,z)); Note que como a função f é escalar, o resultado é um escalar (usa-se a definição do laplaciano escalar). ** Calcule o laplaciano de g: lap(g); Note que como a função g é vetorial, o resultado é um vetor (usa-se a definição do laplaciano vetorial). ** Para um exemplo fácil de acompanhar a mão, agora defina a função vetorial g1: g1:[x*y,y*z,z*x]; ** Calcule seu divergente: div(g1); ** Calcule seu rotacional: curl(g1); ** O produto vetorial pode ser calculado para vetores constantes ou funções vetoriais. Calculemos o produto vetorial para duas funções, g1 e grad(f(x,y,z): lcross(grad(f(x,y,z)),g1); ** Se quiséssemos calcular este produto para um ponto específico do espaço, por exemplo [x=3,y=2,z=-2], poderíamos fazer: ev(%o7,x=3,y=2,z=-2); em que o7 (na minha seção) foi o número da resposta do MAXIMA para o produto vetorial calculado acima. ** Podemos ainda definir os vetores a e b e calcular seu produto vetorial (que não é comutativo pois axb é diferente de bxa): a:[1,2,3]; b:[4,5,6]; lcross(a,b); lcross(b,a);