Está en la página 1de 19

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE INGENIERÍA QUÍMICA


CARRERA DE INGENIERÍA QUÍMICA

SIMULACIÓN DE
PROCESOS II
TALLER #3
SISTEMA DE ECUACIONES
LINEALES
ESTUDIANTE: Molina Nugra Josué
FECHA DE REALIZACIÓN: 26/06/2019
DOCENTE: Ing. Gonzalo Villa
SEMESTRE: 7mo PARALELO: 7-2
CICLO: I
ECUACIONES LINEALES IMPLEMENTADOS EN MATLAB

1) Ejemplo para la comparación de métodos de solución


El siguiente script aplica las tres metodologías para resolver el sistema de ecuaciones; los
tres métodos encuentran la misma solución, y solo el error de redondeo producido en el
cálculo de la inversa de la matriz A produce un residuo pequeño de norma 8.9·10-16,
siendo los restantes residuos exactamente cero. En el caso de la factorización LU, la rutina
entrega una matriz de permutación P, de modo que P·A = L·U; esta matriz P representa
intercambios de filas realizados en la estrategia de pivoteo parcial, para prevenir ceros (o
casi ceros) en la diagonal principal.
 COMAND WINDOW
 SCRIPT

 ANÁLISIS LÍNEA POR LÍNEA

Línea 2: Clear, elimina todas las variables del espacio de trabajo actual, liberándolas de
la memoria del sistema. Clc, borra todo el texto de la ventana de comandos, dando por
resultado una pantalla clara.
clear, clc
Línea 3: Ingreso de matrices en forma horizontal.
A=[2 1 -3; -1 3 2; 3 1 -3]

Línea 4: Ingreso de matrices en forma vertical.


b=[-1 12 0]'

Línea 6: Calculo de la inversa de la multiplicación de las matrices.


x1=inv(A)*b

Línea 7: Multiplicación de factores.


r1=A*x1-b

Línea 9: División de factores.


x2=A\b

Línea 10: Multiplicación de factores.


r2=A*x2-b

Línea 12: Factorización especial que resuelve la matriz completa.


[L,U,P]=lu(A)

Línea 13: Multiplicación de factores.


b3=P*b

Línea 14: División de factores


y3=L\b3

Línea 15: División de factores.


x3=U\y3

Línea 16: Resolución de factores.


r3=A*x3-b

Línea 18: Genera una tabla en donde presentan los resultados de las matrices resueltas.
tabla=[x1 x2 x3]

Línea 19: Encuentra los residuos, los polos y el término directo de


una Expansión de Fracción Parcial de la relación de dos polinomios.
Residuos=[r1 r2 r3]

Línea 20: Muestra la solución de la matriz A.


disp('Soluciones de la matriz A con diversos metodos de resolucion')

Línea 21: Muestra el valor de la inversa del operador sobre la factorización LU.
disp('Inversa Operador \ Fact LU')

Línea 22: Muestra la tabla.


disp(tabla)

Línea 23: Muestra el resultado del comando residuos.


disp('Residuos de los diversos métodos de resolución')

Línea 24: Muestra el valor de la inversa del operador sobre la factorización LU.
disp('Inversa Operador \ Fact LU')

Línea 25: Muestra el resultado del comando residuos.


disp(Residuos)

 CONCLUSIONES
1. Para la resolución de ecuaciones lineales en MATLAB se puede realizar mediante
tres métodos que son: 1er método es la inversa de la matriz, 2do método es el
operador (‘\’) mldivide, 3er método es la factorización LU.
2. Para la resolución de los problemas se plantea un sistema de ecuaciones de dos y
tres incógnitas respectivamente.
3. Dichas ecuaciones se las resuelve aplicando notación matricial aplicada en
MATLAB.
 INVESTIGACION DE LOS DIFERENTES MÉTODOS

