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.