In earlier posts, I describe the Package of Maxima functions MATH214 for use in my multivariable calculus class, with applications to Greens Theorem and Stokes Theorem.

Here we show how the surface integral function **integrateSurf()** and triple integration function** integrate3()** (together with the divergence function** div()** )work on a Gauss’s Theorem example:

We integrate the parabolic surface and the circular base surface separately, and show their sum is equal to the triple integral of the divergence.

The functions above are included in the MATH214 package, but I list them below as well:

integrateSurf(F,S,uu,aa,bb,vv,cc,dd):=block(
[F2],
F2:psubst([x=S[1],y=S[2],z=S[3]],F),
integrate(integrate(trigsimp(F2.cross(diff(S,uu),diff(S,vv))),uu,aa,bb),vv,cc,dd));
integrate3(F,xx,aa,bb,yy,cc,dd,zz,ee,ff):=block(
integrate(integrate(integrate(F,xx,aa,bb),yy,cc,dd),zz,ee,ff));
div(f,x,y,z):=diff(f[1],x)+diff(f[2],y)+diff(f[3],z)$
cross(_u,_v):=[_u[2]*_v[3]-_u[3]*_v[2],_u[3]*_v[1]-_u[1]*_v[3],_u[1]*_v[2]-_u[2]*_v[1]]$

### Like this:

Like Loading...

I’m attempting to interpret and visualize Gauss’s law for electrostatics.

The nomenclature is posing some problems , for instance is div(F) equivalent to pho in the

standard representation or is F(x,y,z) representing a force upon a test charge..

Here’s my attempt , so far , at visualizing the surface and the distribution of F(x,y,z) .

/*

Gauss’s law applied to electrostatics , involves surface and volume integrals.

*/

load(draw)$

draw_renderer:’vtk$

draw3d(

color = yellow,

implicit((x^2+x*y+z)=0,x,-2,2,y,-2,2,z,0,4 ),

enhanced3d = true,

palette = [[red, 0.71], [orange, 0.71], [cyan, 0.71],

[navy, 0.7], [brown, 0.6], [black, 0.2]],

implicit(4 – x^2 – y^2-z=0,x,-2,2,y,-2,2,z,0,4) ,

parametric_surface(r*cos(t),r*sin(t)

,0, r,0,2,t,0,2*%pi)

) $

LikeLike

I think the visualization needs a vector field for F(x,y,z) =

Using the vectorfield package I describe here:

https://themaximalist.org/2016/05/19/computing-and-visualizing-path-integrals-of-vector-fields/

After downloading vectorfield.zip from the link at the blog post above,

we can visualize the vectors specified by F in my modified version of your draw3d command:

(%i21) load(“C:/Users/Eric Barth/Documents/Maxima/vectorfield.mac”)$

(%i23) v:make_vector_field3d([x^2,x*y,z],[x,-2,2],[y,-2,2],[z,0,4])$

(%i24) draw3d(

color = black,

v,

color=red,

implicit(4 – x^2 – y^2-z=0,x,-2,2,y,-2,2,z,0,4) ,

color=blue,

parametric_surface(r*cos(t),r*sin(t)

,0, r,0,2,t,0,2*%pi)

) $

LikeLike

After browsing the web I found a few definitions for the terms used in Gauss’s law for electrostatics , these are based

around the Wikipedia representation.

V [ volt ]

∇V = i*diff(V,x) + j*diff(V,y) + k*diff(V,z)

E = –∇V

D = εE

–∇ · (ε∇V) = ρ

–∇ · D = ρ

integrate(D.da,surface) = integrate(–∇ · D ,dv,volume) ?

This is my initial attempt of visualizing the vector field , I’m using the Maxima vtk package ; approach is valid when

we don’t use the vtk render er .

load(draw)$

draw_renderer:’vtk$

/* Define vector field */

coord: setify(makelist(k,k,1,5))$

points3d: listify(cartesian_product(coord,coord,coord))$

vf3d(x,y,z):= vector([x-3.5,y-3.5,z-1.25],[x^2,x*y,z])$

/*list of vector objects*/

vect3: makelist(vf3d(k[1],k[2],k[3]),k,points3d)$

draw3d(

[head_length = 0.2,

line_width = 0.01,

color = black,

head_angle = 10,

unit_vectors = true],

vect3,

color=red,

implicit(4 – x^2 – y^2-z=0,x,-2,2,y,-2,2,z,0,4) ,

color=blue,

parametric_surface(r*cos(t),r*sin(t),0, r,0,2,t,0,2*%pi)

)$

LikeLike

yes! that looks good.

LikeLike

…and yet, as I compare the appearance of the vector field in our two visualization methods, I think that near the yz plane (x=0) the vectors specified by

F= should be nearly vertical. In your method, I don’t see any vertical vectors

LikeLike

I noticed some discrepancies too ; I’ve written to the author of maxima-vtk about this and I’m presently

awaiting a reply . We all may need to exchange a few emails to clarify this .

I’ve read that the Cavendish experiment used a single voltage measurement to determine the total charge upon an

