Como espero que entiendan hasta ahora los solucionadores de ODEs son herramientas poderosas e importantes. Especialmente en el estudio de sistemas caóticos, donde el papel y lápiz no te darán la solución. Pero que también cometen errores, y que esos errores son proporcionales a el tamaño de paso y la forma de la curva. En Euler hacia adelante, el término de error hacía evidentes esos efectos. Ese error es proporcional al cuadrado del tamaño de paso y la segunda derivada de la función. Si la forma es lineal, Euler hacia adelante te dará una respuesta perfecta sin importar el tamaño de paso. Puedes pensar esto en varias formas, la primera derivada es una aproximación perfecta de esta curva. Otra forma de pensarlo es que todos los demás términos en la serie de Taylor así como este término, son cero para un sistema lineal. Si la curva no es lineal, tanto el tamaño de paso como la curvatura importan Si la función es algo curva, pero tomas un tamaño de paso grande, puede ser malo. Si la función es muy curveada, entonces incluso un tamaño de paso pequeño podría no salvarte. Estos problemas no son únicos para Euler hacia adelante, los otros solucionadores tienen todos problemas similares. La forma exacta del error difiere en cada uno, pero el tamaño de paso y la geometría de la curva afectan a todos. Pero esos dos factores: paso de tiempo y geometría, no son la única causa de error en los solucionadores de EDOs, también hay efectos computacionales. Las computadoras usan aritmética de punto flotante. Si tienes una computadora de 32 bits, eso significa que cada registro de memoria en la computadora tiene 32 bits. Y si almacenas un número por registro eso significa que tienes 2^32 posibles valores numéricos que puedes almacenar. Supón que quieras almacenar números en un rango de -1,000,000 a 1,000,000 Una forma muy sencilla de hacerlo con 32 bits es dividir ese rango en 2^32 espacios 2^32 es... Imagina que hacemos eso. Cada uno de esos espacios, los cuales no dibujaré todos porque me tomaría mucho tiempo, tienen un ancho de 2,000,000/2^32 que es 0.00047 de ancho. Lo que eso significa es que todos los números en este rango son almacenados como el mismo patrón binario de 32 bits de largo. Es como tener una calculadora de 3 dígitos. Todo lo que hay de 1.30000 a 1.30049 sería redondeado a 1.300 en una calculadora con 3 dígitos. Este tamaño de caja aquí es llamado el épsilon de la máquina, y como puedes imaginar, si haces aritmética con números que son comparables, o peor más pequeños que este tamaño de caja, los errores en tus cálculos van a ser grandes. Imagina por ejemplo restar 1.3000 de 1.3001 en esta calculadora. Aún peor, imagina poner ese resultado en el denominador de un cálculo. Ahora, este sistema simplificado que describí, el cual divide en partes iguales el rango, no es como funciona realmente la aritmética de punto flotante. No necesitas 10 decimales cuando trabajas con 900,047, pero si necesitas muchos decimales cuando trabajas con un número muy pequeño. Por estas razones, los sistemas de aritmética reales en la computadora usan una especie de notación científica con bases, exponentes y bits de signo para cada una de esas cantidades. Eso permite que esos sistemas de aritmética almacenen números grandes con poca precisión y números pequeños con mucha precisión. Y las computadoras ofrecen un rango de tipos de dato distintos tal vez hayas oído sobre los números de doble precisión. Estos ocupan el doble de memoria, y brindan un mayor rango, y mejor precisión cerca del cero. Ahora, ¿Cómo es que todo ello afecta a las soluciones de las ecuaciones diferenciales ordinarias? Porque se relaciona con todos esos errores de los que hablamos. Paso de tiempo, geometría de la curva y el método del solucionador no son las únicas cosas que afectan al error, también el sistema aritmético de la computadora. Aquí hay algunas imágenes que muestran todos esos efectos. Primero el paso de tiempo, este escaneo es un poco malo, es de un artículo de Lorenz llamado Caos Computacional, y lo que te muestra es 3 imágenes del mismo sistema dinámico, resuelto usando 3 pasos de tiempo distintos. Y como puedes ver los 3 pasos de tiempo dan resultados sumamente distintos para el mismo sistema. En efecto, el paso de tiempo ha causado una bifurcación en la dinámica. En la imagen superior la dinámica se ve bastante periódica pero aquí, son bastantes diferentes y hay definitivamente un cambio topológico entre estas imágenes. Y eso es una bifurcación, de nuevo, inducida por cambiar el paso de tiempo del solucionador. Esta es una imagen de una tesis de doctorado que supervisé, de la Dra. Natalie Ross. Y el sistema en cuestión es lo que se conoce como calle de vórtices de Von Kármán, y son varios vórtices dos columnas y lo que se supone que hacen es moverse hacia arriba en la imagen y vibrar hacia un lado y otro. Las dos imágenes aquí se generaron usando el mismo solucionador, las mismas ecuaciones diferenciales, la misma computadora, el mismo paso de tiempo, pero la de la izquierda es aritmética de precisión simple, y la de la derecha es aritmética de doble precisión. Y la de la derecha es más fiel a lo que el sistema realmente debe hacer. Y ese es generalmente el caso, si usas mejor aritmética los errores son menores y los resultados son más precisos. Esta es una serie maravillosa, es la integración de las ecuaciones que modelan los planetas del sistema solar exterior. Puedes ver al sol en el centro, y luego Jupiter, Saturno, Urano, Neptuno y Plutón a un ángulo. Este es un solucionador muy bueno, es un solucionador simpléctico, así que preserva la energía, como debería pasar con las órbitas de los planetas. Por cierto, los planetas interiores como nosotros se han dejado fuera porque somos pequeños y no importamos en la evolución de planetas del sistema exterior. Si usas un solucionador menos bueno, los errores de ese solucionador causan que los planetas oscilen. Si usas uno incluso peor Jupiter es expulsado. Ahora, todos sabemos que Jupitar no será expulsado, así que nos reimos pero este es lo que puede pasar en sistemas solares cuando una estrella pasa cerca, así que esto si puede pasar en este tipo de sistema dinámico, pero está ocurriendo aquí no porque es físico, sino por el solucionador. Eso es un poco aterrador, Es como si el telescopio Hubble convirtiera cuasares a nébulas. Ambas son cosas que esperarias ver en el comportamiento examinado, pero tu instrumento de observación está mutando una en la otra, eso es lo que hace la dinámica numérica tan aterradora. Esas dinámicas numéricas que pueden causar bifurcaciones como viste en el artículo de Lorenz, pueden tener resultados que se ven como sistemas dinámicos reales. Y como has visto en las últimas unidades, esas afecciones numéricas vienen de los algoritmos, el paso de tiempo, la aritmética, también provienen del sistema dinámico. Así que, lo que necesitas pensar como practicante, cuando obtienes un resul- tado, no sabes si está correcto o no. ¿Qué debes hacer para saber si deberías creer en él, o si el resultado incluye dinámicas que vienen de cálculos y no del sistema real? Si los algoritmos, la aritmética y el paso de tiempo, pudieran estar causándolo cámbialos, cambia el paso de tiempo y ve si cambia tu resultado. Si no lo cambia cree en el resultado más, pero nunca completamente, porque siempre podría ser un poco diferente, si lo cambias más. Lo que suelo hacer es reducir el paso de tiempo hasta que la dinámica deje de cambiar, y eso incrementa mi creencia de que mis resultados son correctos. Puedes usar distintos solucionadores, usa 4, 5 o 6 otros, todos están ya incluidos en MATLAB, solo úsalos en el problema y ve si los resultados cambian, si los resultados no cambian cree un poco más en ellos. Siempre es algo bueno cambiar de precisión aritmética simple a doble y ver si los resultados cambian. Nunca puedes saber que tus resultados son perfectos, solo puedes incrementar tu creencia de que son correctos. Y como mencioné antes, siempre necesitas tener cuidado con el épsilon de máquina: efectos de la aritmética porque si haces el paso de tiempo muy pequeño, entonces los efectos numéricos podrían afectarte, antes que el paso de tiempo se vuelva tan pequeño como para dar una buena solución. Algunos puntos generales a llevarnos nuevamente, los solucionadores nu- méricos no siempre están correctos Hay que tenerlo en mente, ya sea que tu lo hayas escrito o alguien más. Ahora entiendes las formas en que pueden equivocarse, lo que significa que ahora puedes hacer lo que los abogados llaman "debida diligencia". Tienes evidencia y necesitas investigarla, es tu responsabilidad indagarla antes de creerla, así que la debida diligencia es importante con solucionadores numéricos.