Matlab - Sistema de ecuaciones no lineales

 
Vista:

Sistema de ecuaciones no lineales

Publicado por David (1 intervención) el 16/03/2017 19:29:04
Buenas tardes, estoy tratando de resolver un problema de Ingeniería Química en que consiste en encontrar los valores de Temperatura y Composicion en los cuales ciertas funciones son iguales a cero. El código que estoy usando es el siguiente:
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
function  f= AR(Xa)
    syms xc
    %liquido
    R=8.314;
    Keq=exp(-8314/(R*Xa(2)));
    Xbl=1-Xa(1);
    xal=Xa(1)*(1+xc)-xc;
    xbl=Xbl*(1+xc)-xc;
    f1=Keq-((xc)/(xal*xbl));
    xcl=solve(f1);
    xal=Xa(1)*(1+xcl)-xcl;
    xbl=Xbl*(1+xcl)-xcl;
    Pqal=log(xal);
    Pqbl=log(xbl);
 
    %Vapor
    Xbv=1-Xa(1);
    xav=Xa(1)*(1+xc)-xc;
    xbv=Xbv*(1+xc)-xc;
    Pasat=10^(11.187-(4068.457/(Xa(2)+392.722)));
    Pbsat=10^(8.02099-(1936.010/(Xa(2)+258.441)));
    Pcsat=10^(7.68849-(1669.898/(Xa(2)+211.8)));
    f2=Keq-((xc*(1/Pcsat))/((xav/Pasat)*(xbv/Pbsat)));
 
    xcv=solve(f2==0,xc);
    xav=Xa(1)*(1+xcv)-xcv;
    xbv=Xbv*(1+xcv)-xcv;
    Pqav=log(xav/Pasat);
    Pqbv=log(xbv/Pbsat);
 
    f(1)=Pqal-Pqav;
    f(2)=Pqbl-Pqbv;

Dentro de este código se requiere encontrar los valores de "xcl" y "xcv" que hagan cero las funciones "f1" y "f2" y después continuar con el método para encontrar Xa=[Composicion,Temperatura];
Espero que se entienda y que alguien me pueda apoyar.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Sistema de ecuaciones no lineales

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 16/03/2017 20:33:44
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
function f= AR(Xa)
if nargin==0
    Xa=20*rand(1,2)
end
syms xc
%liquido
R=8.314;
Keq=exp(-8314/(R*Xa(2)));
Xbl=1-Xa(1);
xal=Xa(1)*(1+xc)-xc;
xbl=Xbl*(1+xc)-xc;
f1=Keq-((xc)/(xal*xbl));
xcl=solve(f1);
xal=Xa(1)*(1+xcl)-xcl;
xbl=Xbl*(1+xcl)-xcl;
Pqal=log(xal);
Pqbl=log(xbl);
 
%Vapor
Xbv=1-Xa(1);
xav=Xa(1)*(1+xc)-xc;
xbv=Xbv*(1+xc)-xc;
Pasat=10^(11.187-(4068.457/(Xa(2)+392.722)));
Pbsat=10^(8.02099-(1936.010/(Xa(2)+258.441)));
Pcsat=10^(7.68849-(1669.898/(Xa(2)+211.8)));
f2=Keq-((xc*(1/Pcsat))/((xav/Pasat)*(xbv/Pbsat)));
 
xcv=solve(f2==0,xc);
xav=Xa(1)*(1+xcv)-xcv;
xbv=Xbv*(1+xcv)-xcv;
Pqav=log(xav/Pasat);
Pqbv=log(xbv/Pbsat);
f(1,:)=double(Pqal-Pqav);
f(2,:)=double(Pqbl-Pqbv);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>> f= AR
Xa =
   13.8966    6.3420
f =
   -1.5563    2.2842
   -2.2073    1.6332
>> f= AR
Xa =
   19.0044    0.6889
f =
    1.9468
    1.2660
 
 
>> Xa=rand(1,2)
Xa =
    0.4387    0.3816
>> f= AR(Xa)
f =
    1.9282
    1.2455

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar