Está en la página 1de 44

Universidad Nacional de Ingeniería

Facultad de Ingeniería Química y Textil


Departamento Académico de Ingeniería Química

 
Métodos Numéricos Para Ingeniería Química (PI524/A)

Solución numérica de ecuaciones algebraicas no


lineales con discontinuidades
Integrantes:
 Guarniz Vásquez, Keyla                                20181394K
 Mallasca Pérez, Linda Andrea                       20182141I
 Olivera Flores, Yadhira Leslie 20181459E
 Quiroz Moreno, Patrick Gabriel                    20181378E
 Zamora Urbina, Carolina Alejandra             20181305H

Profesor:
-        Ing. José Dávila Tapia

LIMA – PERÚ

2020-II 
Índice

Resumen..................................................................................................................................3
1. Fundamento Teórico......................................................................................................4
2. Aplicaciones..................................................................................................................13
a) Ejercicio 1. Tasa de reacción global en la oxidación catalítica de hidrógeno
(Vasudevan, 2000)..............................................................................................................13
b) Ejercicio 2. Modelación de un CSTR para una secuencia compleja de reacciones
(Fogler, 2000).....................................................................................................................16
c) Ejercicio 3. Combustión de propano (Meintjes & Morgan, 1990)...............................20
3. Comentarios y conclusiones.........................................................................................25
4. Bibliografía...................................................................................................................26
a) Resultado de la búsqueda del tema...........................................................................26
b) Resultado de la bibliografía del artículo.....................................................................26
5. Anexos...........................................................................................................................27
a) Recuperada (Artículos)...............................................................................................27
b) Programas usados......................................................................................................28
Resumen

El presente trabajo de investigación se enfoca en el desarrollo de sistemas de ecuaciones

con discontinuidades, que suelen presentarse en diferentes aspectos, consideraciones

físicas, o por algún término de la función que origine una discontinuidad, lo que se

propone en la investigación de los artículos recabados, fue encontrar un programa que

logre resolver un sistema de ecuaciones de “n” variables con discontinuidades. Para ello

se trató de utilizar diferentes programas en diferentes lenguajes, para hallar el método

más eficiente de la solución, se trabajó en la investigación presente en Octave. GNU,

Matlab, Fortran, Polymath y Mathcad. Se corroboró los resultados de los ejemplos

mostrados en el artículo, Numerical solution of non-linear algebraic equations with

discontinuities, se desarrolló en los dos primeros ejemplos en GNU. Octave y en

Matlab,  a diferencia del tercer ejemplo, puesto que este fue un sistema de ecuaciones

no lineales de diez ecuaciones, dificulto su desarrollo, pese a programar igual que en los

ejemplos anteriores se presentó el error por el número de iteraciones para hallar la

solución; por ello se optó por trabajar en Polymath, mostrando resultados muy cercanos

a la solución . En los programas Octave.GNU y Matlab, se utilizó la función, function

handle, de esta manera se logró obtener puntos cercanos a los valores de la solución. En

Polymath, fue más sencillo el desarrollo. Se realizaron las comparaciones respectivas

para cada ejemplo con los diferentes programas.

En Fortran se trató de corroborar el programa CONLES, se trató de adaptar el programa

mostrado en Fortran 77 a Fortran 90, pero no se obtuvo éxito.


1. Fundamento Teórico

Muchos problemas prácticos en ingeniería química dan lugar a la necesidad de resolver

sistemas de ecuaciones algebraicas no lineales (NLE). Los ejemplos típicos incluyen

cálculos de equilibrio de fase y equilibrio químico, simulación de proceso de estado

estable, distribución de flujo en redes de tuberías, etc. Hoy en día se encuentran

disponibles potentes paquetes de software matemático para resolver sistemas de NLE.

La disponibilidad de los poderosos paquetes de software y los ejemplos de libros de

texto resueltos pueden ser suficientes para permitir a los estudiantes abordar muchos

problemas con la solución de los sistemas NLE. Sin embargo, incluso si los estudiantes

siguen exactamente las instrucciones de los paquetes de resolución de NLE y los

ejemplos de libros de texto, aún pueden encontrar que al usar una formulación de

problema particular y un conjunto de conjeturas iniciales para las incógnitas, no se llega

a una solución y el programa emite un error mensajes (ej., "división por cero"). Nuestra

experiencia ha demostrado que para hacer frente a tal situación, los estudiantes deben

aprender a analizar el conjunto de ecuaciones y modificarlo, si es necesario, para

permitir la convergencia a la solución.

Unos métodos convergentes para encontrar una solución (además del caso trivial de

errores en la formulación del problema) es la presencia de discontinuidades y / o

regiones donde algunas de las funciones no están definidas. El impacto de tales

discontinuidades se vuelve más severo si se encuentran en las proximidades de la

solución. El análisis del sistema de NLE para ubicar las discontinuidades y los límites

de las regiones donde algunas funciones están indefinidas, es una tarea mucho más

compleja que encontrar una solución. El objetivo aquí es proponer y demostrar un