Método de Gauss-Jordan
Este método es una variación de la eliminación de Gauss para resolver el sistema Ax = b
siendo A una matriz cuadrada inversible de orden n. Consiste en eliminar también los
elementos que están por encima del pivote a la vez que se escalan las filas para que el
pivote sea la unidad. El pivoteo sigue siendo necesario en este método por las mismas
razones que el método de eliminación de Gauss. (Mugruza, 2008)
[A| b] → [In | x]
Siendo x la solución del sistema.
Las aplicaciones más usuales de este método son:
i) Cálculo de la matriz inversa
[A| In] → [In | A-1 ]
ii) Resolución de sistemas en los que solo varían los términos independientes. Si
designamos por B1, B2,···, Bk las columnas de los términos independientes de los
distintos sistemas y S1, S2,···, Sk sus conjuntos soluciones entonces:
[A | B1, B2,···, Bk ] → [In | S1, S2, ····, Sn] si es compatible determinado.
[A | B1, B2,···, Bk ] → [T | S1, S2, ····, Sn] si es compatible indeterminado, siendo T una
matriz unitaria distinta de la unidad. (Mugruza, 2008)

Método de factorización o descomposición LU


Este método de resolución de un sistema S ≡ Ax = b es consecuencia inmediata de la
reducción de la matriz A a una matriz escalonada U por el método de eliminación de
Gauss. (Mugruza, 2008)
El procedimiento, consiste en transformar la matriz A, mediante operaciones elementales
en las filas de la matriz ampliada A|b, en un producto A = LU donde L es una matriz
triangular inferior (mxm) y U es una matriz escalonada (mxn). De esta forma, el sistema
S anterior se escribe: (Mugruza, 2008)
LUx = b
Haciendo Ux = z, queda el sistema L z= b que por sustitución hacia adelante es de
resolución inmediata y una vez obtenida z, se obtendría x en Ux = z con un procedimiento
análogo de resolución hacia atrás. (Mugruza, 2008)
− Si no es necesario el pivoteo (intercambio de filas), la matriz U es la resultante de la
eliminación de Gauss y la matriz L = E-1 donde E es la matriz que resulta de aplicar las
mismas operaciones elementales que transforman A en U a la matriz unidad de orden m,
es decir: (Mugruza, 2008)
Si Ek·Ek-1····E1·A=U, donde Ei son las matrices elementales1 de la reducción de Gauss
y designamos por E = Ek·Ek-1····E1 ⇒ E·A = U ⇒ A = E-1 ·U, luego: (Mugruza, 2008)
A = LU, donde L= E-1 y U es la matriz escalonada de la reducción de Gauss.
MATLAB proporciona la descomposición LU, sin pivoteo, de una matriz A mediante la
instrucción
[L,U]=lu(A)
− Si es necesario el intercambio de filas (pivoteo) y conociéramos dichos cambios antes
de aplicar Gauss, podríamos expresar el efecto de los mismos mediante una matriz P
unitaria (los elementos no nulos son 1 y en cada fila hay un único 1 y lo mismo en cada
columna) que es la resultante de aplicar dichos cambios a la matriz unidad
correspondiente (mxm en este caso), entonces 𝑃𝐴𝑥 = 𝑃𝑏 = 𝑏̃ y se procedería a la
descomposición LU de PA como en el caso anterior, es decir: (Mugruza, 2008)

𝑃𝐴 = 𝐿𝑈 ⇒ 𝐿𝑢𝑥 = 𝑏̃ y haciendo Ux = z, se resolvería,

En primer lugar, Lz = 𝑏̃ y, a continuación, Ux = z


MATLAB proporciona la descomposición LU, con pivoteo, de una matriz A mediante la
instrucción
[L,U,P]=lu(A)
Observación: La factorización LU presenta la ventaja de que con las mismas L y U
permite la resolución de sistemas de ecuaciones lineales que solo difieren en los términos
independientes. (Mugruza, 2008)

Método de eliminación de Gauss (Mugruza, 2008)


Este es el método más conocido, consiste en transformar, mediante operaciones
elementales en las ecuaciones del sistema, un sistema S de ecuación matricial Ax = b, en
un sistema S’ de forma escalonada o triangular y ecuación Ux = c, cuya resolución es
inmediata. (Mugruza, 2008)
Diremos que un sistema S’ tiene forma escalonada o es escalonado si es de la forma:

En forma matricial: (Mugruza, 2008)


La matriz de coeficientes A se transforma en una matriz U escalonada.
Si A es una matriz cuadrada, se transforma en una matriz U triangular superior. Es decir,
un sistema S’ está en forma triangular o es triangular si es de la forma: (Mugruza, 2008)