object . More recent measurements involve a scanning probe to determine the surface distribution of the voltage ;

especially when the object is a high voltage insulator .

Personally I prefer low voltage investigations .

LikeLike

I believe this merging of code might be effective.

Draw using vtk provides quite a few options for the style of the arrow .

/*

Paraboloid object and 3d vectors .

*/

kill(all)$

load(draw)$

draw_renderer:’vtk$

load(“C:/Users/Eric Barth/Documents/Maxima/vectorfield.mac”)$

v:make_vector_field3d([x^2,x*y,z],[x,-2,2],[y,-2,2],[z,0,4])$

draw3d(

[head_length = 0.4,

line_width = 0.02,

color = black,

head_angle = 35,

unit_vectors = false],

v,

color=red,

implicit(4 – x^2 – y^2-z=0,x,-2,2,y,-2,2,z,0,4) ,

color=blue,

parametric_surface(r*cos(t),r*sin(t),0, r,0,2,t,0,2*%pi)

)$

LikeLike

As every odd index to v provides information about the shape of the arrow

head and the vtk renderer doesn’t appear to use this , I generate a new list of

vectors from all of the even values of v .

The ability to define the arrow head shape for individual vectors might have some

utility , presently I’m not certain what that might be .

kill(all)$

load(draw)$

draw_renderer:’vtk$

load(“C:/Users/Eric Barth/Documents/Maxima/vectorfield.mac”)$

v:make_vector_field3d([x^2,x*y,z],[x,-2,2],[y,-2,2],[z,0,4])$

lsv:length(v);

vs:makelist(0,i,lsv/2)$

k:1$

for i:2 thru lsv step 2 do(

vs[k]:v[i],

k:k+1

)$

draw3d(

[head_length = 0.2,

line_width = 0.01,

color = black,

head_angle = 30,

unit_vectors = false],

vs,

color=red,

implicit(4 – x^2 – y^2-z=0,x,-2,2,y,-2,2,z,0,4) ,

color=blue,

parametric_surface(r*cos(t),r*sin(t),0, r,0,2,t,0,2*%pi)

)$

LikeLike

This is a 3d plot of voltage , electric field and charge .

The charge distribution doesn’t appear to be correct , I’d imagine a gradient , from the origin , increasing as we

move towards the edges .

/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/

/* [ Created with wxMaxima version 18.02.0 ] */

/* [wxMaxima: comment start ]

Copyright (c) 2018 , Edward Montague , quintin9g@gmail.com

Maxwell’s first Equation .

Voltage scalar function .

Electric vector function .

Charge scalar function .

[wxMaxima: comment end ] */

/* [wxMaxima: input start ] */

kill(all)$

load(vect)$

load(draw)$

draw_renderer : ‘vtk$

ratprint : false$

/* [wxMaxima: input end ] */

/* [wxMaxima: comment start ]

Scalar –> Vector .

Vector –> Scalar .

[wxMaxima: comment end ] */

/* [wxMaxima: input start ] */

eq:cos(x)+y^2+sin(z)-1$

eq1:grad(eq)$

eq1:express(eq1)$

eq1:ev(eq1,nouns);

eq2:-div(eq1)$

eq2:express(eq2)$

eq2:ev(eq2,nouns);

/* [wxMaxima: input end ] */

/* [wxMaxima: comment start ]

vf3d(x,y,z):= vector([x,y,z],eq1)$

vf3d(x,y,z):= vector([x,y,z],[-sin(x),2*y,cos(z)])$

[wxMaxima: comment end ] */

/* [wxMaxima: input start ] */

/* Define vector field */

coord: setify(makelist(k,k,-1.2,1.5))$

points3d: listify(cartesian_product(coord,coord,coord))$

kill(x,y,z)$

vf3d(x,y,z):= vector([x,y,z],[-sin(x),2*y,cos(z)])$

/*list of vector objects*/

vect3: makelist(vf3d(k[1],k[2],k[3]),k,points3d)$

/* [wxMaxima: input end ] */

/* [wxMaxima: comment start ]

enhanced3d = [sin(2*y), x, y, z],

palette = [25,-23,-17],

enhanced3d = [(cos(x)+sin(z)-2+0.1),x,y,z],

enhanced3d = true,

[wxMaxima: comment end ] */

/* [wxMaxima: input start ] */

draw3d(

background_color=”light_gray”,

enhanced3d = true,

palette = color,

implicit((cos(x)+sin(z)-2)=-0.1,x,-1.2,1.2,y,-1.2,1.2,z,-1.2,1.5),

implicit(cos(x)+y^2+sin(z)=1,x,-1.2,1.2,y,-1.2,1.2,z,-1.2,1.5) ,

[head_length = 0.2,

line_width = 0.01,

color = cyan,

head_angle = 10,

unit_vectors = true],

vect3

) $

/* [wxMaxima: input end ] */

/* [wxMaxima: comment start ]

[wxMaxima: comment end ] */

/* Old versions of Maxima abort on loading files that end in a comment. */

“Created with wxMaxima 18.02.0″$

LikeLike