procedimiento de reformulación del sistema NLE para aumentar la probabilidad de

encontrar una solución y al mismo tiempo acelerar el proceso de solución.


El procedimiento propuesto implica reformular las ecuaciones que contienen funciones

con discontinuidades (ej., logaritmo o recíproco de una desconocida) con funciones de

contraparte continuas (ej., exponente), y reduciendo la dimensión del sistema NLE

expresando algunas de las desconocidas como funciones explícitas de las otras mientras

se reordena el orden de cálculo.

Para comprender los problemas únicos asociados con la solución de NLE restringidos,

consideremos el sistema que se muestra a continuación. Este sistema de ecuaciones se

tomó de la Referencia 2.

ƒ1 = x1 + x4 – 3 = 0
ƒ2 = 2x1 + x2 + x4 + x7 + x8 + x9 + 2x10 – R = 0
ƒ3 = 2x2 + 2x5 + x6 + x7 - 8 = 0
ƒ4 = 2x3 + x5 – 4R = 0
ƒ5 = x1x5 – 0.193x2x4 = 0
ƒ6 = x6(x2)1/2 – 0.002597(x2x4x5)1/2 = 0
ƒ7 = x7(x4)1/2 – 0.003448(x1x4x5)1/2 = 0
ƒ8 = x8x4 – 1.799*10-5x2x5 = 0
ƒ9 = x9x4 – 2.155*10-4x1(x3x5)1/2 = 0
ƒ10 = x10x42 – 3.846*10-5x42x5 = 0

Donde:
10
x 5= ∑ x i
i=1

Las variables {xi}, que representan cantidades de productos químicos, deben ser no

negativas en la solución.
Además de eso, los valores de algunas de las funciones no se pueden evaluar si una o

más de las variables x1, x2, x3, x4 y x5 son negativas. (Los valores negativos de estas

variables generan argumentos negativos para la función raíz cuadrada.)

Por lo tanto, podemos definir el problema de la solución de ecuaciones no lineales no

restringidas como sigue: denotemos el espacio euclidiano n-dimensional como R n y sea

f:Rn → Rn una función con dominio y rango en R n, entonces el problema de resolver n

ecuaciones no lineales en n variables se puede plantear en forma vectorial como:

f(x) = 0 (2)
Cualquiera o todas las variables pueden estar sujetas a restricciones del tipo:

{xj} ≥ 0, j=1,2 ,..., m (3)

A primera vista, este problema puede parecer similar a los problemas de optimización

restringida para los que existen varios métodos de solución eficaces. Pero hay una gran

diferencia. Mientras que en un problema de optimización algunas o todas las

restricciones pueden estar activas en la solución, no se esperaría que ninguna de las

restricciones en (3) esté activa en la solución. Esto se debe a que en (2) tanto f como x

están en Rn, y si algún límite está activo, es poco probable que (2) pueda satisfacerse

con igualdad, pero esta es la única solución que es aceptable para un sistema no lineal.

ecuaciones.

Hiebert ha probado dos enfoques para lidiar con problemas restringidos. El primer

enfoque consiste en utilizar métodos de solución que no tengan en cuenta la existencia

de restricciones. Uno comienza las iteraciones a partir de una estimación inicial que

satisface las restricciones con la esperanza de que la solución se encuentre en la región

factible.
Hemos probado la validez de este enfoque resolviendo varios problemas de prueba

restringidos, utilizando rutinas de resolución de ecuaciones no lineales que están

disponibles en la literatura. Hemos utilizado la iteración clásica de Newton-Raphson

(NR), el algoritmo dog-leg de Powell, la variación de More y Cosnard del método de

Brent y un método de continuación. Hemos encontrado que el radio de convergencia de

todos estos métodos era extremadamente pequeño para la mayoría de los problemas

restringidos.

Otro enfoque consiste en utilizar transformaciones como x j = exp (tj), de modo que xj no

pueda alcanzar valores negativos. Hiebert indicó que tal técnica puede causar

dificultades de escala, jacobianos singulares y conversión de ecuaciones lineales en

ecuaciones no lineales, haciendo así el problema mucho más difícil de resolver.

Se puede sugerir el uso de técnicas de optimización no lineal para resolver (2),

minimizando así la función f(x)T f(x). Usando este enfoque, hacemos que el problema

sea más no lineal (convirtiendo ecuaciones lineales a cuadráticas, por ejemplo) e

introducimos dificultades adicionales de convergencia a mínimos locales, donde f(x) ≠

0.

Esta discusión indica claramente la necesidad de desarrollar un algoritmo que pueda

manejar ecuaciones no lineales restringidas.

Cuando comenzamos a desarrollar un algoritmo para la solución de ecuaciones

restringidas, se hizo evidente que en realidad hay dos tipos de restricciones, que pueden

requerir diferentes técnicas de solución. El primer tipo de restricciones puede

denominarse "restricciones físicas", donde el vector x debe satisfacer (3) solo en la

solución. El segundo tipo es 'restricciones absolutas' donde todas las iteraciones xk

deben satisfacer (3).


