Ahora nos ensuciaremos las manos y escribiremos un solucionador de EDOs. Haremos Euler hacia adelante y Euler hacia atrás. Eular hacia adelante también se conoce como Euler explicito porque es un solucionador explicito. Despues usaremos el soluciondaor de Euler explicito para generar trayectorias del oscilador armónico pára distintos conjuntos de parámetros. Aquí está mi implementación de Euler hacia adelante en MATLAB. Pide una condición inicial x0, un tamaño de paso h, un tiempo final finalTime y un parámetro showPlot, que necesito más tarde como bandera para saber si graficar las trayectorias. Puedes simplemente ignorar este si lo requieres. El primer paso es hacer xcurr, una varia- ble de ayuda igual a la condición inicial. y hacer que x0 sea el primer elemento de la trayectoria. Note que como MATLAB empieza la indexación desde uno x0 será el primer elemento de la trayectoria, es decir, será la trayectoria uno. x1, será la trayectoria dos, este trslado de uno en la indexación puede ser un poco confuso. Después tenemos esté ciclo. Todo lo que hace es tomar xcurr, que es una variable de ayuda que usamos arriba empieza desde esa posición y da un paso en la dirección de la ecuación diferencial. Así que el siguiente elmento de la trayectoria es simplemente la posición actual más un pequeño paso en la dirección de la EDO. Después actualizamos la posición actual (xcurr) y repetimos las veces necesarias para llegar al tiempo final. Después podríamos o no graficar la trayectoria dependiendo del parámetro showPlot. El oscilador armónico simple viene descrito por estas dos ecuaciones, y tenemos 3 parámetros k, b y beta. Después calculamos x prima (xPrime) basándonos en estas dos ecuaciones evaluada en xCurrent y regresamos xPrime. Siempre es buena idea, cuando escribes software revisar en papel el programa. Eso significa hacer la primera iteración a mano y corroborar que el software arroja lo mismo. Usamos Euler hacia adelante para resolver el oscilador armónico simple para un paso usando un tamaño de paso 0.1 empezando en [-1, -2] y si hacemos eso vemos que obtenemos [-1.2, -1.6]. Que es precisamente lo que obtuvimos a mano. Así que yo diría que nuestro software funciona bien. El primer problema es generar una trayectoria por 0.5 segundos con k = 2, m = 0.6, g = 0 y beta = 0 desde la condición inicial [-1, -2], y ver que obtenemos. Así que empezando en [-1,-2], usando un paso de tiempo 0.1 y yendo al tiempo 0.5, sin graficar la trayectoria, obtene- mos que el último punto de la trayectoria que es la trayectoria en el tiempo 0.5 con este solucionador es [-1.528, 0.6246] Esa es la respuesta a la pregunta 1 a) . Para la pregunta 1b) queremos dejar todos los parámetros igual y usar la misma condición inicial. Queremos generar una trayectoria de 200 puntos en lugar de una de 5 puntos. Voy a generar esta trayectoria usando un paso de tiempo de 0.1 y también con uno de 0.11. Si hacemos esto obtenemos el siguiente gráfico. En este gráfico la curva azul es generada con un paso de 0.1 y la roja es generada con un paso de 0.11. Como se puede ver y como esperábamos de la lectura la roja traza la espiral hacia afuera más rápido. Es decir, si das un paso de tiempo más grande llegarás más lejos en la trayectoria, en este caso irás mas lejos en la espiral. Mira la lectura para una muy buena visualización de esto. Del gráfico podemos ver que al usar 𐤃t = 0.11 la espiral es mas rápida. La pregunta 2 indica implementar Euler hafcia atrás, este también se llama Euler implícito porque es un solucionador implícito. Mi implementación es una implementación en MATLAB, que toma exactamente las mismas entradas que Euler hacia adelante: una condición inicial un tamaño de tiempo, un tiempo final y este parámetro para graficar. Mi código para el Euler hacia atrás es idéntico al de Euler hacia adelante excepto por este paso clave. Recuerda en un solucionador implícito aproximas el siguiente paso, y usas eso como tu actual