Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Elija un solucionador de ODE

Ecuaciones diferenciales ordinarias

Un (ODE) contiene uno o más derivados de una variable dependiente, con respecto a una única variable independiente, que normalmente se conoce como tiempo.ordinary differential equationyt La notación utilizada aquí para representar derivados de con respecto a esyt y' para una primera derivada, y'' para una segunda derivada, y así sucesivamente. El de la ODE es igual al derivado de orden superior de que aparece en la ecuación.ordery

Por ejemplo, se trata de un ODE de segunda orden:

y''=9y

En un, el ODE se resuelve comenzando desde un estado inicial.initial value problem Utilizando la condición inicial, y0, así como un período de tiempo durante el cual se debe obtener la respuesta, (t0,tf), la solución se obtiene de forma iterativa. En cada paso, el solucionador aplica un algoritmo determinado a los resultados de los pasos anteriores. En el primer paso de este tipo, la condición inicial proporciona la información necesaria que permite que la integración continúe. El resultado final es que el solucionador de ODE devuelve un vector de pasos de tiempo t=[t0,t1,t2,...,tf] así como la solución correspondiente en cada paso y=[y0,y1,y2,...,yf].

Tipos de ODEs

Los solucionadores de ODE solucionan estos tipos de ODEs de primer orden:MATLAB®

  • ODEs explícitos del formulario y'=f(t,y).

  • Las odas implícitas linealmente de la forma M(t,y)y'=f(t,y)Dónde M(t,y) es una matriz de masas no singular. La matriz de masas puede ser dependiente del tiempo o del estado, o puede ser una matriz constante. Las ODEs implícitas linealmente implican combinaciones lineales de la primera derivada de, que están codificadas en la matriz de masas.y

    Los ODEs implícitos linealmente siempre se pueden transformar a una forma explícita, y'=M1(t,y)f(t,y). Sin embargo, la especificación de la matriz de masas directamente en el solucionador de ODE evita esta transformación, que es inconveniente y puede ser costoso computacionalmente.

  • Si algunos componentes de y' faltan, entonces las ecuaciones son llamadas, o DAEs, y el sistema de DAEs contiene algunos.differential algebraic equationsalgebraic variables Las variables algebraicas son variables dependientes cuyos derivados no aparecen en las ecuaciones. Un sistema de DAEs puede ser reescrito como un sistema equivalente de ODEs de primer orden mediante la toma de derivados de las ecuaciones para eliminar las variables algebraicas. El número de derivados necesarios para reescribir un DAE como un ODE se denomina índice diferencial. Los solucionadores pueden resolver DAEs index-1.ode15sode23t

  • ODEs totalmente implícitos de la forma f(t,y,y')=0. Los ODEs totalmente implícitos no se pueden reescribir de forma explícita y también pueden contener algunas variables algebraicas. El solucionador está diseñado para problemas totalmente implícitos, incluidos DAEs de índice 1.ode15i

Puede proporcionar información adicional al solucionador para algunos tipos de problemas mediante la función para crear una estructura de opciones.odeset

Los sistemas de ODEs

Puede especificar cualquier número de ecuaciones ODE acopladas para resolver, y en principio el número de ecuaciones solo está limitado por la memoria del equipo disponible. Si el sistema de ecuaciones tiene ecuaciones,n

(y'1y'2y'n)=(f1(t,y1,y2,...,yn)f2(t,y1,y2,...,yn)fn(t,y1,y2,...,yn)),

a continuación, la función que codifica las ecuaciones devuelve un vector con elementos, correspondientes a los valores paran y'1,y'2,,y'n. Por ejemplo, considere el sistema de dos ecuaciones

{y'1=y2y'2=y1y22.

Una función que codifica estas ecuaciones es

function dy = myODE(t,y) dy(1) = y(2); dy(2) = y(1)*y(2)-2;

ODEs de orden superior

Los solucionadores de ODE solo resuelven ecuaciones de primer orden.MATLAB Debe reescribir ODEs de orden superior como un sistema equivalente de ecuaciones de primer orden utilizando las sustituciones genéricas

y1=yy2=y'y3=y''yn=y(n1).

El resultado de estas sustituciones es un sistema de ecuaciones de primer ordenn

{y'1=y2y'2=y3y'n=f(t,y1,y2,...,yn).

Por ejemplo, considere el ODE de tercer orden

y'''y''y+1=0.

El uso de las sustituciones

y1=yy2=y'y3=y''

da como resultado el sistema de primer orden equivalente

{y'1=y2y'2=y3y'3=y1y31.

El código para este sistema de ecuaciones se

function dydt = f(t,y) dydt(1) = y(2); dydt(2) = y(3); dydt(3) = y(1)*y(3)-1;

ODEs complejos

Considere la ecuación de ODE compleja

y'=f(t,y),

Dónde y=y1+iy2. Para resolverlo, separe las partes reales e imaginarias en diferentes componentes de la solución, luego recombina los resultados al final. Conceptualmente, esto parece

yv=[Real(y)Imag(y)]fv=[Real(f(t,y))Imag(f(t,y))].

Por ejemplo, si el ODE es y'=yt+2i, puede representar la ecuación utilizando un archivo de función.

function f = complexf(t,y) % Define function that takes and returns complex values f = y.*t + 2*i; 

Entonces, el código para separar las partes reales e imaginarias es

function fv = imaginaryODE(t,yv) % Construct y from the real and imaginary components y = yv(1) + i*yv(2);              % Evaluate the function yp = complexf(t,y);               % Return real and imaginary in separate components fv = [real(yp); imag(yp)];      

Cuando se ejecuta un solucionador para obtener la solución, la condición inicial también se separa en partes reales e imaginarias para proporcionar una condición inicial para cada componente de la solución.y0

y0 = 1+i; yv0 = [real(y0); imag(y0)]; tspan = [0 2]; [t,yv] = ode45(@imaginaryODE, tspan, yv0); 

Una vez que obtenga la solución, combine los componentes reales e imaginarios juntos para obtener el resultado final.

y = yv(:,1) + i*yv(:,2);

Selección básica del solucionador

funciona bien con la mayoría de los problemas de ODE y generalmente debe ser la primera opción de solucionador.ode45 Sin embargo, y puede ser más eficiente que para problemas con requisitos de precisión más sueltas o más estrictos.ode23ode113ode45

Algunos problemas de ODE exhiben, o dificultad en la evaluación.stiffness La rigidez es un término que desafía una definición precisa, pero en general, la rigidez se produce cuando hay una diferencia en el escalado en algún lugar del problema. Por ejemplo, si una ODE tiene dos componentes de solución que varían en escalas de tiempo drásticamente diferentes, la ecuación podría ser rígida. Puede identificar un problema como rígido si los solucionadores no rígidos (por ejemplo) no pueden resolver el problema o son extremadamente lentos.ode45 Si observa que un solucionador no rígido es muy lento, intente usar un solucionador rígido como en su lugar.ode15s Cuando se utiliza un solucionador rígido, se puede mejorar la confiabilidad y la eficiencia mediante el suministro de la matriz jacobiana o su patrón de dispersión.

Esta tabla proporciona pautas generales sobre Cuándo usar cada uno de los diferentes solucionadores.

SolverTipo de problemaPrecisiónCuándo usar
ode45No rígidaMedio

La mayoría de las veces. debe ser el primer solucionador que intente.ode45

ode23Bajo

puede ser más eficiente que en problemas con tolerancias rudimentario, o en presencia de rigidez moderada.ode23ode45

ode113Baja a alta

puede ser más eficiente que en problemas con tolerancias de error estrictas, o cuando la función ODE es costosa de evaluar.ode113ode45

ode15sRígidoBaja a mediana

Intente cuando falle o sea ineficiente y sospeche que el problema es rígido.ode15sode45 También se utiliza al resolver ecuaciones algebraicas diferenciales (DAEs).ode15s

ode23sBajo

puede ser más eficaz que en los problemas con las tolerancias de error rudimentario.ode23sode15s Puede resolver algunos problemas rígidos para los que no es eficaz.ode15s

computa el jacobiano en cada paso, por lo que es beneficioso proporcionar la vía jacobiana para maximizar la eficiencia y la precisión.ode23sodeset

Si hay una matriz de masas, debe ser constante.

ode23tBajo

Utilice si el problema sólo es moderadamente rígido y necesita una solución sin amortiguación numérica.ode23t 

puede resolver ecuaciones algebraicas diferenciales (DAEs).ode23t

ode23tbBajo

Como, el solucionador podría ser más eficiente que en problemas con tolerancias de error bruta.ode23sode23tbode15s

ode15iTotalmente implícitaBajo

Se utiliza para problemas totalmente implícitos = y para ecuaciones algebraicas diferenciales (DAEs) del índice 1.ode15if(t,y,y’)0

Para obtener más información y recomendaciones sobre Cuándo usar cada solucionador, consulte.[5]

Resumen de archivos y ejemplos de ODE

Hay varios archivos de ejemplo disponibles que sirven como excelentes puntos de partida para la mayoría de los problemas de ODE. Para ejecutar la aplicación, que le permite explorar y ejecutar fácilmente ejemplos, escribaDifferential Equations Examples

odeexamples

Para abrir un archivo de ejemplo individual para editarlo, escriba

edit exampleFileName.m

Para ejecutar un ejemplo, escriba

exampleFileName

Esta tabla contiene una lista de los archivos de ejemplo de ODE y DAE disponibles, así como los solucionadores y las opciones que utilizan. Los vínculos se incluyen para el subconjunto de ejemplos que también se publican directamente en la documentación.

Ejemplo archivoSolver usadoOpciones especificadasDescripciónEnlace de documentación
amp1daeode23t
  • 'Mass'

DAE rígido — circuito eléctrico con matriz de masas constante, singular

Solve Stiff Differential Algebraic Equation
ballodeode23
  • 'Events'

  • 'OutputFcn'

  • 'OutputSel'

  • 'Refine'

  • 'InitialStep'

  • 'MaxStep'

Ubicación del evento simple: pelota que rebota

Ubicación del evento ODE
batonodeode45
  • 'Mass'

ODE con matriz de masas dependiente del tiempo y del estado — movimiento de una batuta

brussodeode15s
  • 'JPattern'

  • 'Vectorized'

Problema grande y rígido: difusión en una reacción química (el Brusselator)

Resuelve los ODEs rígidos
burgersodeode15s
  • 'Mass'

  • 'MStateDependence'

  • 'JPattern'

  • 'MvPattern'

  • 'RelTol'

  • 'AbsTol'

ODE con matriz de masas fuertemente dependiente del estado: la ecuación de las hamburguesas se resolvió usando una técnica de malla móvil

fem1odeode15s
  • 'Mass'

  • 'MStateDependence'

  • 'Jacobian'

Problema rígido con una matriz de masas dependiente del tiempo: método de elementos finitos

fem2odeode23s
  • 'Mass'

Problema rígido con una matriz de masas constante: método de elementos finitos

hb1odeode15s

Problema de ODE rígido resuelto en un intervalo muy largo: la reacción química de Robertson

hb1daeode15s
  • 'Mass'

  • 'RelTol'

  • 'AbsTol'

  • 'Vectorized'

DAE rígido y linealmente implícito de una ley de conservación: la reacción química de Robertson

Solve Robertson Problem as Semi-Explicit Differential Algebraic Equations (DAEs)
ihb1daeode15i
  • 'RelTol'

  • 'AbsTol'

  • 'Jacobian'

DAE rígido y totalmente implícito: la reacción química de Robertson

Solve Robertson Problem as Implicit Differential Algebraic Equations (DAEs)
iburgersodeode15i
  • 'RelTol'

  • 'AbsTol'

  • 'Jacobian'

  • 'JPattern'

Sistema ODE implícito — la ecuación de las hamburguesas

kneeodeode15s
  • 'NonNegative'

El "problema de rodilla" con restricciones de no negatividad

Solución ODE no negativo
orbitodeode45
  • 'RelTol'

  • 'AbsTol'

  • 'Events'

  • 'OutputFcn'

Ubicación avanzada del evento — problema del cuerpo restringido tres

Ubicación del evento ODE
rigidodeode45

Problema no rígido: las ecuaciones de Euler de un cuerpo rígido sin fuerzas externas

Resuelve ODEs no rígidos
vdpodeode15s
  • 'Jacobian'

Ecuación de van der Pol parametrizable (rígida para grandes)μ

Resuelve los ODEs rígidos

Referencias

[1] Shampine, L. F. and M. K. Gordon, Computer Solution of Ordinary Differential Equations: the Initial Value Problem, W. H. Freeman, San Francisco, 1975.

[2] Forsythe, G., M. Malcolm, and C. Moler, Computer Methods for Mathematical Computations, Prentice-Hall, New Jersey, 1977.

[3] Kahaner, D., C. Moler, and S. Nash, Numerical Methods and Software, Prentice-Hall, New Jersey, 1989.

[4] Shampine, L. F., Numerical Solution of Ordinary Differential Equations, Chapman & Hall, New York, 1994.

[5] Shampine, L. F. and M. W. Reichelt, “The MATLAB ODE Suite,” SIAM Journal on Scientific Computing, Vol. 18, 1997, pp. 1–22.

[6] Shampine, L. F., Gladwell, I. and S. Thompson, Solving ODEs with MATLAB, Cambridge University Press, Cambridge UK, 2003.

Consulte también

|

Temas relacionados

Sitios web externos