[go: up one dir, main page]

0% encontró este documento útil (0 votos)
87 vistas11 páginas

Cardano Vietta

Este programa aplica el método Cardano-Vietta para hallar las raíces de una función cúbica derivada de la ecuación de estado de Redlich-Kwong, recorriendo temperaturas a presión fija y variando luego la presión. Inicialmente contenía errores en la definición de variables y en el cálculo del ángulo, pero fue corregido para tabular correctamente las raíces encontradas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
87 vistas11 páginas

Cardano Vietta

Este programa aplica el método Cardano-Vietta para hallar las raíces de una función cúbica derivada de la ecuación de estado de Redlich-Kwong, recorriendo temperaturas a presión fija y variando luego la presión. Inicialmente contenía errores en la definición de variables y en el cálculo del ángulo, pero fue corregido para tabular correctamente las raíces encontradas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

CARDANO VIETTA

Este programa fue diseñado para aplicar el método Cardano-Vietta con el fin
de hallar las raíces de una función cubica de volumen, la cual fue
determinada a partir de la ecuación de gas real de Redlich-Wkong.

Aquí se recorre las temperaturas manteniendo una presión fija, una vez
termina un recorrido de temperaturas, cambia el valor de la presión en
aumento; las unidades fueron tomadas consistentes para R con unidades de
bar*m3/mol*K.

Este programa es la versión final obtenida, a diferencia del anterior


intento, este no contiene restricciones para la creación de una matriz (en la
que se tabulan las tres raíces a correspondientes presiones y temperaturas),
sin embargo, estas restricciones no fueron necesarias puesto que todas las
raíces obtenidas fueron positivas. El cambio efectuado para esta última
versión fue definir a “a” y a “b” como constantes numéricas precalculadas y
definir a “R’ con las unidades anteriormente mencionadas, en este sentido, no
fue necesario mantener la definición de P crítica y T critica dentro del
programa.

Al final se presenta una matriz de 5 columnas mostrando, respectivamente, las


tres raíces halladas (X1, X2 y X3), la presión correspondiente a las raíces,
y las temperaturas correspondientes; todos los valores se presentan en
notación científica de (10-2).
Para su graficación, se tomaron en el eje “x” los valores de las dos raíces
más convenientes y en el eje “y” los valores de las presiones hasta 204.5
bar.

clc;
i=0;

for P=20:4.1:225
i=(i+1);
for T=298:4.02:700

R=0.00008314472;
a= 0.000005526914954;
b=0.00002081832548;
A1=(-((R*T)/P));
A2=(-(((P*((b)^2))+(R*T*b)-a)/P));
A3=(-((a*b)/P));

Q=(((A1^2)-(3*A2))/9);
M=(((2*(A1^3))-(9*A1*A2)+(27*A3))/54);

c= ((Q^3)-(M^2));
k=(atan(sqrt(((Q^3)/(M^2))-1)));
if c>=0
if M>0

X1=((-2)*sqrt(Q)*(cos(k/3))-(A1/3));
X2=((-2)*sqrt(Q)*(cos((k+(2*pi))/3))-(A1/3));
X3=((-2)*sqrt(Q)*(cos((k+(4*pi))/3))-(A1/3));
dT=(T*1);
end
if M<0
X1=(2*sqrt(Q)*(cos(k/3))-(A1/3));
X2=(2*sqrt(Q)*(cos((k+(2*pi))/3))-(A1/3));
X3=(2*sqrt(Q)*(cos((k+(4*pi))/3))-(A1/3));
dT=(T*1);

end
else

if M>0
q=1;
end
if M<0
q=(-1);
end
X= (((-q)*(((sqrt((M^2)-(Q^3))+(abs(M)))^(1/3))+(Q/(((sqrt((M^2)-
(Q^3)))+(abs(M)))^(1/3)))))-(A1/3));

end

end
m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;
m(i,5)=dT;

end
format long
m

2.5

1.5

0.5

0
0 0.000005 0.00001 0.000015 0.00002 0.000025
2.5

1.5

0.5

0
0 0.000005 0.00001 0.000015 0.00002 0.000025

Aquí se recorre las temperaturas manteniendo una presión fija, una vez
termina un recorrido de temperaturas, cambia el valor de la presión en
aumento; las unidades fueron tomadas del SI.
Este programa solo acepta producir la matriz final (en la que se tabulan los
pares de raíces y sus presiones) si se obtienen por lo menos dos raíces
positivas, en tal caso, se definiría el valor de la isoterma para las raíces
que cumplen la condición en esta presión. Sin embargo, no se arroja una
matriz debido a que no se encuentran dos raíces positivas.

clc;
Tc=658.416405;
Pc=22500;
i=0;
for P=2000:410:22500
i=(i+1);
for T=298:4.02:700