Refiriéndonos al sistema de ecuaciones (1), las variables x 1, x2, x3, x4 y x5 están

absolutamente restringidas, ya que si intentamos, por ejemplo, calcular f6 cuando x2 <0,

obtendremos 'argumento negativo en raíz cuadrada 'mensaje de error y el trabajo se

cancelará. Las variables x5 a x10 están físicamente restringidos, ya que el sistema (1)

puede tener soluciones en las que uno o más de estas variables son negativas. Sin

embargo, tales soluciones son inaceptables debido a la naturaleza del problema (no

tienen sentido las cantidades negativas de productos químicos).

A veces puede ser necesario utilizar restricciones en una forma más general que la dada

en (3). Dichas restricciones pueden escribirse de forma general:

g(x) > 0 (4)


donde g: RM → RM. La existencia de estas restricciones no complica el proceso de

solución, ya que pueden transformarse a la forma (3) por simple sustitución. Definamos

una nueva función.

f (x )
fz (x, z) = [ ] (5)
z−g( x )
donde fz: Rn+M → Rn+M y z ϵ RM. Entonces las restricciones (4) pueden reescribirse de

forma similar a (3):

y xj ≥ 0, j = 1, 2 ,..., m
(6)
z≥0
Consideremos, por ejemplo, el sistema de ecuaciones (1). Una de las restricciones de

10
este problema es de la forma xs > 0; por lo tanto, ∑xi > 0. Para convertir esta
i=1

restricción en la forma deseada, se crea una nueva ecuación


10
f 11=z 1 ∑ xi =0
i=1

tiene que ser añadido al sistema y xs tiene que ser sustituido por en todas las ecuaciones.

Para simplificar la discusión supondremos en adelante que el sistema de ecuaciones se

ha llevado a la forma definida en las ecuaciones (5) y (6) y que el número total de

variables es n.

MÉTODO NEWTON-RAPHSON (NR) CON RESTRICCIÓN DE LONGITUD


DE PASO
La iteración más interna de nuestro algoritmo se realiza mediante el método Newton-

Raphson con restricción de longitud de paso.

Si f’(xk) de nota la matriz jacobiana (evaluada en x k) del mapeo f: Rn → Rn, dado un

intervalo x, el método NR de longitud de paso restringida genera el siguiente iterado

resolviendo el sistema lineal.

f’(xk) xk = - f’(xk) (7)

para la corrección xk, y calculando xk+1 a partir de

xk+1 = xk + λk xk (8)

donde λk es la longitud escalar del paso.

Esta descripción no está completa; para hacerla completa tenemos que especificar cómo

calcular λk.

Una estrategia común es seleccionar un λ k para evitar que la estimación xk+1 sea peor que

la estimación xk, en el sentido de que

F(xk+1 ) < F(xk), donde F(x) = fT(x)f(x)


El Powell indica que tal selección de λ k puede impedir a veces la convergencia.

Utilizamos la restricción de la longitud del paso para evitar que se violen las

restricciones absolutas. Dejemos que j represente los índices de todas las variables para

las que se han especificado restricciones absolutas, y para las que xj < 0, entonces λk se

calcula a partir de la ecuación (7):

λk = minj |αxj/ xj | (9)


donde es un número menor que, pero cercano a uno. α se utiliza para garantizar que una

variable absolutamente restringida no alcance un valor exactamente cero durante las

iteraciones. Hay varias funciones que son indefinidas para 0 (como ln(x), 1/x j etc.), y

hay otras que son indefinidas solo para x j < 0. El cálculo de λk a partir de la ecuación (7)

evita la ruptura del proceso de solución xj = 0, pero por otro lado permite acercarse a la

solución xj = 0 si la función esta definida en este punto.

Se ha seleccionado el valor numérico α = 0.99, y esta selección ha resultado

satisfactoria en todos los problemas de prueba.

El algoritmo para generar el siguiente iterado utilizando el método NR restringido de

longitud de paso se puede resumir como sigue:

1. Resolver el sistema lineal (7) para el vector de corrección xk.

2. Calcular λk usando la ecuación (9).

3. Calcula la siguiente iteración a partir de (8).

El método NR de longitud de paso restringida no tiene la propiedad de convergencia

global. Puede fallar debido a una matriz jacobiana singular o casi singular. Si la matriz

jacobiana es singular, el sistema lineal de ecuaciones (en el primer paso del algoritmo)

no puede resolverse. Si la matriz es casi singular, algunos elementos del vector de

corrección pueden ser excesivamente grandes, de modo que la nueva estimación, x k+1, es
peor que la anterior. Si se detecta una matriz jacobiana singular, o correcciones

excesivamente grandes, volvemos a calcular el vector de corrección utilizando una

modificación del algoritmo de Levenberg/Marquardt. Este algoritmo se describirá en

detalle en la siguiente sección.

Los problemas con restricciones físicas no pueden tratarse eficazmente con el método

NR de longitud de paso restringida. En este tipo de problemas, el algoritmo tiende a

converger a un punto en el que una de las variables restringidas tiene un valor muy

