Você está na página 1de 40

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE INGENIERÍA QUÍMICA


CARRERA DE INGENIERÍA QUÍMICA

SIMULACION
DE PROCESOS INDUSTRIALES II
(701)

TALLER # 1
SEGUNDO PARCIAL

NOMBRE DEL ESTUDIANTE


DARWIN ALEXANDER LINO DELVALLE.

NOMBRE DEL PROFESOR


ING. GONZALO VILLA

CURSO: 7-2
FECHA DE ENTREGA:
JUEVES 10 DE ENERO DEL 2019

CII. PERIODO 2018-2019

Ode23
La function Matlab ode23 es una implementación de un método Runge-Kutta de orden (2,3). No es
necesario poner el mismo tiempo debido a que la función ode23lo va reduciendo sobre marcha si es
necesario. Resuelva ecuaciones diferenciales no rígidas: el método de orden bajo colapsa todo en la
página
Sintaxis
[t, y] = ode23 (odefun, tspan, y0)
[t, y] = ode23 (odefun, tspan, y0, opciones)
[t, y, te, ye, ie] = ode23 (odefun, tspan, y0, opciones)
sol = ode23 (___)

Descripción
[t, y] = ode23 (odefun, tspan, y0), donde tspan = [t0 tf], integra el sistema de ecuaciones diferenciales
y '= f (t, y) de t0 a tf con las condiciones iniciales y0. Cada fila en la matriz de soluciones y
corresponde a un valor devuelto en el vector de columna t. Todos los solucionadores de MATLAB®
ODE pueden resolver sistemas de ecuaciones de la forma y '= f (t, y), o problemas que involucran
una matriz de masa, M (t, y) y' = f (t, y). Todos los solucionadores utilizan sintaxis similares. El
solucionador de ode23s solo puede resolver problemas con una matriz de masa si la matriz de masa
es constante. ode15s y ode23t pueden resolver problemas con una matriz de masa que es singular,
conocida como ecuaciones diferenciales-algebraicas (DAE). Especifique la matriz de masa
utilizando la opción Masa de odeset.
[t, y] = ode23 (odefun, tspan, y0, opciones) también usa la configuración de integración definida
por opciones, que es un argumento creado usando la función odeset. Por ejemplo, use las opciones
AbsTol y RelTol para especificar tolerancias de error absolutas y relativas, o la opción de masa para
proporcionar una matriz de masa. [t, y, te, ye, es decir] = ode23 (odefun, tspan, y0, opciones) además
encuentra dónde las funciones de (t, y), llamadas funciones de evento, son cero. En la salida, te es
la hora del evento, ye es la solución en el momento del evento, y es el índice del evento disparado.
Para cada función de evento, especifique si la integración debe terminar en un cero y si la dirección
del cruce por cero es importante. Haga esto configurando la propiedad 'Eventos' en una función,
como myEventFcn o @myEventFcn, y creando una función correspondiente: [valor, terminal,
dirección] = myEventFcn (t, y). Para obtener más información, consulte Ubicación de eventos ODE.
sol = ode23 (___) devuelve una estructura que puede usar con deval para evaluar la solución en
cualquier punto del intervalo [t0 tf]. Puede usar cualquiera de las combinaciones de argumentos de
entrada en sintaxis anteriores
Ejemplos
Desplegar todo
ODE con componente de solución única
Las ODE simples que tienen un solo componente de solución se pueden especificar como una
función anónima en la llamada al solucionador. La función anónima debe aceptar dos entradas (t,
y) incluso si una de las entradas no se utiliza.
Resuelve la ODE
Use un intervalo de tiempo de [0,5] y la
condición inicial y0 = 0.
tspan = [0 5];
y0 = 0;
[t, y] = ode23 (@ (t, y) 2 * t, tspan, y0);

Trazar la solución.
plot(t, y, '- o')
Resolver ecuación no rígida
La ecuación de van der Pol es una EDO de segundo orden.

Donde es un parámetro escalar. Reescriba esta ecuación como un sistema de EDO de primer
orden haciendo la sustitución. El sistema resultante de EDO de primer orden es

El archivo de funciones vdp1.m representa la ecuación de van der Pol usando. Las variables y son
las entradas y (1) y y (2) de un vector de dos elementos, dydt.

función dydt = vdp1 (t, y)


% VDP1 Evalúe las EDOs de van der Pol para mu = 1
% Véase también ODE113, ODE23, ODE45.
% Jacek Kierzenka y Lawrence F. Shampine
% Copyright 1984-2014 The MathWorks, Inc.
dydt = [y (2); (1-y (1) ^ 2) * y (2) -y (1)];

Resuelva la EDO utilizando la función ode23 en el intervalo de tiempo [0 20] con valores iniciales
[2 0]. La salida resultante es un vector de columna de puntos de tiempo t y una matriz de solución
y. Cada fila en y corresponde a un tiempo devuelto en la fila correspondiente de t. La primera
columna de y corresponde a, y la segunda columna a.

Trazar las soluciones a favor y1 en y2 contra de t.


Ode45
Se basa en una fórmula explícita del método de Runge-Kutta (4,5), ealizado por Dormand-Prince.
Es un método de un solo paso, esto es, para determinar x(ti+1), es necesario conocer solamente la
solución en el tiempo inmediatamente anterior, x(ti).
Consideraciones sobre los algoritmos utilizados.
Ode45 (método explícito de Runge-Kutta) es eficiente, pero se vuelve inestable con sistemas stiff.
Este hecho se manifestará con el solver tratando de adoptar pasos temporales cada vez más cortos
para compensar. Consecuentemente, al algoritmo le tomará mucho tiempo alcanzar la solución o el
paso temporal se reducirá al punto donde la precisión de la máquina provoque la falla del algoritmo.
Su sintaxis es la siguiente

[t,x]=ode45(odefun,tspan,x0, options, params)

 x es una matriz donde cada columna corresponde a las variables dependientes y t es


el vector tiempo.
 odefun es el nombre de la función,
 tspan especifica el intervalo de tiempo, un vector de dos números tspan=[ti,tf],
tiempo inicial y final. Para obtener valores de las variables dependientes en instantes
concretos t0, t1, t2, ... tn. se escribe tspan=[t0,t1....tn];
 x0 es un vector que contiene los valores iniciales.
 options es una estructura que se crea con la función odeset, que explicaremos al final
de esta página ya que es un asunto bastante complicado.
 params son parámetros que queremos pasar a la función odefun

