0% encontró este documento útil (0 votos)
29 vistas

MATLAB Coding Notes

Este documento presenta diferentes métodos numéricos para resolver ecuaciones diferenciales ordinarias, incluyendo el método de Euler explícito, implícito y semi-implícito, el método de Runge-Kutta de segundo y tercer orden, y el método ODE45. También muestra ejemplos de aplicación de estos métodos para resolver la ecuación diferencial dy/dx = y - 4exp(-3x) con condición inicial y(0) = 1.

Cargado por

ana vaqueiro
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas

MATLAB Coding Notes

Este documento presenta diferentes métodos numéricos para resolver ecuaciones diferenciales ordinarias, incluyendo el método de Euler explícito, implícito y semi-implícito, el método de Runge-Kutta de segundo y tercer orden, y el método ODE45. También muestra ejemplos de aplicación de estos métodos para resolver la ecuación diferencial dy/dx = y - 4exp(-3x) con condición inicial y(0) = 1.

Cargado por

ana vaqueiro
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

COMPU NOTES PARCIAL 2

MÉTODO DE REGULA FALSI


clc, clear, format compact
% Método regla falsi
rep = 1; % valor para inicializar whilde de repetir
while rep == 1
xa = input('introduzca un estimado de x:');
xb = input('introduzca un segundo estimado de x:');
% fx = x^4 + 6*x^3 + 7*x^2 -6*x - 8
pol = [1 6 7 -6 -8];
fxa = polyval(pol,xa); fxb = polyval(pol, xb);
if fxb > 0 && fxa < 0
xp = xb; xn = xa;
fxp = fxb; fxn = fxa;
elseif fxb < 0 && fxa > 0
xp = xa; xn = xb;
fxp = fxa; fxn = fxb;
elseif fxa == 0 || fxb == 0 % || sirve como or (en vez de and, opuesto a &&)
if fxa == 0 && fxb == 0
disp('las raíces son:')
disp(xa), disp (xb), break
elseif fxa == 0
disp('encontraste la raíz')
disp(xa), break
else
disp('encontraste la raíz')
disp(xb), break
end
else
disp('no cumple con la condición de cambio de signo'), break
end
tol = 1e-9;
fx = 1; % para que pueda entrar al ciclo
iter = 0;
while abs(fx) > tol
x = xp - ((fxp*(xp-xn))/(fxp-fxn));
fx = polyval(pol, x);
iter = iter +1;
if fx < 0
xn = x; fxn = fx;
elseif fx > 0
xp = x; fxp = fx;
else
disp('encontraste una solución')
disp(x)
end
end
disp('el valor de la raíz es:')
disp(x)
disp('El número de iteraciones fue:')
disp(iter)
rep = input('¿Quieres repetir el programa? si = 1, no = 2');
clc
end

MÉTODO NEWTON-RAPHSON
clc, clear, format compact
% Método Newton-Raphson
p = 1;
while p==1
x0 = input('Introducir estimado de x0: ');
pol = [1 6 7 -6 -8];
fx = polyval(pol, x0);
if fx == 0
disp('La raíz es x0'), disp(x0);
end
tol = 1e-9;
iter = 0;
while abs(fx) > tol
fx = polyval(pol, x0);
fxd = polyder(pol);
fxp = polyval(fxd,x0);
x = x0-(fx/fxp);
x0 = x;
iter = iter + 1;
end
disp('x0 = '), disp(x0);
disp('x = '), disp(x);
disp('El número de iteraciones fue:')
disp(iter)
p = input('¿Quieres repetir el programa? si = 1, no = 0');
clc
end
disp('fin de programa')

ECUACIÓN FUNCTION
function fun = ecuacion(var)
% declarar variables
x = var(1);
% datos
% ec. aux
% funciones igualadas a cero
fun(1) = (x^4)+(6*x^3)+(7*x^2)-(6*x)-(8);

clc, clear, format compact


% var 0 = vector de estimados iniciales en este caso var 0 = 0.5
% help fsolve
var0 = [0.5];
[var, feval, flag] = fsolve(@ecuacion, var0);

PROBLEMA 1 DOC 8
function fun = prob1doc8(V)
a = 1.56414e8;
b = 44.897;
R = 83.14;
T = 333;
P = 13.76;
fun(1) = ((R*T)/(V-b))-(a/(T^0.5*V*(V+b)))-P;