cercano a cero, y no puede alejarse de este punto. La razón es que, en este caso, la

dirección del movimiento, determinada por el método NR, es hacia un punto de

solución que viola las restricciones. La restricción de la longitud del paso impide el

movimiento en esta dirección. El efecto neto es que no hay ningún movimiento. El

algoritmo utilizado para los problemas con restricciones físicas se describirá en la

sección 4.

EL ALGORITMO LEVENBERG/MARQUARDT (LM) MODIFICADO

Usando este algoritmo, el vector de corrección se calcula resolviendo el siguiente

sistema de ecuaciones lineales:

[µkI + f´(xk)Tf´(xk)]xk = -f´(xk)Tf(xk) (10)

donde I es la matriz unitaria y µk es un parámetro no negativo. La dirección y la

longitud del vector de corrección están controladas por el valor del parámetro µ k. Para

µk = 0, tanto la dirección como la longitud del paso son las mismas que para el método

NR. Para µk → ꭃ, la dirección es la dirección de "descenso más pronunciado" y la

longitud del vector de corrección se vuelve infinitamente pequeña. El "descenso más


pronunciado" es la dirección del gradiente negativo de la función F(x), que es la suma

de los cuadrados de los residuos, por lo tanto:

F(x) = fT(x)f(x) (11)

Al variar µk, se puede interpolar entre la corrección NR y el paso infinitamente pequeño

en la dirección de descenso más empinada. Hay varios algoritmos disponibles para la

selección de un valor óptimo para µ k. También se puede mostrar que con la selección

adecuada de µk, el algoritmo LM converge a un mínimo local de F(x), siempre que F(x)

sea dos veces diferenciable de forma continua. Sin embargo, no es seguro que un

mínimo local de F(x) sea un cero de f(x). Por esa razón, preferimos usar la corrección

LM solo para evitar la divergencia si la matriz jacobiana es singular o casi singular. Por

la misma razón, no intentamos encontrar un valor óptimo para µk. Usamos un valor que

es lo suficientemente grande para eliminar la singularidad de la matriz jacobiana, pero

no demasiado grande para que sea posible alejarse de la región casi singular a una

velocidad razonable. Para lograr eso, se debe elegir un valor de µ k, que es una función

de la magnitud de los elementos de f´(xk). Hemos probado varias opciones diferentes y

la selección de µk igual al elemento más grande (en valor absoluto) de f´(xk) parece ser

la mejor opción. Por tanto, seleccionamos µk = max |f´(xk)|.

El algoritmo para generar la siguiente iteración mediante el algoritmo LM modificado

es el siguiente:

1. Establezca µk = max |f´(xk)|.

2. Resuelva el sistema lineal (10) para la corrección xk.

3. Calcule λk a partir de la ecuación (9).

4. Calcule xk+1 a partir de la ecuación (8).


2. Aplicaciones

a) Ejercicio 1. Tasa de reacción global en la oxidación catalítica de hidrógeno


(Vasudevan, 2000).
Este ejemplo se refiere al cálculo de la velocidad de reacción global en un

reactor de lecho compacto, donde se lleva a cabo la oxidación catalítica de

hidrógeno. Smith (1981) presenta los detalles del problema. Vasudevan (2000)

sugirió resolver la siguiente ecuación para obtener la velocidad de reacción

global rp:

−5230
f(rp) = rp – 0.327(0.06 – 161rp)0.804 * exp{ }=0
[1.98 ( 373+1.84∗106 rp ) ]
Gráfico de f (rp) vs rp en la región factible

Las consideraciones físicas dictan que rp ≥ 0. Esta ecuación no se puede resolver

con un algoritmo numérico, a menos que se identifique primero la región donde

se define la función. La función no está definida para 0.06−161rp < 0, por lo

tanto en rp > 0.0003727 y hay una discontinuidad para 373 + 1.84 × 106r p = 0,

por lo tanto en rp = - 0.0002027). En la Fig. 1, f(r p) se representa frente a rp en la

región de 0 ≤ rp ≤ 0,00037. La raíz de la ecuación está en rp = 0.000340568862.

Por lo tanto, aproximadamente un 3% de aumento de rp por encima del valor raíz

lo coloca en la región donde la función no está definida. Dentro de la región

factible,

f ‘(rp) = 0 en dos ubicaciones: en rp = 0.0002338 y en rp = 1.974 × 10-6.

En este ejemplo, hay dos términos que introducen discontinuidad y / o hacen que

la función no esté definida. El término 0.06–161 r p debe ser ≥ 0 y se debe evitar

el valor cero del término 373 + 1.84 × 10 6 rp. Dado que las consideraciones

físicas dictan que rp ≥ 0 el segundo término nunca será cero en la región factible,

no requiere ninguna consideración adicional. El primer término puede volverse

negativo en la región factible. Esta dificultad no puede evitarse mediante una

manipulación algebraica.

En consecuencia, se define una nueva variable, x = (0.06-161 rp), y se resuelve el

siguiente sistema restringido de ecuaciones:

5230
f1 = rp – 0.327x0.804 exp{− }=0
[1.98 ( 373+1.84∗106 rp ) ]
f2 = x – (0.06 – 161rp) = 0

sujeto a las restricciones rp ≥ 0 y x ≥ 0.

Esta formulación permite la convergencia a la solución utilizando algoritmos

restringidos, como CONLES. Por ejemplo, con la estimación inicial: r p = 0.001 y

x = 0.005 (satisface las restricciones pero está muy lejos de la solución, en

realidad se encuentra en la región donde la función original no está definida) se

logra la convergencia a la solución en ocho iteraciones. Los algoritmos

ilimitados utilizados en este estudio no pudieron encontrar la solución incluso

cuando se utilizó esta formulación revisada.


No se puede hallar la raíz, puesto que los valores de r p  son muy pequeñas y esto

hace que la gráfica tienda a 0. La solución según la gráfica es en r p  =

0.000340568862, pero con el programa no logra hallar esta raíz, o se acerca a

ella pero con un error de 7.6523%.

b) Ejercicio 2. Modelación de un CSTR para una secuencia compleja de


reacciones (Fogler, 2000).

En este ejercicio se considera la solución de estado estacionario para un CSTR

en el que se lleva a cabo una secuencia compleja de reacciones que tienen la

siguiente forma:

2 A + B→ 3 C

C+ 2 B →3 D

D→E

Tomando en cuenta estas reacciones, se obtuvieron las siguientes ecuaciones:

Ecuaciones modelo para el CSTR (Fogler, 2000) —ejemplo 2

ƒ1 = V – v0(CA0 – CA) / -rA = 0


ƒ2 = V – v0(CB0 – CB) / -rB = 0
ƒ3 = V – v0CC / rC = 0
ƒ4 = V – v0CD / rD = 0
ƒ5 = V – v0CE / rE = 0
ƒ5 = 5000 (350 – T) – 25 (20+40) (T – 300) + V(SRH) = 0
Donde
rA = -2k1BCACB
rB = -(k1BCACB + 2k2CCCCB2)
rC = 3k1BCACB - k2CCCCB2)
rD = -k3ECD - k2CCCCB2
rE = k3ECD
k1B = 0.4 exp[(20000 / R)(1 / 300 – 1 / T)]
k2C = 10 exp[(5000 / R)(1 / 310 – 1 / T)]
k3E = 10 exp[(10000 / R)(1 / 320 – 1 / T)]
SRH = 2k1BCACB20000 - 2k2CCCCB210000 + 5000 k3ECD
R = 1.987, V = 500, v0 = 75 / 3.3, CA0 = 25 / v0, y CB0 = 50 / v0

Debemos tener en cuenta las consideraciones físicas de las variables

involucradas en las ecuaciones puesto que pueden generar restricciones en el

sistema, en este caso las consideraciones limitan las concentraciones (CA, CB, CC,

CD y CE) a valores no negativos al igual que la temperatura (T), mientras que, en

el caso de las velocidades de reacción, tanto para A y B son negativas (r A y rB)

mientras que para C, D y E son positivas (rC, rD y rE).

En este sistema, las ecuaciones no convergen sin importar los valores iniciales

que se tomen. Para poder dar solución a este sistema fue necesario realizar unas

operaciones algebraicas para poder eliminar las indeterminaciones que

generaban la divergencia. Teniendo como resultado las siguientes ecuaciones:

F1 = ƒ1 * (- rA)

F2 = ƒ2 * (- rB)

F3 = ƒ3 * (rC)

F4 = ƒ4 * (rD)

F5 = ƒ5 * (rE)
Con estos cambios realizados, fue posible el cálculo de los valores que daban

solución al sistema. Los resultados obtenidos se presentaron en un cuadro por

parte de los autores del artículo.

Tomando los mismos puntos iniciales, llevamos las ecuaciones obtenidas tras la

modificación a evaluar en Mathcad y Octave. Para esto se hicieron uso de los

programas presentados en el apartado del ejercicio 2 en el Anexo.

Para poder hallar los resultados en la plataforma Mathcad se hizo uso del método

de Newton-Raphson para sistema de ecuaciones multivariable, para esto se


modificó el programa presentado en clases para que pueda ser utilizado para 6

variables. Obteniéndose los siguientes resultados.

Las últimas seis columnas de la matriz representan los valores de las variables en

cada iteración. Podemos observar que los valores de las variables no siguen

ninguna convergencia, y en algunos casos disparándose el valor a valores que

contradicen a las consideraciones físicas, por lo que podemos concluir que el

método de Newton-Raphson no es útil en este caso.

Por otro lado, para dar solución al sistema en la plataforma Octave se hizo uso

de la función fsolve. Obteniéndose el siguiente resultado.


Con este método se obtuvo valores bastante cercanos a los presentados por los

autores en la tabla, por lo que podemos asegurar que fue posible usar

satisfactoriamente el fsolve para dar solución al sistema y a la vez corroboramos

la veracidad de los valores obtenidos por los autores.

c) Ejercicio 3. Combustión de propano (Meintjes & Morgan, 1990).