En la mayor parte de los ejemplos, utilizaremos los tres primeros parámetros: llamaremos a la
función ode45 y le pasaremos la función odefunc, los instantes inicial y final en el vector tspany las
condiciones iniciales en el vector x0.
Ecuación diferencial de primer orden

Elaboramos un script para integrar la ecuación diferencial de primer orden que describe la carga de
un condensador.

dqdt=VεR−qRCdqdt=VεR−qRC

V0=10;

R=2; %resistencia

C=0.8; %capacidad ;

tf=10; %tiempo final

f=@(t,x) V0/R-x/(R*C);

x0=0; %situación inicial

[t,x]=ode45(f,[0,tf],x0);

plot(t,x)

grid on

xlabel('t')

ylabel('q');

title('Carga del condensador')

Sistema de dos ecuaciones diferenciales de segundo orden

En este caso tenemos un sistema de cuatro ecuaciones difrenciales de primer orden

dxdt=vxdxdt=vx dvxdt=f(t,x,vx,y,vy)dvxdt=f(t,x,vx,y,vy)
dydt=vydydt=vy dvydt=g(t,x,vx,y,vy)dvydt=g(t,x,vx,y,vy)
En este sistema x(1) representará los sucesivos valores de la variable x y x(2) representará a la
variable vx, x(3) a la variable y y x(4) a la variable vy. El mismo criterio se empleará para determinar
el vector x0 de las condiciones iniciales.

Como ejemplo, estudiamos el movimiento de un planeta alrededor del Sol o de un satélite artificial
alrededor de la Tierra.

Elaboramos un script para resolver el sistema de dos ecuaciones de segundo grado que describe el
movimiento de un cuerpo celeste.
%posición inicial x, velocidad x, posición y, velocidad y
x0=[1,0,0,6.27];
tf=1; %tiempo final

fg=@(t,x)[x(2);-4*pi*pi*x(1)/(sqrt(x(1)*x(1)+x(3)*x(3)))^3; x(4);
-4*pi*pi*x(3)/(sqrt(x(1)*x(1)+x(3)*x(3)))^3];
[t,x]=ode45(fg,[0,tf],x0);
plot(x(:,1),x(:,3))
grid on
xlabel('x')
ylabel('y');
title('Orbita de un planeta')

Representamos la trayectoria, es decir, los puntos de abscisas x(:,1) que guardan los valores xy las
ordenadas x(:,3) que guardan los valores y, en función del tiempo t, se escribe plot(x(:,1),x(:,3)).
Ode113
Resolver ecuaciones diferenciales no rígidas - método de orden variable colapsar todo en la página
Sintaxis
[t,y] = ode113(odefun,tspan,y0)
[t,y] = ode113(odefun,tspan,y0,options)
[t,y,te,ye,ie] = ode113(odefun,tspan,y0,options)
sol = ode113(___)
Descripción
ejemplo
[t,y] = ode113(odefun,tspan,y0), donde tspan = [t0 tf], integra el sistema de ecuaciones
diferenciales de a con las condiciones iniciales . Cada fila de la matriz de soluciones corresponde a
un valor devuelto en el vector de columna .y ' = f (t , y)t0tfy0yt
Todos MATLAB ® solucionadores de ODE pueden resolver sistemas de ecuaciones de la forma , o
problemas que implican una matriz de masa, . Todos los solucionadores utilizan sintaxis
similares. El solucionador solo puede resolver problemas con una matriz de masa si la matriz de
masa es constante. y puede resolver problemas con una matriz de masa que es singular, conocida
como ecuaciones algebraicas diferenciales (DAE). Especifique la matriz de masa utilizando
la opción de .y ' = f (t , y)M (t , y) y ' = f (t , y)ode23sode15sode23tMassodeset

Ejemplo
[t,y] = ode113(odefun,tspan,y0,options)También utiliza la configuración de integración definida
por options, que es un argumento creado con la odesetfunción. Por ejemplo, use
las opciones AbsToly RelTolpara especificar tolerancias de error absolutas y relativas, o
la Massopción para proporcionar una matriz de masa.
[t,y,te,ye,ie] = ode113(odefun,tspan,y0,options)además, encuentra donde las funciones de ( t , y ) ,
llamadas funciones de evento, son cero. En la salida, tees el momento del evento, yees la solución
en el momento del evento y iees el índice del evento desencadenado.
Para cada función de evento, especifique si la integración debe terminar en un cero y si la dirección
del cruce por cero es importante. Para ello, establezca la 'Events'propiedad a una función, tales
como myEventFcno @myEventFcn, y la creación de una función correspondiente:
[ value, isterminal, direction] = myEventFcn( t, y). Para obtener más información,
consulte Ubicación de eventos ODE .
sol = ode113(___)devuelve una estructura que puede usar devalpara evaluar la solución en cualquier
punto del intervalo [t0 tf]. Puede usar cualquiera de las combinaciones de argumentos de entrada en
sintaxis anteriores.
Ejemplos
desplegar todo
ODE con componente de solución única
Prueba este ejemplo
Las ODE simples que tienen un solo componente de solución se pueden especificar como una
función anónima en la llamada al solucionador. La función anónima debe aceptar dos
entradas, (t,y)incluso si una de las entradas no se utiliza.
Resuelve la ODE

Utilice un intervalo de tiempo de [0,5]y la condición inicial y0 = 0.


tspan = [0 5];
y0 = 0;
[t, y] = ode113 (@ (t, y) 2 * t, tspan, y0);
Trazar la solución.
trama (t, y, '-o' )

Resolver ecuación no rígida


Pruébalo en MATLAB
La ecuación de van der Pol es una EDO de segundo orden.

donde es un parámetro escalar. Reescriba esta ecuación como un sistema de EDO de primer
orden haciendo la sustitución . El sistema resultante de EDO de primer orden es

El archivo de funciones vdp1.mrepresenta la ecuación de van der Pol usando . Las variables
y son las entradas y(1)y y(2)de un vector de dos elementos, dydt.
función dydt = VDP1 (t, y)
% VDP1 evaluar los ODEs van der Pol para mu = 1
% Ver también ODE113, ode23, ode45
% Jacek Kierzenka y Lawrence F. Shampine
% Copyright 1984-2014 The MathWorks, Inc.
dydt = [y (2); (1-y (1) ^ 2) * y (2) -y (1)];