clc, clear, format compact


V0 = ((83.14*333)/13.76);
[V, feval, flag] = fsolve(@prob1doc8, V0)
% resultados V = 1711.6 cm^3/gmol

% Archivo de función
function fun = prob1doc8(V)
a = 1.56414e8;
b = 44.897;
R = 83.14;
T = 333;
P = 13.76;
fun(1) = ((R*T)/(V-b))-(a/(T^0.5*V*(V+b)))-P;
end

PROBLEMA 2 DOC 8
function fun = prob2doc8(var)
% help fsolve
% renombrar variables
z = var(1);
y = var(2);
% funciones igualadas a cero
fun(1) = z*exp(z*y+0.8) + exp(y^2)-3;
fun(2) = z^2 - y^2 - 0.5*exp(z*y);

clc, clear, format compact


var0 = [1,1];
[var, feval, flag] = fsolve(@prob2doc8, var0)
% var = 0.7750 0.1716

PROBLEMA 3 DOC 8
function fun = prob3doc8(var)
vf = var(1);
g = 9.8066;
p = 1.23;
pp = 7860;
Dp = 0.0005;
u = 1.79e-5;
Re = (vf*Dp*p)/u;
if Re < 0.1
Cd = 24/Re;
fun(1) = (sqrt((4*g*(pp-p)*Dp)/(3*Cd*p)))-vf;
elseif Re > 0.1 && Re < 1000
Cd = (24/Re)*(1+0.14*(Re^0.7));
fun(1) = (sqrt((4*g*(pp-p)*Dp)/(3*Cd*p)))-vf;
end
end

clc, clear, format compact


vf0 = 10;
[var, feval, flag] = fsolve(@prob3doc8, vf0)
% solución vf = 7.5898

PROBLEMA 4 DOC 8
clc, clear, format compact
T0 = 400;
[T,feval, flag] = fsolve(@prob4doc8, T0)
% sol: cuando T0 = 2000, T = 554.6002
% sol: cuando T0 = 298, T = 306.2263
k = 650*exp(-3800/T);
x = (12*k)/(1+(12*k));
disp('La temperatura es: '), disp(T)
disp('La conversión es: '), disp(x)

function fun = prob4doc8(T)


global x
FA0 = 12;
Hr = -1500000;
CpA = 4500;
T0 = 298;
TA = 293;
UA = 8400;
k = 650*exp(-3800/T);
x = (12*k)/(1+(12*k));
fun(1) = (FA0*CpA*(T-T0)+UA*(T-TA))+(FA0*x*Hr);
end

PROBLEMA 5 DOC 8 (temperatura como escalar)


clc, clear, format compact, close all
Pvap0 = 2;
[Pvap, feval, flag] = fsolve(@p5d8, Pvap0)
% Pvap = 0.5658 a T = 350K
function fun = p5d8(Pvap)
% Datos:
Tc = 507.85;
Pc = 3.058;
wa = 0.4219;
wb = 0.1250;
T = 350; % poner temperatura como dato, no vector. después será vector
% Ecuaciones auxiliares:
Pr = Pvap/Pc;
Tr = T/Tc;
A = (wa*Pr)/(Tr^2);
B = (wb*Pr)/(Tr);
polz = [1 -(B+1) A -A*B]; % solo coeficientes de forma decreciente
raizZ = roots (polz);
Z1 = min(raizZ);
Z2 = max(raizZ);
% Funciones igualadas a 0
fun(1) = log((Z2-B)/(Z1-B)) + (A*((1/Z2)-(1/Z1)))-(Z2-Z1);
end
PROBLEMA 5 DOC 8 (temperatura como escalar)
clc, clear, format compact, close all
global T
Pvap0 = 1;
Tvec = linspace(350, 450, 50);
for i = 1:length(Tvec)
T = Tvec(i);
[Pvap(i), feval(i), flag(i)] = fsolve(@p5d8, Pvap0)
end
plot(Tvec, Pvap,'g.'), title('P^{vap} vs. T'), xlabel ('temperatura [K]'), ylabel('presión [MPa]'), grid
% Pvap = 0.5658 a T = 350K
function fun = p5d8(Pvap)
global T
% Datos:
Tc = 507.85;
Pc = 3.058;
wa = 0.4219;
wb = 0.1250;
% T = 350; % poner temperatura como dato, no vector. después será vector
% Ecuaciones auxiliares:
Pr = Pvap/Pc;
Tr = T/Tc;
A = (wa*Pr)/(Tr^2);
B = (wb*Pr)/(Tr);
polz = [1 -(B+1) A -A*B]; % solo coeficientes de forma decreciente
raizZ = roots (polz);
Z1 = min(raizZ);
Z2 = max(raizZ);
% Funciones igualadas a 0
fun(1) = log((Z2-B)/(Z1-B)) + (A*((1/Z2)-(1/Z1)))-(Z2-Z1);
end

