Vector Calculus 2d Motion

## Description

This is an interact that illustrates the relationships between common vectors in vector calculus in 2d. The user may select which vectors will be displayed, then use the slider to adjust the parameter and observe the effect on the vectors.

## Sage Cell

#### Code

``````# 2-D motion and vector calculus
# Copyright 2009, Robert A. Beezer
# Creative Commons BY-SA 3.0 US
#
# 2009/02/15  Built on Sage 3.3.rc0
# 2009/02/17  Improvements from Jason Grout
#
# variable parameter is  t
# later at a particular value named t0
#
var('t')
#
# parameter range
#
start=0
stop=2*pi
#
# position vector definition
# edit here for new example
# example is wide ellipse
# adjust x, extents in final show()
#
position=vector( (4*cos(t), sin(t)) )
#
# graphic of the motion itself
#
path = parametric_plot( position.list(), (t, start, stop), color = "black" )
#
# derivatives of motion, lengths, unit vectors, etc
#
velocity = derivative(position, t)
acceleration = derivative(velocity, t)
speed = velocity.norm()
speed_deriv = derivative(speed, t)
tangent = (1/speed)*velocity
dT = derivative(tangent, t)
normal = (1/dT.norm())*dT
#
# interact section
#   slider for parameter, 24 settings
#   checkboxes for various vector displays
#   computations at one value of parameter, t0
#
@interact
def _(t0 = slider(float(start), float(stop), float((stop-start)/24), float(start) , label = "Parameter"),
pos_check = ("Position", True),
vel_check = ("Velocity", False),
tan_check = ("Unit Tangent", False),
nor_check = ("Unit Normal", False),
acc_check = ("Acceleration", False),
tancomp_check = ("Tangential Component", False),
norcomp_check = ("Normal Component", False)
):
#
# location of interest
#
pos_tzero = position(t=t0)
#
# various scalar quantities at point
#
speed_component = speed(t=t0)
tangent_component = speed_deriv(t=t0)
normal_component = sqrt( acceleration(t=t0).norm()^2 - tangent_component^2 )
curvature = normal_component/speed_component^2
#
# various vectors, mostly as arrows from the point
#
pos = arrow((0,0), pos_tzero, rgbcolor=(0,0,0))
tan = arrow(pos_tzero, pos_tzero + tangent(t=t0), rgbcolor=(0,1,0) )
vel = arrow(pos_tzero, pos_tzero + velocity(t=t0), rgbcolor=(0,0.5,0))
nor = arrow(pos_tzero, pos_tzero + normal(t=t0), rgbcolor=(0.5,0,0))
acc = arrow(pos_tzero, pos_tzero + acceleration(t=t0), rgbcolor=(1,0,1))
tancomp = arrow(pos_tzero, pos_tzero + tangent_component*tangent(t=t0), rgbcolor=(1,0,1) )
norcomp = arrow(pos_tzero, pos_tzero + normal_component*normal(t=t0), rgbcolor=(1,0,1))
#
# accumulate the graphic based on checkboxes
#
picture = path
if pos_check:
picture = picture + pos
if vel_check:
picture = picture + vel
if tan_check:
picture = picture+ tan
if nor_check:
picture = picture + nor
if acc_check:
picture = picture + acc
if tancomp_check:
picture = picture + tancomp
if norcomp_check:
picture = picture + norcomp
#
# print textual info
#
print("Position vector defined as r(t)={}".format(position))
print("Speed is {}".format(N(speed(t=t0))))
print("Curvature is {}".format(N(curvature)))
#
# show accumulated graphical info
# adjust x-,y- extents to get best plot
#
show(picture, xmin=-4,xmax=4, ymin=-1.5,ymax=1.5,aspect_ratio=1)```
```

none

## Tags

Primary Tags:

Secondary Tags:

A list of possible tags can be found at The WeBWorK Open Problem Library. For linear algebra tags see the Curated Courses Project.

## Related Cells

Any related cells go here. Provide a link to the page containing the information about the cell.