Resuelva la EDO usando la ode113función en el intervalo de tiempo [0 20]con valores iniciales [2


0]. La salida resultante es un vector de columna de puntos de tiempo ty una matriz de
soluciones y. Cada fila en ycorresponde a un tiempo devuelto en la fila correspondiente de t. La
primera columna de ycorresponde a , y la segunda columna a .
[t, y] = ode113 (@ vdp1, [0 20], [2; 0]);
Trazar las soluciones a favor y en contra t.
gráfico (t, y (:, 1), '-o' , t, y (:, 2), '-o' )
título ( 'Solución de la ecuación de van der Pol (\ mu = 1) con ODE113' );
xlabel ( 'Tiempo t' );
ylabel ( 'Solución y' );
leyenda ( 'y_1' , 'y_2' )
Ode15s.
Ode15s debería utilizarse sólo para problemas stiff. Debido a que es un esquema implícito,
tendrá que resolver conjuntos de ecuaciones (posiblemente grande) en cada paso
temporal.
ode15s

Resolver ecuaciones diferenciales rígidas y DAE - método de orden variable


colapsar todo en la página
Sintaxis
[t,y] = ode15s(odefun,tspan,y0)
[t,y] = ode15s(odefun,tspan,y0,options)
[t,y,te,ye,ie] = ode15s(odefun,tspan,y0,options)
sol = ode15s(___)
Descripción
ejemplo
[t,y] = ode15s(odefun,tspan,y0), donde tspan = [t0 tf], integra el sistema de ecuaciones
diferenciales de a con las condiciones iniciales . Cada fila de la matriz de soluciones corresponde a
un valor devuelto en el vector de columna .t0tfy0yt
Todos MATLAB ® solucionadores de ODE pueden resolver sistemas de ecuaciones de la forma , o
problemas que implican una matriz de masa, . Todos los solucionadores utilizan sintaxis
similares. El solucionador solo puede resolver problemas con una matriz de masa si la matriz de
masa es constante. y puede resolver problemas con una matriz de masa que es singular, conocida
como ecuaciones algebraicas diferenciales (DAE). Especifique la matriz de masa utilizando
la opción de .ode23sode15sode23tMassodeset
ejemplo
[t,y] = ode15s(odefun,tspan,y0,options)También utiliza la configuración de integración definida
por options, que es un argumento creado con la odesetfunción. Por ejemplo, use
las opciones AbsToly RelTolpara especificar tolerancias de error absolutas y relativas, o
la Massopción para proporcionar una matriz de masa.
[t,y,te,ye,ie] = ode15s(odefun,tspan,y0,options)además, encuentra donde las funciones de ( t , y ) ,
llamadas funciones de evento, son cero. En la salida, tees el momento del evento, yees la solución
en el momento del evento y iees el índice del evento desencadenado.
Para cada función de evento, especifique si la integración debe terminar en un cero y si la dirección
del cruce por cero es importante. Para ello, establezca la 'Events'propiedad a una función, tales
como myEventFcno @myEventFcn, y la creación de una función correspondiente:
[ value, isterminal, direction] = myEventFcn( t, y). Para obtener más información,
consulte Ubicación de eventos ODE .
ejemplo
sol = ode15s(___)devuelve una estructura que puede usar devalpara evaluar la solución en cualquier
punto del intervalo [t0 tf]. Puede usar cualquiera de las combinaciones de argumentos de entrada en
sintaxis anteriores.
Ejemplos
desplegar todo
EDO con componente de solución única
Prueba este ejemplo
Las ODE simples que tienen un solo componente de solución se pueden especificar como una
función anónima en la llamada al solucionador. La función anónima debe aceptar dos
entradas, (t,y)incluso si una de las entradas no se utiliza.
Resuelve la ODE

Utilice un intervalo de tiempo de [0,2]y la condición inicial y0 = 1.


tspan = [0 2];
y0 = 1;
[t, y] = ode15s (@ (t, y) -10 * t, tspan, y0);
Trazar la solución.
trama (t, y, '-o' )

Resuelve la ODA Rígida


Pruébalo en MATLAB
Un ejemplo de un sistema rígido de ecuaciones son las ecuaciones de van der Pol en la oscilación
de relajación. El ciclo límite tiene regiones donde los componentes de la solución cambian
lentamente y el problema es bastante rígido, alternando con regiones de cambios muy marcados
donde no es rígido.
El sistema de ecuaciones es:

Las condiciones iniciales son y . La función se vdp1000envía con MATLAB® y


codifica las ecuaciones.
función dydt = vdp1000 (t, y)
% VDP1000 evaluar los ODEs van der Pol para mu = 1000.
%
% Ver también ODE15S, ODE23S, ODE23T, ODE23TB.

% Jacek Kierzenka y Lawrence F. Shampine


% Copyright 1984-2014 The MathWorks, Inc.

dydt = [y (2); 1000 * (1-y (1) ^ 2) * y (2) -y (1)];

Resolver este sistema utilizando ode45las tolerancias de error relativas y absolutas predeterminadas
( 1e-3y 1e-6, respectivamente) es extremadamente lento, y requiere varios minutos para resolver y
trazar la solución. ode45Requiere millones de pasos de tiempo para completar la integración, debido
a las áreas de rigidez en las que se esfuerza por cumplir las tolerancias.
Esta es una gráfica de la solución obtenida ode45, que toma mucho tiempo para computar. Observe
la enorme cantidad de pasos de tiempo necesarios para pasar a través de las áreas de rigidez.
Resuelva el sistema rígido utilizando el ode15ssolucionador y luego trace la primera columna de la
solución yen función de los puntos temporales t. El ode15ssolucionador pasa a través de áreas
rígidas con muchos menos pasos que ode45.
[t, y] = ode15s (@ vdp1000, [0 3000], [2 0]);
gráfico (t, y (:, 1), '-o' )
Pasar parámetros extra a la función ODE
Pruébalo en MATLAB
ode15ssolo funciona con funciones que usan dos argumentos de entrada, ty y. Sin embargo, puede
pasar parámetros adicionales definiéndolos fuera de la función y pasándolos cuando especifique el
identificador de la función.
Resuelve la ODE

Reescribiendo la ecuación como un sistema de primer orden.

odefcn.mrepresenta este sistema de ecuaciones como una función que acepta cuatro argumentos de
entrada: t, y, A, y B.
función dydt = odefcn (t, y, A, B)
dydt = ceros (2,1);
dydt (1) = y (2);
dydt (2) = (A / B) * t. * y (1);

Resuelve la EDO usando ode15s. Especifique el controlador de función de modo que pase los
valores predefinidos para Ay Ba odefcn.
A = 1;
B = 2;
tspan = [0 5];
y0 = [0 0.01];
[t, y] = ode15s (@ (t, y) odefcn (t, y, A, B), tspan, y0);
Trazar los resultados.
plot (t, y (:, 1), '-o' , t, y (:, 2), '-.' )