En forma matricial:

En particular, si A es invertible (sistema compatible determinado), se transforma en una


matriz U triangular superior con todos los elementos de la diagonal principal distintos de
cero 𝑢𝑖𝑖 ≠0 .
En general: (Mugruza, 2008)
i) El número de filas no nulas de U indica su rango.
ii) La solución del sistema S’ se obtiene por sustitución hacia atrás, desde la
última ecuación hacia la primera del sistema escalonado.
iii) El proceso que transforma A en U es el siguiente: designando por f1, f2,…,fm
las filas de A, transformamos a21 en 0 restando a la segunda fila la primera
multiplicada por a21/a11 , es decir, f2 - a21 /a11 f1, de igual modo
transformamos a31 en 0 con f3 - a31/a11 f1, en general, transformamos ap1
en 0 restando a la fila p-ésima la primera multiplicada por ap1 a11 , es decir,
fp - ap1 /a11 f1 (para p= 1,…,m). Se obtiene así una nueva matriz cuya primera
columna solo tiene al elemento u11 = a11 ≠ 0 (a11 se denomina pivote). Se
procede de igual manera para transformar esta matriz en otra cuyos elementos
por debajo de u22 sean 0 (u22 es ahora el pivote) y así sucesivamente hasta
obtener la matriz escalonada U (los elementos de la diagonal principal son los
pivotes utilizados).
iv) En el desarrollo del apartado anterior se pueden presentar dos problemas:
 Los errores de redondeo se pueden multiplicar si no se elige el pivote
adecuado.
 Un pivote puede convertirse en 0 en el transcurso del proceso.
El denominado pivoteo elimina el segundo problema y contribuye a aumentar
la exactitud de la solución, incluso cuando los 𝑢𝑖𝑖 son todos distintos de 0.
Hay varias estrategias de pivoteo, la más usual es el pivoteo de columna que
explicamos a continuación.
El pivoteo consiste en intercambiar el orden de las ecuaciones de forma que,
en cada columna, el pivote sea el elemento de mayor valor absoluto, es decir,
recolocamos primero las ecuaciones de manera que en la primera columna el
pivote |𝑢11|≥|𝑢𝑖1| i=2…n, procedemos a la eliminación (hacer 0 por debajo de
u11) y, a continuación, recolocamos las ecuaciones de la 2 a la n de forma que
|𝑢22|≥|𝑢𝑖2| i=3…n, se procede entonces a la eliminación (hacer 0 por debajo de
u22) y así sucesivamente.
Esta variante del método de Gauss se denomina método de eliminación de
Gauss con pivotación parcial y es la que está implementada en MATLAB
con el operador \ cuando el sistema Ax = b es compatible determinado: x =
A\b. (Mugruza, 2008)

 NUEVOS COMANDOS

Residue
Sintaxis (MatchWorks, 2013)
[r,p,k] = residue(b,a)
[b,a] = residue(r,p,k)
Descripción (MatchWorks, 2013)
[r,p,k] = residue(b,a)encuentra los residuos, los polos y el término directo de una
Expansión de Fracción Parcial de la relación de dos polinomios, donde la expansión es
de la forma
Las entradas a residueson vectores de coeficientes de los polinomios b = [bm ... b1 b0]y
a = [an ... a1 a0]. Las salidas son los residuos r = [rn ... r2 r1], los polos p = [pn ... p2 p1]y
el polinomio k. Para la mayoría de los problemas de libros de texto, kes 0o una constante.
[b,a] = residue(r,p,k)convierte la fracción de expansión parcial a la proporción de dos
polinomios y devuelve los coeficientes en by a.
Ejemplos: (MatchWorks, 2013)
Encuentra la expansión parcial de fracciones con raíces reales
Encuentre la expansión de fracción parcial de la siguiente proporción de polinomios F (s)
usando residue
b = [-4 8];
a = [1 6 8];
[r, p, k] = residuo (b, a)
r=2×1

