A classic topic in multivariable calculus involves the study of a vector valued function using the three canonical unit vectors — the tangent vector
, the normal vector
, and the Binormal vector
— and the scalar curvature
.
Here are maxima functions that compute these, called
unitT, unitN, unitB, and curvature. For a vector valued function , these are called as
T(t):=unitT(r(t),t);
You can download the .mac file here.
/* unitT computes the unit tangent vector for a vector valued function
of a scalar variable r(t)=[x(t),y(t),z(t)] */unitT(r,t):=
block([rp,rpn,T],
define(rp(t),diff(r,t)),
define(rpn(t),sqrt(rp(t).rp(t))),
define(T(t),rp(t)/rpn(t)),
trigsimp(T(t))
)$/* unitN computes the unit normal vector for a vector valued function
of a scalar variable r(t)=[x(t),y(t),z(t)]
unitN requires unitT */unitN(r,t):=
block([T,Tp,Tpn,N],
define(T(t),unitT(r,t)),
define(Tp(t),diff(T(t),t)),
define(Tpn(t),sqrt(Tp(t).Tp(t))),
define(N(t),Tp(t)/Tpn(t)),
trigsimp(N(t))
)$/* unitB computes the unit normal vector for a vector valued function
of a scalar variable r(t)=[x(t),y(t),z(t)]
unitB requires unitT and unitN */unitB(r,t):=
block([T,N,B],
define(T(t),unitT(r,t)),
define(N(t),unitN(r,t)),
define(B(t),[T(t)[2]*N(t)[3]-T(t)[3]*N(t)[2],
T(t)[3]*N(t)[1]-T(t)[1]*N(t)[3],
T(t)[1]*N(t)[2]-T(t)[2]*N(t)[1]]),
trigsimp(B(t))
)$/* curvature computes the curvature
curvature requires unitT */curvature(r,t):=
block([T,Tdot,rdot,K],
define(T(t),unitT(r,t)),
define(Tdot(t),diff(T(t),t)),
define(rdot(t),diff(r,t)),
define(K(t),trigsimp(sqrt(Tdot(t).Tdot(t)/rdot(t).rdot(t)))),
K(t)
)$
One thought on “Curvature, T, N, & B”