Comparar Stiff ODE Solvers


Prueba este ejemplo
El ode15ssolucionador de problemas es una buena primera opción para la mayoría de los problemas
rígidos. Sin embargo, los otros solucionadores rígidos pueden ser más eficientes para ciertos tipos
de problemas. Este ejemplo resuelve una ecuación de prueba rígida utilizando los cuatro
solucionadores ODE rígidos.
Considere la ecuación de prueba

La ecuación se vuelve cada vez más rígida a medida que aumenta la magnitud . Uso y
la condición inicial durante el intervalo de tiempo [0 0.5]. Con estos valores, el problema
es lo suficientemente rígido ode45y se ode23esfuerza por integrar la ecuación. Además,

utilice odesetpara pasar la constante jacobiana y activar la visualización de las


estadísticas del solucionador.
lambda = 1e9;
y0 = 1;
tspan = [0 0.5];
opts = odeset ( 'Jacobian' , -lambda, 'Stats' , 'on' );
Resolver la ecuación con ode15s, ode23s, ode23t, y ode23tb. Hacer subparcelas para la
comparación.
subparcela (2,2,1)
tic, ode15s (@ (t, y) -lambda * y, tspan, y0, opta), toc
104 pasos exitosos
1 intentos fallidos
212 evaluaciones de funciones
0 derivadas parciales
21 descomposiciones de LU
210 soluciones de sistemas lineales.
El tiempo transcurrido es de 4.276551 segundos.
título ( 'ode15s' )
subparcela (2,2,2)
tic, ode23s (@ (t, y) -lambda * y, tspan, y0, opta), toc
63 pasos exitosos
0 intentos fallidos
191 evaluaciones de funciones
0 derivadas parciales
63 descomposiciones de LU
189 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.265205 segundos.
título ( 'ode23s' )
subtrama (2,2,3)
tic, ode23t (@ (t, y) -lambda * y, tspan, y0, opta), toc
95 pasos exitosos
0 intentos fallidos
125 evaluaciones de funciones
0 derivadas parciales
28 descomposiciones de LU
123 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.026963 segundos.
título ( 'ode23t' )
subtrama (2,2,4)
tic, ode23tb (@ (t, y) -lambda * y, tspan, y0, opta), toc
71 pasos exitosos
0 intentos fallidos
167 evaluaciones de funciones
0 derivadas parciales
23 descomposiciones de LU
236 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.149099 segundos.
título ( 'ode23tb' )
Todos los solucionadores rígidos funcionan bien, pero ode23scompletan la integración con el menor
número de pasos y se ejecutan más rápido para este problema en particular. Como se especifica la
constante jacobiana, ninguno de los solucionadores necesita calcular derivadas parciales para
calcular la solución. Especificar los beneficios jacobianos ode23smás, ya que normalmente evalúa
al jacobiano en cada paso.
Para problemas generales rígidos, el rendimiento de los solucionadores rígidos varía según el
formato del problema y las opciones especificadas. Proporcionar la matriz jacobiana o el patrón de
escasez siempre mejora la eficiencia del solucionador para problemas rígidos. Pero como los
solucionadores rígidos usan al jacobiano de manera diferente, la mejora puede variar
significativamente. Hablando de manera práctica, si un sistema de ecuaciones es muy grande o
necesita resolverse muchas veces, entonces vale la pena investigar el rendimiento de los diferentes
solucionadores para minimizar el tiempo de ejecución.
Evaluar y ampliar la estructura de la solución
Prueba este ejemplo
La ecuación de van der Pol es una EDO de segundo orden.

Resuelve la ecuación de van der Pol usando ode15s. La función se vdp1000.menvía con
MATLAB® y codifica las ecuaciones. Especifique una salida única para devolver una estructura
que contenga información sobre la solución, como el solucionador y los puntos de evaluación.
tspan = [0 3000];
y0 = [2 0];
sol = ode15s (@ vdp1000, tspan, y0)
sol = estructura con campos:
solucionador: 'ode15s'
extdata: [1x1 struct]
x: [1x592 doble]
y: [2x592 doble]
estadísticas: [1x1 struct]
idata: [1x1 struct]

Utilice linspacepara generar 2500 puntos en el intervalo [0 3000]. Evalúe el primer componente de
la solución en estos puntos usando deval.
x = linspace (0,3000,2500);
y = deval (sol, x, 1);
Trazar la solución.
parcela (x, y)

Extienda la solución al uso odextendy agregue el resultado a la gráfica original.


ode23s

Resolver ecuaciones diferenciales rígidas - método de orden bajo


colapsar todo en la página
Sintaxis
[t,y] = ode23s(odefun,tspan,y0)
[t,y] = ode23s(odefun,tspan,y0,options)
[t,y,te,ye,ie] = ode23s(odefun,tspan,y0,options)
sol = ode23s(___)
Descripción
ejemplo
[t,y] = ode23s(odefun,tspan,y0), donde tspan = [t0 tf], integra el sistema de ecuaciones
diferenciales y'=f(t,y) de a con las condiciones iniciales . Cada fila de la matriz de
soluciones corresponde a un valor devuelto en el vector de columna .t0tfy0yt
Todos los solucionadores de MATLAB ® ODE pueden resolver sistemas de ecuaciones de la
forma y'=f(t,y) , o problemas que involucran una matriz de masa, M(t,y)y'=f(t,y) . Todos los
solucionadores utilizan sintaxis similares. El solucionador solo puede resolver problemas con una
matriz de masa si la matriz de masa es constante. y puede resolver problemas con una matriz de
masa que es singular, conocida como ecuaciones algebraicas diferenciales (DAE). Especifique la
matriz de masa utilizando la opción de .ode23sode15sode23tMassodeset
ejemplo
[t,y] = ode23s(odefun,tspan,y0,options)También utiliza la configuración de integración definida
por options, que es un argumento creado con la odesetfunción. Por ejemplo, use
las opciones AbsToly RelTolpara especificar tolerancias de error absolutas y relativas, o
la Massopción para proporcionar una matriz de masa.
[t,y,te,ye,ie] = ode23s(odefun,tspan,y0,options)además, encuentra donde las funciones de ( t , y ) ,
llamadas funciones de evento, son cero. En la salida, tees el momento del evento, yees la solución
en el momento del evento y iees el índice del evento desencadenado.
Para cada función de evento, especifique si la integración debe terminar en un cero y si la dirección
del cruce por cero es importante. Para ello, establezca la 'Events'propiedad a una función, tales
como myEventFcno @myEventFcn, y la creación de una función correspondiente:
[ value, isterminal, direction] = myEventFcn( t, y). Para obtener más información,
consulte Ubicación de eventos ODE .
sol = ode23s(___)devuelve una estructura que puede usar devalpara evaluar la solución en cualquier
punto del intervalo [t0 tf]. Puede usar cualquiera de las combinaciones de argumentos de entrada en
sintaxis anteriores.
Ejemplos
desplegar todo
EDO con componente de solución única
Prueba este ejemplo
Las ODE simples que tienen un solo componente de solución se pueden especificar como una
función anónima en la llamada al solucionador. La función anónima debe aceptar dos
entradas, (t,y)incluso si una de las entradas no se utiliza.
Resuelve la ODE