-12
8
p=2×1
-4
-2
k=
[]
Esto representa la expansión de la fracción parcial.
Convertir la expansión de fracción parcial de nuevo a coeficientes polinomiales usando
residue.
[b, a] = residuo (r, p, k)
b=1×2
-4 8
a=1×3
168
Este resultado representa la fracción original F ( s ).
Expansión con raíces complejas e igual grado de numerador y denominador
Si el grado del numerador es igual al grado del denominador, la salida kpuede ser distinta
de cero.
Encuentre la expansión de fracción parcial de una relación de dos polinomios F ( s ) con
raíces complejas e igual grado de numerador y denominador, donde F ( s ) es
b = [2 1 0 0];
a = [1 0 1 1];
[r, p, k] = residuo (b, a)
r = 3 × 1 complejo
0.5354 + 1.0390i
0.5354 - 1.0390i
-0.0708 + 0.0000i
p = 3 × 1 complejo
0.3412 + 1.1615i
0.3412 - 1.1615i
-0.6823 + 0.0000i
k=2
residue devuelve las raíces y polos complejos, y un término constante en k, que representa
la expansión parcial de la fracción
Expansión con grado de numerador mayor que el grado de denominador
Cuando el grado del numerador es mayor que el del denominador, la salida kes un vector
que representa los coeficientes de un polinomio en s .
Realice la siguiente expansión de fracción parcial de F ( s ) utilizando residue.
b = [2 0 0 1 0];
a = [1 0 1];
[r, p, k] = residuo (b, a)
r = 2 × 1 complejo
0.5000 - 1.0000i
0.5000 + 1.0000i
p = 2 × 1 complejo
0.0000 + 1.0000i
0.0000 - 1.0000i
k=1×3
2 0 -2
krepresenta el polinomio .

Inv
Sintaxis (MathWorks, 2013)
Y = inv(X)
Descripción (MathWorks, 2013)
Y = inv(X) calcula la inversa de la matriz cuadrada X.
 X^(-1) equivale a inv(X).
 x = A\b se calcula de manera diferente que x = inv(A)*b y se recomienda para resolver
sistemas de ecuaciones lineales.
Ejemplo (MathWorks, 2013)
Matriz inversa
Calcule la inversa de una matriz de 3 por 3.
X = [1 0 2; -1 5 0; 0 3 -9]
X = 3×3

1 0 2
-1 5 0
0 3 -9

Y = inv(X)
Y = 3×3

0.8824 -0.1176 0.1961


0.1765 0.1765 0.0392
0.0588 0.0588 -0.0980

Compruebe los resultados. Idealmente, Y*X produce la matriz de identidad. Dado


que inv realiza la inversión de matriz mediante cálculos de punto flotante, en la
práctica Y*Xestá cerca de la matriz de identidad eye(size(X)), pero no es exactamente igual.
Y*X
ans = 3×3

1.0000 0.0000 -0.0000


0 1.0000 -0.0000
0 -0.0000 1.0000

Resolver un sistema lineal


Examine por qué la solución de un sistema lineal al invertir la matriz mediante inv(A)*b es
inferior a la solución usando directamente el operador de barra invertida, x = A\b.
Cree una matriz aleatoria A de orden 500 construida para que su número de
condiciones, cond(A), sea 1e10 y su norma, norm(A), sea 1. La solución exacta x es un
vector aleatorio de longitud 500, y el lado derecho es b = A*x. Así, el sistema de ecuaciones
lineares se condiciona mal, pero es coherente.
n = 500;
Q = orth(randn(n,n));
d = logspace(0,-10,n);
A = Q*diag(d)*Q';
x = randn(n,1);
b = A*x;
Solucione el sistema lineal A*x = b invirtiendo la matriz de coeficientes A.
Utilice tic y toc para obtener información de temporización.
tic
y = inv(A)*b;
t = toc
t = 0.1128
Halle el error absoluto y residual del cálculo.
err_inv = norm(y-x)
err_inv = 6.1145e-06
res_inv = norm(A*y-b)
res_inv = 4.9098e-07
Ahora, solucione el mismo sistema lineal utilizando el operador de barra invertida \.
tic
z = A\b;
t1 = toc
t1 = 0.0731
err_bs = norm(z-x)
err_bs = 5.0241e-06
res_bs = norm(A*z-b)
res_bs = 3.4124e-15
El cálculo de barra invertida es más rápido y tiene un error residual inferior en varios
órdenes de magnitud. El hecho de que err_inv y err_bs estén ambos en el orden de 1e-
6 simplemente refleja el número de condiciones de la matriz.

