En este capítulo se aplican los métodos estudiados en los capítulos anteriores, para resolver algunos problemas prácticos.
La ecuación para calcular la cuota fija periódica "C", que debe ser cancelada para honrar una deuda "P", a una tasa de interés "i", durante un número de periodos "n", se calcula con la ecuación:
\[ C = \dfrac{P\cdot i}{1-\dfrac{1}{(1+i)^n}} \] |
El cálculo de la cuota fija "C", es directo, pero el cálculo del interés "i" es iterativo (porque la variable no puede ser despejada de la ecuación). Por lo tanto el problema se reduce a resolver una ecuación no lineal con una incógnita ("i").
Sin embargo, si bien la ecuación depende de una sola incógnita: "i", requiere también los valores de las otras variables: "P", "C" y "n", que son valores conocidos para un caso específico, pero que son diferentes para otros casos, razón por la cual deben ser recibidos como parámetros en la función.
La forma más práctica de resolver el problema, consiste en programar la ecuación como una función que reciba, como parámetro por valor, la incógnita "i" (el interés) y como parámetros nombrados con valores por defecto: "P", "C" y "n".
Dentro de la función, se programa la ecuación igualada a cero:
\[ \operatorname{f}(i) = C - \dfrac{P\cdot i}{1-\dfrac{1}{(1+i)^n}}=0 \] |
Es posible programar esta ecuación, como una función de una incógnita, porque los valores de "C", "P" y "n" ya han sido recibidos (como parámetros nombrados) en la función principal y al ser una ecuación no lineal con una incógnita, puede ser resuelta con cualquiera de los métodos estudiados previamente.
En la solución de problemas prácticos, es conveniente contar con valores iniciales próximos a la solución. En este caso, un valor inicial adecuado es el interés simple (no compuesto) para el mismo periodo, es decir el monto de interés cancelado durante ese periodo (n∗C-P), dividido entre el préstamo recibido (P) y entre el número de periodos (n), es decir:
\[ \dfrac{n\cdot C-P}{n\cdot P} \] |
En la aplicación práctica de esta ecuación, es de mayor utilidad el interés anual porcentual, que el interés periódico mensual, razón por la cual, la siguiente función, devuelve el interés anual porcentual, redondeado al segundo dígito después del punto:
Se ha trabajado con una precisión/exactitud de 9 dígitos, porque en este caso no se requiere un resultado de mayor precisión (en los cálculos económicos/financieros sólo es de utilidad práctica hasta el segundo dígito después del punto).
Una vez elaborada la función, simplemente se la llama mandando los valores requeridos. Por ejemplo, el interés porcentual anual que se paga, por un préstamo de 135000 dólares, cancelando una cuota mensual de 1000 dólares, durante 30 años, es:
Para un préstamo de 50000 dólares, cancelando cuotas fijas mensuales de 700 dólares, durante 10 años, el interés porcentual anual, es:
Finalmente, el interés porcentual anual, para un préstamo de 30000 dólares, cancelando una cuota fija de 400 dólares, durante 10 años (los valores por defecto), es:
El problema puede ser resuelto también con los otros métodos, por ejemplo, con el método de Regula-Falsi. En este caso, los valores asumidos (el segmento de solución), se obtiene tomando el 70% y el 200% del interés simple:
Con la cual se obtienen los mismos resultados:
Siguiendo la misma lógica, la solución puede ser implementada en Octave, siendo la función equivalente:
En el caso de Octave, como se puede ver, se emplean parámetros por defecto (no parámetros nombrados) porque el lenguaje carece de los mismos. Para que Octave ignore un parámetro (que no sea el último) y emplee su valor por defecto, se puede enviar el símbolo ~, que es el equivalente a undefined en JavaScript.
Por otra parte, la función round de Octave, al igual que la función Math.round de JavaScript, sólo permite redondear a números enteros (no a un determinado número de dígitos después del punto). Por esa razón, para obtener un resultado redondeado al segundo dígito, se multiplica por 1e2 (para pasar dos dígitos a la parte entera), se redondea y después se divide entre 1e2, para devolver los dos dígitos (redondeados) a la parte fraccionaria (por supuesto, lo mismo es válido para un diferente número de dígitos).
Con la misma lógica, la función puede ser programada también en Python:
En Python, los parámetros por defecto (como los de esta función) son al mismo tiempo parámetros por defecto y parámetros nombrados. La función puede ser llamada mandando sólo los valores, escribiéndolos en el orden correcto o escribiendo el nombre y asignándole el valor con el signo igual (en cualquier orden).
Como ya se vio previamente, del resultado devuelto por root_scalar se emplea únicamente la solución, es decir, la propiedad root.
Una de las ecuaciones para el cálculo de la presión de vapor (la presión a la cual hierve un líquido que se encuentra a una temperatura "T") es la ecuación de Harlacher:
\[ \ln(P_v)= \text{A}+\dfrac{\text{B}}{T}+ \text{C}\cdot \ln(T)+ \text{D}\cdot\dfrac{P_v}{T^2} \] |
Donde "A", "B", "C" y "D", son las constantes del compuesto para el cual se quiere calcular la presión de vapor Pv (o la temperatura de saturación T).
Como se puede ver, en la ecuación de Harlacher no se puede despejar ni la presión de vapor (pv), ni la temperatura de saturación (T). Razón por la cual se trata de una ecuación no lineal donde la incógnita puede ser la presión de vapor (Pv) o la temperatura de saturación (T):
\[ \operatorname{f}(P_v|T) = \text{A}+\dfrac{\text{B}}{T}+ \text{C}\cdot \ln(T)+ \text{D}\cdot\dfrac{P_v}{T^2}-\ln(P_v) = 0 \] |
Al igual que en el ejemplo anterior, la forma más práctica de resolver el problema consiste en programar una función que reciba, como parámetro por valor, la temperatura de saturación (T) o la presión de vapor (Pv) y como parámetros nombrados, con valores por defecto, las constantes (A, B, C y D) del compuesto para el cual se está calculando la presión de vapor. Dentro de la función se programa la anterior ecuación (como una función de Pv o T) y se la resuelve con uno de los métodos estudiados en los capítulos anteriores.
Como ya se dijo, cuando se resuelven problemas práctios (reales), es conveniente contar con valores iniciales cercanos a la solución, en este caso, si se calcula la presión de vapor (pv), se obtiene un valor inicial adecuado (xi), si se trabaja con los tres primeros términos de la ecuación, es decir:
\[ P_v = \operatorname{e}\raisebox{1em}{$\small{\operatorname{A}+\dfrac{\operatorname{B}}{T}+\operatorname{C}\cdot \ln(T)}$} \] |
Las constantes (A, B, C y D) están disponibles en tablas de propiedades y al ser una ecuación empírica, las unidades de presión y temperatura están predeterminadas. Así, para las constantes que se emplean en este capítulo, la presión de vapor está en milímetros de mercurio y la temperatura en Kelvin.
Los valores por defecto más adecuados son los correspondientes al agua: A=55.336, B=−6869.50, C=−5.115, D=1.05, porque el agua es el elemento para el que, con más frecuencia, se calcula la presión de vapor.
Con estas consideraciones y redondeando el resultado al segundo dígito después del punto (precisión más que suficiente cuando se trabaja con mm de Hg), la función que resuelve el problema, empleando en este ejemplo el método de la secante, con valores iniciales iguales a: xi y xi*1.01, es:
Para el caso más frecuente (el caso el agua), sólo es necesario mandar la temperatura (en Kelvin) a la que se quiere calcular la presión de vapor, mientras que para otros compuestos, se deben mandar también las constantes de dicho compuesto (en forma de parámetros nombrados).
Así, para calcular la presión del vapor del agua a 338.15 K (65 ° C), 327.59 K (54.44 °C) y 338.89 K (65.74 ° C), se escribe:
Mientras que, para calcular la presión de vapor del alcohol etílico a 298.15 K, 323.15 K y 348.33 K (constantes: A=83.319, B=−7994.90C=−9.201, D=2.35), se escribe:
Con la misma lógica y las mismas consideraciones, la función que resuelve el problema, en Octave, es:
Que son los mismos resultados obtenidos en JavaScript.
De manera similar (siguiendo la misma lógica y las mismas consideraciones), la función que resuelve el problema en Python, es:
Que son los mismos resultados obtenidos en JavaSript y Octave.
Las ecuaciones de estado permiten calcular las propiedades de los compuestos en la fase gaseosa (principalmente el volumen). Una de las ecuaciones más empleadas en la práctica es la ecuación de Soave-Redlich-Kwong:
\[ \begin{gathered} P = \dfrac{RT}{V-b}-\dfrac{a\alpha}{V(V+b)}\\ \begin{aligned} \text{donde:}\\ a &= 0.42748\dfrac{(R T_c)^2}{P_c}\\[3mm] b &= 0.08664\dfrac{R T_c}{P_c}\\[3mm] \alpha &= 1+(2.756m-0.7)\left(1-\sqrt{T_r}\right)^2+m(1-T_r)\\[3mm] m &= 0.484+1.515\omega-0.44\omega^2\\[3mm] T_r &= \dfrac{T}{Tc} \end{aligned} \end{gathered} \] |
Donde T es la temperatura del gas, P la presión, V el volumen molar, R la constante universal de los gases, Tc la temperatura crítica del gas, Pc la presión crítica del gas y ω el factor acéntrico de Pitzer (estas tres últimas propiedades dependen del compuesto con el que se está trabajando).
Como se puede ver, sólo el cálculo de la presión es directo, mientras que el volumen (o la temperatura) no puede ser despejado, por lo que, para esos casos, se trata de una ecuación no lineal con una incógnita. En consecuencia y al igual que en los ejemplos previos, la forma más práctica de resolver el problema consiste en programar una función, donde se recibe, como parámetros por valor, la temperatura (o el volumen) y la presión, y como parámetros nombrados con valores por defecto "Tc", "Pc" y "w". Dentro de la función se programa la ecuación de Soaver-Redlich-Kowng, como una función con una incógnita (el volumen o la tempratura):
\[ \begin{gathered} \operatorname{f}(V|T) = \dfrac{RT}{V-b}-\dfrac{a\alpha}{V(V+b)}-P = 0\\ \end{gathered} \] |
Luego se resuelve la ecuación con uno de los métodos estudiados en los capítulos previos, empleando como valor inicial el valor devuelto por la ecuación del gas ideal: /(PV = RT/).
Las unidades con las que se trabaje, dependen de las unidades en la que está la constante universal de los gases "R". En este ejemplo, la constante "R" es 0.082057 l*atm/K*mol, por lo tanto, la temperatura (T) debe estar en Kelvin, la presión (P) en atmósferas y el volumen (V) en litros por mol.
Al igual que en el ejemplo anterior, el compuesto para el cual se calcula con más frecuencia el volumen (o la temperatura) es el agua, por lo tanto, los valores por defecto más adecuados son: Tc=647.3 (en K), Pc=317.6 (en atm) y w=0.344.
La función que calcula el volumen molar, empleando el método de Newton-Raphson y tomando encuenta las anteriores consideraciones, es:
Para calcular el volumen molar del vapor de agua (en l/mol) a: 383.14 K y 2.04 atm; 403.15 K y 5 atm; 423.33 K y 6.97 atm; 443.15 K y 10 atm, se escribe:
Para calcular el volumen molar (en l/mol) del metano a: 333.15 K y 3 atm; 363.15 K y 5 atm; 392.78 K y 8 atm y 403.15 K y 10 atm, se debe mandar, además, las propiedades del metano: Tc=190.56 K, Pc=45.39 atm, ω=0.011:
Con la misma lógica y las mismas consideraciones, la función que resuelve el problema en Octave, es:
Que son los mismos resultados que en JavaScript:
Igualmente, con la misma lógica y consideraciones, la función que resuelve el problema en Python, es:
Que, igualmente, son los mismos resultados obtenidos en JavaScript.