R=8.3144598;
a=((0.42748*(((R^2)*(Tc^2.5))/(Pc*(T^2.5)))));
b=0.02108;
A1=(-((R*T)/P));
A2=(-(((P*((b)^2))+(R*T*b)-a)/P));
A3=(-((a*b)/P));

Q=(((A1^2)-(3*A2))/9);
M=(((2*(A1^3))-(9*A1*A2)+(27*A3))/54);

c= ((Q^3)-(M^2));
k=(atan(sqrt(((Q^3)/(M^2))-1)));
if c>=0
if M>0

X1=((-2)*sqrt(Q)*(cos(k/3))-(A1/3));
X2=((-2)*sqrt(Q)*(cos((k+(2*pi))/3))-(A1/3));
X3=((-2)*sqrt(Q)*(cos((k+(4*pi))/3))-(A1/3));

if X2>0 && X3>0


m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;
dT=(T*1);
m(i,5)=dT;
end
if X1>=0 && X3>=0
m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;
dT=(T*1);
m(i,5)=dT;
end
if X1>=0 && X2>=0
m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;
dT=(T*1);
m(i,5)=dT;
end

end
if M<0
X1=(2*sqrt(Q)*(cos(k/3))-(A1/3));
X2=(2*sqrt(Q)*(cos((k+(2*pi))/3))-(A1/3));
X3=(2*sqrt(Q)*(cos((k+(4*pi))/3))-(A1/3));
if X2>0 && X3>0
m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;
dT=(T*1);
m(i,5)=dT;
end
if X1>=0 && X3>=0
m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;
dT=(T*1);
m(i,5)=dT;
end
if X1>=0 && X2>=0
m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;
dT=(T*1);
m(i,5)=dT;
end

end
end

if c<0
if M>0
q=1;
end
if M<0
q=(-1);
end
X= (((-q)*(((sqrt((M^2)-(Q^3))+(abs(M)))^(1/3))+(Q/(((sqrt((M^2)-
(Q^3)))+(abs(M)))^(1/3)))))-(A1/3));

end

end
end
format long
m

Este programa fue el último intento funcional para la aplicación del método Cardano-Vietta; ya se han
hecho aquí las correcciones correspondientes al uso de la función atan. Este programa hace un recorrido
de presiones con recorrido interno de temperaturas, pero toma siempre la última temperatura del
recorrido(Tc) para hallar las raíces de la función cuadrática, dos de las cuales son negativas. Esto ocurre
al no tener criterios que discriminen raíces tomadas para la matriz.
clc;
Tc=658.416405;
Pc=22500;
i=0;
for P=2000:410:22500
i=(i+1);
for T=298:4.02:700

R=8.3144598;
a=((0.42748*(((R^2)*(Tc^2.5))/(Pc*(T^2.5)))));
b=0.02108;
A1=(-((R*T)/P));
A2=(-(((P*((b)^2))+(R*T*b)-a)/P));
A3=(-((a*b)/P));

Q=(((A1^2)-(3*A2))/9);
M=(((2*(A1^3))-(9*A1*A2)+(27*A3))/54);
c= ((Q^3)-(M^2));
k=(atan(sqrt(((Q^3)/(M^2))-1)));
if c>=0
if M>0

X1=((-2)*sqrt(Q)*(cos(k/3))-(A1/3));
X2=((-2)*sqrt(Q)*(cos((k+(2*pi))/3))-(A1/3));
X3=((-2)*sqrt(Q)*(cos((k+(4*pi))/3))-(A1/3));

end
if M<0
X1=(2*sqrt(Q)*(cos(k/3))-(A1/3));
X2=(2*sqrt(Q)*(cos((k+(2*pi))/3))-(A1/3));
X3=(2*sqrt(Q)*(cos((k+(4*pi))/3))-(A1/3));

end
end

if c<0
if M>0
q=1;
end
if M<0
q=(-1);
end
X= (((-q)*(((sqrt((M^2)-(Q^3))+(abs(M)))^(1/3))+(Q/(((sqrt((M^2)-
(Q^3)))+(abs(M)))^(1/3)))))-(A1/3));

end

end
m(i,1)=X1;
m(i,2)=X2;
m(i,3)=X3;
m(i,4)=P;

end
format long

m
A continuacion, la ultima columna de la matriz reportada en command window,
registra que la temperatura guarada para los calculos de las raices es la Tc,
ya que no se tienen restricciones para la aceptacion de raices.
----------------------------------------------------------------------------------------------------------------------------------

Inicialmente y por error, se usó la función acot para el cálculo de del ángulo teta; a continuación, se
muestran las gráficas que se obtuvieron y la posterior corrección del cálculo de teta en el programa.
El siguiente es el primer error en el proceso del diseño del programa, del cual se tiene registro. En un
principio, se definió “a” como una constante del agua, pero, al tener en cuenta el recorrido de las
temperaturas se determinó la dependencia de “a” hacia T y se reemplazó su valor fijo por la fórmula que
lo define.

También podría gustarte