PROBLEMA 1 DOC 9
clc, clear, format compact, close all
global P
a0 = 1;
Pvec = (20:2:30).*760;
for i = 1:length(Pvec)
P = Pvec(i);
[a(i), feval(i), flag(i)] = fsolve(@prob1doc9, a0)
end
plot (Pvec, a), title('Alpha vs. P'), xlabel('P'), ylabel('alpha'), grid
function fun = prob1doc9(a)
global P
T = 60;
A = [6.8522 6.80776 6.6118 6.82915];
B = [1064.63 935.77 389.93 663.72];
C = [232.0 238.789 266.0 256.681];
z = [0.20 0.15 0.40 0.25];
Pvap = 10.^(A-(B./(C+T)));
k = Pvap./P;
x = z./(1+a.*(k-1));
y = k.*x;
fun(1) = sum(x-y);
end

PROBLEMA 2 DOC 9
clc, clear, format compact, close
global P
var0 = [1 1 1];
Pvec = linspace(2,8,10);
for i = 1:10
P = Pvec(i);
[var(i,:),feval(i,:),flag(i)] = fsolve(@prob2doc9, var0)
end
Fa = var(1); % 0.2271
Fb = var(2); % 2.2932
Fc = var(3); % 0.1365

function fun = prob2doc9(var)


global P
% renombrar variables
Fa = var(1);
Fb = var(2);
Fc = var(3);
% Datos
k = 0.5; %dm^3/(kg-min)
v0 = 50; % dm^3/min
Kc = 0.5; % kg-mol/dm
P0 = 10; %atm
Fa0 = 10; % kg-mol/min
a = 2; % dm^2/kg
kc0 = 0.1; % dm/min
%ecuacinoes auxiliares
y = P/P0;
v = v0*((Fa+Fb+Fc)/Fa0)*(1/y);
Ca = Fa/v;
Cb = Fb/v;
Cc = Fc/v;
ra = -k*(Ca-(Cb*sqrt(Cc))/Kc);
kc = kc0*sqrt(v/v0);
% funciones igualadas a cero
fun(1) = ra;
fun(2) = -ra;
fun(3) = -1/2*ra-kc*a*Cc;
end

ECUACIONES DIFERENCIALES SOLV


clc, clear, format compact
% Métodos Númericos para aproximación solución de Ec. Diferenciales
% Ordindarias
% dydx = y-4*exp(-3*x);
% y(x=0) = 1 condición inicial de la variable dependiente
x(1) = 0;
y(1) = 1;
% rango de evaluación de variable independiente x=[0 1.5]
xf = 1.5;
% tamaño de paso h
h = input('introduzca el tamaño de paso (h):');
n = xf/h;
% Euler Explícito
for i = 1:n
x(i+1) = x(i) + h;
y(i+1) = y(i) + h*(y(i)-4*exp(-3*x(i)));
end
x1 = x;
y1 = y;
% Eurler Implícito
for i=1:n
x(i+1) = x(i) + h;
ypr(i+1) = y(i) + h*(y(i) - 4*exp(-3*x(i)));
y(i+1) = y(i) + h*(ypr(i) - 4*exp(-3*x(i+1)));
end
x2=x;
y2=y;

% Euler semi-implícito
for i=1:n
x(i+1) = x(i) + h;
ypr(i+1) = y(i) + h*(y(i) - 4*exp(-3*x(i)));
y(i+1) = y(i) + (h/2)*((y(i) - 4*exp(-3*x(i))) + ypr(i) - 4*exp(-3*x(i+1)));
end
x3=x;
y3=y;

% Método de Runge Kutta de segundo orden