En este ejercicio se analiza la combustión de gas propano en aire según la

siguiente reacción:

R
C 3 H 8 + ( O 2+ 4 N 2 )→ productos
2
Del modelamiento del comportamiento de esta reacción se obtiene el siguiente

sistema de ecuaciones:

Ecuaciones modelo para la combustión de propano (Meintjes & Morgan, 1990) ejemplo
3

ƒ1 = n1 + n4 – 3 = 0
ƒ2 = 2n1 + n2 + n4 + n7 + n8 + n9 + 2n10 – R = 0
ƒ3 = 2n2 + 2n5 + n6 + n7 - 8 = 0
ƒ4 = 2n3 + n9 – 4R = 0
ƒ5 = K5x2x4 – n1n5 = 0
ƒ6 = K6(n1)1/2(n4)1/2 – (n1)1/2n6(p/nT)1/2 = 0
ƒ7 = K7(n1)1/2(n2)1/2 – (n4)1/2n7(p/nT)1/2 = 0
ƒ8 = K8n1 – n4n8(p/nT) = 0
ƒ9 = K9(n1)1/2(n3)1/2 – n4n9(p/nT)1/2 = 0
ƒ10 = K10(n1)2 – n42n10(p/nT) = 0
Donde
10
n=∑m y
i=1

K5 = 0.193, K6 = 0.002597, K7 = 0.003448, K8 = 1.799 * 10-5, K9 = 2.155 * 10-4,


K10 = 3.846 * 10-5 y p = 40

En este sistema, R representa las cantidades relativas de aire y propano; los

valores de ni representa el número de moles de cada producto formado por cada

mol de propano consumido. Entonces es obvio asumir que los valores de n i

siempre serán positivos.

Entonces, este sistema de ecuaciones queda condicionado por las

consideraciones físicas de los ni. En el siguiente cuadro se presentan los valores

iniciales y la solución del sistema de ecuaciones cuando el valor de R es 10.

Podemos observar que tomando en cuenta los valores iniciales presentados, el sistema
de ecuaciones converge, obteniéndose así una solución satisfactoria.

Ahora, se presentará los resultados obtenidos al evaluar el sistema en diferentes

programas cuando el valor de R es 5 y tomando los mismos valores iniciales que

en el apartado anterior.
Podemos observar, que en el caso cuando R es 5, el método CONLES es el único

que converge en una solución factible mientras que en el caso de usar otros

programas la solución converge en valores que están fuera de las

consideraciones físicas planteadas inicialmente. Pero podemos observar que

algunas variables si logran acercarse a la solución original, deduciendo así que

algunos valores iniciales se encontraban más cerca de la respuesta que otras.

Tomando los mismos valores iniciales, para ambos casos de R se llevó el

sistema para ser evaluado en Polymath y Matlab, haciendo uso de los programas

presentados en el apartado del ejercicio 3 en el Anexo.

En el caso de la plataforma Polymath, se hizo uso de su apartado para dar

solución a sistema de ecuaciones no lineales. Este programa hizo uso del método

SAFENEWT para dar solución al sistema. Se obtuvo el siguiente resultado.

Para R=10:

Para R=5:
Podemos observar que en el caso cuando R=10, los valores obtenidos con

Polymath son muy cercanos a los presentados por los autores, mientras que en el

caso de R=5 los valores obtenidos con Polymath se acercan a la solución no

admisible presentados por los autores. Entonces, podemos decir que en el caso

de Polymath es posible usarlo para dar solución al sistema, pero teniendo en

cuenta los valores de los puntos iniciales, procurando que estén lo más cerca

posible de la solución.

Por otro lado, en la plataforma Matlab se hizo uso de dos métodos para buscar la

solución del sistema. Un método se trató de Newton-Raphson para sistema de

ecuaciones multivariable y el otro fue la función fsolve de Matlab.

Primero se presentará los resultados obtenidos con el método de Newton-

Raphson.

Para R=10:
Podemos observar que los valores, a medida que aumenta el número de

iteraciones, se disparan y son divergentes, por lo que podemos concluir que el

uso del método no es factible para este sistema. De este caso se deduce que en el

caso de R=5 se presentara el mismo problema de divergencia. Con este ejemplo

ya serian dos casos en donde el método de Newton-Raphson no es útil para dar

solución a los sistemas.

Por último, se presentan los resultados obtenidos por la función fsolve.

Para R=10:

Podemos observar que los valores obtenidos se acercan mucho a los valores

presentados por los autores.

Para R=5:
En este caso, los valores obtenidos se asemejan a lo mencionado en el artículo,

acerca de que en algunos programas la solución estaba dado por valores

imaginarios. Entonces podemos observar que no es factible usar el fsolve cuando

R=5 tomando estas condiciones iniciales.

Podemos concluir que en el caso de Matlab al igual que en Polymath, es factible

usarlos para dar solución al sistema, pero debemos tener en cuenta que los

valores iniciales deben ser lo suficientemente próximo a la solución, para que no

se presenten estos inconvenientes.