El comportamiento de este ejemplo es típico. El uso de A\b en lugar de inv(A)*b es de dos


a tres veces más rápido y produce residuales en el orden de la precisión de la máquina en
relación con la magnitud de los datos.
2) CONTENIDO CALÓRICO DE INSECTOS EN PECES
Supongamos que las truchas de un lago se están alimentando de dos especies de insectos,
por decir mosquitos y polillas, si estamos interesados en determinar el valor calórico
suministrado al pez por cada una de las dos especies de insectos, si atrapamos dos peces
y examinamos sus contenidos del estómago, podríamos determinar el número de cada
tipo de insectos comido por cada pez y usar una bomba calorimétrica para medir el
contenido calórico de cada estómago. Supongamos que encontramos:

Si ahora denominamos x1 al contenido calórico promedio de cada mosquito comido y x2


al contenido calórico promedio de las polillas comidas

 SCRIPT
 COMAND WINDOW

 ANÁLISIS LÍNEA POR LÍNEA


Línea 2: Se eliminan todas las variables en la ventana actual. En el Command Window
y en el Workspace.
clear,clc

Línea 3: Se muestra en la command window el texto ‘Ingreso de datos’.


disp('Ingreso de datos')

Línea 4: Se muestra en la command window el texto ‘***************************’.


disp ('****************************')

Línea 5: disp Se muestra en la command window un espacio.


(' ')

Línea 6: Al formar el sistema de ecuaciones con notación matricial, la primera fila son
los coeficientes que hacen referencia al número de mosquitos y la segunda fila los
coeficientes que hacen referencia al número de polillas de los dos pescados.
A=[18 12; 14 8]

Línea 7: Coeficientes que hacen referencia al contenido calórico en el estómago.


b=[660; 480]

Línea 8: Utilizamos el método de la barra invertida para calcular los valores de x.


x=A\b

Línea 9: Se muestra en la command window el texto ‘***************************’.


disp('***************************')
Línea 10: En esta línea se denota que x1 será el primer valor de x y este valor será el
contenido calórico promedio de cada mosquito comido.
x1=x(1);

Línea 11: En esta línea se denota que x2 será el segundo valor de x y este valor será el
contenido calórico promedio de las polillas comidas.
x2=x(2);

Línea 12: Se muestra en la command window un espacio.


disp(' ')

Línea 13: Se muestra en la command window el texto ‘los mosquitos nos generaran:’.
disp('los mosquitos nos generaran:')

Línea 14: Se muestra el resultado de x1.


disp(x1)

Línea 15: Se muestra en la command window el texto ‘calorías’.


disp('calorias')

Línea 16: Se muestra en la command window un espacio.


disp(' ')

Línea 17: Se muestra en la command window el texto ‘**************************’.


disp('**************************')

Línea 18: Se muestra en la command window un espacio.


disp(' ')

Línea 19: Se muestra en la command window el texto ‘las polillas nos generaran:’.
disp('las polillas nos generaran:')

Línea 20: Se muestra el resultado de x2.


disp(x2)

Línea 21: Se muestra en la command window el texto ‘calorías’.


disp('calorias')

Línea 22: Se muestra en la command window un espacio.


disp(' ')

Línea 23: Se muestra en la command window el texto ‘**************************’.


disp('*****************************')
 CONCLUSIONES
1. En este ejercicio de contenido calórico de peces se aprende que la mejor manera
de resolver ecuaciones lineales es representándolas como matrices y posterior a
esto aplicar los comandos necesarios.
2. Otra conclusión es que para encontrar las incógnitas de esta ecuación lineal se
aplica el símbolo de ecuación matricial (‘\’ o ‘/’) para resolver ecuaciones lineales
simultáneas.

3) PROCESO DE TRATAMIENTO DE METALES


