Braquistócrona discreta
Conectamos dos puntos del plano A y B situados a distinta altura por un conjunto N de planos inclinados (en color azul). Una partícula parte del reposo del primer punto A y desliza sin rozamiento a lo largo de los planos inclinados hasta llegar al segundo punto B. Dependiendo de las coordenadas de los puntos (xk, yk), k=1,2,...N-1, que conectan las rampas, el tiempo que emplea la partícula en recorrerlas puede ser mayor o menor. Calcularemos las coordenadas de estos puntos cuando este tiempo sea mínimo y lo compararemos con el tiempo que le lleva a la partícula recorrer la trayectoria cicloidal (en color rojo) que une los puntos A y B.
Plano inclinado

Consideremos un plano inclinado que une el origen con un punto de coordenadas (x, y). Si no hay rozamiento las fuerzas sobre la partícula son el peso mg y la reacción del plano inclinado, N=mgcosθ.
La aceleración del cuerpo es gsinθ=gy/l, siendo l la longitud del plano inclinado. La velocidad final v y el tiempo t que le lleva a la partícula recorrer el plano inclinado son
La velocidad final v solamente depende de la ordenada y del extremo del plano inclinado. Esta velocidad se puede obtener aplicando el principio de conservación de la energía
Expresamos el tiempo t en términos de las coordenadas (x, y) del extremo del plano inclinado
Consideremos ahora una rampa que conecta dos puntos (xk, yk) y (xk+1, yk+1)
La velocidad inicial uk y la final uk+1 solamente dependen de las ordenadas de los extremos, yk e yk+1
Calculamos el tiempo tk que le lleva a la partícula recorrer el plano inclinado k de longitud lk
Cuando la aceleración es constante, la velocidad media de la partícula en el plano inclinado es vk=(uk+uk+1)/2 es la media de sus velocidades en los extremos. El tiempo tk es el cociente entre la longitud lk del plano inclinado y la velocidad media vk
El tiempo total t que tarda en desplazarse la partícula de A (0,0) y B (L, H) a través de N rampas es
Definimos nuevas variables adimensionales X=x/H, Y=y/H y
Dos rampas
Unimos los puntos A (0,0) y B (L, H), mediante dos rampas. El tiempo T que emplea la partícula en desplazarse sin rozamiento a lo largo de este camino, partiendo de A en reposo es
Para que T sea mínimo se tiene que cumplir que
Obtenemos un sistema no lineal de dos ecuaciones con dos incógnitas
Intentamos resolver este sistema no lineal mediante
L=5; H=1; f=@(x) [x(1)/(sqrt(x(1)^2+x(2)^2)*sqrt(x(2)))-(L/H-x(1))/ (sqrt((L/H-x(1))^2+(1-x(2))^2)*(sqrt(x(2))+1)); -(x(1)-x(2))^2/(sqrt(x(1)^2+x(2)^2)*sqrt(x(2))*x(2))- (2*(1-x(2))*sqrt(x(2))*(sqrt(x(2))+1)+(L/H-x(1))^2+(1-x(2))^2) /(sqrt(x(2))*sqrt((L/H-x(1))^2+(1-x(2))^2)*(sqrt(x(2))+1)^2)]; [x,fval] = fsolve(f,[1,1.3]);
fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
Creamos un script que realiza las siguientes tareas:
Busca el mínimo de T empleando la función
fminsearch de MATLAB, que devuelve las coordenadas (x1, y1) del punto de unión de los dos planos inclinados. En el código x1 es x(1) e y1 es x(2). El punto inicial de partida que hay que pasarle afminsearch , se toma próximo a la cicloide que pasa por A y B.
Para ello, representamos la cicloide
L=5; H=1; f=@(x) (1-cos(x))/(x-sin(x))-H/L; phi=fzero(f,pi); R=H/(1-cos(phi)); xp=@(th) R*(th-sin(th)); yp=@(th) R*(1-cos(th)); fplot(xp,yp,[0,phi]) set (gca,'Ydir','reverse') axis equal grid on xlabel('x') ylabel('y') title('cicloide')
Con el puntero del ratón se marca un punto próximo a la cicloide y se leen sus coordenadas X e Y
Representa la cicloide que pasa por el origen A y por el punto B (L=5, H=1).
Calcula el tiempo t1 que emplea la partícula en desplazarse por el primer plano inclinado y el tiempo t2 que emplea en recorrer el segundo
Calcula el tiempo total t1+t2 que le lleva a la partícula recorrer el camino formado por los dos planos inclinados que unen los puntos A y B, y el tiempo tc que tardaría en desplazarse por la cicloide que une ambos puntos (En la página previa, en el apartado titulado 'Tiempo que tarda la partícula en discribir un arco de cicloide', se proporciona la fórmula)
L=5; H=1; f=@(x) sqrt(x(1)^2+x(2)^2)/sqrt(x(2))+sqrt((L/H-x(1))^2+(1-x(2))^2)/(sqrt(x(2))+1); x=fminsearch(f,[1.1,1.4]); %cicloide f=@(x) (1-cos(x))/(x-sin(x))-H/L; phi=fzero(f,pi); R=H/(1-cos(phi)); xp=@(th) R*(th-sin(th)); yp=@(th) R*(1-cos(th)); hold on fplot(xp,yp,[0,phi],'color','r') %planos inclinados line([0,x(1)],[0,x(2)],'lineWidth',1.5,'color','b') line([x(1),L],[x(2),H],'lineWidth',1.5,'color','b') plot(x(1),x(2),'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') hold off set (gca,'Ydir','reverse') axis equal grid on xlabel('x') ylabel('y') title('cicloide') %tiempos t1=sqrt(x(1)^2+x(2)^2)*sqrt(2*H/9.8)/sqrt(x(2)); t2=sqrt((L/H-x(1))^2+(1-x(2))^2)*sqrt(2*H/9.8)/(sqrt(x(2))+1); tc=phi*sqrt(R/9.8); %cicloide format long disp([t1+t2, tc]) format short
1.477536416243312 1.388364604578311 >> t1,t2 t1 = 0.7388 t2 = 0.7388
El tiempo que tarda en recorrer el arco de cicloide es 1.388 y los dos planos inclinados 1.477. Comprobamos que los tiempos t1 y t2 son casi idénticos.
Tres rampas
Calculamos el mínimo del tiempo adimensional T que emplea la partícula en desplazarse a lo largo del camino formado por los tres planos inclinados que conectan el origen A y el punto B (L=5, H=1). Determinamos las coordendas de los puntos de unión (x1, y1) y (x2, y2) mediante
En el código x1 es x(1) e y1 es x(2), x2 es x(3) e y2 es x(4). Los dos puntos iniciales de partida que hay que pasarle a
L=5; H=1; f=@(x) sqrt(x(1)^2+x(2)^2)/sqrt(x(2))+sqrt((x(3)-x(1))^2+(x(4)-x(2))^2) /(sqrt(x(2))+sqrt(x(4)))+sqrt((L/H-x(3))^2+(1-x(4))^2)/(sqrt(x(4))+1); x=fminsearch(f,[1,1.3,3.2,1.7]); %cicloide f=@(x) (1-cos(x))/(x-sin(x))-H/L; phi=fzero(f,pi); R=H/(1-cos(phi)); xp=@(th) R*(th-sin(th)); yp=@(th) R*(1-cos(th)); hold on fplot(xp,yp,[0,phi],'color','r') %planos inclinados line([0,x(1)],[0,x(2)],'lineWidth',1.5,'color','b') line([x(1),x(3)],[x(2),x(4)],'lineWidth',1.5,'color','b') line([x(3),L],[x(4),H],'lineWidth',1.5,'color','b') plot(x(1),x(2),'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') plot(x(3),x(4),'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') hold off set (gca,'Ydir','reverse') axis equal grid on xlabel('x') ylabel('y') title('cicloide') %tiempos t1=sqrt(x(1)^2+x(2)^2)*sqrt(2*H/9.8)/sqrt(x(2)); t2=sqrt((x(3)-x(1))^2+(x(4)-x(2))^2)*sqrt(2*H/9.8)/(sqrt(x(2))+sqrt(x(4))); t3=sqrt((L/H-x(3))^2+(1-x(4))^2)*sqrt(2*H/9.8)/(sqrt(x(4))+1); tc=phi*sqrt(R/9.8); %cicloide format long disp([t1+t2+t3, tc]) format short
1.424572580985510 1.388364604578311 >> t1,t2,t3 t1 = 0.4749 t2 = 0.4749 t3 = 0.4749
El tiempo que emplea la partícula en recorrer el arco de cicloide es 1.388 y el camino formado por los tres planos inclinados, 1.425 más próximo que con dos rampas. Comprobamos que los tiempos t1, t2 y t3 son casi idénticos.
Cuatro rampas
Calculamos el mínimo del tiempo adimensional T que emplea la partícula en desplazarse a lo largo del camino formado por cuatro planos inclinados que conectan el origen A y el punto B (L=5, H=1). Determinamos las coordendas de los puntos de unión (x1, y1), (x2, y2) y (x3, y3) mediante
En el código x1 es x(1) e y1 es x(2), x2 es x(3) e y2 es x(4), x4 es x(5) e y4 es x(6)
L=5; H=1; f=@(x) sqrt(x(1)^2+x(2)^2)/sqrt(x(2))+sqrt((x(3)-x(1))^2+(x(4)-x(2))^2) /(sqrt(x(2))+sqrt(x(4)))+sqrt((x(5)-x(3))^2+(x(6)-x(4))^2)/(sqrt(x(4))+ sqrt(x(6)))+sqrt((L/H-x(5))^2+(1-x(6))^2)/(sqrt(x(6))+1); x=fminsearch(f,[0.3,0.6,1,1.3,3.2,1.7]); %cicloide f=@(x) (1-cos(x))/(x-sin(x))-H/L; phi=fzero(f,pi); R=H/(1-cos(phi)); xp=@(th) R*(th-sin(th)); yp=@(th) R*(1-cos(th)); hold on fplot(xp,yp,[0,phi],'color','r') %planos inclinados line([0,x(1)],[0,x(2)],'lineWidth',1.5,'color','b') line([x(1),x(3)],[x(2),x(4)],'lineWidth',1.5,'color','b') line([x(3),x(5)],[x(4),x(6)],'lineWidth',1.5,'color','b') line([x(5),L],[x(6),H],'lineWidth',1.5,'color','b') plot(x(1),x(2),'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') plot(x(3),x(4),'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') plot(x(5),x(6),'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') hold off set (gca,'Ydir','reverse') axis equal grid on xlabel('x') ylabel('y') title('cicloide') %tiempos t1=sqrt(x(1)^2+x(2)^2)*sqrt(2*H/9.8)/sqrt(x(2)); t2=sqrt((x(3)-x(1))^2+(x(4)-x(2))^2)*sqrt(2*H/9.8)/(sqrt(x(2))+sqrt(x(4))); t3=sqrt((x(5)-x(3))^2+(x(6)-x(4))^2)*sqrt(2*H/9.8)/(sqrt(x(4))+sqrt(x(6))); t4=sqrt((L/H-x(5))^2+(1-x(6))^2)*sqrt(2*H/9.8)/(sqrt(x(6))+1); tc=phi*sqrt(R/9.8); %cicloide format long disp([t1+t2+t3+t4, tc]) format short
1.408145004708376 1.388364604578311 >> t1,t2,t3,t4 t1 = 0.3520 t2 = 0.3520 t3 = 0.3520 t4 = 0.3520 x = 0.1663 0.5577 1.3547 1.5616 3.3612 1.8073
El tiempo que emplea la partícula en recorrer el arco de cicloide es 1.388 y el camino formado por los tres planos inclinados, 1.408 más próximo que con tres rampas. Comprobamos que los tiempos t1, t2, t3 y t4 son casi idénticos. Las coordendas de los puntos de unión son (x1, y1)=(0.1663, 0.5577), (x2, y2)=(1.3547, 1.5616), (x3, y3)=(3.3612, 1.8073)
Propiedades de la braquistócrona discreta
Las propiedades de la braquistócrona discreta son
Los tiempos que la partícula emplea en recorrer los planos inclinados son iguales: t1=t2=...tk=...tN
Se cumple la relación
Donde θk es el ángulo del plano inclinado con la dirección vertical y vk es la velocidad media de la partícula en la rampa k. Añadimos estas líneas de código al script anterior para comprobarlo
... th_1=atan2(x(1),x(2)); %ángulos th_2=atan2((x(3)-x(1)),(x(4)-x(2))); th_3=atan2((x(5)-x(3)),(x(6)-x(4))); th_4=atan2((L/H-x(5)),(1-x(6))); k1=sqrt(x(2))/sin(th_1); k2=(sqrt(x(2))+sqrt(x(4)))/sin(th_2); k3=(sqrt(x(4))+sqrt(x(6)))/sin(th_3); k4=(sqrt(x(6))+1)/sin(th_4); disp([k1,k2,k3,k4])
2.6135 2.6134 2.6134 2.6134
Esta relación nos recuerda a la ley de la refracción que se deduce de la aplicación del principio de Fermat: la trayectoria que sigue un rayo de luz entre dos puntos es aquella en la que emplea un tiempo mínimo en recorrerla.
Para cinco rampas el comando
Exiting: Maximum number of function evaluations has been exceeded - increase MaxFunEvals option.
Con tres o cuatro rampas que unen dos puntos A y B, nos aproximamos bastante bien a la cicloide que pasa por dichos puntos
Coordenadas de los puntos de unión de los planos inclinados
Teniendo en cuenta las dos propiedades de la braquistócrona discreta, vamos a calcular las coordenadas (xk, yk), k=1,2,...N-1 de los puntos de unión de los N planos inclinados que conectan el origen A y el punto B(L, H)

