Contenido del Curso
Fundamentos de Matlab
Fundamentos de Matlab
Aplicación: Cálculo de Trayectorias 3D con Bucles While
Aquí aprenderás cómo calcular las trayectorias de objetos que se mueven en el espacio 3D, y también otro aspecto de la programación: los bucles while, cuyas propiedades únicas los hacen tan fundamentales como los bucles for y las sentencias if, aunque no se utilicen con tanta frecuencia.
Estructura del bucle While
Los bucles while son similares a los bucles for, pero su diferencia clave radica en el mecanismo de control de la iteración. En lugar de un número fijo de iteraciones, el bucle while se ejecuta mientras la condición booleana sea verdadera. Así es como funciona:
Primero se evalúa la condición booleana;
Si la condición es verdadera, se ejecuta el código dentro del bucle;
Después de ejecutar el código, se vuelve a comprobar la condición. Si sigue siendo verdadera, el código se ejecuta de nuevo. Esto continúa mientras la condición permanezca verdadera;
Una vez que la condición se vuelve falsa, el bucle termina y el programa continúa desde el punto posterior al bucle.
Esta estructura es especialmente útil cuando no se sabe de antemano cuántas veces será necesario ejecutar el bucle. Se sigue ejecutando hasta que se cumple una determinada condición, lo que lo hace adecuado para tareas donde el número de iteraciones depende de factores dinámicos.
Debido a que los bucles while se repiten hasta que la condición booleana es falsa, existe el riesgo (por circunstancia o error) de que la condición booleana siempre sea verdadera y el bucle while se repita indefinidamente.
Si notas que tu programa tarda mucho más de lo habitual, es recomendable detenerlo en Matlab pulsando:
Ctrl
+C
;Cmd
+C
.
Para detener el código en ejecución y reevaluar la lógica y el código.
La ecuación para el movimiento 1D con aceleración constante
En el video, utilizamos la ecuación de movimiento 1D:
donde:
es el tiempo (en segundos);
es la posición del objeto en el tiempo t;
es la posición inicial del objeto;
es la velocidad inicial del objeto;
es la aceleración del objeto (se asume constante).
Esto se aplica de forma independiente a las componentes ortogonales x, y, z de posición, velocidad y aceleración utilizando operaciones matriciales por componente.
Esta ecuación es estándar en física y suele derivarse algebraicamente (un poco más tedioso, pero no complicado) o integrando una aceleración constante dos veces respecto al tiempo (y reconociendo que las constantes resultantes representan la velocidad inicial y la posición inicial).
Que x, y, z sean ortogonales (perpendiculares) permite que esto se aplique a cada una de estas dimensiones por separado, y al mismo tiempo podemos considerar esto como el análisis de una sola dimensión para simplificar la comprensión.
Tarea
Escribir una versión propia del programa mostrado en el video comprendiendo los objetivos:
Importar las posiciones y velocidades iniciales como matrices separadas, y las etiquetas de los objetos como un arreglo de celdas;
Reorganizar estos datos por separado en dos matrices 3D para que las posiciones (coordenadas x, y, z) de cada objeto puedan evolucionar a lo largo de las columnas de su propia capa 2D. Se puede hacer lo mismo para las velocidades iniciales (aunque no cambian—siempre son las velocidades iniciales) para mantener la coherencia en el indexado posteriormente;
Utilizar un bucle for sobre los objetos para calcular la trayectoria 3D de cada uno;
Calcular la trayectoria de cada objeto dentro de un bucle while cuyo primer Booleano evalúa si el objeto aún está por encima del suelo (su coordenada z es ). Dentro del bucle while, aplicar la ecuación de movimiento 1D para calcular la nueva posición (aplicarla a las coordenadas x, y, z de forma independiente usando operaciones matriciales). El cálculo de la posición en cualquier momento debe depender ÚNICAMENTE de:
La posición inicial del objeto;
La velocidad inicial del objeto;
El tiempo evaluado.
No debe depender de la posición previa calculada.
Verificar los datos de entrada (posiciones y velocidades iniciales) y las variables que reorganizaron estos datos en matrices 3D es siempre una buena manera de descartar estas partes del programa como fuentes de error;
Restringir el bucle for a una sola iteración, o eliminar los objetos 2 y 3 (datos y etiquetas) del archivo de Excel para observar cómo funciona el programa con un solo objeto;
Trayectorias no parabólicas pueden indicar un problema en la aplicación de la ecuación de movimiento, o una programación incorrecta de los cálculos por componente (recordar los puntos antes de la multiplicación, etc.);
Las posiciones iniciales (primera columna de cada capa 2D) de la matriz de trayectorias 3D deben coincidir con las registradas en el archivo de Excel;
No debe haber valores negativos (cada objeto comenzó con posición y velocidad positivas en todas las direcciones x, y, z);
Revisar cómo se definió la aceleración, o intentar establecerla en cero. Esto debería producir un movimiento a velocidad constante, lo que debería formar líneas al graficar (si se toma la vista superior del gráfico 3D, que solo muestra el movimiento en las direcciones x, y donde la aceleración era cero, se observará lo mismo);
Según nuestro sistema de coordenadas, la gravedad es (hacia abajo, en dirección a la Tierra), no .
¡Gracias por tus comentarios!