Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Aplicación: Cálculo de Trayectorias 3D con Bucles While | Visualizaciones
Fundamentos de Matlab
course content

Contenido del Curso

Fundamentos de Matlab

Fundamentos de Matlab

1. Sintaxis Básica y Programación con un Editor de Texto
2. Fundamentos de Codificación
3. Aprendizaje a Través de Aplicaciones
4. Visualizaciones
5. Recursión y Multiplicación de Matrices

book
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 esenciales 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, la condición se verifica nuevamente. Si sigue siendo verdadera, el código se ejecuta otra vez. 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 ideal para tareas donde el número de iteraciones depende de factores dinámicos.

Debido a que los bucles while se repiten hasta que el booleano sea falso, existe el riesgo (por circunstancia o error) de que el booleano siempre sea verdadero y el bucle while se repita indefinidamente.
Así que 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, estamos utilizando la ecuación de movimiento 1D:

  • t: tiempo (en segundos);

  • x(t): posición del objeto en el tiempo t;

  • xi: posición inicial del objeto;

  • vi: velocidad inicial del objeto;

  • a: aceleración del objeto (se asume constante).

Esto se aplica de forma independiente a los 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 normalmente se deriva algebraicamente (un poco más tedioso, pero no difícil) 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 percibir 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:

  1. Importar las posiciones y velocidades iniciales como matrices separadas, y las etiquetas de los objetos como un arreglo de celdas;

  2. Acordeonar 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 indexación consistente posteriormente;

  3. Utilizar un bucle for sobre los objetos para calcular la trayectoria 3D de cada uno;

  4. Calcular la trayectoria de cada objeto dentro de un bucle while cuyo primer valor Booleano evalúa si el objeto aún está por encima del suelo (su coordenada z es ≥ 0). 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). Calcular 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 los acordearon en matrices 3D siempre es una buena manera de descartar estas partes del programa como fuentes de error;

  • Restringir el bucle for a una sola iteración, o de manera equivalente eliminar los objetos 2 y 3 (datos y etiquetas) del archivo de Excel para ver cómo funciona el programa con un solo objeto;

  • Las trayectorias no parabólicas podrían ser sintomáticas de un problema en la aplicación de la ecuación de movimiento, o de una programación incorrecta de los cálculos por componente (recordando los puntos antes de la multiplicación, etc.);

  • Las posiciones iniciales (primera columna de cada capa 2D) de la matriz de trayectorias 3D deben ser las mismas que 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 -9.8 m/s² (hacia abajo, en dirección a la Tierra), no +9.8.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

Fundamentos de Matlab

Fundamentos de Matlab

1. Sintaxis Básica y Programación con un Editor de Texto
2. Fundamentos de Codificación
3. Aprendizaje a Través de Aplicaciones
4. Visualizaciones
5. Recursión y Multiplicación de Matrices

book
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 esenciales 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, la condición se verifica nuevamente. Si sigue siendo verdadera, el código se ejecuta otra vez. 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 ideal para tareas donde el número de iteraciones depende de factores dinámicos.

Debido a que los bucles while se repiten hasta que el booleano sea falso, existe el riesgo (por circunstancia o error) de que el booleano siempre sea verdadero y el bucle while se repita indefinidamente.
Así que 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, estamos utilizando la ecuación de movimiento 1D:

  • t: tiempo (en segundos);

  • x(t): posición del objeto en el tiempo t;

  • xi: posición inicial del objeto;

  • vi: velocidad inicial del objeto;

  • a: aceleración del objeto (se asume constante).

Esto se aplica de forma independiente a los 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 normalmente se deriva algebraicamente (un poco más tedioso, pero no difícil) 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 percibir 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:

  1. Importar las posiciones y velocidades iniciales como matrices separadas, y las etiquetas de los objetos como un arreglo de celdas;

  2. Acordeonar 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 indexación consistente posteriormente;

  3. Utilizar un bucle for sobre los objetos para calcular la trayectoria 3D de cada uno;

  4. Calcular la trayectoria de cada objeto dentro de un bucle while cuyo primer valor Booleano evalúa si el objeto aún está por encima del suelo (su coordenada z es ≥ 0). 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). Calcular 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 los acordearon en matrices 3D siempre es una buena manera de descartar estas partes del programa como fuentes de error;

  • Restringir el bucle for a una sola iteración, o de manera equivalente eliminar los objetos 2 y 3 (datos y etiquetas) del archivo de Excel para ver cómo funciona el programa con un solo objeto;

  • Las trayectorias no parabólicas podrían ser sintomáticas de un problema en la aplicación de la ecuación de movimiento, o de una programación incorrecta de los cálculos por componente (recordando los puntos antes de la multiplicación, etc.);

  • Las posiciones iniciales (primera columna de cada capa 2D) de la matriz de trayectorias 3D deben ser las mismas que 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 -9.8 m/s² (hacia abajo, en dirección a la Tierra), no +9.8.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
some-alt