Sunteți pe pagina 1din 32

UNIVERSIDAD NACIONAL DE

TRUJILLO
FACULTAD DE INGENIERIA QUIMICA

CURSO: MTODOS NUMRICOS


PROFESOR: DR. GUILLERMO
EVANGELISTA BENITES
CICLO: VI - A
TEMA: TERCER PARCIAL
INTEGRANTES:
- ALVARADO VARGAS,
ANGEL
- ANTON DIAZ, SERGIO
- CASTILLO RODRIGUEZ,
JOEL
- PAREDES BURGOS, JAVIER

TRUJILLO PERU

PROBLEMAS RESUELTOS
EJERCICIO 5.1:
Flujo dinmico en un tanque puede ser modelado haciendo un balance de
masa sobre el fluido en el tanque (Figura 5.10). La naturaleza del resultado
ODE-IVP depende del modelo utilizado para la vlvula de salida. Si una vlvula
lineal es

A = rea seccin
FIGURA 5.10: Flujo dinmico en un esquema
de tanque

Asumido, entonces el modelo ODE es lineal. Una descripcin ms precisa de la


vlvula hace que el flujo de salida sea una funcin no lineal de la altura. Ambos
casos se consideran en lo que sigue.
Balance de masa:

d ( masa en tanque a cualquier tiempo )


=entradasalida+ genera c ion
dt

Asuma un componente puro (nico) de fluido de densidad constante:


dV
=F entra F sale
dt

Donde:
=densidad

V =volume n

F=razon de flujo de mas a

En trminos de rea transversal y altura,


dAh
=F entra F sale
dt

donde la densidad y el rea son constantes.

dh F entra F sale
=
dt A

Fentra puede ser:

a.
b. Directamente proporcional a h: F sale =C , h en cuyo caso la ecuacin
del modelo es:

dh F entra C , h
=
dt A

1
2
c. Una funcin de h, como F sal e =C , h y el modelo se convierte en:

dh F entra C , h
=
dt A

Los datos adicionales pertinentes son los siguientes:

Dimetro del tanque 6 ft

Densidad del lquido 62.5 lb/ ft 3

Constante de la vlvula C v =250 lb/hft para el caso lineal .

Constante de la Vlvula C v =500 lb/hft 0.5 para el caso no lineal .

Altura inicial 4 ft

Fentra =1000 lb/h Flujo inicial de entrada en estado estacionario)

t=tiempo(h)
Fentra sufre un cambio en el tiempo 0+ a 1400lb /h hasta el tiempo 10h,

despus de lo cual retorna a 1000lb /h .

F
a. Resolver el lineal ODE ( sale proporcional a h) usando el mtodo de

Euler, empezar con una t de 0.5 y denuevo con t=0.05 para determinar

una t . Use IF function para generar los valores adecuados para


Fentra .

F
1
b. Repita la parte a para el caso no lineal ( sale proporcional a h 2 ).

SOLUCION
Para (a)
Usando el software MATLAB para resolver sistemas de ecuaciones
diferenciales se obtienen los siguientes resultados:
Graficas
Cdigo del programa
%% INGRESO DE DATOS1
xf=1; % valor al cual se desea conocer la func.

