I'm trying to plot the electric and magnetic fields of a relativistically moving electric charge using VectorPlot3D, and apply "Manipulate" to change the velocity. The code I'm using is as follows:
EE[x_,y_,z_,v_,t_] = {((1 - v^2)*x)/((t - v*z)^2 + (1 - v^2)*(-t^2 + x^2 + y^2 + z^2))^(3/2),
((1 - v^2)*y)/((t - v*z)^2 + (1 - v^2)*(-t^2 + x^2 + y^2 + z^2))^(3/2),
((1 - v^2)*(-t*v + z))/((t - v*z)^2 + (1 - v^2)*(-t^2 + x^2 + y^2 + z^2))^(3/2)}
VectorPlot3D[{EE[x, y, z, 0, 0.1], Cross[{0, 0, 0.1}, EE[x, y, z, 0, 0.1]]},
{x, -1, 1}, {y, -1, 1}, {z, -1, 1}, ImageSize -> Large,
VectorScale -> {0.25, Scaled[0.5], Automatic},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 + (z)^2 > (0.3)^2]]
This gives me a plot like this, with the electric field in blue and the magnetic field in brown:
The vector fields have the right sort of shape, but I'm having trouble with the scalings of the two vector fields. The magnitude of the magnetic field should be no greater than $v$ times the magnitude of the electric field ($v = 0.1$ in this example code.) However, Mathematica always seems to rescale the two vector fields so that the largest vectors are the same size, which makes the magnetic fields always appear to have the same magnitude as the electric fields (as you can see in the output.)
Ideally, what I'm hoping to eventually do is drop this whole thing into a Manipulate function where I can slide v up and down and show how the magnetic fields get larger as $v$ increases, but I can't do this if Mathematica is "helpfully" rescaling the vector fields for me. I've played around with VectorScale, but it only seems to accept one list of arguments; if I try to give it a list of parameters for each vector field, it complains that I've given it an invalid VectorScale specification.
So, my question: Is there a way to independently control the scaling of multiple vector fields in VectorPlot3D?
Show
. $\endgroup$ – Virgil Apr 16 '15 at 20:22