Braquistócrona en un plano vertical

Se trata de encontrar la curva que hace que una partícula que cae bajo la acción de la gravedad, emplee un tiempo mínimo en recorrerla. Utilizaremos el cálculo de variaciones para obtener la ecuación de la curva que como veremos es una cicloide
La partícula parte del origen con velocidad v=0. Cuando ha descendido una altura y, su velocidad es v, que se calcula aplicando el principio de conservación de la energía
El tiempo que tarda la partícula en ir de A a B es
Aplicando la ecuación de Euler-Lagrange a la función f que no depende de x
por lo que utilizamos la segunda versión de dicha ecuación
El resultado es
Hacemos el cambio de variable
La constante C1 se determina sabiendo que la trayectoria pasa por el origen (x=0, y=0). Teniendo en cuenta que y=0, entonces , tendremos que θ=0, lo que implica que C1=0
Llamando R=k/2 y φ=2θ
Que son las ecuaciones paramétricas de la curva denominada cicloide
Vamos a determinar el valor del parámetro R para que la cicloide pase por el punto (x1, y1). Para ello, hay que calcular la raíz φ1 de la ecuación trascendente
Conocidos y1 y φ1 calculamos R,
Representamos las cicloides que parten del origen y pasan por los puntos (2, 2·2/π), (2, 0.5) y (2,2). Corresponden a tres casos distintos: y1=2x1/π (en color azul), y1<2x1/π, y1>2x1/π
x1=[2,2,2]; y1=[2*2/pi,0.5,2]; hold on for i=1:length(x1) f=@(x) (1-cos(x))/(x-sin(x))-y1(i)/x1(i); phi=fzero(f,pi); R=y1(i)/(1-cos(phi)); xp=@(th) R*(th-sin(th)); yp=@(th) R*(1-cos(th)); fplot(xp,yp,[0,2*pi]) plot(x1(i),y1(i),'o','markersize',3,'markeredgecolor','r', 'markerfacecolor','r') end set (gca,'Ydir','reverse') axis equal legend('y_1=2*x_1/\pi','', 'y_1<2*x_1/\pi','', 'y_1>2*x_1/\pi', 'location', 'best') grid on xlim([0,4]) xlabel('x') ylabel('y') title('Cicloides')
En el segundo caso (primera trayectoria en la figura), la partícula desciende por debajo de y1 y luego, vuelve a ascender hasta alcanzar la posición final (x1, y1) y aún así, emplea un tiempo mínimo
Tiempo que tarda la partícula en discribir un arco de cicloide
Conocida la trayectoria que sigue la partícula, calculamos el tiempo T que tarda en moverse entre dos puntos A y B de una trayectoria y(x)
Para una cicloide, expresamos y, dy/dx y dx en términos de los parámetros R y φ
Si A es el origen φ=0 y si B es el punto (x1, y1), calculamos la raíz φ1 de la ecuación trascendente y después, el parámetro R, tal como hemos hecho anteriormente
El tiempo T que tarda en llegar la partícula al punto B describiendo un arco de cicloide, partiendo del origen en reposo es
x1=2; %punto B y1=2; f=@(x) (1-cos(x))/(x-sin(x))-y1/x1; phi=fzero(f,pi); R=y1/(1-cos(phi)); T=sqrt(R/10)*phi; %tiempo disp(T);
0.8165
Comparación con otras trayectorias
Vamos a calcular el tiempo que tarda una partícula en desplazarse desde el origen A hasta el punto B(x1,y1), siguiendo varias trayectorias, comprobando que la cicloide es la que tarda el menor tiempo.
Línea recta

Consideremos la línea recta que une el origen A y el punto B(x1,y1).
El tiempo que tarda en moverse de A a B partiendo del reposo es
x1=2; %punto P y1=2; T=sqrt(2/9.8)*sqrt((x1^2+y1^2)/(x1*y1))*sqrt(x1); disp(T);
0.9035
Parábola

Consideremos la parábola que pasa por el origen A y el punto B(x1,y1).
La ecuación de la parábola que pasa por el origen es y=ax2+bx, y tiene su vértice en el punto B(x1,y1) es
Resolvemos el sistema de dos ecuaciones
El tiempo que tarda en moverse de A a B partiendo del reposo es
Utilizamos procedimientos numéricos para calcular la integral definida
x1=2; %punto P y1=2; a=-y1/x1^2; b=2*y1/x1; f=@(x) sqrt((1+(2*a*x+b).^2)./(a*x.^2+b*x)); T=integral(f,0,x1)/sqrt(2*9.8); disp(T);
0.8418
Función armónica