h=0.5;
xo=0; yo=4; %condicion inicial
i=0;
fprintf('\n\n\n\t\t\t\t MTODO DE RUNGE-KUTTA (RK-4)')
fprintf('\n\t\t\t\t===================================\n')
fprintf('\n\t\t\t\t\tpara dt = 0.5\n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \ti \t t(i) \tH(i) \n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
N=(xf-xo)/h;
if xf==0
f=inline('0*x+1000/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
elseif xf>0 & xf<=10
f=inline('0*x+1400/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
elseif xf>10
f=inline('0*x+1000/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
end
x1=zeros(1,length(N));
x1(1,1)=xo;
y1=zeros(1,length(N));
y1(1,1)=yo;
while i<N
k1=f(xo,yo);
k2=f(xo+h/2,yo+h*k1/2);
k3=f(xo+h/2,yo+h*k2/2);
k4=f(xo+h,yo+h*k3);
yo=yo+h/6*(k1+2*k2+2*k3+k4);
xo=xo+h;
i=i+1;
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
x1(1,i+1)=xo;
y1(1,i+1)=yo;
end
fprintf('\t\t\t\t-----------------------------\n')
xx=0:h:xf;
[T,Y]=ode45(f,xx,4);
x_analit=Y(end);
ERP=(abs(yo-x_analit))/x_analit*100;
fprintf('\t\t\t\t El error = %6.4e\n',ERP)
subplot(2,2,1);
plot(x1,y1,'ro-')
xlabel('t'); ylabel('H')
title('dt=0.5');grid
hold on
plot(T,Y,'b')
legend('Runge-kuta','ode45')
%=======================================
xf=1; % valor al cual se desea conocer la func.

h=0.05;
xo=0; yo=4; %condicion inicial
i=0;
fprintf('\n\n\t\t\t\t\tpara dt = 0.05\n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \ti \t t(i) \tH(i) \n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
N=(xf-xo)/h;
if xf==0
f=inline('0*x+1000/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
elseif xf>0 & xf<=10
f=inline('0*x+1400/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
elseif xf>10
f=inline('0*x+1000/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
end
x1=zeros(1,length(N));
x1(1,1)=xo;
y1=zeros(1,length(N));
y1(1,1)=yo;
while i<N
k1=f(xo,yo);
k2=f(xo+h/2,yo+h*k1/2);
k3=f(xo+h/2,yo+h*k2/2);
k4=f(xo+h,yo+h*k3);
yo=yo+h/6*(k1+2*k2+2*k3+k4);
xo=xo+h;
i=i+1;
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
x1(1,i+1)=xo;
y1(1,i+1)=yo;
end
fprintf('\t\t\t\t-----------------------------\n')
xx=0:h:xf;
[T,Y]=ode45(f,xx,4);
x_analit=Y(end);
ERP=(abs(yo-x_analit))/x_analit*100;
fprintf('\t\t\t\t El error = %6.4e\n',ERP)
subplot(2,2,2);
plot(x1,y1,'ro-')
xlabel('t'); ylabel('H')
title('dt=0.05');grid
hold on
plot(T,Y,'b')
legend('Runge-kuta','ode45')
%=================================================
xf=1; % valor al cual se desea conocer la func.

h=0.05;
xo=0; yo=4; %condicion inicial
i=0;
fprintf('\n\n\t\t\t\t\tpara dt = 0.005\n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \ti \t t(i) \tH(i) \n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
N=(xf-xo)/h;
if xf==0
f=inline('0*x+1000/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
elseif xf>0 & xf<=10
f=inline('0*x+1400/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
elseif xf>10
f=inline('0*x+1000/(3.1416*62.5*9)-250/
(3.1416*62.5*9)*y','x','y');
end
x1=zeros(1,length(N));
x1(1,1)=xo;
y1=zeros(1,length(N));
y1(1,1)=yo;
while i<N
k1=f(xo,yo);
k2=f(xo+h/2,yo+h*k1/2);
k3=f(xo+h/2,yo+h*k2/2);
k4=f(xo+h,yo+h*k3);
yo=yo+h/6*(k1+2*k2+2*k3+k4);
xo=xo+h;
i=i+1;
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
x1(1,i+1)=xo;
y1(1,i+1)=yo;
end
fprintf('\t\t\t\t-----------------------------\n')
xx=0:h:xf;
[T,Y]=ode45(f,xx,4);
x_analit=Y(end);
ERP=(abs(yo-x_analit))/x_analit*100;
fprintf('\t\t\t\t El error = %6.4e\n',ERP)
subplot(2,2,3);
plot(x1,y1,'ro-')
xlabel('t'); ylabel('H')
title('dt=0.005');grid
hold on
plot(T,Y,'b')
legend('Runge-kuta','ode45')
disp('El valor para dt = 0.005')
Para (b)
Usando el software Polymath para resolver sistemas de ecuaciones
diferenciales se obtienen los siguientes resultados:
Cdigo del programa:
A = 3.1416 * D ^ 2 / 4 # area
D = 6 # diametro del cilindro
t(0) = 0
t(f) = 0.85
Cv = 250 # valor para enunciado a
F = 1400 # para el valor de 0<t<=10
p = 62.5 # densidad del fluido
d(h)/d(t) = (F - Cv * sqrt(h)) / (p * A) # ecuacion para enunciado a
h(0) = 4

Usando el software MATLAB para resolver sistemas de ecuaciones


diferenciales se obtienen los siguientes resultados:
Graficas

Cdigo del programa:

%% INGRESO DE DATOS1
xf=1; % valor al cual se desea conocer la func.

h=0.5;
xo=0; yo=4; %condicion inicial
i=0;
fprintf('\n\n\n\t\t\t\t MTODO DE RUNGE-KUTTA (RK-4)')
fprintf('\n\t\t\t\t===================================\n')
fprintf('\t\t\t\t\tpara dt = 0.5\n')
fprintf('\n\t\t\t\t------------------------------\n')
fprintf('\t\t\t \ti \t t(i) \tH(i) \n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
N=(xf-xo)/h;
if xf==0
f=inline('0*x+1000/(3.1416*62.5*9)-500/
(3.1416*62.5*9)*y^0.5','x','y');
elseif xf>0 & xf<=10
f=inline('0*x+1400/(3.1416*62.5*9)-500/
(3.1416*62.5*9)*y^0.5','x','y');
elseif xf>10
f=inline('0*x+1000/(3.1416*62.5*9)-500/
(3.1416*62.5*9)*y^0.5','x','y');
end
x1=zeros(1,length(N));
x1(1,1)=xo;
y1=zeros(1,length(N));
y1(1,1)=yo;
while i<N
k1=f(xo,yo);
k2=f(xo+h/2,yo+h*k1/2);
k3=f(xo+h/2,yo+h*k2/2);
k4=f(xo+h,yo+h*k3);
yo=yo+h/6*(k1+2*k2+2*k3+k4);
xo=xo+h;
i=i+1;
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
x1(1,i+1)=xo;
y1(1,i+1)=yo;
end
fprintf('\t\t\t\t-----------------------------\n')
xx=0:h:xf;
[T,Y]=ode45(f,xx,4);
x_analit=Y(end);
ERP=(abs(yo-x_analit))/x_analit*100;
fprintf('\t\t\t\t El error = %6.4e\n',ERP)
subplot(1,2,1);
plot(x1,y1,'ro-')
xlabel('t'); ylabel('H')
title('dt=0.5');grid
hold on
plot(T,Y,'b')
legend('Runge-kuta','ode45')
%=======================================
xf=1; % valor al cual se desea conocer la func.

h=0.05;
xo=0; yo=4; %condicion inicial
i=0;
fprintf('\n\t\t\t\t\tpara dt = 0.05\n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \ti \t t(i) \tH(i) \n')
fprintf('\t\t\t\t------------------------------\n')
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
N=(xf-xo)/h;
if xf==0
f=inline('0*x+1000/(3.1416*62.5*9)-500/
(3.1416*62.5*9)*y^0.5','x','y');
elseif xf>0 & xf<=10
f=inline('0*x+1400/(3.1416*62.5*9)-500/
(3.1416*62.5*9)*y^0.5','x','y');
elseif xf>10
f=inline('0*x+1000/(3.1416*62.5*9)-500/
(3.1416*62.5*9)*y^0.5','x','y');
end
x1=zeros(1,length(N));
x1(1,1)=xo;
y1=zeros(1,length(N));
y1(1,1)=yo;
while i<N
k1=f(xo,yo);
k2=f(xo+h/2,yo+h*k1/2);
k3=f(xo+h/2,yo+h*k2/2);
k4=f(xo+h,yo+h*k3);
yo=yo+h/6*(k1+2*k2+2*k3+k4);
xo=xo+h;
i=i+1;
fprintf('\t\t\t \t%2d \t%6.4f \t%8.6f\n',i,xo,yo)
x1(1,i+1)=xo;
y1(1,i+1)=yo;
end
fprintf('\t\t\t\t-----------------------------\n')
xx=0:h:xf;
[T,Y]=ode45(f,xx,4);
x_analit=Y(end);
ERP=(abs(yo-x_analit))/x_analit*100;
fprintf('\t\t\t\t El error = %6.4e\n',ERP)
subplot(1,2,2);
plot(x1,y1,'ro-')
xlabel('t'); ylabel('H')
title('dt=0.05');grid
hold on
plot(T,Y,'b')
legend('Runge-kuta','ode45')
disp('el valor adecuado para dt = 0.05')
EJERCICIO 5.4
Supongamos que las siguientes reacciones qumicas tienen lugar en un
reactor continuo de tanque agitado (CSTR):
A k 1B

Donde las constantes de velocidad son las siguientes:

k 1=1 min1 , k 2=0.5 min1

La carga al reactor es todo el componente A, as que inicialmente, las


concentraciones dentro del reactor son
C A 0=1 C B 0=0(gmol / L)

Un balance de masa de estado inestable en cada componente conduce


al siguiente conjunto de ODEs:
dCA
=k 1 C A + k 2 C B
dt

d CB
=k 1 C Ak 2 C B
dt

Resolver este sistema ODE-IVP utilizando el mtodo de Euler en Excel


con un paso de tiempo de 0,1 min y repetir con un paso de tiempo de
0,01 min. Si se produce una diferencia significativa (comparar los valores
en un momento especfico para ver si son diferentes), repetir a con un
paso de tiempo de 0,001, etc. hasta que se encuentre un paso de
tiempo satisfactorio. Integrar a tiempo = 2 min. Graficar la solucin en
cada caso y compararlas. Reporte la diferencia porcentual en las
soluciones a tiempo = 1 min.
Realice experimentos cambiando las constantes de velocidad en una de
las soluciones para ver cmo Excel recalcula inmediatamente las
soluciones y actualiza la grfica.

SOLUCION
Usando el software Polymath para resolver sistemas de ecuaciones
diferenciales se obtienen los siguientes resultados:

Con paso de t = 0.1min.


C A =0.36652 gmol/ L

C B=0.63347 gmol /L

Con paso de t = 0.01min.

C A =0.36652 gmol/ L

C B=0.63347 gmol /L
Grafica

Usando el software MATLAB para resolver sistemas de ecuaciones


diferenciales se obtienen los siguientes resultados:
Grafica
Con paso de t = 0.01min.
C A =0.36652 gmol/ L
C B=0.63348 gmol /L

Grafica
Cdigo del programa:

function z = E54(f,g,CA,CB,t,h)
u1=h*eval('f(t,CA,CB)');
v1=h*eval('g(t,CA,CB)');
u2=h*eval('f(t+h/2,CA+u1/2,CB+v1/2)');
v2=h*eval('g(t+h/2,CA+u1/2,CB+v1/2)');
u3=h*eval('f(t+h/2,CA+u2/2,CB+v2/2)');
v3=h*eval('g(t+h/2,CA+u2/2,CB+v2/2)');
u4=h*eval('f(t+h,CA+u3,CB+v3)');
v4=h*eval('g(t+h,CA+u3,CB+v3)');
f1=CA+(1/6)*(u1+2*u2+2*u3+u4);
g1=CB+(1/6)*(v1+2*v2+2*v3+v4);
z=[f1,g1];
clc ,clear all
fprintf('********************************************\n')
fprintf('*\tCURSO: METODOS NUMERICOS \t*\n')
fprintf('*\tPROFESOR: Dr. Guillermo Evangelista B.\t*\n')
fprintf('*\tRESOLUCION DEL EJERCICIO 5.4 \t*\n')
fprintf('********************************************\n\n')
A=inline('-CA+(0.5*CB)','t','CA','CB');
B=inline('CA-(0.5*CB)','t','CA','CB');
t0=0;
tf=2;
h=0.01;
t=t0;
CA0=1.0;
CB0=0;
m = E54(A,B,CA0,CB0,t,h);
tab = [t,m];
n=m;
while(t<tf)
CA0=m(1);
CB0=m(2);
t=t+h;
tab=[tab;t,CA0,CB0];
m = E54(A,B,CA0,CB0,t,h);
n = [n;m];
end
tab;
fprintf('\t--------------------------------\n')
fprintf('\t\t t CA CB\n')
fprintf('\t--------------------------------\n')
fprintf('\t%8.2f %10.5f %10.5f\n',tab')
fprintf('\t--------------------------------\n')
u=0:h:tf;
plot(u',n)
title('CONCENTRACION vs TIEMPO','color','b')
xlabel('Tiempo, t','color','b')
ylabel('Concentracion, C,','color','b')
text(0.35,0.8,'CA','color','r');text(0.3,0.35,'CB','color','r
');
legend('CA: con paso de t= 0.01min','CB: con paso de t =
0.01min')
grid on

EJERCICIO 5.9:
Fermentacin con Penicilina
Un modelo para un reactor discontinuo en el que la penicilina se produce
por fermentacin se ha derivado de la siguiente manera
(constantantinides et al.1970) para la produccin celular y la sntesis de
penicilina, respectivamente:
d y1 b
=b1 y 1 1 y 12 y1 ( 0 ) =0.03
dt b2

d y2
=b3 y 1 y2 ( 0 ) =0.0
dt

Donde
y 1= Concentracin adimensional de la masa celular

y 2= Concentracin adimensional de la penicilina

t=tiempo adimensional , 0 t 1

Los experimentos han determinado que:

b1=13.1

b2=0.94

b3 =1.71

a. Resolver este ODE-IVP utilizando el mtodo de Euler y Excel (no


VBA).
b. Resolver este ODE-IVP utilizando el mtodo RK de segundo orden y
Excel (no VBA)
c. Resolver este ODE-IVP usando el programa Euler VBA como se da
en el ejemplo 5.7.
d. Resolver este ODE-IVP utilizando el segundo orden RK VBA
programa de ejercicio 5.8.
En todos los casos, experimente con el paso del tiempo para asegurar
una solucin exacta.

Tambin, grfica y 1 y y2 en funcin del tiempo con anotaciones


apropiadas.

SOLUCION
B.-Usando el mtodo de Runge-Kutta 2 orden
Usando el software Polymath para resolver sistemas de ecuaciones
diferenciales se obtienen los siguientes resultados:
y 1=0.939942

y 2=1.184737
Grafica

Cdigo del programa:


o Usando el software matlab se obtienen los siguientes resultados
Cdigo matlab:
clc, clear all
fprintf('\t********************************************\n')
fprintf('\t*\tCURSO: METODOS NUMERICOS \t*\n')
fprintf('\t*\tPROFESOR: Dr. Guillermo Evangelista B.\t*\n')
fprintf('\t*\tRESOLUCION DEL EJERCICIO 5.9 \t*\n')
fprintf('\t********************************************\n\n')
fprintf('\t Parte (a)\n')
format short
f=inline('[13.1*y(1)-
((13.1/0.94)*y(1)^2);1.71*y(1)]','t','y');
[t,y]=ode23(f,[0:0.0025:1],[0.03 0]);
tab=[t,y];
fprintf('\t\tMETODO DE RUNGE-KUTTA 2 ORDEN\n')
fprintf('\t-----------------------------------\n')
fprintf('\t\t t y1 y2\n')
fprintf('\t-----------------------------------\n')
fprintf('\t%8.4f %10.5f %10.5f\n',tab')
fprintf('\t-----------------------------------\n\n')
plot(t,y(:,1),'-r',t,y(:,2),'-b','LineWidth',1)
title('Fermentacion con penicilina')
xlabel('Tiempo, t')
ylabel('Concentracin, y')
text(0.35,0.8,'y1','color','m');text(0.3,0.2,'y2','color','m'
);
legend('y1: Concentracion de la masa celular RK-2','y2:
Concentracion de la penicilina RK-2')
grid on

Usando este software se obtienen los siguientes resultados


y 1=0.93999

y 2=1.18453
Grafica

D.- Usando el mtodo Runge-Kutta 4 orden

Cdigo del programa:


g=inline('[13.1*y(1)-
((13.1/0.94)*y(1)^2);1.71*y(1)]','t','y');
[t,y]=ode45(g,[0:0.0025:1],[0.03 0]);
tab1=[t,y];
fprintf('\t Parte (b)\n')
fprintf('\t\tMETODO DE RUNGE-KUTTA 4 ORDEN\n')
fprintf('\t-----------------------------------\n')
fprintf('\t\t t y1 y2\n')
fprintf('\t-----------------------------------\n')
fprintf('\t%8.4f %10.5f %10.5f\n',tab1')
fprintf('\t-----------------------------------\n\n')
hold on
plot(t,y(:,1),'-g',t,y(:,2),'-m','LineWidth',1)
title('Fermentacion con penicilina')
xlabel('Tiempo, t')
ylabel('Concentracin, y')
text(0.35,0.8,'y1','color','m');text(0.3,0.2,'y2','color','m'
);
legend('y1: Concentracion de la masa celular RK-2','y2:
Concentracion de la penicilina RK-2','y1: Concentracion de la
masa celular Rk-4','y2: Concentracion de la penicilina RK-4')

Usando este software se obtienen los siguientes resultados


y 1=0.93994

y 2=1.18485
Grafica

EJERCICIO 5.10:
Cintica de Bioreacciones
El modelo "Monod" para la cintica de bioreaccin puede expresarse
como:
ds ksx
=
dt k s+ s

s ( 0 )=s0 x ( 0 )=x 0

dx ksx
=y bx
dt ks + s

Donde:

s=Concentracin de sustratolimitante del crecimiento( ML3)

x=concentracion de biomasa( ML3 )

k =Velocidd de comsumo maxima del sustrato ( T 1 )=5

k s=Constante de media saturacin para el crecimiento ( ML3 )=20

y=coeficiente de rendimiento ( MM1 )=0.05

b=coeficiente de decaimiento ( T 1 ) =0.01

Las condiciones iniciales son s 0=1000 y x0 =100

a. Resolver este ODE-IVP utilizando el mtodo de Euler y Excel (no


VBA).
b. Resolver este ODE-IVP utilizando el mtodo RK de segundo orden y
Excel (no VBA)
c. Resolver este ODE-IVP usando el programa Euler VBA como se da
en el ejemplo 5.7.
d. Resolver este ODE-IVP utilizando el segundo orden RK VBA
programa de ejercicio 5.8.
Un tiempo mximo apropiado para integrar estas ecuaciones debe ser
determinado por experimentacin. Tambin, experimente con el paso del
tiempo para garantizar buenos resultados. Grfique s y x en
funcin del tiempo con las anotaciones apropiadas (hacer esto con datos
para slo un paso de tiempo apropiado).
SOLUCION

Usando el software Polymath para resolver sistemas de ecuaciones


diferenciales se obtienen los siguientes resultados:

Grafica
Para (a)
Usando el software MATLAB para resolver sistemas de ecuaciones
diferenciales se obtienen los siguientes resultados:

Grafica
Cdigo del programa:
function [t,y,x]=euler(f1,f2,t0,tf,y0,x0,n)
h = (tf-t0)/n;
t = t0:h:tf;
x(1)=x0;
y(1)=y0;
for i=1:n
x(i+1)=x(i)+h*f1(x(i),y(i));
y(i+1)=y(i)+h*f2(x(i),y(i));
end

f1=@(x,y) 0.05*x*y/(20+y);
f2=@(x,y) -5*y*x/(20+y);
[t,y,x]=euler(f1,f2,0,2,1000,100,15);
hold on
plot(t,x,'b')
plot(t,y,'r')
xlabel('t')
ylabel('x,s')
axis([0 2 0 1000])
title('sistema de ecuaciones diferenciales')
hold off
grid
tab=[t',y',x'];
fprintf('\t\tMETODO DE EULER\n')
fprintf('\t-----------------------------------\n')
fprintf('\t\t t s x\n')
fprintf('\t-----------------------------------\n')
fprintf('\t%8.4f %10.5f %10.5f\n',tab')
fprintf('\nse observa en la grafica que para un tiempo aproximadamente de
t=2h nos garantiza\n')
fprintf('una buena conversion de la biorreaccion.\n')

Para (b)
Usando el software MATLAB para resolver sistemas de ecuaciones
diferenciales se obtienen los siguientes resultados:
Grafica
Cdigo del programa

y0(1)=100;
y0(2)=1000;
tspan=[0 2];
fg=@(t,y) [0.05*y(1)*y(2)/(20+y(2));-5*y(2)*y(1)/(20+y(2))];
[t,y]=ode23(fg,tspan,y0);
tab=[t,y];
fprintf('\t\tMETODO DE RUNGE-KUTTA 2 ORDEN\n')
fprintf('\t-----------------------------------\n')
fprintf('\t\t t x s\n')
fprintf('\t-----------------------------------\n')
fprintf('\t%8.4f %10.5f %10.5f\n',tab')
fprintf('\t-----------------------------------\n\n')
plot(t,y(:,1),'-r',t,y(:,2),'-b','LineWidth',1)
title('bioreaccion')
xlabel('Tiempo, t')
ylabel('Concentracin,x, s')
fprintf('\nse observa en la grafica que para un tiempo aproximadamente de
t=2h nos garantiza\n')
fprintf('una buena conversion de la biorreaccion.\n')

BIBLIOGRAFIA
Chapra, S. y Canale, R. 2015. Mtodos numricos para ingenieros.
Sptima Edicin.McGraw-Hill/Interamericana Editores, S.A. de C.V.
Mxico

Nieves, A. y Domnguez, F. 2012. Mtodos Numricos Aplicados a


la Ingeniera. Cuarta Edicin. Grupo Editorial Patria, S.A. de C. V.
Mxico.

S-ar putea să vă placă și