Re: Vector Fields
- To: mathgroup at smc.vnet.net
- Subject: [mg14716] Re: Vector Fields
- From: Rainer.Bassus at t-online.de (Rainer Bassus)
- Date: Tue, 10 Nov 1998 01:21:06 -0500
- References: <7258kj$8bi@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
David Farrelly wrote:<7258kj$8bi at smc.vnet.net>... > >I have a couple of questions that I'd appreciate some suggestions on; > >(i) I can't get PlotVectorField to work on Mathematica running > on a PC. Basically I can't figure out what packages > to load based on what the manual says. > You can plot a vector field in Cartesian coordinates with the following steps: A = ex Ax + ey Ay + ez Az **This is the Vector field** ex, ey, ez **are the unit vectors** Ax = fx(x,y,z), Ay = fy(x,y,z), Az = fz(x,y,z) Ax, Ay, Az **are three different functions of x,y,z** A very simple vector field is: Ax = 0, Ay = 0, Az = 1 ** this vector field has no function of x,y,z but an constant value of 1 in z-direction *** The plot with Mathematica can be done with: A = {0,0,1}; <<Graphics`PlotField3D`; PlotVectorField3D[ A ,{x,-1,1},{y,-1,1},{z,-1,1}] >(ii) Does anyone know how to plot a vector field on a sphere. > What I'd like to do is to represent fluid flow using colors > to represent the fluid density and arrows to represent the > vector field. This is done on the surface of a sphere (it is > a quantum mechanical probability current rather than a real > fluid). If anyone knows of non Mathematica ways of doing > this I'd also be interested. > Mathematica doesn't support the statement SpericalPlotVectorField3D so you have to convert the Spherical vector field into a Cartesian vector field and choose than the statement PlotVectorField3D. The Spherical vector field: A = eph Aph + eth Ath + er Ar ( eph, eth, er are the units vectors (bold)) Every part of this vector field in normally a function of phi, theta and r: Aph = f1(ph,th,r) (something like that: Aph = r^2Sin[th] Cos[ph]) Ath = f2(ph,th,r) (something like that: Ath =r^7Sin[th]^2 Cos[ph]^3) Ar = f3(ph,th,r) as sample we choose a very simple field: Aph = f1(ph,th,r) = r (no function of phi,th. But a function of r ) Ath = f2(ph,th,r) = 0 (no function of phi,th, r and no constant value) Ar = f3(ph,th,r) = 0 (no function of phi,th, r and no constant value) Asph = {Ar,Ath,Aph} ( That is our entire field) For the PlotVectorField3D-command you need a x,y,z-dependent. So you have to replace every r, sin[theta] ,sin[phi] by: r = Sqrt[ x^2 + y^2 + z^2]; sinph = y/Sqrt[x^2 + y^2]; cosph = x/Sqrt[x^2 + y^2]; sinth = Sqrt[(x^2+y^2)/(x^2+y^2+z^2)]; costh = Sqrt[ z^2/(x^2+y^2+z^2)]; The sample vector field results in: Aph = f1(x,y,z) = Sqrt[ x^2 + y^2 + z^2] Ath = f2(x,y,z) = 0 Ar = f3(x,y,z) = 0 (This is a Spherical vector field) Asph = { 0 , 0 , Sqrt[ x^2 + y^2 + z^2] } ( That is our entire field) And now the transformation into cartasian coordinates. The standard transformation is (I found this in "Bronstein Semendjajew - Taschenbuch der Mathematik"): Acat =Simplify[{ Asph[[1]] cosph sinth - Asph[[3]] sinph + Asph[[2]] cosph costh, Asph[[1]] sinph sinth + Asph[[3]] cosph + Asph[[2]] sinph costh, Asph[[1]] costh - Asph[[2]] sinth }]; Now the plot with Mathematica: <<Graphics`PlotField3D`; PlotVectorField3D[ Acat,{x,-1,1},{y,-1,1},{z,-1,1}] Rainer Bassus