Consideremos la función armónica y=asin(x) que pasa por el origen A y el punto B(x1,y1).
Sabiendo y=y(x) y dy/dx
calculamos el tiempo T de viaje. Resolvemos la integral definida por procedimientos numéricos
x1=2; %punto P y1=2; a=-y1/x1^2; b=2*y1/x1; f=@(x) sqrt((1+(2*a*x+b).^2)./(a*x.^2+b*x)); T=integral(f,0,x1)/sqrt(2*9.8); disp(T);
0.8733 >> fplot(@(x) a*sin(x),[0,3]) >> grid on >> set (gca,'Ydir','reverse')
Como vemos en el gráfico, la partícula parte del origen en reposo, se mueve a lo largo de la trayectoria hasta alcanzar el mínimo en π/2 y luego, asciende hasta el punto B (2,2)
Dos segmentos
Las ecuaciones paramétricas de la braquistócrona son
Cuando φ=π, y=h, por lo que R=h/2.
El punto P esta a una distancia, d=πh/2
h=1; R=h/2; fplot(@(th) R*(th-sin(th)),@(th) R*(1-cos(th)),[0,pi]) set (gca,'Ydir','reverse') axis equal grid on axis off
El tiempo T que tarda una partícula en recorrer la trayectoria desde el origen hasta P es
Consideremos ahora la trayectoria formada por dos segmentos conectados
En el plano inclinado, la fuerza sobre la partícula es mgsinθ, la aceleración es gsinθ. En el plano horizontal, la fuerza sobre la partícula es nula, la velocidad es constante
Supondremos que la partícula parte en reposo. La ecuación de su movimiento a lo largo del plano inclinado es
El tiempo que tarda en recorrerlo es
La velocidad al llegar al final del plano inclinado (principio del plano horizaontal) es
La velocidad se puede obtener a partir de la conservación de la energía, mgh=mv2/2
Esta velocidad se mantiene constante en el plano horizontal
El tiempo total es
Representamos el tiempo t en función de x para tres valores de d=πh/2, 2, 3. Identificamos los mínimos de la función t(x)
h=1; hold on xm=h/sqrt(3); %mínimo line([xm,xm],[0,2],'lineStyle','--') for d=[pi*h/2, 2,3] f=@(x) sqrt(2*(x.^2+h^2)/(9.8*h))+(d-x)/sqrt(2*9.8*h); fplot(f, [0,3]) tm=(sqrt(8/3)-sqrt(1/6))*sqrt(h/9.8)+d/sqrt(2*9.8*h); %mínimo line([0,xm],[tm,tm],'lineStyle','--') end hold off grid on ylim([0,1.5]) xlabel('x (m)') ylabel('t(s)') title('Tiempo de en función de x')
Calculamos el valor de x para que el tiempo t sea mínimo
Para este valor de xm el tiempo mínimo vale
Comparamos el tiempo tm con el tiempo T para la distancia d=πh/2
Como cabe esperar, T es más pequeño. Comparamos las dos trayectorias
h=1; R=h/2; fplot(@(th) R*(th-sin(th)),@(th) R*(1-cos(th)),[0,pi],'lineWidth',1.3,'color','r') set (gca,'Ydir','reverse') line([0,xm],[0,h],'lineWidth',1.3,'color','k') line([xm,pi*h/2],[h,h],'lineWidth',1.3,'color','k') axis equal grid on xlabel('x') ylabel('y') title('trayectorias')
En la página titulada Braquistócrona discreta sustituimos esta trayectoria por un conjunto de segmentos conectados
La partícula parte del origen con velocidad no nula
En este apartado analizamos cómo cambia la trayectoria cicloidal de la partícula cuando parte del origen con velocidad inicial no nula
La partícula parte del origen con velocidad v0. Cuando ha descendido una altura y, su velocidad es v, que se calcula aplicando el principio de conservación de la energía
El tiempo que tarda la partícula en ir de A a B es
Haciendo el cambio de variable
La integral se convierte en
Aplicando la ecuación de Euler-Lagrange a la función f que no depende de X
La solución ya deducida en el primer apartado, cuando la partícula partía con velocidad inicial nula, es
Voviendo a las variables originales x e y
Las constantes R y K se determina sabiendo que la curva pasa por los puntos A (0, 0) y B(xB, yB) o bien, resolviendo el sistema de cuatro ecuaciones
Llamando , el sistema de ecuaciones se expresa de forma más conveniente
Como podemos apreciar, cuando la velocidad inicial es nula, v0=0, φA=0, K=0, y φB se obtiene resolviendo la ecuación transcendente
Llamando x1 a φA y x2 a φB, tenemos que resolver el sistema de dos ecuaciones no lineales con dos incógnitas
Utilizamos el procedimiento iterativo, para lo cual definimos el vector F de funciones
El vector X de las incógnitas
El Jacobiano de este sistema de dos ecuaciones es
Se parte de un valor inicial de las incógnitas X0 y se obtiene la solución aproximada empeando el proceso iterativo, X=X-J\F
El proceso se detiene después de un número determinado de iteraciones o cuando la diferencia entre dos valores consecutivos del vector de las incógnitas X es menor que un número prefijado
Primero, comprobamos que cuando la velocidad inicial es nula, obtenemos las mismas trayectorias que en el primer apartado, tomando el punto B de coordenadas, por ejemplo, (2,2), después asignamos un valor a la velocidad inicial o al parámetro V0
xB=2; %coordenadas del punto B yB=2; V0=2; F=@(x) [(yB+V0)*(1-cos(x(1)))-V0*(1-cos(x(2)));(yB+V0)*(x(2)-sin(x(2))- x(1)+sin(x(1)))-xB*(1-cos(x(2)))]; J=@(x) [(yB+V0)*sin(x(1)),-V0*sin(x(2)); (yB+V0)*(cos(x(1))-1), (yB+V0)*(1-cos(x(2)))-xB*sin(x(2))]; x=[pi/4;pi]; %valor inicial i=0; while i<100 y=-J(x)\F(x); if sqrt(norm(y)/norm(x))<0.001 break; end x=x+y; i=i+1; end if i>=100 disp('Se ha soprepasado el número de iteracciones'); end fprintf('La solución es phi_A=%1.3f, phi_B=%1.3f\n',x(1),x(2)); %trayectoria R=(yB+V0)/(1-cos(x(2))); K=R*(x(1)-sin(x(1))); xp=@(th) R*(th-sin(th))-K; yp=@(th) R*(1-cos(th))-V0; hold on fplot(xp,yp,[x(1),2*pi]) plot(xB,yB,'o','markersize',3,'markeredgecolor','r','markerfacecolor','r') alfa=atan(sin(x(1))/(1-cos(x(1)))); quiver(0,0,sqrt(2*9.8*V0)*cos(alfa),sqrt(2*9.8*V0)*sin(alfa),'color','r') hold off set (gca,'Ydir','reverse') axis equal grid on xlabel('x') ylabel('y') title('Cicloide')
La solución es phi_A=1.218, phi_B=1.885
Cuando el móvil parte de origen con velocidad inicial , el parámetro φA=1.218, cuando llega al punto B (2,2) el parámetro φB=1.885
Se ha dibujado el vector velocidad inicial tangente a la trayectoria en el origen. El ángulo α que forma el vector velocidad con el eje X es
Tiempo que tarda la partícula en discribir un arco de cicliode
El tiempo que trada la partícula en desplazarse desde el origen A al punto B es
>> T=sqrt(R/9.8)*(x(2)-x(1)) T = 0.3725
Que como vemos es bastante menor que el tiempo obtenido cuando la velocidad inicial es nula, 0.8165
Referencias
Del apartado titulado 'La partícula parte del origen con velocidad no nula'
T. M. Atanackovic. The brachistochrone for a material point with arbitrary initial velocity. Am. J. Phys. 46(12) December 1978, pp. 1274-1275
Pirooz Mohazzabi. A Different Brachistochrone Problem with Counterintuitive Results. Journal of Applied Mathematics and Physics, 2024, 12, 1426-1431, https://doi.org/10.4236/jamp.2024.124087