for i= 1:n
k1 = h*(y(i)-4*exp(-3*x(i)));
k2 = h*(y(i)+k1 - 4*exp(-3*x(i)));
x(i+1) = x(i)+ h;
y(i+1) = y(i) + (1/2)*(k1 + k2);
end
x4 = x;
y4 = y;

% Método de Runge Kutta de 3er orden


for i= 1:n
x(i+1) = x(i) + h;
k1 = h*(y(i)-4*exp(-3*x(i)));
k2 = h*(y(i)+k1/2 - 4*exp(-3*(x(i)+h/2)));
k3 = h*(y(i)+2*k2-k1 -4*exp(-3*(x(i)+h)));
y(i+1) = y(i) + 1/6*(k1 + 4*k2 + k3);
end
x5 = x;
y5 = y;

%
figure(1)
plot(x1,y1,x2,y2,x3,y3), xlabel('x'), ylabel('y'), grid, xlim([0 xf]), legend('Euler explícito','Euler
implícito','Euler semi-implícito', 'Runge Kutta 2^{do}', 'Runge Kutta 3^{er}', 'Location', 'NE'),
xlim([0 xf])

% ODE45
xr = [0 1.5]; %
yi = 1;
[x,y] = ode45(@ec_ode,xr,yi)

figure(2)
plot(x,y,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5), xlabel('x'), ylabel('y'), grid

EC ODE
function dydx = ec_ode(x,y)
% renombrar varaibles
% dydx = y-4*exp(-3*x);
dydx(1) = y-4*exp(-3*x);
% Transponer vector de funciones
dydx = dydx';

EJERCICIO 1 EC DIF SOLV DOC 11


clc, clear, format compact; close
% Ejercicios ec dif.
% Problema 1
rt = [0, 3600*24*2];
Tri = 293; % Condición inicial (dato)
[t, Tr] = ode45(@prob1doc11, rt,Tri);
th = t./3600;
figure(1)
plot(th,Tr), xlabel('tiempo [h]'), ylabel('Temperatura del reactor [K]'), grid, title('Problema 1')

function dTrdt = prob1doc11(t, Tr)


% Datos:
Cp = 8373.6; % J/(kg*K)
Tv = 100+273.15; % K
U = 200; % J/(m2*s*K)
A = 1; % m2
m = 1500; % kg

% Ecuaciones diferenciales
dTrdt = (U*A*(Tv-Tr))/(m*Cp);
dTrdt = dTrdt'; % OJO
end

EJERCICIO 2 EC DIF SOLV DOC 11


clc, clear, format compact
% Ejercicio ec dif 2
rt = [0 5];
vari = [1,1];
[t,var] = ode45(@prob2doc11, rt, vari)
x1 = var(:,1);
x2 = var(:,2);
figure(1)
plot(t, var), legend('x_1','x_2'), grid
function dvardt = prob2doc11(t,var)
% renombrar variables
x1 = var(1);
x2 = var(2);
dvardt(1) = -x1+x2;
dvardt(2) = -x2;
dvardt = dvardt';
end

EJERCICIO 3 EC DIF SOLV DOC 11


clc, clear, format compact
% Ejercicio 3 doc 11
rt = [0 24];
vari = [0 1000];
[t,var] = ode45(@prob3doc11, rt, vari)
C=var(:,1);
V=var(:,2);
figure(1)
plot(t, C), grid, xlabel('tiempo [h]'), ylabel('Concentracón [lb/ft^3]'), title('C vs t')
figure (2)
plot(t,V), grid, xlabel('tiempo [h]'), ylabel('Volumen [ft^3]'), title('V vs t')
function dvardt = prob3doc11(t,var)
% Datos
V0 = 1000; % ft3
C0 = 10; %lb/ft3
Ci = 0; %lb/ft3
Q0 = 60; % ft3/h
Q = 70; % ft3/h
C = var(1);
V = var(2);
dvardt(1) = (Q0*(C0-C))/V;
dvardt(2) = (Q0-Q);
dvardt = dvardt';
end

EJERCICIO 4 EC DIF SOLV DOC 11


clc, clear, format compact
% Ejercicio 4 doc 11
rt = [0 1000];
vari = [0 1*10 10]; % NA0, NB0, V0
[t, var] = ode45(@prob4doc11, rt, vari);
NA = var(:,1);
NB = var(:,2);
V = var(:,3);
CA = NA./V;
CB = NB./V;
figure (1)
plot (t, CA, t, CB), grid, title('Concentraciones vs tiempo'), xlabel('tiempo [min]'),
ylabel('concentración [gmol/lt]'), legend('A','B')
figure (2)
plot (t, V), grid, title('Volumen vs tiempo'), xlabel('tiempo [min]'), ylabel('volumen [lt]')
figure (3)
subplot(1,2,1), plot(t,CA,t,CB), grid, title('Concentraciones vs tiempo'), xlabel('tiempo [min]'),
ylabel('concentración [gmol/lt]'), xlim([0 rt(end)]), legend('A','B')
subplot(1,2,2), plot (t, V), grid, title('Volumen vs tiempo'), xlabel('tiempo [min]'), ylabel('volumen
[lt]'), xlim([0 rt(end)])
% en t = 1000 min, reactivo B se acaba
% en 250 min. CA = 0.0725 gmol/lt CB = 0.0148 gmol/lt
function dvardt = prob4doc11(t, var)
% Datos:
CB0 = 1; % gmol/lt
CA0 = 0.1; % gmol/lt
V0 = 10; % lt
q0 = 1; % lt/min
k = 0.06; % min-1
NA = var(1); % moles A
NB = var(2); % moles B
V = var(3); % lt
CA = NA/V; % concentración A
CB = NB/V; % concentración B
dvardt(1) = (CA0*q0)-(k*CA*CB*V);
dvardt(2) = (-k*CA*CB*V);
dvardt(3) = q0;
dvardt = dvardt';
end

EJERCICIO PROB 1 DOC 12


clc, clear, format compact
% Ejercicio 1 doc 12
rV = [0 4];
vari = [38.03 0 0 1150];
[V, var] = ode45(@prob1doc12, rV, vari)
FA = var(:,1);
FB = var(:,2);
FC = var(:,3);
T = var(:,4);
yA = FA./(FA+FB+FC);
yB = FB./(FA+FB+FC);
yC = FC./(FA+FB+FC);
FA0 = 38.03;
xA = (FA0-FA)./FA0;
figure (1)
plot(V, FA, V, FB, V, FC), grid, title('Corrientes vs Volumen'), xlabel('volumen [m^{3}]'),
ylabel('corrientes [gmol/s]'), legend('acetona', 'cetena','metano')
figure (2)
yyaxis right
plot(V,T), grid, title('Temperatura vs Volumen'), xlabel('volumen [m^{3}'), ylabel('temperatura
[K]')
figure (3)
plot(V,yA,V,yB,V,yC), grid, title('Fracción molar vs Volumen'), xlabel('volumen [m^{3}]'),
ylabel('fracción molar'), legend('acetona', 'cetena','metano')
figure (4)
yyaxis left
plot(V,xA), ylabel('Conversión [%]')
yyaxis right
plot(V,T), grid, title('Doc 12 Prob 1'), xlabel('volumen [m^{3}'), ylabel('temperatura [K]')
function dvardt = prob1doc12(V, var)
% Datos:
FA = var(1);
FB = var(2);
FC = var(3);
T = var(4);
% T0 = 1150; % K
P = 162; % kPa
k = (8.2e14)*exp(-34222/T);
% V = 4; %m3
FA0 = 38.3;
yA = FA/(FA+FB+FC);
CA = (1000*yA*P)/(8.31*T);
ra = -k*CA;
xA = (FA0-FA)/FA0;
H = 80770+(6.8*(T-298))-(0.00575*(T^2-298^2))-((1.27e-6)*(T^3-298^3));
Cpa = 26.6+(0.183*T)-((45.86e-6)*T^2);
Cpb = 20.04 + (0.0945*T)-((30.95e-6)*T^2);
Cpc = 13.39+(0.077*T)-((18.71e-6)*T^2);

dvardt(1) = ra;
dvardt(2) = -ra;
dvardt(3) = -ra;
dvardt(4) = (-ra*(-H))/((FA*Cpa)+(FB*Cpb)+(FC*Cpc));
dvardt = dvardt';
end

EJERCICIO PROB 2 DOC 12


clc, clear, format compact
% Ejercicio 2 doc 12
global T4
rx = [0 0.23];
vari = 200;
T4v = [300:50:500];
for i = 1:length(T4v)
T4 = T4v(i);
[x, var(:,i)] = ode45(@prob2doc12, rx, vari)
end
figure(1)
plot(x,var), grid, title('Temperatura vs x'), xlabel('x [m]'), ylabel('temperatura [K]'), xlim([0
rx(end)])
function dTdx = prob2doc12(x,var)
global T4
T1 = 200; % K
LA = 0.05;
LB = 0.1;
LC = 0.08;
KA = 0.152;
KB = 0.0433;
KC = 0.762;
qxA = (T1-T4)/((LA/KA)+(LB/KB)+(LC/KC));
T=var(1);
if x>=0 && x<=LA
dTdx = -(qxA/KA);
elseif x>LA && x<=(LA+LB)
dTdx = -(qxA/KB);
elseif x>(LA+LB) && x<=(LA+LB+LC)
dTdx = -(qxA/KC);
end
end

EJERCICIO PROB 1 DOC 13


clc, clear, format compact
% Ejercicio DAE (documento 13)
rangot = [0, 40*60];
% vari hi= 40 cm, fi= estimado = 0.1
vari = [40 0.1];
matriz_masa = [1 0; 0 0]; % poner cero a algebraica, 1 a diferencial
options = odeset('Mass', matriz_masa);
[t, var] = ode15s(@tanque, rangot, vari, options)
h = var(:,1);
tm = t./60;
figure (1)
plot(tm,h), xlabel('altura [cm]'), ylabel('tiempo [s]'), grid
function fun = tanque(t, var)
h = var(1);
f = var(2);
g = 981;
L = 80;
D1 = 30;
D2 = 0.575;
A1 = (pi*(D1^2))/4;
A2 = (pi*(D2^2))/4;
v2 = sqrt((2*g*h)/(1+(f*(L/D2))-(A2/A1)^2));
e = 0.000005;
p = 1;
u = 0.01;
Re = (D2*v2*p)/u;
fun(1) = -v2*(A2/A1);
fun(2) = (1/sqrt(f))+(2/2.3056)*log((e/(3.7*D2))+(2.51/(Re*sqrt(f))));
fun = fun';
end

PRACTICA DE EXAMEN 2 PROBLEMA 1


clc, clear, format compact
% Práctica examen 2 Problema 1
global P
Pvec = linspace(100, 150, 10);
for i = 1:10
P = Pvec(i);
V0 = [0.32 0.32 0.32];
[V(i,:), feval(i,:), flag(i)] = fsolve(@practexam2, V0)
end
function fun = practexam2(V)
global P
R = 0.08206;
T = 400;
% H2 N2 O2
Tc = [33.3 126.2 154.8];
Pc = [12.8 33.5 50.1];
a = (27./64).*((R^2.*Tc.^2)./Pc);
b = (R.*Tc)./(8.*Pc);
fun = (R.*T)-(((P+(a./V.^2)).*(V-b)));
end

PRACTICA DE EXAMEN 2 PROBLEMA 2


clc, clear, format compact
% Práctica examen 2 Problema 2
ti = [0 10];
vari = [1 0 1];
[t, var] = ode45(@practex2prob2, ti, vari)
x = var(:, 1);
S = var(:, 2);
P = var(:, 3);
figure(1)
subplot(3,1,1), plot(t, x), xlabel('tiempo [horas]'), ylabel('concentración de celulas'), grid
subplot(3,1,2), plot(t, S), xlabel('tiempo [horas]'), ylabel('concentración de sustrato'), grid
subplot(3,1,3), plot(t, P), xlabel('tiempo [horas]'), ylabel('concentración de producto'), grid
function dxdt = practex2prob2(t, var)
x = var(1);
S = var(2);
P = var(3);
um = 0.65;
Ks = 0.2;
K = 1.8;
a0 = 0.15;
V = 1;
F = 1;
S0 = 10;
B = 0.25;
Yxs = 0.3;
Yps = 0.4;
P0 = 0;
u = (um*S)/(Ks+S+(P/K));
a = a0/(1 +P);
rp = (a + B*u)*x;
rx = u*x;
rs = (u*x)/(Yxs);
dxdt(1) = -((F*x)/V)+rx;
dxdt(2) = ((F*(S0-S))/V)+(rs)-(rp/Yps);
dxdt(3) = ((F*(P0-P))/V)+rp;
dxdt = dxdt';
end

También podría gustarte