Student[VectorCalculus] Package
The Student[VectorCalculus] package is a collection of commands that perform vector calculus computations, and generate related plots and animations. It includes interactive commands that launch point-and-click interfaces to some of the package functionality.
The Student[VectorCalculus] package can be thought of as a simplified version of the full VectorCalculus package. The principal differences are (1) only a limited number of coordinate systems are supported; and (2) commands in the Student[VectorCalculus] package often try to guess the intended coordinate system, or coordinate variable names, while the main VectorCalculus package is stricter in its requirements about being provided these details.
with⁡StudentVectorCalculus:
Basic Objects
The main objects upon which this package operates are the free vector, the PositionVector, the RootedVector, the VectorField, curves, surfaces, and scalar fields. Lists cannot be used in place of vectors, and scalar fields are ordinary Maple functions and expressions. Information about vector objects - coordinate systems and names of coordinates - are stored as attributes of the vector objects. The About, attributes, and GetCoordinates commands can be used to recover this information.
The free vector is created in one of two ways. The angle-bracket notation creates a free vector in the extant coordinate system. At this point in this worksheet, that coordinate system is Cartesian.
v1:=a,b,c
The explicit use of the Vector command permits attaching coordinates to the free vector.
v2:=Vector⁡a,b,coordinates=polarr,θ
In each case, the free vector is really a point. In Cartesian coordinates, the free vector v1 is a vector from the origin to the point a,b,c, and the identification of the point with the free vector is permissible because the unit basis vectors are everywhere parallel.
By analogy, the free vector v2 is a point in a rectangular frame with axes labeled r (horizontal) and θ (vertical). In this frame, the point with polar coordinates r,θ=a,b is connected to the origin with an arrow, and this arrow is v2.
Information about v1 and v2 is obtained as follows.
Aboutv1About⁡v2
Type: Free VectorComponents: a,b,cCoordinates: cartesian
Type: Free VectorComponents: a,bCoordinates: polarr,θ
GetCoordinates⁡v1GetCoordinates⁡v2
cartesian
polarr,θ
attributes⁡v1attributesv2
coords=cartesian
coords=polarr,θ
The VectorField command is used to create a vector field.
F:=VectorField⁡x2,1+x⁢y,cartesianx,y
The unit basis vectors e&conjugate0;x and e&conjugate0;y are used in place of i and j, respectively. The bar denotes that the domain of these basis vectors is the underlying Cartesian space, and that the vectors themselves are position dependent. Of course, in Cartesian coordinates, these basis vectors are independent of position, but the bar is still used to denote that these are the "moving" basis vectors that are defined at each point in the space supporting the vector field, and that are given in the coordinate system in which the vector field is given.
Alternatively, the vector field
G:=VectorField⁡r2⁢cos⁡2⁢θ,r+sin⁡θ,polarr,θ
defines a field of vectors whose domain is each point (except for the origin) in the Cartesian plane on which the coordinate curves of the polar coordinate system have been "pulled back." This is the familiar view of polar coordinates superimposed on the Cartesian plane - concentric circles as lines of constant r, and radial rays as lines of constant θ. In this view of the change of coordinates to polar coordinates, the vectors e&conjugate0;r and e&conjugate0;θ are position dependent. These "moving" basis vectors change direction from point to point, and are not to be confused with the basis vectors appearing in
v2
If the evalVF command is used to evaluate the vector field G at a point in the Cartesian plane, the result is a RootedVector. For example, evaluating G at the Cartesian point whose polar-coordinate description is r,θ=a,b is effected by
G1:=evalVF⁡G,v2
G1≔a2⁢cos⁡2⁢ba+sin⁡b
because the free vector v2 is the Maple representation of the point whose polar coordinates are a,b. Indeed, we have
About⁡G1
Type: Rooted VectorComponents: a2⁢cos⁡2⁢b,a+sin⁡bCoordinates: polarr,θRoot Point: a,b
The root point is the point of "attachment" for the single vector G1, which is actually a "bound" vector, bound to the root point.
A rooted vector can be defined directly with the RootedVector command.
v3:=RootedVector⁡root=3,π5,α,β,polarr,θ
v3≔αβ
To verify that this is a vector in polar coordinates, rooted at the polar point r,θ=3,π5, use
About⁡v3
Type: Rooted VectorComponents: α,βCoordinates: polarr,θRoot Point: 3,π5
Information about the rooted vector is actually stored in a module that could be created with the VectorSpace command.
VS:=VectorSpace⁡polarr,θ,3,π5
VS≔module...end module
The vector space is the set of all vectors of appropriate dimension that have their root point at r,θ=3,π5. The basis for this vector space is the vectors e&conjugate0;r,e&conjugate0;θ,the moving basis vectors defined at the root point. Individual vectors in this space can be created as module exports via the syntax
v4≔VS:-Vectorα,β
v4≔αβ
That v4 is the vector α e&conjugate0;r+β e&conjugate0;θ rooted at the point r,θ=3,π5 can be see with
About⁡v4
Creating rooted vectors via the VectorSpace command works well when many such vectors will have the same root point. The RootedVector command is most convenient for single rooted vectors.
Finally, there is the PositionVector command that creates the radius-vector form of curves and surfaces. The vectors
R1≔ PositionVectorxt,yy,zt, cartesianx,y,z:R2≔ PositionVectorxa,b,ya,b,za,b, cartesianx,y,z:R1, R2
x⁡ty⁡yz⁡t,x⁡a,by⁡a,bz⁡a,b
are PositionVectors, vectors from the origin of a Cartesian frame to the relevant point in that frame. Points can be parametrized by up to two parameters; a one-parameter family of points represents a curve, and a two-parameter family, a surface. Indeed, we have
About⁡R1
Type: Position VectorComponents: x⁡t,y⁡y,z⁡tCoordinates: cartesianx,y,zRoot Point: 0,0,0
About⁡R2
Type: Position VectorComponents: x⁡a,b,y⁡a,b,z⁡a,bCoordinates: cartesianx,y,zRoot Point: 0,0,0
The PositionVector construct applies only in Cartesian coordinates. The Position Vector
R3≔PositionVector2⁢cos⁡θ,2⁢sin⁡θ,cartesianx,y
R3≔2⁢cos⁡θ2⁢sin⁡θ
describes the origin-centered circle of radius 2 drawn in the Cartesian plane, as we see from
About⁡R3
Type: Position VectorComponents: 2⁢cos⁡θ,2⁢sin⁡θCoordinates: cartesianx,yRoot Point: 0,0
Consequently, in the Cartesian plane the PositionVector, the free vector, and the vector rooted at the origin are essentially the same arrow, but because these are represented in the VectorCalculus package by distinct data structures, they are not necessarily recognized by Maple as being the same. Thus, the package provides the ConvertVector command for converting one form of the Cartesian vector to another.
ConvertVector⁡R1, free
ConvertVector⁡v1,rooted
abc
ConvertVector⁡v1,position
A final word about the visual display of vectors and vector fields in the VectorCalculus package. The default display for free vectors and vector fields is explicitly in terms of basis vectors. This display can be changed to a column-vector format with the BasisFormat command. The setting
BasisFormat⁡false:
causes the displays to be
v1, F
abc,x2x⁢y+1
respectively, for a free vector and a vector field. The PositionVector is always displayed as a column vector.
The MapToBasis command imposes a change of coordinates on a vector or vector field. For example, to express the Cartesian vector field
F
x2x⁢y+1
in polar coordinates, use
simplify⁡MapToBasis⁡F,polarr,θ
sin⁡θ+r2⁢cos⁡θcos⁡θ
This is equivalent to expressing the unit basis vectors i and j in terms of the vectors e&conjugate0;r and e&conjugate0;θ,then making the substitutions x=r cosθ,y=r sinθ. This calculation can be carried out from first principles if the following position vector is first defined.
R:=PositionVector⁡r⁢cos⁡θ,r⁢sin⁡θ,cartesianx,y
R≔r⁢cos⁡θr⁢sin⁡θ
The basis vectors e&conjugate0;r and e&conjugate0;θ are obtained from R via
Er≔diffR,r
Er≔cos⁡θsin⁡θ
Et≔Normalizediff⁢R,θ assuming 0<r
Et≔−sin⁡θcos⁡θ
Writing these vectors in terms of i and j can be done with
eq1:=Er.i,j=ereq2≔Et.i,j=et
eq1≔cos⁡θ⁢i+sin⁡θ⁢j=er
eq2≔−sin⁡θ⁢i+cos⁡θ⁢j=et
Solving for i and j in terms of vectors e&conjugate0;r and e&conjugate0;θ,we get
q:=solve⁡eq1,eq2,i,j
q≔i=cos⁡θ⁢er−sin⁡θ⁢etcos⁡θ2+sin⁡θ2,j=et⁢cos⁡θ+sin⁡θ⁢ercos⁡θ2+sin⁡θ2
Representing the vector field F in terms of i and j, then replacing i and j with their equivalents in terms of the vectors e&conjugate0;r and e&conjugate0;θ,we get
q1:=simplify⁡eval⁡F.VectorField⁡i,j,cartesianx,y,q
q1≔er⁢x2+et⁢x⁢y+et⁢cos⁡θ−sin⁡θ⁢−er⁢x⁢y+et⁢x2−er
Making the substitutions x=r cosθ, y=r sinθ, we get
q2:=simplify⁡eval⁡q1,x=r⁢cos⁡θ,y=r⁢sin⁡θ
q2≔er⁢r2+et⁢cos⁡θ+sin⁡θ⁢er
A final rearrangement of terms, and an identification of er and et with vectors e&conjugate0;r and e&conjugate0;θ,respectively, gives
q3:=collect⁡q2,er,et
q3≔sin⁡θ+r2⁢cos⁡θ⁢er+et⁢cos⁡θ
which compares favorably with
The MapToBasis command can also be used to transform a point in one coordinate system to its representation in another. Setting
BasisFormat⁡true:
will make the result of
MapToBasis⁡1,2,polarr,t
easier to understand. The Cartesian point x,y=1,2, represented as a free vector, has been transformed to r,θ=5,arctan2,also given as a free vector. This is not a vector transformation. The MapToBasis command applies the contravariant transformation law to a rooted vector or a vector field. Applied to a free vector, it transforms just the components. The basis vectors are not so transformed because the free vector is not a vector; it is really just a representation of a point in curvilinear coordinates.
Divergence, Gradient, Curl, and Laplacian
SetCoordinates⁡cartesianx,y,z
cartesianx,y,z
The Student[VectorCalculus] package contains Divergence, Gradient, Curl, and Laplacian commands. The Del and Nabla commands are synonyms for the Gradient command.
g:=x2+y2+z2;G≔Gradientg;Del⁡g;Nabla⁡g
g≔x2+y2+z2
DivergenceG
6
CurlG
Laplacian⁡g
Space Curves
The Student[VectorCalculus] package contains space curve commands. Most space curve commands can return a plot or animation. Consider the following helix.
helix:=cos⁡t,sin⁡t,t
To plot the helix, use the SpaceCurve command. The range of the space curve parameter, in this case 't', must be specified. The axes and scaling options are standard Maple plotting options. For more information about plotting options, see plot/option and plot3d/option.
SpaceCurve⁡helix,t=0..π,axes=normal,scaling=constrained
All the space curve plotting commands have the same syntax: command(space curve definition, options). For some commands you must specify the option output = plot or output = animation to generate visual output.
Using the helix example, calculate the tangent vector (TangentVector)
TangentVector⁡helix
−sin⁡tcos⁡t1
Animate the principal normal vector (PrincipalNormal)
PrincipalNormal⁡helix,output=animation
Plot four binormal vectors (Binormal)
Binormal⁡helix,output=plot,vectors=4
To plot, animate, or compute the unit tangent, normal, and binormal vectors, use the TNBFrame command.
First, plot the unit tangent, normal, and binormal vectors.
TNBFrame⁡helix,output=plot,scaling=constrained
Compute the unit binormal vector.
UnitBinormal=TNBFramehelix,binormal=true
UnitBinormal=2⁢sin⁡t2−2⁢cos⁡t222
Plot the unit tangent vector.
TNBFrame⁡helix,output=plot,tangent=true
Create an animation of the unit tangent and binormal vectors.
TNBFrame⁡helix,output=animation,normal=false
To plot the osculating circles of a space curve, use the RadiusOfCurvature command.
RadiusOfCurvature⁡helix,output=plot,circles=1,scaling=constrained,axes=normal,range=0..2⁢π
The package includes other space curve commands that return only values, for example, Curvature and Torsion.
Curvature⁡helix
2⁢sin⁡t2+2⁢cos⁡t2⁢24
Torsion⁡helix
12
All space curve commands that return plots can also plot two-dimensional curves, except the Binormal and RadiusOfCurvature commands.
VectorFields
SetCoordinates⁡cartesianx,y
cartesianx,y
In addition to Divergence and Curl, VectorFields have two main associated commands: VectorField and FlowLine.
As previously mentioned, the VectorField command creates VectorFields. You can also use it to plot VectorFields.
VectorField⁡F,output=plot,view=−2..2,−2..2,fieldoptions=grid=6,6
VectorField⁡F,output=plot,view=1..6,2..9
The FlowLine command can plot or animate the flow line emanating from a specified starting point. You can also create an animation that shows the path of an indicator flowing through the vector field along the flow line.
FlowLine⁡F,1,2,output=plot,fieldoptions=grid=6,6
FlowLine⁡F,0.1,0.1,output=animation,fieldoptions=grid=6,6,view=−18..18,−18..18,scaling=constrained
Integration
Using the output = plot option, you can visually represent the integral for a LineInt or Flux command before solving the problem. The LineInt command computes a line integral, which is also commonly known as a work integral. The command has four domain types over which it can be integrated: Path, Line, LineSegments, and Circle. The Circle domain is available only in two dimensions, the others are available in two or three dimensions.
Visually represent a line integral over an ellipse, and compute the integral. Note the direction of the tangent vector.
LineInt⁡VectorField⁡y,−x,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=0..2⁢π,output=plot;LineInt⁡VectorField⁡y,−x,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=0..2⁢π
−30⁢π
To reverse the direction of the path (and tangent vector), reverse the endpoints of the parameter range in the Path definition.
LineInt⁡VectorField⁡y,−x,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=2⁢π..0,output=plot;LineInt⁡VectorField⁡y,−x,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=2⁢π..0
30⁢π
You can calculate the flux integral using the Flux command. The domains over which you can integrate are: (In two dimensions) Circle, Line, LineSegments, and Path (In three dimensions) Box, Sphere, and Surface You can specify the direction of the normal vector for Circle, Sphere, and Box domains by including the word 'outward' or 'inward' as the last argument of the domain function. The default value is 'outward'.
Visually represent a flux integral over an ellipse, and compute the integral. Note the direction of the tangent vector.
Flux⁡VectorField⁡y,−x+y,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=0..2⁢π,output=plot;Flux⁡VectorField⁡y,−x+y,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=0..2⁢π
15⁢π
Flux⁡VectorField⁡y,−x+y,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=2⁢π..0,output=plot;Flux⁡VectorField⁡y,−x+y,Path⁡5⁢cos⁡t,3⁢sin⁡t,t=2⁢π..0
−15⁢π
SetCoordinates⁡cartesianx,y,z;FluxVectorField⁡y,−z,x+z,Box⁡1..4,2..6,1..6,output=plot;FluxVectorField⁡y,−z,x+z,Box⁡1..4,2..6,1..6,'inward',output=plot
Interactive Commands
There are two interactive commands in the Student[VectorCalculus] package: SpaceCurveTutor and VectorFieldTutor. The VectorFieldTutor provides a point-and-click interface to the FlowLine command. The SpaceCurveTutor provides a point-and-click interface to the space curve plotting functionality.
VectorFieldTutor⁡
SpaceCurveTutor⁡
Return to Index of Example Worksheets
Download Help Document