En la figura se muestran dos planos inclinados consecutivos, conectados en el punto (xk, yk). Relacionamos las velocidades al comienzo y al final de los dos planos inclinados
En los movimientos uniformemente acelerados, las velocidades medias en cada uno de los planos inclinados son
A partir de estas relaciones, despejamos la velocidad uk
Utilizando las relaciones trigonométricas: sin(A+B)-sin(A-B)=2cosAsinB, cos(A+B)-cos(A-B)=2cosAcosB
La diferencia entre dos ángulos consecutivos θk+1-θk es constante,
Precisamos calcular el primer ángulo, θ1 para aplicar la relación de recurrencia. Como la partícula parte del origen A en reposo, u0=0
De estas relaciones, obtenemos el primer ángulo
El resto de los ángulos se calcula fácilmente
Las longitudes lk de los planos inclinados están relacionados con el ángulo θk
Volviendo a la figura del apartado 'Propiedades de la braquistócrona discreta'
Eliminando l1 del sistema de ecuaciones, obtenemos una ecuación transcendente en θ1
Una vez que hemos obtenido θ1, calculamos la longitud del primer plano inclinado, l1 utilizando cualquiera de las dos ecuaciones
Las coordenadas del punto de unión del primer y segundo plano inclinados son
y a continuación, las coordenadas del los otros puntos de unión empleando las relaciones de recurrencia entre longitudes lk y ángulos θk
Para calcular θ1, definimos la función que pasamos a
function res =cicloide_discreta(th, N) num=0; den=0; for k=1:N num=num+sin((2*k-1)*th).^2; den=den+sin((2*k-1)*th).*cos((2*k-1)*th); end res=num./den; end
Calculamos las coordenadas de los puntos de unión de N=4 planos inclinados. Representamos el camino mediante segmentos de color azul
Representamos la cicloide que pasa por el origen A y por el punto B (L=5, H=1)
L=5; H=1; N=4; %número de rampas x=zeros(N-1,1); y=zeros(N-1,1); f=@(th) cicloide_discreta(th,N)-L/H; th_1=fzero(f,0.1); k=1:N; SL=sum(sin((2*k-1)*th_1).^2); l1=L*sin(th_1)/SL; x(1)=l1*sin(th_1); y(1)=l1*cos(th_1); for k=2:N-1 x(k)=x(k-1)+l1*sin((2*k-1)*th_1)^2/sin(th_1); y(k)=y(k-1)+l1*sin((2*k-1)*th_1)*cos((2*k-1)*th_1)/sin(th_1); end td=N*sqrt(2*L*tan(th_1)/(SL*9.8)); %tiempo, planos inclinados %cicloide f=@(x) (1-cos(x))/(x-sin(x))-H/L; phi=fzero(f,pi); R=H/(1-cos(phi)); xp=@(th) R*(th-sin(th)); yp=@(th) R*(1-cos(th)); hold on fplot(xp,yp,[0,phi],'color','r') %planos inclinados line([0,x(1)],[0,y(1)],'lineWidth',1.5,'color','b') for k=2:N-1 line([x(k-1),x(k)],[y(k-1),y(k)],'lineWidth',1.5,'color','b') end line([x(3),L],[y(3),H],'lineWidth',1.5,'color','b') for k=1:N-1 plot(x(k),y(k),'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') end tc=phi*sqrt(R/9.8); %tiempo cicloide disp([td,tc]); hold off set (gca,'Ydir','reverse') axis equal grid on xlabel('x') ylabel('y') title('cicloide')
Obtenemos la misma figura y las mismas coordenadas de los puntos de unión de los planos inclinados que hemos obtenido utilizando
x = 0.1663 1.3547 3.3612 >> y y = 0.5577 1.5616 1.8073
El problema principal reside en estimar el intervalo (en el que la función
Tiempo
t0 es el tiempo que emplea la partícula en deslizar sin rozamiento a lo largo de un plano inclinado y es constante. El tiempo total que le lleva desplazarse de A a B a lo largo del camino formado por un conjunto de N planos inclinados es, td=Nt0. Utilizamos las siguientes relaciones para calcular t0
El tiempo td=1.0481 coincide con el calculado empleando
1.4081 1.3884
Representamos el cociente de tiempos td/tc para N=2,3...10, planos inclinados que conectan el origen A y el punto B (L=5, H=1). Comprobamos que cuando N se hace grande, el cociente td/tc→1
L=5; H=1; hold on for N=2:10 %planos inclinados f=@(th) cicloide_discreta(th,N)-L/H; th_1=fzero(f,0.1); k=1:N; SL=sum(sin((2*k-1)*th_1).^2); td=N*sqrt(2*L*tan(th_1)/(SL*9.8)); %tiempo, planos inclinados %cicloide f=@(x) (1-cos(x))/(x-sin(x))-H/L; phi=fzero(f,pi); R=H/(1-cos(phi)); tc=phi*sqrt(R/9.8); %tiempo cicloide plot(N,td/tc,'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') end hold off grid on xlabel('N') ylabel('t_d/t_c') title('Tiempos')
Referencias
David Agmon, Hezi Yizhaq. The remarkable properties of the discrete brachistochrone. Eur. J. Phys. 40(2019) 035005
Carl E Mungan, Trevor C Lipscombe. Minimum descent time along a set of connected inclined planes. Eur. J. Phys. 38(2017) 045002