UNIVERSIDAD MAYOR DE SAN ANDRÉS
FACULTAD DE INGENIERIA
INGENIERIA QUIMICA
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
DOCENTE: ING. [Link]. ROBERTO PARRA ZEBALLOS
UNIVERSITARIO: AVALOS PAREDES IRVING.
PARALELO: “A”
SISTEMA DE ECUACIONES LINEALES ALGEBRAICAS
La Paz –Bolivia
2.019
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
SISTEMAS DE ECUACIONES ALGEBRAICAS
ANALISIS DE UN SISTEMA DE REACTORES EN ESTADO ESTABLE
1.- ENUNCIADO:
PROBLEMA 12.6
La Figura 12.6 muestra 3 reactores unidos por tuberías. Como se indica el ratio (velocidad) de flujo (Q, con
unidades de metros cúbicos por segundo) multiplicado por la concentración del reactor del que se origina el flujo
(C, con unidades de miligramos por metro cubico).Si el sistema está en condiciones estables, la transferencia de
entrada a cada reactor se balancea con la transferencia de salida desarrolle ecuaciones de balance másico para os
reactores y resuélvalas 3 ecuaciones algebraicas simultaneas para sus concentraciones.
PROCEDIMIENTO BALANCE MASICO: ENTRADAS= SALIDAS
1.1 BALANCE PARA REACTOR 1 :
200 + (𝑄21 × 𝐶2 ) = (𝑄13 × 𝐶1 ) + (𝑄2 × 𝐶1 )
𝑺𝑼𝑺𝑻𝑰𝑻𝑼𝒀𝑬𝑵𝑫𝑶 𝑽𝑨𝑳𝑶𝑹𝑬𝑺 𝑫𝑬 𝑪𝑨𝑼𝑫𝑨𝑳 "𝑸" 𝑻𝑬𝑵𝑬𝑴𝑶𝑺:
200 = 130𝐶1 − 30𝐶2 𝐸𝑐. (𝛼)
1.2 BALANCE PARA REACTOR 2 :
(𝑄12 × 𝐶1 ) = (𝑄23 × 𝐶2 ) + (𝑄21 × 𝐶2 )
𝑺𝑼𝑺𝑻𝑰𝑻𝑼𝒀𝑬𝑵𝑫𝑶 𝑽𝑨𝑳𝑶𝑹𝑬𝑺 𝑫𝑬 𝑪𝑨𝑼𝑫𝑨𝑳 "𝑸" 𝑻𝑬𝑵𝑬𝑴𝑶𝑺:
0 = −90𝐶1 + 90𝐶2 𝐸𝑐. (𝛽)
1.3 BALANCE PARA REACTOR 3 :
500 + (𝑄23 × 𝐶2 ) + (𝑄13 × 𝐶1 ) = (𝑄33 × 𝐶3 )
𝑺𝑼𝑺𝑻𝑰𝑻𝑼𝒀𝑬𝑵𝑫𝑶 𝑽𝑨𝑳𝑶𝑹𝑬𝑺 𝑫𝑬 𝑪𝑨𝑼𝑫𝑨𝑳 "𝑸" 𝑻𝑬𝑵𝑬𝑴𝑶𝑺:
500 = −40𝐶1 − 60𝐶2 + 120𝐶3 𝐸𝑐. (𝜃)
REALIZAMOS SISTEMA DE ECUACIONES:
200 = 130𝐶1 − 30𝐶2
{ 0 = −90𝐶1 + 90𝐶2
500 = −40𝐶1 − 60𝐶2 + 120𝐶3
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
RESOLVIENDO EL SISTEMA DE ECUACIONES:
200 = 130𝐶1 − 30𝐶2 (𝛼)
{
0 = −90𝐶1 + 90𝐶2 ⋰⋰ × 130⁄90 (𝛽)
____________________________________________
SUMAMOS: 𝐶2 = 2 [𝑚𝑔/𝑚3 ]
200 = 100𝐶2 →
0 = −90𝐶1 + 90𝐶2 (𝛽) ⋰⋰ × 1⁄90
DESPEJANDO VEMOS: 𝐶2 = 𝐶1 → 𝐶1 = 2 [𝑚𝑔/𝑚3 ]
REEMPLAZANDO LOS CALORES ENCONTRADOS EN (𝜃):
500 = −40𝐶1 − 60𝐶2 + 120𝐶3 (𝜃)
500 + 40𝐶1 + 60𝐶2 500 + (40 × 2) + (60 × 2)
𝐶3 = =
120 120
𝐶3 = 35⁄6 [𝑚𝑔/𝑚3 ]
METODOS DIRECTOS:
METODO DETERMINANTES:
𝟏𝟑𝟎 −𝟑𝟎 𝟎 𝟐𝟎𝟎 −𝟑𝟎 𝟎
∆= |−𝟗𝟎 𝟗𝟎 𝟎 | = 𝟏𝟎𝟖𝟎𝟎𝟎𝟎 ∆𝟏 = | 𝟎 𝟗𝟎 𝟎 | = 𝟐𝟏𝟔𝟎𝟎𝟎𝟎
−𝟒𝟎 −𝟔𝟎 𝟏𝟐𝟎 𝟓𝟎𝟎 −𝟔𝟎 𝟏𝟐𝟎
𝟏𝟑𝟎 𝟐𝟎𝟎 𝟎 𝟏𝟑𝟎 −𝟑𝟎 𝟐𝟎𝟎
∆𝟐 = |−𝟗𝟎 𝟎 𝟎 | = 𝟐𝟏𝟔𝟎𝟎𝟎𝟎 ∆𝟑 = |−𝟗𝟎 𝟗𝟎 𝟎 | = 𝟔𝟑𝟎𝟎𝟎𝟎𝟎
−𝟒𝟎 𝟓𝟎𝟎 𝟏𝟐𝟎 −𝟒𝟎 −𝟔𝟎 𝟓𝟎𝟎
2160000 2160000 6300000
𝐶1 = 𝐶2 = 𝐶3 =
1080000 1080000 1080000
𝐶1 = 2 [𝑚𝑔/𝑚3 ] 𝐶2 = 2[𝑚𝑔/𝑚3 ] 𝐶3 = 35⁄6 [𝑚𝑔/𝑚3 ]
MATRIZ DE COFACTORES Y ADJUNTA:
AC = B // A−1 → A−1 × 𝐴 × 𝐶 = A−1 × 𝐵 → 𝐶 = A−1 × 𝐵
DEBEMOS IDENTIFICAR NUESTRA MATRIZ FUNDAMENTAL Y EL DE TERMINOS
INDEPENDIENTES:
DE NUESTRO BALANCE EL SISTEMA MATRICIAL ES :
130 −30 0 𝐶1 200
[−90 90 0 ] [ 𝐶2 ] = [ 0 ]
−40 −60 120 𝐶3 500
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
A x C= B
130 −30 0 200 𝐶1
𝐴 = [−90 90 0 ] 𝐵 = [ 0 ] 𝐶 = [ 𝐶2 ]
−40 −60 120 500 𝐶3
𝟏𝟑𝟎 −𝟑𝟎 𝟎
∆= |−𝟗𝟎 𝟗𝟎 𝟎 | = 𝟏𝟎𝟖𝟎𝟎𝟎𝟎 ∆≠ 𝟎 𝐄𝐍𝐓𝐎𝐍𝐂𝐄𝐒 𝐓𝐈𝐄𝐍𝐄 𝐈𝐍𝐕𝐄𝐑𝐒𝐀 "𝐴"
−𝟒𝟎 −𝟔𝟎 𝟏𝟐𝟎
COFACTORES:
90 0
𝑀11 = | | = 10800 𝐶𝑜11 = (−1)1+1 × 𝑀11 = 10800
−60 120
−90 0
𝑀12 = | | = −10800 𝐶𝑜12 = (−1)1+2 × 𝑀12 = 10800
−40 120
−90 90
𝑀13 = | | = 9000 𝐶𝑜13 = (−1)1+3 × 𝑀13 = 9000
−40 −60
−30 0
𝑀21 = | | = −3600 𝐶𝑜21 = (−1)2+1 × 𝑀21 = 3600
−60 120
130 0
𝑀22 = | | = 15600 𝐶𝑜22 = (−1)2+2 × 𝑀22 = 15600
−40 120
130 −30
𝑀23 = | | = −9000 𝐶𝑜23 = (−1)2+3 × 𝑀23 = 9000
−40 120
−30 0
𝑀31 = | |=0 𝐶𝑜31 = (−1)3+1 × 𝑀31 = 0
90 0
130 0
𝑀32 = | |=0 𝐶𝑜32 = (−1)3+2 × 𝑀32 = 0
−90 0
130 −30
𝑀33 = | | = 9000 𝐶𝑜33 = (−1)3+2 × 𝑀33 = 9000
−90 90
NUESTRA MATRIZ DE ADJUNTO YTRASPUESTA:
10800 10800 9000 10800 3600 0
C = [ 3600 15600 9000] → C 𝑇 = [10800 15600 0 ]
0 0 9000 9000 9000 9000
𝐶𝑇
A−1 = => 𝐶 = A−1 × 𝐵
𝐴
2
𝐶= [ 2 ]
35/6
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
METODO GAUSS JORDAN (PASO A PASO):
130 −30 0 200 𝐹1 1 − 3⁄13 0 20⁄13
(−90 90 0 | 0 ) → 𝐹1 (−90 90 0 | 0 )
130
−40 −60 120 500 −40 −60 120 500
90𝐹1 + 𝐹2 → 𝐹2 40𝐹1 + 𝐹3 → 𝐹3
1 − 3⁄13 0 20⁄13 1 − 3⁄13 0 20⁄13
𝐹2
0 900⁄13 0 ||1800⁄13 → 𝐹2 (0 1 0 | 2 )
900⁄ 900 7300
900⁄ 7300⁄ 13 0 − ⁄13 120 ⁄13
(0 − 13 120 13)
3 900
𝐹1 + 𝐹 → 𝐹1 𝐹3 + 𝐹 → 𝐹3
13 2 13 2
1 0 0 2 𝐹3 1 0 0 2
(0 1 0 | 2 ) → 𝐹3 (0 1 0| 2 )
130
0 0 120 700 0 0 1 35⁄6
2.-ALGORITMO
METODO DIRECTO GAUSS JORDAN:
Leer matrices A y B de términos independientes
Unión de matrices en C= [A B]
USAR FOR PARA i DESDE LA PRIMERA FILA HASTA EL NMERO DE FILAS EXISTENTES
CONDICION IF si el elemento i,i de la diagonal es diferente de 1 Entonces se convierte a 1 dividiendo toda la fila por
dicho elemento e imprimir C además el resto de elementos de la columna deben convertirse a 0 : es decir si n es
diferente de i ya que si i y n son iguales entonces el elemento se encuentra en la diagonal
Para n desde la primera fila hasta el número de filas existentes
condición si n en la columna i no está en la diagonal es decir si i no es igual a n entonces se convierte a 0
Imprimir C
METODO ITERATIVO GAUSS SEIDEL:
Leer A: Matriz nxn B: Matriz nx1 P: Matriz nx1 inicial
delta tolerancia max1: número máximo de iteraciones
Calcular dimensión de B N=length (B)
Para k=1 hasta nro. de iteraciones
Para j=1 hasta N
CONDICION SI elemento j =1
Entonces la primera solución ser elemento de Primero menos elemento de A 12 MULTIPLICADO POR P
CONDICIONES INICIALES Y DIVIDIDO ENTRE DIAGONAL O PIVOTE DE LA MATRIZ A
SINO CONDICION SI ELEMENTO J=N
X(N)=(B(N)-A(N,1:N-1)*(X(1:N-1))')/A(N,N);
SINO
X(j)=(B(j)-A(j,1:j-1)*X(1:j-1)'-A(j,j+1:N)*P(j+1:N))/A(j,j);
CALCULAR ERROR= VALOR ABSOLUTO DE (NORMA ENTRE TRASPUESTA DE X Y VECTOR
CONDICIONES INICIALES
CONDICION SI error<delta o tolerancia y relerr<delta
Imprime nro. de iteraciones valores solución y el error
Sale del programa y a final vemos vector x lo trasponemos para que se vea 1x1
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
3.-DIAGRAMA DE FLUJO:
INICIO
A Vector
B Vector
[C] = [A B]
For i=1 to length [C]
C (i, i) ≠ 1
C (i, :) = C (i, :) / C (i, i)
For i=1 to length [C]
n≠ i
C (n, :) = - C (n, i) + C (i, :) + C (n, :)
FIN
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
INICIO
A Matriz
B Matriz
P Vector
Max1, Delta
N = length (B)
For k=1 to Max1
For j=1 to N
j == 1
j == N
X(j)=(B(j)-A(j, 1 to j-1)*X(1 to j-1)’-A(j, j+1 to N)*P(j+1 to N))/A(j, j) X(N)=(B(N)-A(j, 1 to j-1)*(X(1 to N-1))’)/A(N, N) X(1)=(B(1)-A(N, 1 to N-1))/A(1, 1)
err = abs (Norm(x’ - P))
relerr = err / norm (X) + eps
P=X‘
K, X(1), X(2), x(3)
FIN
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
4.-CODIFICACION:
METODO DIRECTO GAUSS JORDAN PASO A PASO:
%método de Gauss-Jordán (con procedimiento)
A=input('ingrese la matriz 1 '); %% entrada de
B=input('ingrese la matriz 2 '); % datos %%
C=[A B]; %%unión de los datos en una solo matriz
for i=1:length(C(:,1)) %%para i desde la primera fila hasta el número de
filas existentes
if C(i,i)~=1 %%si el elemento i,i de la diagonal es diferente de 1
C(i,:)= C(i,:)./C(i,i); %entonces se convierte a 1 dividiendo toda
la fila por dicho elemento
disp(C) %salida de datos
end
%además el resto de elementos de la columna deben convertirse a 0 :
%es decir si n es diferente de i ya que si i y n son iguales entonces el
%elemento se encuentra en la diagonal
for n=1:length(C(:,1)) %para n desde la primera fila hasta el número
de filas existentes
if n~=i % si n en la columna i no está en la diagonal es decir si i
no es igual a n
C(n,:)=-C(n,i).*C(i,:)+C(n,:); %entonces se convierte a 0
disp(C)
end
end
end
METODO ITERATIVO GAUSS SEIDEL:
function X=gseid(A,B,P,delta, max1)
A=input('ingrese la matriz 1 ');
B=input('ingrese la matriz 2 ');
P=input('\nIngrese el vector con las aproximacimaciones Iniciales:\n ');
max1=input('\nIngrese el número máximo de iteraciones:\n ');
delta=input('\nIngrese la tolerancia:\n ');
N = length(B);
for k=1:max1
for j=1:N
if j==1
X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1);
elseif j==N
X(N)=(B(N)-A(N,1:N-1)*(X(1:N-1))')/A(N,N);
else
X(j)=(B(j)-A(j,1:j-1)*X(1:j-1)'-A(j,j+1:N)*P(j+1:N))/A(j,j);
end
end
err=abs(norm(X'-P));
relerr=err/(norm(X)+eps);
P=X';
fprintf('Nit = %3d x1=%10.5f x2=%10.5f x3=%10.5f\n', k, X(1),
X(2), X(3))
if (err<delta)||(relerr<delta)
break
end
end
X=X';
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
METODO ITERATIVO GAUSS SEIDEL:alternativo
% METODO ITERATIVO DE GAUSS SEIDEL
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
format long %permite utilizar la maxima capacidad de la maquina
fprintf('METODO ITERATIVO DE GAUSS SEIDEL\n\n\n')
fprintf('================================\n\n\n')
a=input('Ingrese la matriz de coeficientes del balance:\n ');
b=input('\nIngrese los términos independientes:\n ');
x=input('\nIngrese el vector con las aproximacimaciones Iniciales:\n ');
iter=input('\nIngrese el número máximo de iteraciones:\n ');
tol=input('\nIngrese la tolerancia:\n ');
k=norm(a)*norm(a^-1);%Se calcula el condicional de la matriz de
coeficientes
disp('condicional=')
disp(k)
% la funcion disp nos permite imprimir una variable en el espacio de
trabajo
determinante=det(a);%se calcula el determinante de la matriz de
coeficientes
if determinante==0
disp('El determinante es cero, el problema no tiene solución única')
end
n=length(b); %numero de elementos del vector b
d=diag(diag(a)); %obtencion de la matriz diagonal
l=d-tril(a); %obtencion de la matriz diagonal superior L
u=d-triu(a); %obtencion de la matriz diagonal inferior u
fprintf('\n SOLUCION:\n')
fprintf('\nLa matriz de transicion de gauss seidel:\n')
T=((d-l)^-1)*u; % matriz de transicion de gauss
disp(T)
re=max(abs(eig(T))) %calculo del radio espectral
if re>1
disp('Radio Espectral mayor que 1')
disp('el método no converge')
return
end
fprintf('\nEl vector constante es::\n')
C=((d-l)^-1)*b; % vector constante C, para el metodo
disp(C)
i=0;
err=tol+1;
z=[i,x(1),x(2),x(3),err]; %vector que me permite graficar la tabla
while err>tol && i<iter
xi=T*x+C;
%disp(xi)
i=i+1;
err=norm(xi-x); %norma 2
%err=max(abs(xi-x)); %norma 1
%err=norm(xi-x)/norm(xi); %norma relativa
x=xi;
z(i,1)=i;
z(i,2)=x(1);
z(i,3)=x(2);
z(i,4)=x(3);
z(i,5)=err;
end
fprintf('\nTABLA:\n\n n x1 x2 x3 Error\n\n ')
disp(z) %impresion de la tabla.
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
5.-EJECUCION:
EN VENTANA DE COMANDOS DE FORMA DIRECTA:
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
METODO DIRECTO GAUSS JORDAN PASO A PASO:
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO
6.- Conclusiones
Vemos que al hacer balance másico y comparando método directo e iterativos se acercan al valor de la
solución.
En el método iterativo tomamos en cuenta una tolerancia y una matriz de condiciones iniciales y vemos
que a mayor nro de iteraciones mayor la precisión y menor el error.
PRQ-404 PROGRAMACION Y ANALISIS NUMERICO