Funciones > Resolución y optimización > Solvers de ecuaciones diferenciales > Solvers de EDO
  
Solvers de EDO
Cada una de las funciones siguientes devuelve una matriz de resolución (intvls + 1) × (n + 1), donde n es el número de desconocidos. La primera columna de la matriz contiene los valores de x con los que se evalúan las soluciones. Estos valores son números equidistantes comprendidos (intvls + 1) entre x1 y x2. El resto de las columnas contienen los valores de las soluciones y0y1, ..., yn-1 correspondientes a los valores de x en la primera columna.
Para los solvers rkfixed, RkAdapt, Bulstoer, Stiffb y Stiffr, se puede especificar una tolerancia escalar para la solución al definir la variable TOL antes de indicar el solver. Por ejemplo, se puede definir la tolerancia para todas las variables en 10-6:
TOL:= 10-6
TOL no afecta a la tolerancia de los solvers Adams, BDF o Radau. En estos solvers, debe utilizar el argumento opcional tol para especificar las tolerancias.
Es posible que desee utilizar bloques de resolución de EDO para simplificar la entrada de las ecuaciones y condiciones iniciales.
Solvers para sistemas no Stiff
Adams(init, x1, x2, intvls, D, [tol]): utiliza el método de Adams.
rkfixed(init, x1, x2, intvls, D): utiliza el método de Runge-Kutta de paso fijo de cuarto orden.
Rkadapt(init, x1, x2, intvls, D): utiliza el método de Runge-Kutta de cuarto orden con pasos de tamaño variable.
Bulstoer(init, x1, x2, intvls, D): utiliza el método de Bulirsch-Stoer, que es un poco más preciso que el método de Runge-Kutta, pero requiere un sistema que varíe sin problemas.
Solvers para sistemas Stiff
Utilice estas funciones para resolver problemas de EDO stiff o algebraicos.
BDF(init, x1, x2, intvls, D, [J], [tol]): utiliza métodos de fórmula de diferenciación hacia atrás. Se puede utilizar cualquiera de los argumentos opcionales J o tol, y omitir el otro.
Radau(init, x1, x2, intvls, D, [J], [M], [tol]): utiliza el método Radau5. Se puede utilizar cualquier combinación de los argumentos opcionales J, M y tol, y omitir las opciones que no desee utilizar.
Stiffb(init, x1, x2, intvls, D, AJ): utiliza el método de Bulirsch-Stoer.
Stiffr(init, x1, x2, intvls, D, AJ): utiliza el método de Rosenbrock.
Solver Híbrido
AdamsBDF(init, x1, x2, intvls, D, [J], [tol]): determina si un sistema es stiff o no y llama a Adams o BDF según corresponda. Se puede utilizar cualquiera de los argumentos opcionales J o tol, y omitir el otro.
Argumentos
init es un vector de n valores iniciales reales, donde n es el número de desconocidos, o un solo valor inicial escalar, en el caso de una sola EDO.
x1 y x2 son puntos finales reales y escalares del intervalo en el que se evaluará la solución de EDO. Los valores iniciales de init son los valores de las funciones EDO evaluadas en x1.
intvls es el número entero de intervalos de discretización utilizados para interpolar la función de resolución. El número de puntos de resolución es el número de intervalos + 1.
D es una función de vector de forma D(x,y) que indica el lado derecho del sistema.
tol (opcional) es un valor real o un vector de valores reales que especifica la tolerancia de las variables independientes del sistema. La tolerancia es la precisión necesaria de la variable de una solución.
Debe definir tol para que sea igual o menor que 10-5. Según la escala del problema y el paso relativo que se utilice, es posible que necesite reducir el valor de TOL para obtener soluciones apropiadas. Cuanto menor sea el valor de tol, más pasos ejecutará el algoritmo solver para conseguir la precisión necesaria.
Si va a resolver un sistema de ecuaciones y define tol como escalar, se indica la misma tolerancia para todas las variables del sistema. Si define tol como vector, cuya longitud es igual que el número de variables del sistema, se indica la tolerancia individual de cada una de las variables.
J (opcional) es una función con la forma J(x, y) que devuelve la matriz jacobiana: la matriz de derivadas parciales de las funciones en D con respecto a y0y1, ... yn−1.
M (opcional) es una matriz real que representa cualquier acoplamiento entre las variables con la forma M · dy/dt = f(t, y).
AJ es una función de la forma AJ(x, y) que devuelve la jacobiana aumentada, cuya primera columna contiene las derivadas parciales, con respecto a x, de las funciones del lado derecho del sistema. Las demás columnas son las columnas de la J jacobiana, que contiene las derivadas parciales con respecto a y0y1, ... yn−1.
Las funciones D, J y AJ se proporcionan al solver sin sus argumentos y las funciones yn(x) se especifican en D, J y AJ sin su argumento.
El segundo argumento de D, J y AJ debe ser con subíndice como un vector, aunque solo haya una entrada.
Información adicional
Las funciones Radau y Rkadapt utilizan tamaños de paso no uniformes internamente cuando resuelven la ecuación diferencial, lo que añade más pasos en las regiones de mayor variación de la solución, pero devuelven la solución en el número de puntos equidistantes que se haya especificado en intvls.
Una ventaja de utilizar Radau es que no es necesario realizar ninguna entrada jacobiana, aunque J esté disponible, su uso tiende a aumentar la precisión.