Utilice un intervalo de tiempo de [0,2]y la condición inicial y0 = 1.


tspan = [0 2];
y0 = 1;
[t, y] = ode23s (@ (t, y) -10 * t, tspan, y0);
Trazar la solución.
trama (t, y, '-o' )

Resuelve la ODA Rígida


Pruébalo en MATLAB
Un ejemplo de un sistema rígido de ecuaciones son las ecuaciones de van der Pol en la oscilación
de relajación. El ciclo límite tiene regiones donde los componentes de la solución cambian
lentamente y el problema es bastante rígido, alternando con regiones de cambios muy marcados
donde no es rígido.
El sistema de ecuaciones es:
Las condiciones iniciales son y . La función se vdp1000envía con MATLAB® y
codifica las ecuaciones.
función dydt = vdp1000 (t, y)
% VDP1000 evaluar los ODEs van der Pol para mu = 1000.
%
% Ver también ODE15S, ODE23S, ODE23T, ODE23TB.

% Jacek Kierzenka y Lawrence F. Shampine


% Copyright 1984-2014 The MathWorks, Inc.

dydt = [y (2); 1000 * (1-y (1) ^ 2) * y (2) -y (1)];

Resolver este sistema utilizando ode45las tolerancias de error relativas y absolutas predeterminadas
( 1e-3y 1e-6, respectivamente) es extremadamente lento, y requiere varios minutos para resolver y
trazar la solución. ode45Requiere millones de pasos de tiempo para completar la integración, debido
a las áreas de rigidez en las que se esfuerza por cumplir las tolerancias.
Esta es una gráfica de la solución obtenida ode45, que toma mucho tiempo para computar. Observe
la enorme cantidad de pasos de tiempo necesarios para pasar a través de las áreas de rigidez.
Resuelva el sistema rígido utilizando el ode23ssolucionador y luego trace la primera columna de la
solución yen función de los puntos temporales t. El ode23ssolucionador pasa a través de áreas
rígidas con muchos menos pasos que ode45.
[t, y] = ode23s (@ vdp1000, [0 3000], [2 0]);
gráfico (t, y (:, 1), '-o' )

Pasar parámetros extra a la función ODE


Pruébalo en MATLAB
ode23ssolo funciona con funciones que usan dos argumentos de entrada, ty y. Sin embargo, puede
pasar parámetros adicionales definiéndolos fuera de la función y pasándolos cuando especifique el
identificador de la función.
Resuelve la ODE

Reescribiendo la ecuación como un sistema de primer orden.

odefcn.mrepresenta este sistema de ecuaciones como una función que acepta cuatro argumentos de
entrada: t, y, A, y B.
función dydt = odefcn (t, y, A, B)
dydt = ceros (2,1);
dydt (1) = y (2);
dydt (2) = (A / B) * t. * y (1);

Resuelve la EDO usando ode23s. Especifique el controlador de función de modo que pase los
valores predefinidos para Ay Ba odefcn.
A = 1;
B = 2;
tspan = [0 5];
y0 = [0 0.01];
[t, y] = ode23s (@ (t, y) odefcn (t, y, A, B), tspan, y0);
Trazar los resultados.
plot (t, y (:, 1), '-o' , t, y (:, 2), '-.' )

Comparar Stiff ODE Solvers


Prueba este ejemplo
El ode15ssolucionador de problemas es una buena primera opción para la mayoría de los problemas
rígidos. Sin embargo, los otros solucionadores rígidos pueden ser más eficientes para ciertos tipos
de problemas. Este ejemplo resuelve una ecuación de prueba rígida utilizando los cuatro
solucionadores ODE rígidos.
Considere la ecuación de prueba

La ecuación se vuelve cada vez más rígida a medida que aumenta la magnitud . Uso y
la condición inicial durante el intervalo de tiempo [0 0.5]. Con estos valores, el problema
es lo suficientemente rígido ode45y se ode23esfuerza por integrar la ecuación. Además,
utilice odesetpara pasar la constante jacobiana y activar la visualización de las
estadísticas del solucionador.
lambda = 1e9;
y0 = 1;
tspan = [0 0.5];
opts = odeset ( 'Jacobian' , -lambda, 'Stats' , 'on' );
Resolver la ecuación con ode15s, ode23s, ode23t, y ode23tb. Hacer subparcelas para la
comparación.
subparcela (2,2,1)
tic, ode15s (@ (t, y) -lambda * y, tspan, y0, opta), toc
104 pasos exitosos
1 intentos fallidos
212 evaluaciones de funciones
0 derivadas parciales
21 descomposiciones de LU
210 soluciones de sistemas lineales.
El tiempo transcurrido es de 4.276551 segundos.
título ( 'ode15s' )
subparcela (2,2,2)
tic, ode23s (@ (t, y) -lambda * y, tspan, y0, opta), toc
63 pasos exitosos
0 intentos fallidos
191 evaluaciones de funciones
0 derivadas parciales
63 descomposiciones de LU
189 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.265205 segundos.
título ( 'ode23s' )
subtrama (2,2,3)
tic, ode23t (@ (t, y) -lambda * y, tspan, y0, opta), toc
95 pasos exitosos
0 intentos fallidos
125 evaluaciones de funciones
0 derivadas parciales
28 descomposiciones de LU
123 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.026963 segundos.
título ( 'ode23t' )
subtrama (2,2,4)
tic, ode23tb (@ (t, y) -lambda * y, tspan, y0, opta), toc
71 pasos exitosos
0 intentos fallidos
167 evaluaciones de funciones
0 derivadas parciales
23 descomposiciones de LU
236 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.149099 segundos.
título ( 'ode23tb' )
Todos los solucionadores rígidos funcionan bien, pero ode23scompletan la integración con el menor
número de pasos y se ejecutan más rápido para este problema en particular. Como se especifica la
constante jacobiana, ninguno de los solucionadores necesita calcular derivadas parciales para
calcular la solución. Especificar los beneficios jacobianos ode23smás, ya que normalmente evalúa
al jacobiano en cada paso.
Para problemas generales rígidos, el rendimiento de los solucionadores rígidos varía según el
formato del problema y las opciones especificadas. Proporcionar la matriz jacobiana o el patrón de
escasez siempre mejora la eficiencia del solucionador para problemas rígidos. Pero como los
solucionadores rígidos usan al jacobiano de manera diferente, la mejora puede variar
significativamente. Hablando de manera práctica, si un sistema de ecuaciones es muy grande o
necesita resolverse muchas veces, entonces vale la pena investigar el rendimiento de los diferentes
solucionadores para minimizar el tiempo de ejecución.
ode23t

