
Iterar en función del tiempo
Publicado por Pablo (9 intervenciones) el 24/09/2017 21:54:34
Estimados todos!
Tengo un problema: necesito iterar una serie de valores en un tiempo para distintos tiempos de una función.
Requiero obtener un valor a través de un proceso iterativo para distintos tiempos en un lapsus de una hora. Para el proceso iterativo, utilizo el método de la Regla Falsa. Sin embargo, y a pesar de mis intentos de re-programar, no he podido hacer que MATLAB identifique el paso de tiempo y solo me entrega el valor final de una iteración.
A continuación, les muestro mi programación y les pido me ayuden a identificar mis errores.
He intentado cambiar i=ITE por i=t, sin embargo no obtengo resultado.
En teoría, yo debería poder calcular para un tiempo t=n un valor de Cg_3(n), donde para cada paso de tiempo n, iterar para encontrar el valor de Cg_3, sin embargo, no he podido programar correctamente esto.
Les agradezco cualquier ayuda que me pueda realizar, ya que este trabajo es parte del desarrollo de mi trabajo de tesis.
Saludos!
Tengo un problema: necesito iterar una serie de valores en un tiempo para distintos tiempos de una función.
Requiero obtener un valor a través de un proceso iterativo para distintos tiempos en un lapsus de una hora. Para el proceso iterativo, utilizo el método de la Regla Falsa. Sin embargo, y a pesar de mis intentos de re-programar, no he podido hacer que MATLAB identifique el paso de tiempo y solo me entrega el valor final de una iteración.
A continuación, les muestro mi programación y les pido me ayuden a identificar mis errores.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
%% INICIO DEL MÉTODO ITERATIVO %
% Ajuste de unidades
C_gf0= imput % Concentración inicial
K_T= 4.7569e-07
ITE= imput % Numero de iteraciónes
TOL= imput % Tolerancia para el error
Mg=180.16; % Masa molecular de la glucosa en g/mol
C_gf0_trans=C_gf0.*(1000./Mg); % Concentración de glucosa inicial en la alimentación en mol/m^3
C_gf=C_gf0_trans;
tic % Inicio del reloj
i=0;
for t=0:dt:60; % Equivalente a una hora en minutos
% Método Regla Falsa.
Cg_1=0.000001.*C_gf0_trans;
Cg_2=0.999999.*C_gf0_trans;
while i < ITE;
C_gf_out=[Cg_1 Cg_2] % Concentración de glucosa de salida en el flujo de alimentación
% Determinación del flujo de glucosa transferico mediante
% balance de masa
Q_f_trnas=Q_f.*(1./(6.*10^(7)));
w_glu_1=Q_f_trnas.*(C_gf0_trans-C_gf_out(1)); % Flujo de glucosa transferido en mol/s
w_glu_2=Q_f_trnas.*(C_gf0_trans-C_gf_out(2)); % Flujo de glucosa transferido en mol/s
% Determinación del flujo de glucosa transferido mediante
% teorema de resistencia en serie
A_T=1.7; % Área de transferencia total del modulo de membra en m^2
log_g_1=log(C_gf0_trans./C_gf_out(1));
Delta_Cg_1=(C_gf0_trans-C_gf_out(1))./log_g_1;
Ng_1=K_T.*A_T.*Delta_Cg_1; % Flujo de glucosa transferido en mol/s
log_g_2=log(C_gf0_trans./C_gf_out(2));
Delta_Cg_2=(C_gf0_trans-C_gf_out(2))./log_g_2;
Ng_2=K_T.*A_T.*Delta_Cg_2; % Flujo de glucosa transferido en mol/s
% Definición del Error
err_1=(-1).*(w_glu_1-Ng_1)./w_glu_1;
err_2=(-1).*(w_glu_2-Ng_2)./w_glu_2;
if i < ITE
Cg_3=((err_2.*Cg_1)-(err_1.*Cg_2))./(err_2-err_1)
% Estimación del flujo de glucosa a partir de Cg_3
w_glu_3=(Q_f_ind_trans.*(C_gf0_trans-Cg_3)); % Flujo de glucosa transferido en mol/s
log_g_3=log(C_gf0_trans./Cg_3);
Delta_Cg_3=(C_gf0_trans-Cg_3)./log_g_3;
Ng_3=K_T.*A_T.*Delta_Cg_3; % Flujo de glucosa transferido en mol/s
err_3=(w_glu_3-Ng_3)./w_glu_3;
% Inicia las condiciones para cambiar de punto
if err_1*err_3<0 && err_3<=TOL
Cg_2=Cg_3;
elseif err_1*err_3>0 && err_3<=TOL
Cg_1=Cg_3;
else
disp('Error durante la iteración')
err_3=100; % Alto error
break
end
end
% Criterio de paro
i=i+1;
end
He intentado cambiar i=ITE por i=t, sin embargo no obtengo resultado.
En teoría, yo debería poder calcular para un tiempo t=n un valor de Cg_3(n), donde para cada paso de tiempo n, iterar para encontrar el valor de Cg_3, sin embargo, no he podido programar correctamente esto.
Les agradezco cualquier ayuda que me pueda realizar, ya que este trabajo es parte del desarrollo de mi trabajo de tesis.
Saludos!
Valora esta pregunta


0