135probl.mws

Cinemática de la particula: Triedro de Frenet

J.Mª Goicolea, 8/10/2000

Una particula se mueve sobre el paraboloide hiperbólico z = x*y/2 , estando su posición definida por x = 6*sin(k*xi) , y = -6*cos(k*xi) .
Obtener los vectores del triedro intrínseco y el radio de curvatura, particularizando para
xi = Pi/(3*k) .

> restart;

Definición de la trayectoria:

> x:=6*sin(k*xi);

> y:=-6*cos(k*xi);

> z:=1/2 * x*y;

x := 6*sin(k*xi)

y := -6*cos(k*xi)

z := -18*sin(k*xi)*cos(k*xi)

Escribimos el vector posición:

> with(linalg):

Warning, the protected names norm and trace have been redefined and unprotected

> vr:=vector([x,y,z]);

vr := vector([6*sin(k*xi), -6*cos(k*xi), -18*sin(k*...

Calculamos su derivada respecto del parametro:

> vrp:=map(diff,vr,xi);

vrp := vector([6*cos(k*xi)*k, 6*sin(k*xi)*k, -18*co...

Definimos la función norma como raiz cuadrada del producto escalar de un vector por sí mismo

> norma:=proc(X)
sqrt(dotprod(X,X));
end:

Esta función sirve para calcular la derivada del arco respecto del parámetro xi :

> sp:=simplify(norma(vrp),symbolic);

sp := 6*sqrt(2)*k*sqrt(-18*cos(k*xi)^2+5+18*cos(k*x...

El vector tangente se obtiene normalizando la derivada de la curva:

> vt:=evalm(1/sp * vrp);

vt := vector([1/2*sqrt(2)*cos(k*xi)/(sqrt(-18*cos(k...
vt := vector([1/2*sqrt(2)*cos(k*xi)/(sqrt(-18*cos(k...

Particularizando en el punto pedido

> vt1:=subs(xi=Pi/(3*k),evalm(vt));

vt1 := vector([1/2*sqrt(2)*cos(1/3*Pi)/(sqrt(-18*co...
vt1 := vector([1/2*sqrt(2)*cos(1/3*Pi)/(sqrt(-18*co...

> vt1:=map(simplify,vt1);

vt1 := vector([1/13*sqrt(13), 1/13*sqrt(13)*sqrt(3)...

> vt1f:=map(evalf,vt1);

vt1f := vector([.2773500981, .4803844616, .83205029...

Derivamos ahora de nuevo el vector tangente, respecto del parámetro xi :

> vtp:=map(diff,vt,xi);

vtp := vector([-1/4*sqrt(2)*cos(k*xi)*(36*cos(k*xi)...
vtp := vector([-1/4*sqrt(2)*cos(k*xi)*(36*cos(k*xi)...
vtp := vector([-1/4*sqrt(2)*cos(k*xi)*(36*cos(k*xi)...
vtp := vector([-1/4*sqrt(2)*cos(k*xi)*(36*cos(k*xi)...

> vtp:=map(simplify,vtp,symbolic);

vtp := vector([1/2*sqrt(2)*sin(k*xi)*k*(18*cos(k*xi...
vtp := vector([1/2*sqrt(2)*sin(k*xi)*k*(18*cos(k*xi...

El vector normal principal se obtiene normalizando esta derivada:

> vtpn:=simplify(norma(vtp),symbolic);

vtpn := 1/2*k*sqrt(-108*cos(k*xi)^4+108*cos(k*xi)^2...

> vn:=evalm((1/vtpn)*vtp);

vn := vector([sqrt(2)*sin(k*xi)*(18*cos(k*xi)^4-5)/...
vn := vector([sqrt(2)*sin(k*xi)*(18*cos(k*xi)^4-5)/...
vn := vector([sqrt(2)*sin(k*xi)*(18*cos(k*xi)^4-5)/...

> vn:=map(simplify,vn,symbolic);

vn := vector([sin(k*xi)*(18*cos(k*xi)^4-5)/(sqrt(-1...
vn := vector([sin(k*xi)*(18*cos(k*xi)^4-5)/(sqrt(-1...
vn := vector([sin(k*xi)*(18*cos(k*xi)^4-5)/(sqrt(-1...

> vn1:=map2(subs,xi=Pi/(3*k),evalm(vn)):

> vn1:=map(simplify,vn1);

vn1 := vector([-31/286*sqrt(13)*sqrt(3), -41/286*sq...

> vn1f:=map(evalf,vn1);

vn1f := vector([-.6769053778, -.5168797285, .524055...

Calculamos ahora el radio de curvatura, en la posición pedida, como el inverso del m³dulo de la derivada del vector tangente respecto del arco s . (Esta derivada se evalºa derivando primero la tangente respecto del parámetro xi .)

> R:=sp/vtpn;

R := 12*sqrt(2)*(-18*cos(k*xi)^2+5+18*cos(k*xi)^4)^...

> R1:=simplify(eval(subs(xi=Pi/(3*k),R)));

> R1f:=evalf(R1);

R1 := 39/22*sqrt(13)

R1f := 6.391659081

Otra forma de calcular la curvatura es mediante la siguiente fórmula:

> vrpp:=map(diff,vrp,xi);

> kappa:=norma(crossprod(vrp,vrpp))/norma(vrp)^3;

vrpp := vector([-6*sin(k*xi)*k^2, 6*cos(k*xi)*k^2, ...

kappa := sqrt((324*sin(k*xi)^2*k^3*cos(k*xi)+108*co...
kappa := sqrt((324*sin(k*xi)^2*k^3*cos(k*xi)+108*co...
kappa := sqrt((324*sin(k*xi)^2*k^3*cos(k*xi)+108*co...
kappa := sqrt((324*sin(k*xi)^2*k^3*cos(k*xi)+108*co...
kappa := sqrt((324*sin(k*xi)^2*k^3*cos(k*xi)+108*co...

> kappa:=simplify(kappa,symbolic);

kappa := 1/24*sqrt(-108*cos(k*xi)^4+108*cos(k*xi)^2...

Por ultimo, obtenemos la binormal

> vb:=simplify(crossprod(vt,vn),symbolic);

vb := vector([-3/2*(-3+2*cos(k*xi)^2)*cos(k*xi)*sqr...
vb := vector([-3/2*(-3+2*cos(k*xi)^2)*cos(k*xi)*sqr...

> vb1:=simplify(subs(xi=Pi/(3*k),evalm(vb)));

vb1 := vector([15/22, -9/22*sqrt(3), 2/11])

> vb1f:=map(evalf,vb1);

vb1f := vector([.6818181818, -.7085662397, .1818181...

Dibujamos la curva junto con los vectores del triedro

> with(plots):with(plottools):

Warning, the name changecoords has been redefined

damos el valor unidad al parametro k

> c1:=subs(k=1,evalm(vr));

c1 := vector([6*sin(xi), -6*cos(xi), -18*sin(xi)*co...

La función plots[spacecurve] crea el dibujo de la curva en 3D

> curva:=spacecurve(c1,xi=0..Pi,color=brown,thickness=3):

la función plottools[arrow] permite dibujar las flechas

> base:=subs(xi=Pi/3,evalm(c1)):

> tta:=arrow(base,evalm(3*vt1),[1,0,0],.3,.9,.1,color=green):

> nna:=arrow(base,evalm(3*vn1),[1,0,0],.3,.9,.1,color=red):

> bba:=arrow(base,evalm(3*vb1),[1,0,0],.3,.9,.1,color=black):

Dibujamos ahora todo el conjunto

> surf:=plot3d(u*v/2,u=0..6,v=-6..6):

> display(curva,tta,nna,bba,surf,view=-9..9,
axes=BOXED,scaling=CONSTRAINED,shading=Z,orientation=[30,75]);

[Maple Plot]

Animación

> c2:=convert(c1,list);

c2 := [6*sin(xi), -6*cos(xi), -18*sin(xi)*cos(xi)]

> t2:=subs(k=1,convert(evalm(3*vt),list)):

> n2:=subs(k=1,convert(evalm(3*vn),list)):

> b2:=subs(k=1,convert(evalm(3*vb),list)):

> c3:=unapply(c2,xi);

> t3:=unapply(t2,xi):

> n3:=unapply(n2,xi):

> b3:=unapply(b2,xi):

c3 := proc (xi) options operator, arrow; [6*sin(xi)...

> curva:=spacecurve(c2,xi=0..Pi,color=brown,thickness=3):

> surf:=plot3d(u*v/2,u=0..6,v=-6..6,style=contour):

> nump:=30:
dp:=Pi/nump:

> Q:=seq(display(curva,surf,view=-9..9,
arrow(c3(dp*n),evalf(t3(dp*n)),
[1,0,0],.3,.9,.1,color=green),
arrow(c3(dp*n),evalf(n3(dp*n)),
[1,0,0],.3,.9,.1,color=red),
arrow(c3(dp*n),evalf(b3(dp*n)),
[1,0,0],.3,.9,.1),color=black),
n=0..nump):

> display(Q,insequence=true,
axes=none,scaling=CONSTRAINED,shading=Z,orientation=[30,75]);

[Maple Plot]