Resuelva las EDO y las DAE moderadamente rígidas: regla trapezoidal


colapsar todo en la página
Sintaxis
[t,y] = ode23t(odefun,tspan,y0)
[t,y] = ode23t(odefun,tspan,y0,options)
[t,y,te,ye,ie] = ode23t(odefun,tspan,y0,options)
sol = ode23t(___)
Descripción
ejemplo
[t,y] = ode23t(odefun,tspan,y0), donde tspan = [t0 tf], integra el sistema de ecuaciones
diferenciales y'=f(t,y) de a con las condiciones iniciales . Cada fila de la matriz de
soluciones corresponde a un valor devuelto en el vector de columna .t0tfy0yt
Todos los solucionadores de MATLAB ® ODE pueden resolver sistemas de ecuaciones de la
forma y'=f(t,y) , o problemas que involucran una matriz de masa, M(t,y)y'=f(t,y) . Todos los
solucionadores utilizan sintaxis similares. El solucionador solo puede resolver problemas con una
matriz de masa si la matriz de masa es constante. y puede resolver problemas con una matriz de
masa que es singular, conocida como ecuaciones algebraicas diferenciales (DAE). Especifique la
matriz de masa utilizando la opción de .ode23sode15sode23tMassodeset
ejemplo
[t,y] = ode23t(odefun,tspan,y0,options)También utiliza la configuración de integración definida
por options, que es un argumento creado con la odesetfunción. Por ejemplo, use
las opciones AbsToly RelTolpara especificar tolerancias de error absolutas y relativas, o
la Massopción para proporcionar una matriz de masa.
[t,y,te,ye,ie] = ode23t(odefun,tspan,y0,options)además, encuentra donde las funciones de ( t , y ) ,
llamadas funciones de evento, son cero. En la salida, tees el momento del evento, yees la solución
en el momento del evento y iees el índice del evento desencadenado.
Para cada función de evento, especifique si la integración debe terminar en un cero y si la dirección
del cruce por cero es importante. Para ello, establezca la 'Events'propiedad a una función, tales
como myEventFcno @myEventFcn, y la creación de una función correspondiente:
[ value, isterminal, direction] = myEventFcn( t, y). Para obtener más información,
consulte Ubicación de eventos ODE .
sol = ode23t(___)devuelve una estructura que puede usar devalpara evaluar la solución en cualquier
punto del intervalo [t0 tf]. Puede usar cualquiera de las combinaciones de argumentos de entrada en
sintaxis anteriores.
Ejemplos
desplegar todo
EDO con componente de solución única
Prueba este ejemplo
Las ODE simples que tienen un solo componente de solución se pueden especificar como una
función anónima en la llamada al solucionador. La función anónima debe aceptar dos
entradas, (t,y)incluso si una de las entradas no se utiliza.
Resuelve la ODE

Utilice un intervalo de tiempo de [0,2]y la condición inicial y0 = 1.


tspan = [0 2];
y0 = 1;
[t, y] = ode23t (@ (t, y) -10 * t, tspan, y0);
Trazar la solución.
trama (t, y, '-o' )

Resuelve la ODA Rígida


Pruébalo en MATLAB
Un ejemplo de un sistema rígido de ecuaciones son las ecuaciones de van der Pol en la oscilación
de relajación. El ciclo límite tiene regiones donde los componentes de la solución cambian
lentamente y el problema es bastante rígido, alternando con regiones de cambios muy marcados
donde no es rígido.
El sistema de ecuaciones es:

Las condiciones iniciales son y . La función se vdp1000envía con MATLAB® y


codifica las ecuaciones.
función dydt = vdp1000 (t, y)
% VDP1000 evaluar los ODEs van der Pol para mu = 1000.
%
% Ver también ODE15S, ODE23S, ODE23T, ODE23TB.

% Jacek Kierzenka y Lawrence F. Shampine


% Copyright 1984-2014 The MathWorks, Inc.

dydt = [y (2); 1000 * (1-y (1) ^ 2) * y (2) -y (1)];

Resolver este sistema utilizando ode45las tolerancias de error relativas y absolutas predeterminadas
( 1e-3y 1e-6, respectivamente) es extremadamente lento, y requiere varios minutos para resolver y
trazar la solución. ode45Requiere millones de pasos de tiempo para completar la integración, debido
a las áreas de rigidez en las que se esfuerza por cumplir las tolerancias.
Esta es una gráfica de la solución obtenida ode45, que toma mucho tiempo para computar. Observe
la enorme cantidad de pasos de tiempo necesarios para pasar a través de las áreas de rigidez.

Resuelva el sistema rígido utilizando el ode23tsolucionador y luego trace la primera columna de la


solución yen función de los puntos temporales t. El ode23tsolucionador pasa a través de áreas
rígidas con muchos menos pasos que ode45.
[t, y] = ode23t (@ vdp1000, [0 3000], [2 0]);
gráfico (t, y (:, 1), '-o' )
Pasar parámetros extra a la función ODE
Pruébalo en MATLAB
ode23tsolo funciona con funciones que usan dos argumentos de entrada, ty y. Sin embargo, puede
pasar parámetros adicionales definiéndolos fuera de la función y pasándolos cuando especifique el
identificador de la función.
Resuelve la ODE

Reescribiendo la ecuación como un sistema de primer orden.

odefcn.mrepresenta este sistema de ecuaciones como una función que acepta cuatro argumentos de
entrada: t, y, A, y B.
función dydt = odefcn (t, y, A, B)
dydt = ceros (2,1);
dydt (1) = y (2);
dydt (2) = (A / B) * t. * y (1);

Resuelve la EDO usando ode23t. Especifique el controlador de función de modo que pase los
valores predefinidos para Ay Ba odefcn.
A = 1;
B = 2;
tspan = [0 5];
y0 = [0 0.01];
[t, y] = ode23t (@ (t, y) odefcn (t, y, A, B), tspan, y0);
Trazar los resultados.
plot (t, y (:, 1), '-o' , t, y (:, 2), '-.' )

