Math 276
Calculus III
Spring 2003
Dr. Constant J. Goutziers
Department of Mathematics, Computer Science and Statistics
goutzicj@oneonta.edu
Lesson 8
Arclength, Curvature
the Principal Normal and Binormal vectors
Initializations
> | restart; with(linalg): with(oneonta): with(plots): |
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the name changecoords has been redefined
8.1 Arclength
The arclength of a space curve r = r(t) equals
.
Examples
Example 8.1.1
Compute the arclength of the curve
, 0
t
5.
Define the curve and the integral representing the arclength.
> | r:=vector([cos(t), exp(-t), ln(10*t+1)]); |
> | rp:=map(diff, r, t); |
> | arclength:=Int(realnorm(rp), t=0..5); |
Of course it is not possible to give closed form representation of this integral. In stead we produce a decimal approximation.
> | arclength_decimal:=evalf(arclength); |
8.2 Curvature
The curvature
of a spacecurve is defined as the norm of
. Because T has constant length, we know that
and therefore
is perpendicular to T. This indicates that
truly measures the rate of change of the direction of the tangent vector to the curve. We compute
as
, where
.
Examples
Example 8.2.1
Compute the curvature of
.
Just follow the theory described in the introduction of curvature.
> | r:=vector([t, t^2, t^3]); |
> | rp:=map(diff, r, t); |
> | ds_dt:=realnorm(rp); |
> | T:=evalm(rp/ds_dt); |
> | dT_ds:=map(simplify, evalm(map(diff, T, t)/ds_dt)); |
> | kappa:=simplify(realnorm(dT_ds)); |
> | kappa:=simplify(kappa, symbolic); |
> |
Example 8.2.2
Find a formula for the curvature of
. Sketch the curve and its curvature in one picture.
> | r:=vector([t*ln(t), sin(3*t)]); |
> | rp:=map(diff, r, t); |
> | ds_dt:=realnorm(rp); |
> | T:=map(simplify, evalm(rp/ds_dt)); |
> | dT_ds:=map(simplify, evalm(map(diff, T, t)/ds_dt)); |
> | kappa:=simplify(realnorm(dT_ds)); |
Observe that in order to synchronize the display of the curvature and the curve itself, we need to use equal x-scaling in both representations.
> | curvature:=plot([r[1], kappa, t=1..5]): |
> | curve:=plot([r[1], r[2], t=1..5], color=blue): |
> | with(plots): |
> | display([curvature, curve]); |
> |
Example 8.2.3
An alternative formula for the curvature of a space curve in
is:
.
Use this formula on the space curve given in example 8.2.1.
> | r:=vector([t, t^2, t^3]); |
> | kappa:=realnorm(crossprod(map(diff, r, t), map(diff, r, t$2)))/realnorm(map(diff, r, t))^3; |
> |
Example 8.2.4
The formula in example 8.2.3 can readily be used to find a simple expression for the curvature of y=f(x).
> | r:=vector([x, f(x), 0]); |
> | kappa:=realnorm(crossprod(map(diff, r, x), map(diff, r, x$2)))/realnorm(map(diff, r, x))^3; |
When f is a real valued function the numerator of this expression can be replaced by
.
8.3 The principal Normal and the Binormal vector
The principal Normal vector N is defined as the unit vector in the direction of
. The Binormal vector B is defined as the crossproduct of T and N.
Examples
Example 8.3.1
Let
,
< t <
. Compute N and B.
> | r:=vector([t, ln(cos(t))]); |
> | rp:=map(diff, r, t); |
> | T:=evalm(rp/realnorm(rp)); |
Because cos(t) > 0 on the interval involved, this expression can be simplified under that assumption.
> | T:=map(simplify, T, symbolic); |
> | N:=map(simplify, evalm(map(diff, T, t)/realnorm(map(diff, T, t)))); |
In order to find B, we must first represent T and N as vectors in 3-space.
> | T:=[T[1], T[2], 0]; N:=[N[1], N[2], 0]; |
> | B:=map(simplify, crossprod(T,N)); |
> |
Example 8.3.2
Find the equation of the osculating circle at the point
to the parabola
. Graph the osculating circle and the parabola in one picture.
First code the parabola as a space curve, then compute T, N and
.
> | r:=[x, x^2/2,0]; rp:=diff(r, x); rpp:=diff(r, x$2); |
> | T:=evalm(rp/realnorm(rp)); |
> | Tp:=map(diff, T, x); N:=map(simplify, evalm(Tp/realnorm(Tp)), symbolic); |
> | kappa:=simplify(realnorm(crossprod(rp, rpp))/realnorm(rp)^3); |
Compute
and N at the point P.
> | kappa_P:=subs(x=1, kappa); |
> | N_P:=subs(x=1, evalm(N)); |
Compute the radius
of the osculating circle.
> | a:=1/kappa_P; |
Compute the center C of the osculating circle.
> | C:=evalm(subs(x=1, r)+a*N_P); |
Compute the equation of the osculating circle.
> | eq:=(x-C[1])^2+(y-C[2])^2=a^2; |
Plot the osculating circle and the parabola in one picture using the implicit plot routine.
> | p1:=implicitplot(y=r[2], x=-10..10, y=-10..10, color=red, numpoints=4900): p2:=implicitplot(eq, x=-10..10, y=-10..10, color=blue, numpoints=4900): display([p1, p2], thickness=4, scaling=constrained); |
A higher quality picture can be obtained by parametrizing the osculating circle and using parametric plots instead.
> | c:=[-1+a*cos(t), 5/2+a*sin(t), 0]; |
> | p1:=plot([c[1], c[2], t=0..2*Pi], color=blue): p2:=plot(x^2/2, x=-4..4): display([p1,p2], scaling=constrained); |
Observe that the osculating circle actually crosses the parabola at the point of tangency. This occurs because, for
, the curvature of the parabola is larger than the curvature of the osculating circle and for
, the curvature of the parabola is less than the curvature of the osculating circle.
It may be illustrative to show the ray from the center of the osculating circle to the point of tangency. See the picture below.
> | P:=subs(x=1, r); rr:=evalm(P+t*N_P); |
> | p3:=plot([rr[1], rr[2], t=0..a], color=magenta): |
> | display([p1, p2, p3], scaling=constrained); |
> |