Las superficies de metal son a menudo limpiadas usando solventes orgánicos en un tanque
desengrasador abierto por el tope. Uno de los solventes ampliamente usados para tales
operaciones es 1,1,1 – tricloroetano (TCE).
El TCE pertenece a un grupo de productos químicos altamente estables conocido como
agotadores de ozono. La Figura 3.2 bosqueja una operación típica que desengrasa. El
factor de emisión para el proceso mostrado es estimado a ser 0.6 lb/lb de TCE entrando
en el desengrasador.
El solvente del desengrasador es enviado a una unidad de recuperación de solvente donde
80 % del solvente es recobrado y 20 % del solvente es evacuado con el lodo.

Para averiguar la viabilidad de la instalación de un sistema de recuperación de vapor,


determinar la cantidad de TCE enviado a la atmósfera por la libra de TCE nuevo usado.
Si el sistema de recuperación de vapor es 90 % eficiente, determine la fracción de
tricloroetano perdido a la atmósfera y la fracción yendo con el lodo.
Asumiendo una base de 1 lb para F01. Las ecuaciones de balance de masa alrededor de
las dos unidades para el proceso sin la unidad de recuperación de vapor son:

La ecuación para la cantidad de emisiones de TCET en términos de la cantidad de TCE


entrando al desengrasador es:
 SCRIPT
 ANÁLISIS LÍNEA POR LÍNEA

Línea 2: Clear, elimina todas las variables del espacio de trabajo actual, liberándolas de
la memoria del sistema. Clc, borra todo el texto de la ventana de comandos, dando por
resultado una pantalla clara.
clear,clc

Línea 3: Muestra el texto ‘Ingreso de datos’.


disp('Ingreso de datos')

Línea 4: Muestra el texto ‘**********************************’.


disp('**************************************')

Línea 5: Muestra un espacio en la comand window.


disp('')

Línea 6: Ingreso de matriz orientación horizontal.


A=[1 1 -1;0 1 -0.6;0.8 0 -1]

Línea 7: Ingreso de matriz resultante orientación vertical


b=[1; 0.6; 0]

Línea 8: Resolución de matrices utilizando división inversa.


x=A\b

Línea 9: Muestra el texto ‘**********************************’.


disp('**************************************')

%Complete el codigo presentado en la comand windows con texto que


%identifique las respuestas

Línea 10: Con el comando fprintf se muestra un mensaje implícito en la comand


Windows, junto el valor numérico con solo 4 decimales “%f” de la variable especificada
con el valor de x(1,1)siendo de la fila 1 y columna 1.
fprintf('Para f12 es %.4f \n',x(1,1))

Línea 11: Con el comando fprintf se muestra un mensaje implícito en la comand


Windows, junto el valor numérico con solo 4 decimales “%f” de la variable especificada
con el valor de x(2,1) siendo de la fila 2 y columna 1.
fprintf('Para f13 es %.4f \n',x(2,1)')

Línea 12: Con el comando fprintf se muestra un mensaje implícito en la comand


Windows, junto el valor numérico con solo 4 decimales “%f” de la variable especificada
con el valor de x(3,1) siendo de la fila 3 y columna 1.
fprintf('Para f21 es %.4f \n',x(3,1)')
Línea 13: Con el comando fprintf muestra un mensaje implícito en la comand Windows,
junto el valor numérico con solo 4 decimales “%.4f” de la variable especificada para f24
cuyo valor es la diferencia entre el valor de x de la posición 1 y 3 de la columna 1.
fprintf('Para f24 es %.4f \n',((x(1,1))-(x(3,1))))

 COMAND WINDOW

 CONCLUSION

En este ejercicio aplicado en MATLAB se utilizó el símbolo de ecuación matricial ‘\’


para poder resolver la matriz, y luego para completar el código con el comando frpintf se
lo utilizó para presentar un mensaje el cual facilitó la aplicación dentro de los comandos
utilizados.

BIBLIOGRAFÍA
MatchWorks. (2013). Obtenido de http://matlab.izmiran.ru/help/techdoc/ref/residue.html

MathWorks. (2013). Obtenido de https://la.mathworks.com/help/matlab/ref/inv.html

Mugruza, C. (07 de 2008). Metodos Numericos con Matlab. Obtenido de


https://es.slideshare.net/sandyludy/metodos-numericos-con-matlab

También podría gustarte