3. Comentarios y conclusiones

 Los ejemplos presentados aquí demuestran que la solución de algunos sistemas

NLE puede representar un desafío incluso si la formulación del problema es

correcta y se utilizan métodos “globalmente convergentes” de última generación

para la solución.

 Se ha demostrado que el método propuesto para la reformulación y reordenación

de los sistemas NLE puede reducir la dimensión del sistema, eliminar


discontinuidades y simplificar considerablemente la tarea de encontrar

estimaciones iniciales para las incógnitas para que se obtenga la solución.

 Este material puede ser muy útil para estudiantes de pregrado y posgrado e

ingenieros en ejercicio que participan en el modelado matemático, que a menudo

requiere la solución de ecuaciones no lineales.

 Del Ejemplo 1: No se puede hallar la raíz, puesto que los valores de rp  son muy

pequeñas y esto hace que la gráfica tienda a 0. La solución según la gráfica es en

rp  = 0.000340568862, pero con el programa no logra hallar esta raíz, o se acerca

a ella pero con un error de 7.6523%.

4. Bibliografía

a) Resultado de la búsqueda del tema


Shacham, M., Brauner, N. (2017). Solving a system of nonlinear algebraic equations.

Che Division of ASEE, 51(2).

b) Resultado de la bibliografía del artículo


Shacham, M. (1986). Numerical solution of constrained nonlinear algebraic equations.

International journal for numerical methods in engineering, 23, 1455-1481.


5. Anexos

a) Recuperada (Artículos)
A lattice fluid approach to complex mixtures natural gas and crude

A new method for solving a class of nonlinear equations

A web-based library for testing performance of numerical software

Bounded homotopies to solve systems of

Bracketing Method for On-Line Solution of Low-Dimensional

Chemical Equilibrium Systems as Numerical

Finding Boundaries of the Domain

Investigating the di!erences in acid separation behaviour

Iterative linear programming

JOEMAU~1
Lonrenzini

Macromoléculas

Microfase

Numerical recipes in C++

NUMERICAL SOLUTION OF CONSTRAINED NONLINEAR

NumericalRecipesinC

Robust solution of algebraic

Steady state simulation of continuous-

b) Programas usados

b.1) Para el ejemplo 1.

b.1.1) Function Handle y Fsolve en GNU.OCTAVE

Para el ejemplo 1 como para el ejemplo 2, fue desarrollado en el programador

GNU.Octave, al igual que en Matlab, ya que al contar con la herramienta

function handle y fsolve, se logró crear el sistema de ecuaciones nombrando cada

ecuación del sistema.

En el caso del ejemplo 1, un sistema de dos ecuaciones no lineales, se insertó los

programas en la ventana, “Command Window” de Octave, lo que se muestra en

la ventana es cada ecuación representada como una función.

Se define una función mediante la siguiente formulación:

f1: Indica el nombre de la función.


“ “ : Espaciamiento, es fundamental dejar un espacio entre el nombre de la

función como la variable que se define de la ecuación, esto debido al lenguaje

del programa.

@(x):  indica que trabajará con la variable, x, la versatilidad de esto, es que x,

puede ser guardado como un vector, de esa manera se define de mejor las

variables como, x(1), x(2), y así sucesivamente se puede seguir introduciendo

más variables, ya que trabaja como un vector.

Luego se debe digitar la ecuación, si esta se encuentra definida por más de una

variable se debe digitar como “x” seguido de paréntesis, luego se indica la

posición de la variable en el vector, de la siguiente manera, un ejemplo, se tiene

4 variable y cada que se indique x(1) será el valor del vector en la posición 1,

como se muestra a continuación: 

x=[x ( 1 ) x ( 2 ) x (3 ) x ( 4 ) ] Para el desarrollo del programa como tal se debe contar

con un valor inicial,”xo”, para dar inicio y que pueda empezar a iterar con la

finalidad de buscar las soluciones, posteriormente se realiza crea una función

que contenga todas las funciones ya nombradas anteriormente, en el caso del

ejemplo dos se realizó de la siguiente manera.

Se definió una función “G” que contenga las funciones, estas van entre corchetes

y seguidos de un punto y coma, ya que de esa manera separa las ecuaciones.

G=@ ( x ) [ f 1 ( x ) ; f 2 ( x ) ] ;

Para hallar como tal el resultado del sistema de ecuaciones, se utiliza la función

“fsolve” de la siguiente manera para el mismo ejemplo 1:

x=fsolve ( G , xo ) ;
Y como se muestra en la ventana:
*Nota el “format long”, se agrega antes para poder obtener una mayor cantidad

de cifras.

De la misma manera se desarrolla el programa para el ejemplo número dos.

b.2) Para el ejemplo 2.

b.2.1) Function Handle y Fsolve en GNU.OCTAVE.

De una manera similar en el ejemplo se definió todas las ecuaciones en la

ventana “Command Window”. Lo cual para su resolución requiere el punto

inicial y gracias a Fsolve se obtiene las soluciones.


b.2.2) Newton Raphson, Mathcad.

