Documente Academic
Documente Profesional
Documente Cultură
Planteamiento
t=0 C = C0 (1d)
Obtener la solución de la Ec. (1) mediante la función ode23tb de Matlab, Runge-Kutta de Cuarto orden y predictivo-
corrector para la parte temporal mediante un esquema de líneas.
2. Desarrollo
2.2. Predictor-Corrector
Los métodos predictor-corrector, son métodos lineales multipaso, es decir, involucran la combinación de dos métodos, uno
para predecir el paso f (x + ∆x) , generalmente con un método para ecuaciones diferenciales y otro que lo corrige mediante un
método de integración numérica. Algunos de esta clase que generalmente se consideran los más importantes para la solución
práctica de problemas no rígidos son las formulaciones de Adams, también son clasicados como métodos con memoria,
(Butcher & Goodwin, 2008).
El más sencillo, consiste en aplicar el método de Euler (2) y después un método de integración numérica sobre el paso
previamente obtenido, uno de los más sencillos es la regla de trapecio. De esta manera, el método predictor-corrector queda
como:
ỹi+1 = yi + ∆xf (t(i), yi ) (3a)
∆x
yi+1 = yi + (f (t(i), yi ) + f (t(i + 1), ỹi+1 )) (3b)
2
Las Ecs. (3) son conocidas como el método de Heun, que también es similar al método de Runge-Kutta a dos etapas,
(Runge-Kutta de segundo orden).
1
3. Resultados
3.1. RK4
En la Subsección A.1 se encuentra disponible la subrutina que contiene al método de Runge-Kutta de Cuarto orden
0.7
0
0.6
0.9 0.6
0
0.68
0.8
0.5
0.66
0
0.7
0.1
0.2
0.3
0.4
0.5
0.4
Concentración
0.6
0.6 0.64
Posición
0.3
0.5
0.62
0
0
0.2
0.4
0
0.6
0.3 0.1
0
0.2 0 0.58
0.5
0.4
0.3
0.2
0.1
0.10
0
0.1
-0.1 0.56
0 1 2 3 4 5 6 7 8 9 10 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tiempo Posición
El RK4 convergió hasta tratar con un ∆t = 1 × 10−4 . Esto repercute sólo en el tiempo de cómputo, ya que, la Fig. 1a se
comparó con el ode23tb, obteniendo los mismos resultados cualitativos.
La Fig. 2 da una idea sobre la dinámica del error generado en cada nodo a través del tiempo. Considerando al error como en
la Ec. (5), se obtiene que el orden de magnitud es de 10−4 .
Ztf
E = (Code23tb − CRK4 )dt
2
(5)
t0
2
× 10-4
8
Concentración
4
0
0 1 2 3 4 5 6 7 8 9 10
Posición
3.2. Heun
El método de Heun puede integrarce fácilmente en una subrutina de Matlab (Subsección A.2) y evaluarse de manera
similar. Fig. 3
0.015
0.01
Error
0.005
0
0 1 2 3 4 5 6 7 8 9 10
Tiempo
3.3. ode23tb
Resuelve ecuaciones diferenciales rígidas utilizando regla trapezoidal y fórmula de diferenciación hacia atrás1
1 Documentación de ode23tb : https://la.mathworks.com/help/matlab/ref/ode23tb.html
3
3.3.1. Diferencias nitas
0.68
0.66
0.64
0.62
Concentración
0.6
0.58
0.56
0.54
0.52
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Posición
0.68
0.66
0.64
0.62
Concentración
0.6
0.58
0.56
0.54
0.52
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Posición
4. Conclusiones
Se tomó como referencia a los resultados obtenidos con la función ode23tb, ya que esta función puede variar el tamaño
de paso ∆t considerando un error de tolerancia. De esa manera, el método RK4 obtuvo mejor desempeño que Heun, esto es
evidente si se comparan las grácas de los errores generados (e.i. Figuras 2 y 3), donde el error para Heun crece a medida
del tiempo con un comportamiento sigmoidal, además de que el error varía respecto al nodo signicativamente. En Heun, el
orden de magnitud del error fue de 10−2 y 10−3 , mientras que para el RK4 fué 10−4 y para ambos se requirió un ∆t menor
o igual a 0.0001 para evitar divergencias.
Bibliografía
4
Butcher, J. C., & Goodwin, N. (2008). Numerical methods for ordinary dierential equations (Vol. 2). New York: Wiley.
Hernández-Martínez, E., Valdés-Parada, F. J., & Alvarez-Ramírez, J. (2011). Formulaciones integrales para ecuaciones reacción-difusión
generalizadas. Revista mexicana de ingeniería química, 10(3), 363-371.
Valdés-Parada, F. J., Alvarez-Ramírez, J., & Ochoa-Tapia, J. A. (2007). Análisis de problemas de transporte de masa y reacción mediante
funciones de Green. Revista mexicana de ingeniería química, 6(3), 283-294.
A. Subrutinas
A.1. RK4.m
1 function [t,z]=RK4(funcion,t,x)
2 h=t(end)/length(t); % paso
3 n=length(t)−1; % nodos
4 for i=1:n
5
6 k1=h*feval(funcion,t(i),x(:,i));
7 k2=h*feval(funcion,t(i),x(:,i)+k1./2);
8 k3=h*feval(funcion,t(i),x(:,i)+k2./2);
9 k4=h*feval(funcion,t(i),x(:,i)+k3);
10 x(:,i+1)=x(:,i)+(k1+2*k2+2*k3+k4)/6;
11 end
12 z=x';
A.2. Heun.m
1 function [t,z]=Heun(funcion,t,x)
2 h=t(end)/length(t); %paso dt
3 n=length(t)−1; %nodos
4 for i=1:n
5
6 x(:,i+1)=x(:,i)+h*feval(funcion,t(i),x(:,i));
7 x(:,i+1)=x(:,i)+h/2*(feval(funcion,t(i),x(:,i))+feval(funcion,t(i),x(:,i+1)));
8 end
9 z=x';
A.3. formulacion2.m
1 function dc=formulacion2(~,c)
2 global N dr G fi Bi
3 Ginv=inv(G); % Matriz inversa N+2,N+2
4 Cbulk=1;
5 crin=c(1); %C.F. 1 Neumann
6 crend=(Bi*dr*Cbulk+c(N))/(Bi*dr+1); %C.F. 2 Robin
7 u=[crin;c;crend];
8 Rxmid=fi.*u.^2;
9 B=Cbulk;
10 dc=Ginv*((u−B)/dr)−Rxmid;
11 dc=dc(2:N+1);