Comparar Stiff ODE Solvers


Prueba este ejemplo
El ode15ssolucionador de problemas es una buena primera opción para la mayoría de los problemas
rígidos. Sin embargo, los otros solucionadores rígidos pueden ser más eficientes para ciertos tipos
de problemas. Este ejemplo resuelve una ecuación de prueba rígida utilizando los cuatro
solucionadores ODE rígidos.
Considere la ecuación de prueba

La ecuación se vuelve cada vez más rígida a medida que aumenta la magnitud . Uso y
la condición inicial durante el intervalo de tiempo [0 0.5]. Con estos valores, el problema
es lo suficientemente rígido ode45y se ode23esfuerza por integrar la ecuación. Además,

utilice odesetpara pasar la constante jacobiana y activar la visualización de las


estadísticas del solucionador.
lambda = 1e9;
y0 = 1;
tspan = [0 0.5];
opts = odeset ( 'Jacobian' , -lambda, 'Stats' , 'on' );
Resolver la ecuación con ode15s, ode23s, ode23t, y ode23tb. Hacer subparcelas para la
comparación.
subparcela (2,2,1)
tic, ode15s (@ (t, y) -lambda * y, tspan, y0, opta), toc
104 pasos exitosos
1 intentos fallidos
212 evaluaciones de funciones
0 derivadas parciales
21 descomposiciones de LU
210 soluciones de sistemas lineales.
El tiempo transcurrido es de 4.276551 segundos.
título ( 'ode15s' )
subparcela (2,2,2)
tic, ode23s (@ (t, y) -lambda * y, tspan, y0, opta), toc
63 pasos exitosos
0 intentos fallidos
191 evaluaciones de funciones
0 derivadas parciales
63 descomposiciones de LU
189 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.265205 segundos.
título ( 'ode23s' )
subtrama (2,2,3)
tic, ode23t (@ (t, y) -lambda * y, tspan, y0, opta), toc
95 pasos exitosos
0 intentos fallidos
125 evaluaciones de funciones
0 derivadas parciales
28 descomposiciones de LU
123 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.026963 segundos.
título ( 'ode23t' )
subtrama (2,2,4)
tic, ode23tb (@ (t, y) -lambda * y, tspan, y0, opta), toc
71 pasos exitosos
0 intentos fallidos
167 evaluaciones de funciones
0 derivadas parciales
23 descomposiciones de LU
236 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.149099 segundos.
título ( 'ode23tb' )
Todos los solucionadores rígidos funcionan bien, pero ode23scompletan la integración con el menor
número de pasos y se ejecutan más rápido para este problema en particular. Como se especifica la
constante jacobiana, ninguno de los solucionadores necesita calcular derivadas parciales para
calcular la solución. Especificar los beneficios jacobianos ode23smás, ya que normalmente evalúa
al jacobiano en cada paso.
Para problemas generales rígidos, el rendimiento de los solucionadores rígidos varía según el
formato del problema y las opciones especificadas. Proporcionar la matriz jacobiana o el patrón de
escasez siempre mejora la eficiencia del solucionador para problemas rígidos. Pero como los
solucionadores rígidos usan al jacobiano de manera diferente, la mejora puede variar
significativamente. Hablando de manera práctica, si un sistema de ecuaciones es muy grande o
necesita resolverse muchas veces, entonces vale la pena investigar el rendimiento de los diferentes
solucionadores para minimizar el tiempo de ejecución.
ode23tb

Resolver ecuaciones diferenciales rígidas - regla trapezoidal + fórmula de diferenciación hacia atrás
colapsar todo en la página
Sintaxis
[t,y] = ode23tb(odefun,tspan,y0)
[t,y] = ode23tb(odefun,tspan,y0,options)
[t,y,te,ye,ie] = ode23tb(odefun,tspan,y0,options)
sol = ode23tb(___)
Descripción
ejemplo
[t,y] = ode23tb(odefun,tspan,y0), donde tspan = [t0 tf], integra el sistema de ecuaciones
diferenciales y'=f(t,y) de a con las condiciones iniciales . Cada fila de la matriz de
soluciones corresponde a un valor devuelto en el vector de columna .t0tfy0yt
Todos los solucionadores de MATLAB ® ODE pueden resolver sistemas de ecuaciones de la
forma y'=f(t,y) , o problemas que involucran una matriz de masa, M(t,y)y'=f(t,y) . Todos los
solucionadores utilizan sintaxis similares. El solucionador solo puede resolver problemas con una
matriz de masa si la matriz de masa es constante. y puede resolver problemas con una matriz de
masa que es singular, conocida como ecuaciones algebraicas diferenciales (DAE). Especifique la
matriz de masa utilizando la opción de .ode23sode15sode23tMassodeset
ejemplo
[t,y] = ode23tb(odefun,tspan,y0,options)También utiliza la configuración de integración definida
por options, que es un argumento creado con la odesetfunción. Por ejemplo, use
las opciones AbsToly RelTolpara especificar tolerancias de error absolutas y relativas, o
la Massopción para proporcionar una matriz de masa.
[t,y,te,ye,ie] = ode23tb(odefun,tspan,y0,options)además, encuentra donde las funciones de ( t , y ) ,
llamadas funciones de evento, son cero. En la salida, tees el momento del evento, yees la solución
en el momento del evento y iees el índice del evento desencadenado.
Para cada función de evento, especifique si la integración debe terminar en un cero y si la dirección
del cruce por cero es importante. Para ello, establezca la 'Events'propiedad a una función, tales
como myEventFcno @myEventFcn, y la creación de una función correspondiente:
[ value, isterminal, direction] = myEventFcn( t, y). Para obtener más información,
consulte Ubicación de eventos ODE .
sol = ode23tb(___)devuelve una estructura que puede usar devalpara evaluar la solución en
cualquier punto del intervalo [t0 tf]. Puede usar cualquiera de las combinaciones de argumentos de
entrada en sintaxis anteriores.
Ejemplos
desplegar todo
EDO con componente de solución única
Prueba este ejemplo
Las ODE simples que tienen un solo componente de solución se pueden especificar como una
función anónima en la llamada al solucionador. La función anónima debe aceptar dos
entradas, (t,y)incluso si una de las entradas no se utiliza.
Resuelve la ODE

Utilice un intervalo de tiempo de [0,2]y la condición inicial y0 = 1.