Este ejemplo, también fue desarrollado en “Mathcad”, se adaptó un programa de

la clase de Métodos Numéricos, Newton Raphson para sistemas de ecuaciones

no lineales

Ya que el sistema contó con 6 ecuaciones se agregó, las nuevas funciones y las

nuevas variables, al igual que se modificó la matriz Jacobiana los pasos del

programa se muestra a continuación:

o Definición del programa.


Se nombra al programa, y se introduce los puntos iniciales, se introduce

las derivadas parciales para cada función.


o Se inicia un “for”, y se introduce la matriz Jacobiana.
o Se crean las matrices D, de las derivadas con la finalidad de resolverlo de

manera similar a la regla de Kramer.

o Se ingresa por último los valores finales de cada variable, y finalmente se

guarda en la matriz “W” la cual será la que se muestre con los resultados

para cada iteración.


De esa manera se realizó la adaptación del programa, Newton Raphson

para un sistema de ecuaciones de 6 variables. Lo cual al final no fue tan

oportuno puesto que en el ejemplo en los valores cercanos a cero se

observó resultados nada cercanos a la solución.

o Para el llamado del programa se requieren de puntos iniciales definidos

anteriormente al llamado del programa o en el mismo nombre de la

función.

b.3) Para el ejemplo 3.

b.3.1) Function Handle y Fsolve en Matlab.

Para el ejemplo 3, se optó por resolver el sistema en ecuaciones por Matlab con

la finalidad de mostrar la diferencia en uno y otro programador.


A diferencia del GNU.Octave en Matlab no es necesario el espaciamiento entre

el nombre y la definición de la variable. El resto de la programación si se

desarrolla de manera similar.

En el resultado del programa como tal nos arroja un pequeño mensaje, “fsolve”

completo porque el vector de los valores de la función es muy cercana a cero como

medida por el valor de la función tolerancia y el problema aparece regularmente como


medida por la gradiente, esto debido a que sobrepasa el número de iteraciones para

encontrar el valor de la solución.

b.3.2) Programa Newton Raphson para sistemas de ecuaciones no lineales en

Matlab.

Este programa se desarrolló de una manera similar al programa de Newton

Raphson en Mathcad, puesto que trabaja bajo el mismo fundamento teórico, este

programa relativamente es más sencillo, ya que no es necesario estar digitando

las funciones, debido al que en el programa se utilizan estructuras de control

repetitivos como el “while” logra reproducir el programa, al número de

iteraciones que el crea conveniente hasta donde el error sea el mínimo, el valor

que crea conveniente el usuario.

b.3.3) Polymath.

El programa “Polymath”, resulta ser un programa práctico, y muy sencillo de

ejecutar, puesto que cuenta ya con las herramientas necesarias para el desarrollo
de los sistemas de ecuaciones no lineales, se puede lograr introducir diferentes

números de ecuaciones, indicando el punto inicial para cada variable a resolver.

Tal como se muestra para el ejemplo 3 en la siguiente imagen.

Una vez que se introducen todas las ecuaciones se mostrara en la parte superior un

“check” de color azul que indica que esta listo para la solución.

Posteriormente para ejecutar el programa, se da “click” a la flecha de color fucsia

mostrada en la siguiente imagen.


A continuación, se mostrará una nueva ventana con tablas, la primera indica los valores
de las soluciones, asimismo el valor de la función evaluado en ese punto, junto con los
valores iniciales, en la siguiente tabla se muestra las ecuaciones, y al final un resumen
de los resultados.

Un error que se presentó al desarrollar la ejecución del programa en el ejemplo 3 fue

por el valor de la constante “R”, ya que cuando esta tomo el valor de 5, el número de

iteraciones excedió a lo estimado por el programa. Seguidamente se muestra la ventana


que se mostró cuando el valor de “R” tomo el valor 5, tenga en cuenta que “R”, solo

vario a dos de las anteriores ecuaciones, y que solo se presentó error para este valor, ya

que con el valor de “R=10” no se vio ningún error y los valores fueron muy próximos a

ser exactos.

b.4) Adaptación del Programa CONLES en Fortran 77 al Fortran 90.

En este apartado se trato de realizar una simulación del programa CONLES en Fortran,

puesto que los autores del texto en una de las referencias bibliográficas que hacen

mención, al procedimiento para encontrar las indeterminaciones de la ecuación, o los

términos que la llevan a esa indeterminación, el procedimiento de la adaptación resulto

un tanto complejo debido a que el programa maneja códigos un poco difíciles que

entender, pero si resulto un tanto similar al lenguaje “C++”.

A continuación, se muestra el traslado del programa CONLES para un ejemplo sencillo

en Fortran 90, todas las imágenes de las ventanas siguientes muestran el programa:
Finalmente, al momento de compilar el programa, no se logró obtener debido a que

algunos valores mostrados en los artículos de autor Shacham no pudo adaptarse a

Fortran 90.
En esta ventana se observa el número de errores y las advertencias, del programa por lo

que se optó por desarrollar para la resolución de los ejemplos del artículo lo mencionado

anteriormente.

También podría gustarte