6. Solução de sistemas lineares Neste capítulo trataremos da solução de sistemas lineares. Um sistema linear pode ser escrito da seguinte forma, onde o vetor contém as incógnitas do problema. = (E 6.1),,,,,, =,,, A matriz deve ser quadrada, não podendo ter determinante nulo (o determinante nulo é indicativo de que a matriz possui linhas linearmente dependentes). Lembrem-se que: A matriz identidade é o 1 da matemática vetorial, logo, = Essencialmente, é necessário obter o vetor isolado do lado esquerdo da equação. Para tanto, multiplica-se pela esquerda por ambos os lados da equação. O termo =, onde é a matriz identidade, o 1 da matemática matricial, não precisando ser representado em uma multiplicação. (E 6.2) 6.1 Por eliminação Gaussiana = = Aqui, será empregado o método de pivotação de Gauss. Para tanto, vamos nos lembrar que cada linha da matriz equivale aos coeficientes de uma equação, e cada elemento ao lado direito da equação. Podemos efetuar operações como multiplicar uma linha toda por uma constante e somar com outra linha, sem que se altere a solução problema linear. Vamos então efetuar uma série de operações lineares com as equações, ou seja, a matriz, de forma que esta seja gradualmente modificada até se obter a matriz identidade. Se guardarmos as operações efetuadas para a matriz identidade do lado direito da equação, obteremos a matriz inversa. 81
(E 6.3) Efetuaremos estas operações sobre a matriz estendida, escrita como: =,,, =,,,,,, A ideia básica consiste então em gradualmente eliminar os elementos das colunas da matriz, exceto os elementos das diagonais, mediante operações lineares com as equações do sistema Por exemplo, para eliminar o elemento da segunda linha e primeira coluna, vamos substituir a segunda linha por uma operação linear entre a linha 1 e a linha 2, na forma: Ajeitar 1ª coluna Ajeitar 2ª coluna Ajeitar 3ª coluna,,, (E 6.4),,,,,, Observe que, claramente, andaremos sobre os elementos da diagonal, marcando o pivot como elemento da diagonal. Na sequencia, percorremos todas as linhas, exceto a do pivot, anulando os elementos da coluna do pivot: Por fim, se divide a linha do pivot pelo valor do pivot para tornar o elemento da diagonal unitário. Um algoritmo básico do método está apresentado a seguir (estamos representado,: como a linha j da matriz). Para i = 1:n faça Encontre o maior em valor absoluto na submatriz :,:, efetue a troca de linha e coluna para que este elemento fique na posição do pivot. Guarde a posição das colunas (E 6.5), Se pivot <tolerância, Páre, matriz não inversível Fim Faça,:,:,,:,:,: / Por questões de precisão numérica, o pivot da matriz deve ser o elemento de maior valor absoluto submatriz a partir do termo da diagonal restante, i.e., 82
max :,:. Para tanto, pode ser necessário trocar a linha e a coluna para que se obtenha o maior pivot possível (o exemplo numérico ilustrará melhor). Um exemplo numérico a seguir ilustra o passo a passo. Exemplo 6.1-) Para o seguinte sistema linear, obtenha a solução do sistema linear. Solução: 2 1,2 4 1,4 1 3,4 5 =3,2 1,5 3 6 12 Zerando a primeira coluna Para solução, começamos tentando eliminar a primeira coluna. Por questões de precisão numérica, observe que devemos escolher o maior pivot possível, em valor absoluto. Da matriz de coeficientes, tal pivot é o número 6, associado ao elemento 3x3 da matriz de coeficientes. Vamos então re-escrever o sistema linear trocando a linha 3 com a linha 1 e a coluna 3 com a coluna 1: Trocamos a C3 com a C1, e os x s correspondentes 4 1,2 2 1,4 5 3,4 1 =3,2 6 3 1,5 12 Trocamos a L3 com a L1 6 3 1,5 12 5 3,4 1 =3,2 4 1,2 2 1,4 Observem que as equações permanecem as mesmas, ou seja, não modificamos o sistema de equações. Agora, tendo como pivot o número 6, iniciamos o processo. Para zerar o termo da segunda linha e primeira coluna, vamos fazer: Observe que isto significa: 5 6 6 3 1,5 5+6 5 12 6 3,4+35 6 1 1,55 =3,2 12 5 6 6 4 1,2 2 1,4 Resolvendo em números fica: 6 3 1,5 12 0 5,9 0,25 = 6,8 4 1,2 2 1,4 83
Vamos fazer agora para a terceira linha, objetivando eliminar o termo 3x1 da matriz. Logo: 4 6 6 3 1,5 0 5,9 0,25 4+6 4 = 6 1,2+34 6 2 1,54 6 Que numericamente fica: 6 3 1,5 0 5,9 0,25 0 3,2 3 12 = 6,8 6,6 12 6,8 1,4 12 4 6 Por fim, vamos dividir a primeira linha pelo primeiro elemento para surgir ali o termo da identidade: Obtendo: 6 1 0,5 0,25 2 0 5,9 0,25 = 6,8 0 3,2 3 6,6 Zerando a segunda coluna O pivot deve ser agora o elemento da segunda linha e segunda coluna. Agora, dentro da submatriz formada pelos termos a partir da segunda linha e segunda coluna, precisamos escolher um pivot. 5,9 0,25 h 3,2 3 O maior valor absoluto é 5,9. Este elemento precisa ficar na posição 2x2 da matriz, mas como já se encontra na posição, não precisamos trocar as colunas ou linhas. Precisamos agora eliminar a segunda coluna toda, exceto o termo 2x2. Vamos iniciar com a primeira linha, fazendo: Com isto temos que: 0,5 5,9 1 0,5 5,9 0,5 5,9 0,25+0,250,5 5,9 0 5,9 0,25 0 3,2 3 2 6,8 0,5 = 5,9 6,8 6,6 84
Obtendo numericamente: 1 0 0,2281 1,4237 0 5,9 0,25 = 6,8 0 3,2 3 6,6 Vamos então para a terceira linha, desejando eliminar o termo da terceira linha e segunda coluna. Assim: 3,2 5,9 Ou seja, os termos podem ser calculados como: 1 0 0,2281 1,4237 0 5,9 0,25 6,8 0 3,2 5,9 3,2 = 5,9 3+0,253,2 6,6+6,8 3,2 5,9 5,9 Que numericamente fica: 1 0 0,2281 1,4237 0 5,9 0,25 = 6,8 0 0 2,864 2,9118 Agora, dividimos a segunda linha por 5,9, pois desejamos obter a matriz identidade: Obtendo: 5,9 1 0 0,2281 1,4237 0 1 0,0423 = 1,1094 0 0 2,864 2,9118 Zerando a terceira coluna Observe que agora, só sobrou o número 2,864 como pivot. Precisamos zerar os termos da última coluna. Começamos com a primeira linha, fazendo: 0,228 2,864 1 0 0,228+2,864 0,228 1,4237+2,9118 0,228 2,864 = 2,864 0 1 0,0423 1,1525 0 0 2,864 2,9118 Que numericamente fica: 85
1 0 0 1,1911 0 1 0,0423 = 1,1525 0 0 2,864 2,9118 Para anular a segunda linha, fazemos: Logo: 0,0423 2,864 1 0 0 1,1911 0 1 0,0423+2,864 0,0423 = 1,1525+2,9118 0,0423 2,864 2,864 0 0 2,864 2,9118 Por fim, para transformar na identidade, basta dividir a linha 3 por 2,864: Obtemos por fim a resposta do problema: Apenas para reajustar a ordem: 6.2 Outros métodos 2,864 1 0 0 1,1911 0 1 0 = 1,1094 0 0 1 1,0165 1,0165 = 1,1094 1,1911 6.2.1 Guass-Jacobi Essencialmente, o método de Gauss-Jacobi consiste em isolar 1, de um lado da equação. A partir de uma estimativa inicial, sendo que =0 marca a iteração zero, os valores de das iterações seguintes +1 são atualizados como: (E 6.6) como: Forma vetorial: =,, 1, Em outra forma de apresentar, na forma vetorial, o método pode ser escrito 86
,,,,,, =,,, 0 0 0, 0 0 0,,, 0 0 + 0, 0 +0 0, =,, 0 0 0, 0 0 0 ++ = Sendo a matriz triangular inferior, uma triangular superior, e uma matriz diagonal. Assim, isolando o associado à multiplicação da matriz diagonal, tem-se que: (E 6.7) = + Essencialmente, adota-se então estimativas iniciais para do lado direito da expressão e atualiza-se (lado esquerdo da expressão): (E 6.8) = + Exemplo 6.2-) Para o seguinte sistema linear, obtenha as primeiras 4 iterações do método de Gauss-Jacobi, fornecendo como estimativa inicial ; =2,5;2,5 e represente graficamente como caminha o método. Solução: 3 1 2 4 = 0 2,1 Para o método de Gauss-Jacobi, as atualizações são as seguintes: =,, =,, = 0+1 3 = 2,1+2 4 As primeiras 4 iterações do método estão apresentadas na tabela a seguir IT x1 x2 0 2.5000 2.5000 1 0.8333 1.7750 2 0.5917 0.9417 3 0.3139 0.8208 As iterações estão apresentadas graficamente na figura a seguir. 87
6.2.2 Guass-Seidel Essencialmente, o método de Gauss-Seidel consiste em isolar 1, de um lado da equação. A partir de uma estimativa inicial, sendo que =0 marca a iteração zero, os valores de das iterações seguintes +1 são atualizados como: (E 6.9) =,,, 1, A diferença em relação ao método de Gauss-Jacobi reside no fato de que os já atualizados são empregados na atualização dos próximos ; ou seja, calcula-se, então, o valor de empregará o valor de ao invés do ; o valor de empregará os valores de, ; e assim sucessivamente. Forma vetorial: Análogo ao método de Gauss-Jacobi, o sistema de equações pode ser escrito como: ++ = Sendo a matriz triangular inferior, uma triangular superior, e uma matriz diagonal. Assim, isolando o associado à multiplicação da matriz diagonal e triangular inferior, tem-se que: (E 6.10) + = 88
Essencialmente, adota-se então estimativas iniciais para do lado direito da expressão e atualiza-se do lado esquerdo da expressão (E 6.11) =+ Exemplo 6.3-) Para o seguinte sistema linear, obtenha as primeiras 4 iterações do método de Gauss-Jacobi, fornecendo como estimativa inicial ; =2,5;2,5 e represente graficamente como caminha o método. Solução: 3 1 2 4 = 0 2,1 Para o método de Gauss-Seidel, as atualizações são as seguintes: =,, =,, IT x1 x2 0 2.5000 2.5000 1 0.8333 0.9417 2 0.3139 0.6819 3 0.2273 0.6387 A relação gráfica fica = 0+1 3 = 2,1+2 4 89
6.2.3 Convergência de Gauss-Jacobi e Gauss-Seidel Tanto no método de Gauss-Seidel quanto no método de Gauss-Jacobi, a relação entre duas iterações sucessivas fica: = = Diminuindo uma da outra e retrabalhando a expressão: = Sendo = + para Gauss-Jacobi e =+ para Gauss-Seidel. Definindo um vetor de diferenças de associado a uma iteração : Tem-se que: = (E 6.12) = Com isto: (E 6.13) = = = = = Assim, para que haja convergência, lim =0 lim =0 O que será verdade somente se =0, o que só ocorreria se chutássemos exatamente a solução, ou se lim =0, o que, segundo o Lema 5.1, só será verdade se o raio espectral da matriz for menor qu a unidade, ou seja: é <1 Note que a condição <1 é necessária, porém, não suficiente; a condição suficiente seria garantida se <1. Esta condição é garantida se a matriz for diagonal dominante, ou seja, a diagonal da matriz é maior do que a soma dos demais elementos da linha correspondente, em módulo, ou seja: (E 6.14), >, Estas provas estão apresentada no Apêndice 1. Portanto: 1, Se, em um sistema linear =, a matriz for diagonal dominante, os métodos de Gauss-Jacobi e Gauss-Seidel convergem para qualquer estimativa inicial! 90
6.3 Exemplos de aplicação na Engenharia Química Veremos a seguir alguns exemplos de aplicação de resolução de sistemas lineares na Engenharia Química. Vimos métodos de resolução de sistemas lineares; porém, para não complicar a aplicação, vamos ver a elaboração dos sistemas lineares em Engenharia Química, e empregaremos o comando do Scilab inv(a)*b para resolver os sistemas lineares resultantes. 6.3.1 Em balanços materiais com reciclo Exemplo 6.4-) Considere o seguinte problema de balanço material, sendo informados valores para a conversão e recuperação do composto A. Valor Conversão (R-1) Recuperação no fundo (V-1) 0,75 0,85 Para encontrar todos os valores das vazões de A nas correntes, monte o sistema linear e o resolva usando o Scilab. Solução: Vamos designar:, representa a vazão molar de A na corrente i, a conversão de A no reator a recuperação de no fundo do vaso As relações de balanço levam a:,=1000 h,=,+,,=, 1,=, 1,=, 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1,,,, 1000 0 = 0 0 0, 91
O seguinte código em Scilab monta as matrizes e resolve o sistema clc; clear; X = 0.75 r = 0.85 // Montando o sistema A = zeros(5,5) b = zeros(5,1) A(1,1) = 1 A(2,[1,2,5]) = [1,-1,1] // Linha 2, colunas 1, 2 e 5 A(3,[2,3]) = [1-X,-1] // Linha 3, colunas 2 e 3 A(4,[3,4]) = [1-r,-1] // Linha 4, colunas 3 e 4 A(5,[3,5]) = [r,-1] // Linha 4, colunas 3 e 5 b(1) = 1000 // Linha 1 do vetor b //resolvendo o sistema disp(inv(a)*b) O resultado é [1000. 1269.8413 317.46032 47.619048 269.84127] mol/h 6.3.2 Em linhas de distribuição Para aplicação de sistemas de distribuição, vamos primeiro considerar um exemplo que define conceitos básicos. Exemplo 6.5-) Em tubulações industriais, é possível modificar a vazão ao incluir bombas para adição ou válvulas para a dissipação de energia. Vamos representar a figura a seguir como a possibilidade de inclusão de bombas e/ou válvulas em dado trecho do sistema A energia mecânica adicionada pela bomba é designada por head, enquanto a energia dissipada por atrito válvula é denominada perda de carga, e ambas podem ser apresentadas em unidades de metro. Podemos modular ambas pela inserção de bombas ou válvulas. Entre dois pontos, representados a seguir, o balanço de energia mecânica entre dois pontos (nós) é dado por: h+ = + ² ² + 2 92
sendo a pressão, a velocidade e a altura, além de a densidade e a aceleração da gravidade. Em dado sistema, deseja-se levar o fluido de um ponto de sucção a uma pressão de 1 10 e a 3 de altura para ponto de descarga a a 2 10 e 5, sendo a velocidade igual em ambos os pontos. Admita =1 10 Calcule o h+ ² ². Solução: Por simples aplicação da relação dada: h+ = + ² ² + 2 h+ = 2 10 1 10 1 10 + ² ² +5 3=22 2 Para linhas de distribuição, entre cada trecho delimitado por dois nós aplica-se a equação de Bernoulli. Por exemplo, considere o seguinte sistema: (3) Nó inicial (1) (2) Nó intermediário (4) Nós finais Vamos designar _ como a soma do head com as perdas associada a cada trecho. _ =h _ +, =1_2,2_3,2_4 Para cada um dos três trechos, tem-se: _ = + ² ² + 2 _ = + ² ² + 2 _ = + ² ² + 2 Em um cenário em que se conhece as vazões nos nós, diâmetro dos dutos, e consequentemente a velocidade em todos os nós, e pressão nos nós intermediários e finais, as incógnitas se tornam: 93
_, _, _, Porém, temos apenas e equações, o que envolve que devemos conhecer ou a pressão no nó intermediário ou alguma relação envolvendo as demais variáveis. Exemplo 6.6-) Considere o seguinte sistema: (3) =1 10, =2 =1,4 10 Nó inicial (1) (2) Nó intermediário Nós finais =0, = = =1,5 =6, =1, =2, =5 (4) _ =7, =1 10 ³ Monte o sistema linear para calcular _, _, e os obtenha: Solução: 1 0 0 1 0 1 0 _ = + 2 + _ = + 2 + _ = + 2 + _ = + + 2 _ = + + 2 _ = + + 2 _ = + 2 + Em Scilab, o seguinte código pode ser implementado clear; clc; rho = 1e3; g = 9.81; P1 = 1e5; P3 = 2e5; P4 = 1.4e5; l1= 6; l2 = 1; l3 = 2; l4 = 5; x12 = 7; u1=0;u2=1.5;u3=1.5;u4=1.5; A = zeros(3,3) + 2 + + 2 94
b = zeros(3,1) A(1,1) = 1 A(2,[1,2]) = [1,rho*g] A(3,[1,3]) = [1,rho*g] b(1) = x12*rho*g+p1-rho*(u2^2-u1^2)/2-rho*g*(l2-l1) b(2) = P3+rho*(u3^2-u2^2)/2+rho*g*(l3-l2) b(3) = P4+rho*(u4^2-u4^2)/2+rho*g*(l4-l2) disp(inv(a)*b) O resultado fornece: =216595, _ = 0.6916412, _ = 3.8078491 6.4 Exercícios Exercício 6.1-) Escreva, em Scilab, as rotinas para o método de eliminação de Gauss, e a transforme em funções que resolvem sistemas lineares =. Exercício 6.2-) Escreva, em Scilab, as rotinas para o método de eliminação de Gauss, Gauss-Jacobi e Gauss-Seidel. Insira a verificação se a matriz é diagonal dominante, interrompendo o procedimento de cálculo caso a matriz não seja diagonal dominante. Exercício 6.3-) Efetue as primeiras 3 iterações dos métodos de Gauss-Jacobi e Gauss- Seidel para o seguinte sistema: 2 1 0 1 3 1 =6 2 1 4 3 Exercício 6.4-) Indique, graficamente, como caminham as primeiras 3 iterações dos métodos de Gauss-Jacobi e Gauss-Seidel para o seguinte sistema: = 6 Exercício 6.5-) Os seguintes fluxogramas levam a sistemas lineares para solução das vazões molares do composto A em todas as correntes. Monte o sistema linear e os resolva no Scilab (pode empregar eliminação Gaussiana ou uma função interna do Scilab para resolução deste tipo de sistema, como o comando inv(a)*b). 95
a-) Conversão (R-1) Recuperação no topo (V-1) Valor 0,75 0,85 b-) Conversão (R-1) Recuperação no topo (V-1) Fração de purga (α) Valor 0,75 0,85 0,05 11 1-α 2 10 12 α 2 4 8 c-) 1 2 3 R-2 V-2 9 R-1 V-1 5 6 7 1-α 1 P-13 P-11 α 1 Valor Conversão (R-1) 0,75 Recuperação no topo (V-1) 0,85 Fração de purga (α1) 0,05 Conversão (R-2) 0,55 Recuperação no topo (V-2) 0,25 Fração de purga (α2) 0,03 Exercício 6.6-) Considere o seguinte sistema: (3) =1 10, =2 =1,4 10 Nó inicial (1) (2) Nó intermediário Nós finais =0, = = =1,5 =6, =1, =2, =5 (4) = 1 10, =1 10 ³ 96
Monte o sistema linear e obtenha _, _, _, em Scilab. Exercício 6.7-) Considere o seguinte sistema: (3) l3 = 5m u3 = 1,5m/s P3 = 2e5 Pa l1 = 5m u1 = 0m/s P1 = 1e5 Pa (1) x 1_2 = 3m (2) l2 = 1m u2 = 1,5m/s l4 = 1m (4) u4 = 1,5m/s (5) l5 = 4m u5 = 1,5m/s P5 = 3e5 Pa x 2_5 = 4m (6) l6 = 3m u6 = 1,5m/s P6 = 1e5 Pa Monte o sistema linear e obtenha _, _, _, _,,, em Scilab. 97