tspan = [0 2];
y0 = 1;
[t, y] = ode23tb (@ (t, y) -10 * t, tspan, y0);
Trazar la solución.
trama (t, y, '-o' )

Resuelve la ODA Rígida


Pruébalo en MATLAB
Un ejemplo de un sistema rígido de ecuaciones son las ecuaciones de van der Pol en la oscilación
de relajación. El ciclo límite tiene regiones donde los componentes de la solución cambian
lentamente y el problema es bastante rígido, alternando con regiones de cambios muy marcados
donde no es rígido.
El sistema de ecuaciones es:

Las condiciones iniciales son y . La función se vdp1000envía con MATLAB® y


codifica las ecuaciones.
función dydt = vdp1000 (t, y)
% VDP1000 evaluar los ODEs van der Pol para mu = 1000.
%
% Ver también ODE15S, ODE23S, ODE23T, ODE23TB.

% Jacek Kierzenka y Lawrence F. Shampine


% Copyright 1984-2014 The MathWorks, Inc.

dydt = [y (2); 1000 * (1-y (1) ^ 2) * y (2) -y (1)];

Resolver este sistema utilizando ode45las tolerancias de error relativas y absolutas predeterminadas
( 1e-3y 1e-6, respectivamente) es extremadamente lento, y requiere varios minutos para resolver y
trazar la solución. ode45Requiere millones de pasos de tiempo para completar la integración, debido
a las áreas de rigidez en las que se esfuerza por cumplir las tolerancias.
Esta es una gráfica de la solución obtenida ode45, que toma mucho tiempo para computar. Observe
la enorme cantidad de pasos de tiempo necesarios para pasar a través de las áreas de rigidez.
Resuelva el sistema rígido utilizando el ode23tbsolucionador y luego trace la primera columna de
la solución yen función de los puntos temporales t. El ode23tbsolucionador pasa a través de áreas
rígidas con muchos menos pasos que ode45.
[t, y] = ode23tb (@ vdp1000, [0 3000], [2 0]);
gráfico (t, y (:, 1), '-o' )
Pasar parámetros extra a la función ODE
Pruébalo en MATLAB
ode23ssolo funciona con funciones que usan dos argumentos de entrada, ty y. Sin embargo, puede
pasar parámetros adicionales definiéndolos fuera de la función y pasándolos cuando especifique el
identificador de la función.
Resuelve la ODE

Reescribiendo la ecuación como un sistema de primer orden.

odefcn.mrepresenta este sistema de ecuaciones como una función que acepta cuatro argumentos de
entrada: t, y, A, y B.
función dydt = odefcn (t, y, A, B)
dydt = ceros (2,1);
dydt (1) = y (2);
dydt (2) = (A / B) * t. * y (1);

Resuelve la EDO usando ode23tb. Especifique el controlador de función de modo que pase los
valores predefinidos para Ay Ba odefcn.
A = 1;
B = 2;
tspan = [0 5];
y0 = [0 0.01];
[t, y] = ode23tb (@ (t, y) odefcn (t, y, A, B), tspan, y0);
Trazar los resultados.
plot (t, y (:, 1), '-o' , t, y (:, 2), '-.' )

Comparar Stiff ODE Solvers


Prueba este ejemplo
El ode15ssolucionador de problemas es una buena primera opción para la mayoría de los problemas
rígidos. Sin embargo, los otros solucionadores rígidos pueden ser más eficientes para ciertos tipos
de problemas. Este ejemplo resuelve una ecuación de prueba rígida utilizando los cuatro
solucionadores ODE rígidos.
Considere la ecuación de prueba

La ecuación se vuelve cada vez más rígida a medida que aumenta la magnitud . Uso y
la condición inicial durante el intervalo de tiempo [0 0.5]. Con estos valores, el problema
es lo suficientemente rígido ode45y se ode23esfuerza por integrar la ecuación. Además,

utilice odesetpara pasar la constante jacobiana y activar la visualización de las


estadísticas del solucionador.
lambda = 1e9;
y0 = 1;
tspan = [0 0.5];
opts = odeset ( 'Jacobian' , -lambda, 'Stats' , 'on' );
Resolver la ecuación con ode15s, ode23s, ode23t, y ode23tb. Hacer subparcelas para la
comparación.
subparcela (2,2,1)
tic, ode15s (@ (t, y) -lambda * y, tspan, y0, opta), toc
104 pasos exitosos
1 intentos fallidos
212 evaluaciones de funciones
0 derivadas parciales
21 descomposiciones de LU
210 soluciones de sistemas lineales.
El tiempo transcurrido es de 4.276551 segundos.
título ( 'ode15s' )
subparcela (2,2,2)
tic, ode23s (@ (t, y) -lambda * y, tspan, y0, opta), toc
63 pasos exitosos
0 intentos fallidos
191 evaluaciones de funciones
0 derivadas parciales
63 descomposiciones de LU
189 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.265205 segundos.
título ( 'ode23s' )
subtrama (2,2,3)
tic, ode23t (@ (t, y) -lambda * y, tspan, y0, opta), toc
95 pasos exitosos
0 intentos fallidos
125 evaluaciones de funciones
0 derivadas parciales
28 descomposiciones de LU
123 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.026963 segundos.
título ( 'ode23t' )
subtrama (2,2,4)
tic, ode23tb (@ (t, y) -lambda * y, tspan, y0, opta), toc
71 pasos exitosos
0 intentos fallidos
167 evaluaciones de funciones
0 derivadas parciales
23 descomposiciones de LU
236 soluciones de sistemas lineales.
El tiempo transcurrido es de 1.149099 segundos.
título ( 'ode23tb' )
Todos los solucionadores rígidos funcionan bien, pero ode23scompletan la integración con el menor
número de pasos y se ejecutan más rápido para este problema en particular. Como se especifica la
constante jacobiana, ninguno de los solucionadores necesita calcular derivadas parciales para
calcular la solución. Especificar los beneficios jacobianos ode23smás, ya que normalmente evalúa
al jacobiano en cada paso.
Para problemas generales rígidos, el rendimiento de los solucionadores rígidos varía según el
formato del problema y las opciones especificadas. Proporcionar la matriz jacobiana o el patrón de
escasez siempre mejora la eficiencia del solucionador para problemas rígidos. Pero como los
solucionadores rígidos usan al jacobiano de manera diferente, la mejora puede variar
significativamente. Hablando de manera práctica, si un sistema de ecuaciones es muy grande o
necesita resolverse muchas veces, entonces vale la pena investigar el rendimiento de los diferentes
solucionadores para minimizar el tiempo de ejecución.