22.1.08

1361.- Flame (3)

Volvamos al flame. Habíamos dicho que el cociente incremental [y(x+h)-y(x)]/h aproximaba bastante bien y'(x), y que el método de Euler para resolver ecuaciones diferenciales nos daba un error O(h), pensado como un O(h2 de Taylor multiplicado por 1/h, el número de pasos.

Si queremos resolver una ecuación tan simple como
y' = ay, y(0)=1

(tan simple que la sabemos resolver exactamente y da eax) reemplazamos la derivada por el cociente, llamamos xk=0 + kh, y tenemos
y(xk+1) = (1+ah)y(xk)

Si repetimos esto k veces hacia atrás, queda
y(xk+1) = (1+ah)k

porque y(x0)=y(0)=1. Les dejo que vean que esto converge a la exponencial y=eax cuando h tiende a cero...

* * *

El método -Euler me perdone- es malo. Ok., funcionó bien durante años, se lo utilizó como la base de métodos posteriores, y toda la teoría de diferencias finitas arranca ahí. La filosofía es simple, cambiar derivadas por diferenciales (o, como se lo presenta a veces, utilizar el polinomio de Taylor para desarrollar la función incógnita).

Lo malo, para nada obvio, es que la aproximación que hacemos es demasiado general: el método, la aproximación, la filosofía que mencionaba es la misma para cualquier ecuación diferencial. Y por eso el error es O(h): es lo óptimo que se puede conseguir si estamos aproximando la derivada de una función cualquiera.

En otras palabras, dada una ecuación diferencial específica, concreta, es posible que haya métodos mucho mejores que el de Euler -conservando su simplicidad- para esa ecuación. Por ejemplo, para la ecuación anterior, el siguiente:
y(xk+1)=ea(k+1)hy(xk)/eakh=eahy(xk)

es perfecto! coincide exactamente con la solución en los puntos de la grilla 0, ah, a2h,..., akh,...

* * *

Y esa es la 1ra característica de flame: no hay un método fijo, premoldeado para cualquier ecuación, sino que dependerá mucho de la ecuación que uno quiera resolver.

No hay comentarios: