Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TERMODINÁMICA QUÍMICA II
I. Introducción
En termodinámica química el cálculo es una tarea que se lleva a cabo permanentemente, por
lo que cualquier herramienta que nos facilite la tarea que necesitamos llevar a cabo será de
gran utilidad de manera que se reduzca el tiempo en la realización de cálculo o manejo de
datos, con el fin de tener más tiempo disponible para otras tareas que lo requieran, por
supuesto que se debe hacer una inversión inicial de tiempo para poder llevar esto a cabo.
Entonces el objetivo de utilizar software en termodinámica es con el fin de facilitarnos las tareas
para el momento en que tengamos que hacer manejo de datos, presentación de resultados,
visualización de datos o tendencias, etc.
La herramienta que se utilizará para tal fin es scilab. Scilab es un software para análisis numérico,
con un lenguaje de programación de alto nivel para cálculo científico. Es desarrollado por
Scilab Enterprises, bajo la licencia CeCILL, compatible con la General Public License (GNU); es
decir es un software libre.
Las características de Scilab incluyen análisis numérico, visualización 2-D y 3-D, optimización,
análisis estadístico, diseño y análisis de sistemas dinámicos, procesamiento de señales, Java, C
y C++. Mientras que la herramienta Xcos permite una interfaz gráfica para el diseño de
modelos.
II. Objetivo
A continuación, se trabajarán las nociones básicas del uso de scilab para el cálculo,
manipulación y representación datos. Entre las capacidades que se esperan desarrollar en esta
sesión de práctica son las siguientes:
• Operaciones básicas
• Funciones
• Matrices
• Solución de ecuaciones
• Tablas de datos
• Gráficos
• Elementos de programación
III. Práctica
Para el desarrollo efectivo de esta sesión de práctica es preciso la revisión previa de los
contenidos de los archivos 1_conceptos_basicos.sce, 2_creacion_programas.sce,
3_manejo_funciones.sce.
1
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
V. Descarga e instalación
La versión actual es la 6.1.0 Tanto los binarios para varias plataformas (GNU/Linux, Mac OS X
and Windows XP/Vista/7/8/10) como las fuentes están disponibles en
http://www.scilab.org/download/latest.
2
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
3
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Pese haberlo instalado en español, el idioma con el que se presenta Scilab es inglés. Si se
prefiere que se presente el programa con otro idioma, en la barra de herramientas seleccionar:
Edit→Preferences→General→Lenguage setting→ (escoger idioma preferido)→Apply→ok.
Los cambios de idioma serán notorios la próxima vez que se ingrese a Scilab.
Scilab cuenta con numerosos “módulos” o “herramientas” que facilitan o mejoran la calidad
de los procesos y cálculos desarrollados en él. Para obtener estas herramientas y actualizarlas
se debe contar con conexión a internet y seguir los siguientes pasos: en la barra de tareas
seleccionar Aplicaciones→administrador de módulos-ATOMS→seleccionar carpeta donde se
aloja la herramienta por actualizar→ seleccionar herramienta→instalar.
Una vez instaladas las herramientas, se desplegará un mensaje para indicar que el proceso ha
finalizado. Para ejecutar los cambios, es necesario reiniciar Scilab.
Al entrar al programa Scilab, se desplegarán las ventanas por las que está constituida:
navegador de archivos-consola-explorador de variables-historial.
La consola será el centro de trabajo para cálculos inmediatos. En ella se desplegará un
mensaje como este:
Luego de load help, se destaca un “prompt” o símbolo de sistema que en este caso es: -- >.
Una vez aparece este símbolo, se indica que el programa está listo para recibir órdenes.
La escritura en Scilab es muy parecida a otros lenguajes de programación (especialmente a
MatLab). Toda la escritura en Scilab es numérica, realiza la computación con matrices.
4
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
5
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
6
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Para calcular una variable se va a introducir una ecuación de una forma muy parecida a como
se hace en Excel, sólo que se hace en una línea una vez descritas las variables. Así por ejemplo
se quiere calcular la presión de vapor con la ecuación de Antoine y calcular el volumen de un
gas ideal:
Las operaciones básicas con Scilab se escriben con: “+” para suma, “-“ para resta, “*” para
multiplicación, “/” para división y “^” para exponentes. Luego de escribir lo que se desea
ejecutar, para que Scilab lo resuelva, se debe presionar enter. El programa responderá en la
siguiente línea con “ans =” (“ans” corresponde a la palabra en inglés “answer”, es decir,
repsuesta), y en la línea siguiente el resultado de la operación. Por ejemplo:
---> 2+3.4
ans =
5.4
Si es necesario escribir números muy grandes o muy chicos se debe recurrir a la notación
científica. Por ejemplo, el número 5x1020, se escribe: 5e20 o bien 5d20. Lo mismo sucede con
números muy pequeños. El número 6x10-20, se escribe 6e-20 o bien 6d-20
Realice los siguientes cálculos: 2+3, 2*3, 2/3, 3-2, 2e3 y 3d-2
Una operación básica conocida, es la raíz cuadrada. En Scilab se desarrolla una raíz cuadrada
con el comando “sqrt”. Por ejemplo:
---> sqrt(4)
ans =
2
Realice las siguientes operaciones:
7
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Funciones definidas:
sin : seno
cos : coseno
tan : tangente
acos : arcocoseno
asin : arcoseno
atan : arcotangente
exp : exponencial
log : logaritmo en base e.
log10 : logaritmo en base 10.
Como en el caso de la raíz cuadrada, la notación es: sin (3) para calcular el seno del ángulo
de 3 radianes.
VIII. Funciones
• Los parámetros, que son los valores que recibe la función como entrada;
• El código de la función, que son las operaciones que hace la función;
• El resultado (o valor de retorno), que es el valor final que entrega la función.
8
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Ejemplo 1
Programación de la ecuación de Antoine para el cálculo de la presión de vapor de
sustancias puras.
function ()
endfunction
Estos comandos en rojo enmarcan el inicio y el final de la función, todas las operaciones
matemáticas requeridas se deben definir dentro del marco de estos comandos.
[psat]=Psat(A,B,C,T)
[psat] Indica la variable de salida, es decir, la variable donde se almacenará el valor que se
espera obtener de las operaciones realizadas por la función, si así se requiere, se pueden
utilizar tantas variables de salida como valores o cálculos intermedios se necesiten visualizar.
Psat() Es el nombre de la función, es importante recordar que scilab puede hacer distinción
entre minúsculas y mayúsculas.
(A,B,C,T) Son los argumentos de entrada. Estos argumentos son los valores o datos que se
requieren ingresar a fin de desarrollar las operaciones necesarias. Para este ejemplo en
cuestión estos parámetros representan las constantes de Antoine (A, B, C) para sustancia en
específico y la temperatura (T) a la cual se quiere evaluar la presión de saturación.
lnPsat=A-(B/(T-273.15+C))
psat=(exp(lnPsat)/100.0)
9
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
deff('[P]=f(A,B,C,T)',' P=[exp(A-(B/(T-273.15+C)))/100]')
La fila de código anterior tiene la función P que es función de A,B,C y T. La función deff( ) se
puede usar para definir funciones de secuencias de instrucciones escritas en cadenas de
texto, como funciones numéricas, su secuencia es deff(' [variables de salida] =f(parámetros)
','variable salida=función').
IX. Matrices
Ejemplo 2
Definición de una matriz
En este ejemplo se muestra cómo se almacenan una serie de valores en forma matricial en la
variable a. La matriz en scilab se define como los valores dentro de los corchetes [ ]. Scilab
identifica como elemento de una fila matriz a cada valor separado por un espacio sencillo. El
símbolo punto y coma (;) le indica a scilab el inicio de una nueva fila de valores. Es importante
recordar que para definir una matriz de m filas todas ellas deben de contener la misma
cantidad de elementos o columnas n.
10
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Para el caso cada fila generada tiene la siguiente sintaxis [i:di:n] en la cual cada termino se
interpreta de la siguiente forma: i indica el primer elemento de la fila, en el ejemplo el primer
elemento es 1. di indica el espaciamiento entre cada elemento de la fila para el caso mostrado
la diferencia entre cada elemento es 1. n es el valor máximo que puede tomar el último
elemento de la fila, es importante tomar en cuenta que el último elemento de la matriz puede
ser igual o no a este, en función del valor de di.
11
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
La sintaxis mostrada en la figura muestra el uso del comando size(), este comando se utiliza
cuando lo que se requiere es conocer las dimensiones de una matriz. Dichos valores se pueden
almacenar en diferentes variables tal como se muestra. En ejemplo de la matriz T, la cual es
unidimensional se puede observar que la cantidad de columnas que conforman el vector se
almacena en el primer elemento (m) de la matriz que se utiliza como variable de
almacenamiento [m n] y el segundo término n es la variable en la cual se almacena el valor
correspondiente a la cantidad de filas que conforma la matriz.
Otro comando que brinda otra propiedad de dimensión o tamaño de una matriz es el
comando length(). Este comando se utiliza cuando lo que interesa conocer es la cantidad total
de elementos que se almacenan en una determinada matriz. Básicamente brinda el producto
m x n.
X. Solución de ecuaciones.
Ecuaciones Lineales
Este apartado estará basado solamente para darle solución a todas las ecuaciones de tipo
lineal ya sea de dos o tres sistemas de ecuaciones. Supongamos que se tiene dos sistemas de
ecuaciones linealmente independientes de la siguiente manera:
5𝑥+3𝑦−6=0
−10𝑥+2𝑦−3=0
12
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Cabe destacar que la matriz puede agrandarse a medida se tenga “n” variables en una sola
ecuación siempre y cuando el orden de los exponentes de la variable sea uno.
Introducimos los datos en el editor del programa tal como aparece en la figura:
Se observa que se ha creado dos matrices, en el primer caso, la matriz tiene los valores
correspondientes a las variables de cada ecuación, en el segundo caso se incluye los valores
que no están acompañado de alguna variable; el (;) en una matriz indica el fin de una
ecuación dando espacio para el siguiente conjunto de datos correspondiente a la segunda
ecuación.
Para solucionar la matriz se utiliza el comando linsolve(M, N); se debe de tener en cuenta que
el argumento de la función debe nombrarse exactamente como se nombró la matriz, es decir
si se utiliza cualquier variable mayúscula y dentro del argumento de la función digitan una
variable minúscula, el programa les informará de un error de variable.
Linsolve[A, B]: variable de salida que se utiliza para solucionar ecuaciones lineales cuyas
funciones sean matriciales.
Una función interna para encontrar raíces de polinomios de grado n es hacer uso de la función
interna poly([an,…,a2,a1],'variable','coeff').
13
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Ejemplo 3
Programación de la ecuación de estado cúbica genérica de RK para el cálculo del volumen
de un vapor sobrecalentado.
eq=poly([a1,a2,a3,a4],'V','coeff') r=roots(eq);
V=real(r(1));
eq: Variable donde se almacena la ecuación polinómica a partir de la función interna poly, r:
Vector que captura las raíces presentes en el polinomio a través de la función interna roots , V:
Variable que captura la raíz de interés.
Ecuaciones no lineales
En ocasiones las ecuaciones a resolver no son ecuaciones lineales y para ello recurrimos al uso
de otras funciones internas como fsolve() cuya sintaxis es la siguiente.
14
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Ejemplo 4
Programación de la correlación del DIPPR para encontrar Temperatura de saturación
conocida la Presión de vapor.
Para imprimir tablas de datos podemos hacer uso de diferentes funciones internas una forma
sencilla de hacerlo es a través de llenado de matrices con la función for.
Ejemplo 5
Tabla con las columnas X, Y, Z donde Z e Y son funciones de X almacenadas en la matriz T
[X,Y,Z]
XII. Gráficos.
Los gráficos pueden construirse ya sea a partir de datos guardados en matrices o a través de
ecuaciones.
15
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Ejemplo 6
Si queremos graficar la tabla de datos que generamos en el ejemplo 5 solo debemos agregar
un ploteador plot(x, y) de puntos a nuestro código.
Dado que plot(x,y,”color”) debemos llamar a las columnas de nuestra matriz o tabla de
datos. En donde X es la variable independiente almacenada en la columna 1 de la matriz T[
], podemos ver el comportamiento de diferentes variables que son funciones de la misma por
lo que podemos graficarlas en un mismo eje de ordenadas. xlabel (“Nombre del eje”).
Ejemplo 7
En el caso que sean ecuaciones explicitas de la variable independiente, podemos definir un
rango para las abscisas, y definir la o las ecuaciones de una vez en el plot(x, [y1, y2, … , yn]) de
puntos para las ordenadas.
16
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Estructura if
Ejemplo 8
Estructura while
17
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Ejemplo 9
Estructura do while
Ejemplo 10
De manera semejante a la estructura while opera la estructura do while solo que en envés de
validar la variable hasta un valor de referencia y encontrar una solución el do while realiza
repetidas veces la misma operación hasta el valor límite de ejecución.
Estructura case
18
UES-FIA-ESCUELA DE INGENIERÍA QUÍMICA E INGENIERÍA DE ALIMENTOS
TERMODINÁMICA QUÍMICA II
Ejemplo 11
El uso de esta estructura facilita la ejecución de una acción cuando existen varias entre las que
se deben permitir hacer, pero solo se debe ejecutar una en particular, es decir se deben hacer
varias validaciones entre las opciones que se tienen para lo cual en vez de usar muchas
estructuras if en cascada mejor se hace a través de una sola estructura case.
19