• Nenhum resultado encontrado

Renato Martins Assunção. 9 de agosto de 2016

N/A
N/A
Protected

Academic year: 2021

Share "Renato Martins Assunção. 9 de agosto de 2016"

Copied!
99
0
0

Texto

(1)

etodos Num´

ericos

Renato Martins Assun¸c˜ao

DCC - UFMG

(2)

Solu¸c˜

ao de sistema diagonal

O sistema definido por

A =   1 0 0 0 3 0 0 0 5   b =   −1 6 −15   ´ e equivalente a 1x1 = −1 3x2 = 6 5x3 = −15

A solu¸c˜ao ´e muito simples x1 = −1 1 = −1 x2 = 6 3 = 2 x3 = −15 5 = −3

(3)

Algoritmo para sistema diagonal

Listagem 1: Solu¸c˜ao de sistema diagonal

dado A, b for i = 1, . . . , n

xi = bi/aii

end

(4)

Matrizes triangulares

Dois exemplos de matrizes triangulares 4 × 4:

L =     3 0 0 0 1 1 0 0 0 1 2 0 1 0 7 1     e U =     2 1 0 2 0 2 −4 3 0 0 1 −1 0 0 0 0    

Triangular inferior: somente os elementos abaixo da diagonal principal podem ser 6= 0.

Triangular superior: somente aqueles acima podem ser 6= 0.

(5)

Matrizes triangulares

As matrizes triangulares inferior e superior (gen´ericas) s˜ao

L =      l11 0 . . . 0 l21 l22 . . . 0 .. . ... . .. ... ln1 ln2 . . . lnn      e U =      u11 u12 . . . u1n 0 u22 . . . u2n .. . ... . .. ... 0 0 . . . unn     

com lii 6= 0 e uii 6= 0 para todo i .

L: Lower

(6)

Matrizes triangulares

Sistemas triangulares tamb´em s˜ao resolvidos facilmente: O sistema triangular inferior

Ly = b e o sistema triangular superior

Ux = c s˜ao facilmente resolvidos por:

substitui¸c˜ao sucessiva (forward) (sistema inferior)

substitui¸c˜ao reversa (retroativa ou backward) (sistema superior)

(7)

Solu¸c˜

ao de sistemas triangulares

A =   −2 1 2 0 3 −2 0 0 4   b =   9 −1 8   ´ e equivalente a Ax = b ou −2x1 + x2 + 2x3 = 9 3x2 + −2x3 = −1 4x3 = 8

(8)

Solu¸c˜

ao de sistemas triangulares

−2x1 + x2 + 2x3 = 9 3x2 + −2x3 = −1 4x3 = 8 ou   −2 1 2 0 3 −2 0 0 4     x1 x2 x3   =   9 −1 8  

Resolva em ordem reversa, a ´ultima equa¸c˜ao sendo resolvida primeiro:

x3 = 8 4 = 2 x2 = 1 3(−1 + 2x3) = 1 3(−1 + 2 × 2) = 3 3 = 1 x1 = 1 −2(9 − x2− 2x3) = 1 −2(9 − 1 − 2 × 2) = 4 −2= −2

(9)

Solu¸c˜

ao de sistemas triangulares

Resolver um sistema triangular superior para obter x1, x2, . . . , xn:

substitui¸c˜ao reversa, retroativa ou backward.

Listagem 2: substitui¸c˜ao reversa

dado A (4 superior), b xn= bn/ann for i = n − 1, . . . , 1 s = bi for j = i + 1, . . . , n s = s − aijxj end xi = s/aii end

(10)

Backward Substitution no Scilab

−→ Melhor trocar para o Scilab←−

function x = TriSup(U,b)

// Sistema triangular superior: Substituicao retroativa // Input: Matriz triangular superior U, e vetor b // Output x = solucao de U*x = b.

n = length(b); x = zeros(n,1); x(n) = b(n)/U(n,n); for i = (n-1):-1:1 s = b(i); for j = (i+1):n s = s - U(i,j)*x(j); end

(11)

Usando a fun¸c˜

ao subsretro

A = [5 5 6; 0 4 3; 0 0 1];

b = [5; 3; 1]; // note: vetor coluna sol = TriSup(A,b)

sol = - 0.2 0. 1.

E se entrarmos com matriz A que tenha um zero na diagonal? Ou com matriz A que n˜ao seja quadrada?

(12)

Usando a fun¸c˜

ao subsretro

A = [5 5 6; 0 0 3; 0 0 1]; // Diagonal com elemento nulo b = [5; 3; 1];

sol = TriSup(A,b); !--error 27

Divis~A£o por zero...

at line 10 of function TriSup called by : sol = TriSup(A,b);

(13)

Acrescentando checks e mensagens de erro

function x = TriSup(U,b) ... n = length(b); [m,p] = size(U); if p ~= m,

error("A matriz de entrada nao eh quadrada.") end

if n ~= m,

error("Matriz e vetor tem dimensoes incompativeis.") end

if prod(diag(U))==0

error("Diagonal da matriz tem elemento nulo.") end

x = zeros(n,1); x(n) = b(n)/U(n,n);

(14)

Acrescentando checks e mensagens de erro

-->A=[5 5 6; 0 0 3; 0 0 1]; b=[5; 3; 1; 4]; sol=TriSup(A,b); !--error 10000

Matriz e vetor tem dimensoes incompativeis. at line 12 of function TriSup called by : sol = TriSup(A,b);

-->A=[5 5 6; 0 4 3; 0 0 1]; b=[5; 3; 1; 4]; sol=TriSup(A,b); !--error 10000

Matriz e vetor tem dimensoes incompativeis. at line 12 of function TriSup called by : sol = TriSup(A,b);

-->A=[5 5 6; 0 4 3; 0 0 1; 3 2 1]; b=[5; 3; 4]; sol=TriSup(A,b); !--error 10000

(15)

Vetorizando em Scilab

Algoritmo e sua implementa¸c˜ao: explorando particularidades da linguagem Scilab

O la¸co (loop)

for j = (i+1):n vai embora e j vira um vetor!

...(omitindo cabecalho e mensagens de erro) n = length(b);

x = zeros(n,1); x(n) = b(n)/U(n,n); for k = (n-1):-1:1

j = k+1:n; // indice j eh um VETOR de indices x(k) = (b(k) - U(k,j)*x(j))/U(k,k);

(16)

Vetorizando em Scilab

Mesmo a instru¸c˜ao x(n) = b(n)/U(n,n); pode ser omitida.

Fazemos k come¸car em n.

Quando k=n, temos j = [], um objeto vazio, de efeito nulo e assim

U(n,j)*x(j) n˜ao acrescenta nada no numerador de x(k) quando

k=n.

...(omitindo cabecalho e mensagens de erro) x = zeros(n,1); for k = n:-1:1 j = k+1:n; x(k) = (b(k) - U(k,j)*x(j))/U(k,k); end endfunction

(17)

N´umero de opera¸c˜oes para resolver um sistema triangular

floating point operation = adi¸c˜ao, subtra¸c˜ao, multiplica¸c˜ao ou divis˜ao. FLOP

Considere um sistema com n equa¸c˜oes e n inc´ognitas. Quanto tempo (FLOPS) toma?

O tempo exato depende da m´aquina.

O que nos interessa ´e comparar diferentes algoritmos na mesma m´aquina: s´o nos interessam as diferen¸cas relativas, que ser˜ao as

mesmas em todas as m´aquinas.

(18)

Soma dos primeiros ´ımpares

(19)

De novo, soma dos primeiros ´ımpares

(20)

N´umero de opera¸c˜oes para resolver um sistema triangular superior

Comece no canto inferior: 1 div (ou floating point operation = FLOP) linha -2: 1 mult, 1 adi, 1 div, ou 3 FLOPS = (2 × 2 − 1)

linha -3: 2 mult, 2 adi, 1 div, ou 5 FLOPS = (2 × 3 − 1) linha -4: 3 mult, 3 adi, 1 div, ou 7 FLOPS = (2 × 4 − 1) ..

.

linha -n: 2n − 1 FLOPS

Total de FLOPS: soma dos primeiros ´ımpares: 1 + 3 + . . . + (2n − 1)

Pn j =1(2j − 1) = 2 Pn j =1j − Pn j =11 = 2 n(n+1)− n = n2.

(21)

FLOPS para resolver um sistema triangular com n equa¸cˆoes

Sistema triangular superior ou inferior com n equa¸cˆoes: precisamos de

n2 FLOPS.

Suponha que uma m´aquina toma x segundos para resolver um

sistema triangular com n equa¸c˜oes.

O que acontece se o sistema dobrar de tamanho passando a ter 2n equa¸c˜oes.

Ele vai tomar (2n)2 FLOPS, o que significa 22 = 4 vezes mais que o sistema com n.

Se o sistema tiver 10n equa¸c˜oes ele vai demorar 102n2 FLOPS, ou 102 = 100 vezes mais.

(22)

E quando A n˜

ao for triangular?

⇒ Elimina¸c˜ao gaussiana (ou m´etodo de escalonamento)

O objetivo ´e transformar um sistema quadrado arbitr´ario em um sistema

triangular superior equivalente, de modo que possa ser facilmente resolvido com substitui¸c˜ao reversa.

A solu¸c˜ao formal para Ax = b, em que A ´e uma matriz n × n ´e x = A−1b

(23)

Solucionar

x1+ 3x2 = 5

2x1+ 4x2 = 6

Vamos subtrair 2 vezes a primeira equa¸c˜ao da segunda equa¸c˜ao

x1+ 3x2 = 5

−2x2 = −4

Este novo sistema ´e equivalente ao primeiro.

Isto ´e, os dois sistemas possuem as mesmas solu¸c˜oes.

O segundo est´a na forma triangular superior, e pode ser resolvido por subs-titui¸c˜ao reversa.

(24)

Ao realizar a elimina¸c˜ao gaussiana `a m˜ao, podemos evitar copiar o xi usando

uma nota¸c˜ao abreviada. Por exemplo, para resolver:

A =   −3 2 −1 6 −6 7 3 −4 4   b =   −1 −7 −6  

Forme o sistema aumentado

˜ A = [A b] =   −3 2 −1 −1 6 −6 7 −7 3 −4 4 −6  

A barra vertical dentro da matriz aumentada ´e apenas um lembrete de que

(25)

Some 2 vezes a linha 1 `a linha 2, e some (1 vez) a linha 1 `a linha 3 ˜ A(1) =   −3 2 −1 −1 0 −2 5 −9 0 −2 3 −7  

Subtraia (1 vez) a linha 2 da linha 3

˜ A(2) =   −3 2 −1 −1 0 −2 5 −9 0 0 −2 2  

(26)

O sistema transformado est´a agora na forma triangular superior ˜ A(2) =   −3 2 −1 −1 0 −2 5 −9 0 0 −2 2  

Solucione por substitui¸c˜ao reversa para obter

x3 = 2 −2 = −1 x2 = 1 −2(−9 − 5x3) = 2 x1 = 1 −3(−1 − 2x2+ x3) = 2

(27)

Resumo: Elimina¸c˜

ao gaussiana

Usamos elimina¸c˜ao gaussiana quando a matriz A do sistema A n˜ao for triangular.

Resolver um sistema via elimina¸c˜ao gaussiana implica em dar DOIS passos.

Primeiro: Elimine elementos para reduzir `a forma triangular superior. Segundo: Resolva o sistema triangular superior (que precisa de n2

flops).

(28)

Comece com a matriz aumentada [A|b]:     x x x x x x x x x x x x x x x x x x x x    

Os x ’s representam n´umeros, e n˜ao s˜ao necessariamente os mesmos valores. Comece a elimina¸c˜ao usando a primeira linha como a linha pivˆo e o primeiro

elemento da primeira linha como o elemento pivˆo:

    x x x x x x x x x x x x x x x x x x x x    

(29)

Elimine elementos abaixo do elemento pivˆo na primeira coluna. x0 indica um valor que foi alterado uma vez.

    x x x x x x x x x x x x x x x x x x x x     =⇒     x x x x x 0 x0 x0 x0 x0 x x x x x x x x x x     =⇒     x x x x x 0 x0 x0 x0 x0 0 x0 x0 x0 x0 x x x x x     =⇒     x x x x x 0 x0 x0 x0 x0 0 x0 x0 x0 x0 0 x0 x0 x0 x0    

(30)

O elemento pivˆo ´e agora o elemento da diagonal na segunda linha. Elimine elementos abaixo do elemento pivˆo na segunda coluna. x00 indica um valor que foi alterado duas vezes.

    x x x x x 0 x’ x0 x0 x0 0 x0 x0 x0 x0 0 x0 x0 x0 x0     =⇒     x x x x x 0 x’ x0 x0 x0 0 0 x00 x00 x00 0 x0 x0 x0 x0     =⇒     x x x x x 0 x’ x0 x0 x0 0 0 x00 x00 x00 0 0 x00 x00 x00    

(31)

O elemento pivˆo ´e agora o elemento da diagonal na terceira linha. Elimine elementos abaixo do elemento pivˆona terceira coluna. x000 indica um valor que foi alterado trˆes vezes.

    x x x x x 0 x0 x0 x0 x0 0 0 x” x00 x00 0 0 x00 x00 x00     =⇒     x x x x x 0 x0 x0 x0 x0 0 0 x” x00 x00 0 0 0 x000 x000    

(32)

Resumo

Elimina¸c˜ao gaussiana ´e um processo ordenado para transformar uma matriz aumentada em uma forma triangular superior equivalente. A opera¸c˜ao de elimina¸c˜ao no k-´esimo passo ´e

˜

aij = ˜aij − (˜aik/˜akk)˜akj, i > k, j ≥ k

Elimina¸c˜ao requer trˆes loops aninhados.

O resultado da fase de elimina¸c˜ao ´e representada pela imagem a seguir.     x x x x x x x x x x x x x x x x x x x x     =⇒     x x x x x 0 x0 x0 x0 x0 0 0 x00 x00 x00 0 0 0 x000 x000    

(33)

Listagem 3: elimina¸c˜ao sucessiva (forward) input A, b for k = 1, . . . , n − 1 for i = k + 1, . . . , n for j = k + 1, . . . , n aij = aij − (aik/akk)akj end bi = bi − (aik/akk)bk aik = 0 end end

N˜ao h´a necessidade de realmente calcular zeros: aik = 0 sempre. Esta ´e

uma das raz˜oes para tomarmos j = k + 1, . . . , n.

(34)

Listagem 4: elimina¸c˜ao sucessiva (forward) dado A, b for k = 1, . . . , n − 1 for i = k + 1, . . . , n xmult = aik/akk for j = k + 1, . . . , n aij = aij − (xmult)akj end bi = bi − (xmult)bk aik = 0 end end

(35)

Implementando em Scilab

−→ Melhor trocar para o Scilab←−

function x = ElimGauss(A,b)

... (cabecalho e mensagens de erro) ... Aum = [A,b]; // matriz aumentada

for j = 1:n-1 for i = j+1:n

xmult = Aum(i,j)/Aum(j,j); // pivo eh A(j,j) Aum(i,j:n+1) = Aum(i,j:n+1)-xmult*Aum(j,j:n+1); // alteramos toda a linha i de Aum

end end

x = TriSup(Aum(:,1:n), Aum(:,n+1)) endfunction

(36)

FLOPS para resolver um sistema via EG

Considere o sistema Ax = b onde A tem dimens˜ao n × n.

Para zerar o termo na posi¸c˜ao (2, 1) de A:

calcule o multiplicador xmult: 1 FLOP

multiplique cada um dos n − 1 termos da primeira linha de A por xmult e subtraia da segunda linha: 2 ∗ (n − 1) FLOPS

multiplique b1por xmult e subtraia de b2.

Total: 1 + 2(n − 1) + 2 = 2n + 1

Para zerar o termo na posi¸c˜ao (3, 1) de A: tamb´em 2n + 1 FLOPS O mesmo em todas as demais linhas.

Assim, para zerar os termos da primeira coluna na EG: (2n + 1)(n − 1) FLOPS.

(37)

FLOPS para zerar a segunda coluna em EG

Zeramos os termos da 1a. coluna na EG com (2n + 1)(n − 1) FLOPS. Para zerar os n − 2 termos da 2a coluna precisamos de

(2n − 1)(n − 2) FLOPS

Para zerar os n − 3 termos da 3a coluna precisamos de (2n − 3)(n − 3) FLOPS

Etc. at´e a pen´ultima quando vamos precisar de (2 ∗ 2 + 1)(1) FLOPS Total: n−1 X i =1 (n − i )(2n + 1 − 2(i − 1)) = 2 3n 3+1 2n 27 6n onde usamos que

n

X i2 = 1

(38)

FLOPS para resolver sistema via EG

Para reduzir o sistema a um sistema triangular via EG: 2 3n 3+1 2n 2 7 6n

Para resolver o sistema triangular resultante: mais n2 FLOPS TOTAL: 2 3n 3+3 2n 2 7 6n

(39)

RESUMO: FLOPS para resolver sistema via EG

Considere um sistema com n equa¸c˜oes e n inc´ognitas. Quanto tempo (FLOPS) toma?

Triangular superior ou inferior: n2 FLOPS. Matriz gen´erica: da ordem de n3 FLOPS.

Se matriz dobrar de tamanho passando a ter 2n equa¸c˜oes, n´umero de

(40)

Necessidade de pivotar

Resolver: A =     2 4 −2 −2 1 2 4 −3 −3 −3 8 −2 −1 1 6 −3     b =     −4 5 7 7    

N˜ao h´a nada errado com este sistema.

A ´e de posto completo → existe A−1 e portanto x = A−1b. A solu¸c˜ao existe e ´e ´unica: x = [1; 2; 3; 4].

O problema ´e que, no algoritmo de elimina¸c˜ao gaussiana, aparecem zeros nas posi¸c˜oes dos pivˆos e portanto n˜ao podemos us´a-los como divisores.

(41)

Necessidade de pivotar

Forme o sistema aumentado.

˜ A =     2 4 −2 −2 −4 1 2 4 −3 5 −3 −3 8 −2 7 −1 1 6 −3 7    

Vamos proceder com a elimina¸c˜ao gaussiana e ver onde nos levar´a. Multiplicar 1/2 pela primeira linha e subtrair da segunda linha. Multiplicar −3/2 pela primeira linha e subtrair da terceira linha. Multiplicar −1/2 pela primeira linha e subtrair da quarta linha.

(42)

Resultado de zerar a primeira coluna da matriz aumentada com o pivˆo a11 ˜ A0 =     2 4 −2 −2 −4 0 0 5 −2 7 0 3 5 −5 1 0 3 5 −4 5    

O pr´oximo passo da elimina¸c˜ao gaussiana n˜ao ir´a funcionar porque h´a um zero na posi¸c˜ao pivˆo, ˜a22.

(43)

Tentando elimina¸c˜

ao gaussiana em Scilab

−→ Melhor trocar para o Scilab←− Vamos usar a fun¸c˜ao ElimGauss(A,b)

-->A = [2, 4, -2, -2; 1, 2,4,-3;-3,-3,8,-2; -1,1,6,-3]; -->b = [-4; 5; 7; 7];

-->ElimGauss(A,b) !--error 27

Divisao por zero...

at line 17 of function ElimGauss called by : ElimGauss(A,b)

(44)

Vamos trocar a segunda e a quarta linhas da matriz aumentada. Isto n˜ao pode modificar a solu¸c˜ao do sistema.

˜ A =     2 4 −2 −2 −4 0 3 5 −4 5 0 3 5 −5 1 0 0 5 −2 7    

Continue com a elimina¸c˜ao: multiplicar a linha 2 por 1 e a seguir subtrair da linha 3. ˜ A00=     2 4 −2 −2 −4 0 3 5 −4 5 0 0 0 −1 −4 0 0 5 −2 7    

(45)

Outro zero apareceu na posi¸c˜ao pivˆo. Troque as linhas 3 e 4. ˜ A000 =     2 4 −2 −2 −4 0 3 5 −4 5 0 0 5 −2 7 0 0 0 −1 −4    

O sistema aumentado agora est´a pronto para substitui¸c˜ao reversa.

A solu¸c˜ao do sistema reduzido pela elimina¸c˜ao gaussiana COM TROCA das

linhas da matriz AUMENTADA ´e a mesma solu¸c˜ao do sistema original: x

(46)

Tentando elimina¸c˜

ao gaussiana em Scilab

−→ Melhor trocar para o Scilab←− Vamos usar a fun¸c˜ao ElimGauss(A,b)

-->A = [2, 4, -2, -2; 1, 2,4,-3;-3,-3,8,-2; -1,1,6,-3]; -->b = [-4; 5; 7; 7];

-->ElimGauss(A,b) !--error 27

Divisao por zero...

at line 17 of function ElimGauss called by : ElimGauss(A,b)

(47)

No meio do processo de elimina¸c˜ao gaussiana, tivemos de trocar a 2a.linha pela 4a. e, a seguir, a 3a. pela 4a..

Isto ´e equivalente a trabalhar desde o in´ıcio com a matriz aumentada ORI-GINAL com as linhas na seguinte ordem: 1, 4, 2, 3.

Podemos usar uma matriz de permuta¸c˜ao P para colocar as linhas de A na ordem desejada.

(48)

Seja P a seguinte matriz de permuta¸c˜ao P =     1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0    

Se multiplicarmos ˜A por P teremos o sistema aumentado com as linhas na

ordem correta: P ˜A.

Este novo sistema aumentado est´a pronto para elimina¸c˜ao gaussiana usual, sem necessidade de trocar as linhas.

(49)

Opera¸c˜

oes elementares

A elimina¸c˜ao gaussiana ´e um m´etodo sistem´atico de realizar opera¸c˜oes elementares de linhas na matriz aumentada. O objetivo ´e terminar com uma matriz triangular superior. As opera¸c˜oes elementares por linhas s˜ao as seguintes:

(1) multiplicar uma linha por um escalar n˜ao nulo;

(2) somar a i -´esima linha multiplicada por algum escalar r ∈ R a j-´esima linha;

(3) intercambiar duas linhas.

Observa¸c˜ao. Linhas s˜ao somadas e multiplicadas por escalares como vetores (isto ´e, vetores linha).

(50)

Opera¸c˜

ao elementar e matrizes

Toda opera¸c˜ao elementar por linha ´e idˆentica a multiplicar pela esquerda por uma certa matriz.

Por exemplo, para multiplicar os elementos de uma linha da matriz A por um escalar r = 2 e deixar todas as outras linhas idˆenticas, podemos fazer o seguinte:

  1 0 0 0 2 0 0 0 1     a1 a2 a3 b1 b2 b3 c1 c2 c3  =   a1 a2 a3 2b1 2b2 2b3 c1 c2 c3  

(51)

Matrizes elementares

Seja ˜A uma matriz aumentada n × (n + 1).

Considere a matriz E n × n dada por

E =             1 . .. O 1 r 1 O . .. 1             linha #i

O produto matricial E ˜A gera uma matriz idˆentica a ˜A exceto pela linha i .

(52)

Matrizes elementares

Para trocar duas linhas de lugar:   1 0 0 0 0 1 0 1 0     a1 a2 a3 b1 b2 b3 c1 c2 c3  =   a1 a2 a3 c1 c2 c3 b1 b2 b3  

Basta multiplicar por uma matriz de permuta¸c˜ao P.

Esta matriz de permuta¸c˜ao ´e a matriz identidade com suas linhas permutadas.

(53)

Matrizes elementares

Seja ˜A a matriz aumentada n × (n + 1) de um sistema linear. Seja P a matriz n × n dada por

P =              1 O . .. 0 · · · 1 .. . . .. ... 1 · · · 0 . .. O 1              1 1 linha #i 1 linha #j 1 1

P ´e a matriz identidade com as linhas i e j permutadas. A matriz P ˜A ´e a matriz aumentada ˜A com suas linhas i e j

(54)

Matrizes elementares

Finalmente, a ´ultima opera¸c˜ao elementar.

Criar uma nova matriz onde a segunda linha de A ´e substitu¨ı¿12da pela segunda linha somada a 3 vezes a primeira linha:

  1 0 0 3 1 0 0 0 1     a1 a2 a3 b1 b2 b3 c1 c2 c3  =   a1 a2 a3 b1+ 3a1 b2+ 3a2 b3+ 3a3 c1 c2 c3  

(55)

Matrizes elementares

Seja ˜A a matriz aumentada n × (n + 1) de um sistema linear. Seja E a matriz n × n dada por

E =              1 .. . . .. O 0 · · · 1 .. . ... . .. 0 · · · r · · · 1 .. . ... ... . .. 0 · · · 0 · · · 0 · · · 1              1 1 linha #i 1 linha #j 1 1

(56)

Produto de matrizes elementares

A elimina¸c˜ao gaussiana pode ser vista como um processo de multiplica¸c˜ao da matriz aumentada por matrizes elementares. Seja ˜A a matriz n × (n + 1) aumentada de um sistema linear. A matriz escalonada final (a matriz triangular superior) ´e a matriz B obtida como B = EkEk−1. . . E2E1A˜

(57)

Um exemplo

Considere o sistema linear Ax = b onde

A =   −3 2 −1 6 −6 7 3 −4 4   b =   −1 −7 −6  

Forme o sistema aumentado

˜ A = [A b] =   −3 2 −1 −1 6 −6 7 −7 3 −4 4 −6  

(58)

Come¸cando com a matriz aumentada ˜ A = [A b] =   −3 2 −1 −1 6 −6 7 −7 3 −4 4 −6  

Some 2 vezes a linha 1 `a linha 2, e some (1 vez) a linha 1 `a linha 3 ˜ A(1)=   −3 2 −1 −1 0 −2 5 −9 0 −2 3 −7  

Isto pode ser obtido da seguinte maneira: Sejam E1 =   1 0 0 2 1 0 0 0 1   E2=   1 0 0 0 1 0 1 0 1  

(59)

Assim ˜ A(1) =   −3 2 −1 −1 0 −2 5 −9 0 −2 3 −7  = E2E1A˜

Queremos agora zerar o elemento 32 de ˜A(1).

Para isto, some (−1 ∗ linha 2) `a linha 3.

Vamos representar isto como uma matriz elementar multiplicando ˜

(60)

Multiplicando ˜ A(1)=   −3 2 −1 −1 0 −2 5 −9 0 −2 3 −7   por E3=   1 0 0 0 1 0 0 −1 1   teremos ˜ A(2)=   −3 2 −1 −1 0 −2 5 −9 0 0 −2 2  = E3A˜(1) = E3E2E1A˜

(61)

Se temos Ax = b, e efetuamos EG, acabamos com A =     x x x x x x x x x x x x x x x x     =⇒     x0 x0 x0 x0 0 x0 x0 x0 0 0 x0 x0 0 0 0 x0    

A elimina¸c˜ao gaussiana ´e obtida por meio da multiplica¸c˜ao de uma s´equˆencia de matrizes elementares:

EkEk−1. . . E1Ax = EkEk−1. . . E1b

MAx = Mb

Ux = Mb

MA ´e uma matriz triangular superior e denotada por U.

(62)

O truque LU

Vamos agora fazer algo bizarro.

Vamos reverter a opera¸c˜ao de elimina¸c˜ao gaussiana que deu tanto trabalho!!

Transformamos o sistema Ax = b no sistema equivalente Ux = Mb onde M ´e a matriz resultante das opera¸c˜oes elementares.

Vamos agora reverter multiplicando os dois lados da equa¸c˜ao

matricial Ux = Mb por M−1.

Com isto teremos M−1Ux = M−1Mb.

Ou seja, temos M−1Ux = b.

Como todos estes sistemas s˜ao equivalentes, isto quer dizer que voltamos ao sistema original:

Ax = b

(63)

A fatora¸c˜

ao LU

Vamos pensar sobre o que fizemos. Come¸camos com o sistema Ax = b

Ap´os a elimina¸c˜ao gaussiana, terminamos com Ux = Mb.

Invertemos M e com isto voltamos ao sistema original (Ax = b) mas

agora escrito como M−1Ux = b.

Isto ´e, n´os FATORAMOS A no produto de duas matrizes, M−1 e U.

Isto ´e, escrevemos A = M−1U.

Parece muito trabalho para simplesmente voltar ao ponto de partida ligeiramente modificado.

(64)

Para quˆ

e a fatora¸c˜

ao LU?

Existe uma raz˜ao muito importante e pr´atica para fazer a decomposi¸c˜ao LU.

Quando quisermos resolver v´arios sistemas lineares com a mesma matriz A mas diferentes b’s, a decomposi¸c˜ao LU ser´a muito mais eficiente que a elmina¸c˜ao gaussiana simples.

Mas, alto l´a: quando algu´em estaria interssado num problema desses?

Simples: toda vez que quisermos achar a inversa A−1 teremos de

(65)

O produto AB em colunas

Suponha que A e B sejam matrizes com dimens˜oes compat´ıveis.

Seja AB = C .

Podemos mostrar que a 1a coluna de C ´e o resultado de Ax onde x ´e a 1a coluna de B.

Do mesmo modo, a 2a coluna de C ´e Ax onde x ´e a 2a coluna de B.

Em geral, ABj = Cj onde Bj e Cj s˜ao as colunas j de B e C .

(66)

alculo da inversa de A

Por defini¸c˜ao, A−1 ´e a matriz B tal qu AB = BA = I

Podemos encontrar A−1= B obtendo-a coluna por coluna.

A primeira coluna de A−1 deve ser a (´unica) solu¸c˜ao x de Ax = I1

onde I1 = (1, 0, 0, . . . , 0)t ´e a primeira coluna da matriz identidade I

de dimens˜ao n × n.

A segunda coluna de B deve ser a (´unica) solu¸c˜ao x de Ax = (0, 1, 0, 0, . . . , 0)t. E assim sucessivamente.

Temos de resolver n sistemas lineares, todos da forma Ax = bi, onde

(67)

Resumo da utilidade de LU

LU ser´a melhor que a elimina¸c˜ao gaussiana quando tivermos v´arios sistemas Ax = bi

Isto ´e, a mesma matriz A mas diferentes bi’s

Isto ocorre principalmente quando queremos A−1.

Uma pergunta que responderemos em breve ´e: LU ´e muito mais

eficiente, um pouco mais ou s´o um pouquinho mais eficiente que EG?

(68)

A fatora¸c˜

ao LU

Entretanto, existe uma raz˜ao muito importante e pr´atica para isto. M−1 tem uma estrutura muito especial, t˜ao simples que n˜ao temos trabalho algum em calcular esta matriz inversa.

Sempre teremos M−1 da seguinte forma

L = M−1 =     1 0 0 0 m21 1 0 0 m31 m32 1 0 m41 m42 m43 1    

M−1 ser´a uma matriz triangular inferior.

Al´em disso, os elementos n˜ao-nulos ser˜ao os MULTIPLICADORES da

elimina¸c˜ao gaussiana.

Estes elementos s˜ao os inversos dos n´umeros usados nas matrizes de elimina¸c˜ao.

(69)

Fatora¸c˜

ao LU

Como um exemplo, tome um passo da EG. A torna-se

A =     6 −2 2 4 12 −8 6 10 3 −13 9 3 −6 4 1 −18     =⇒ B =     6 −2 2 4 0 −4 2 2 0 −12 8 1 0 2 3 −14    

utilizando a matriz elimina¸c˜ao

M1 =     1 0 0 0 −2 1 0 0 −1 2 0 1 0 1 0 0 1    

Isto ´e, M1A = A∗ e o sistema Ax = b torna-se ∗

(70)

Fatora¸c˜

ao LU

Vamos dar mais passo na EG. A∗ torna-se

A∗ = M1A =     6 −2 2 4 0 −4 2 2 0 −12 8 1 0 2 3 −14     =⇒ A∗∗=     6 −2 2 4 0 −4 2 2 0 0 2 −5 0 0 4 −13    

utilizando a matriz elimina¸c˜ao

M2 =     1 0 0 0 0 1 0 0 0 −3 1 0 0 1/2 0 1    

(71)

Fatora¸c˜

ao LU

Vamos dar o ´ultimo passo na EG. A matriz A∗∗ torna-se uma matriz trian-gular superior U. Isto ´e,

A∗∗= M2M1A =     6 −2 2 4 0 −4 2 2 0 0 2 −5 0 0 4 −13     =⇒ U =     6 −2 2 4 0 −4 2 2 0 0 2 −5 0 0 0 −3    

utilizando a matriz elimina¸c˜ao

M3 =     1 0 0 0 0 1 0 0 0 0 1 0 0 0 −2 1    

(72)

Fatora¸c˜

ao LU

Terminamos a elimina¸c˜ao gaussiana com a express˜ao Ux = M3M2M1b

em que U ´e triangular superior (U vem de Upper) e cada Mi era uma

matriz de elimina¸c˜ao.

O que fazemos agora ´e retornar ao sistema original Ax = b mas escrevendo A como um produto LU = A de duas matrizes triangulares L (inferior) e U (superior)

Para isto, basta inverter a matriz do lado direiro da equa¸c˜ao acima (se esta inversa existir). Isto ´e, multiplicando por (M3M2M1)−1 dos

dois lados da equa¸c˜ao, temos

(M3M2M1)−1Ux = (M3M2M1)−1M3M2M1b = b

(73)

Fatora¸c˜

ao LU

Terminamos com

LUx = b onde L = (M3M2M1)−1.

Precisamos verificar que L ´e triangular inferior e os elementos n˜ao nulos s˜ao os inversos dos elementos n˜ao nulos nas Mi’s.

N˜ao faremos a demonstra¸c˜ao matem´atica deste fato.

(74)

Fatora¸c˜

ao LU

Para escalonar a matriz

A =     6 −2 2 4 12 −8 6 10 3 −13 9 3 −6 4 1 −18     =⇒ U =     6 −2 2 4 0 −4 2 2 0 0 2 −5 0 0 0 −3    

usamos trˆes matrizes de elimina¸c˜ao:

Ux = M3M2M1Ax = M3M2M1b onde M1=     1 0 0 0 −2 1 0 0 −1/2 0 1 0 1 0 0 1     , M2=     1 0 0 0 0 1 0 0 0 −3 1 0 0 1/2 0 1     , M3=     1 0 0 0 0 1 0 0 0 0 1 0 0 0 −2 1    

(75)

Fatora¸c˜

ao LU

Temos Ux = M3M2M1b onde M1=     1 0 0 0 −2 1 0 0 −1 2 0 1 0 1 0 0 1     , M2=     1 0 0 0 0 1 0 0 0 −3 1 0 0 1/2 0 1     , M3=     1 0 0 0 0 1 0 0 0 0 1 0 0 0 −2 1     ´

E f´acil verificar que L = (M3M2M1)−1 = M1−1M −1 2 M −1 3 ´e dada por L =     1 0 0 0 2 1 0 0 1/2 3 1 0 −1 −1/2 2 1    

(76)

A fatora¸c˜

ao LU

Assim, conclu´ımos que o sistema Ax = b pode ser escrito como

LUx = b onde:

L ´e uma matriz triangular inferior com elementos abaixo da diagonal iguais aos multiplicadores da elimina¸c˜ao gaussiana.

U ´e a matriz triangular superior resultante do processo de elimina¸c˜ao gaussiana.

E da´ı? O que fazer com isto?

Uma vez que L e U s˜ao triangulares, ´e f´acil resolver o sistema original Ax = b resolvendo dois sistemas triangulares, um envolvendo L e

(77)

Fatora¸c˜

ao LU

´

E muito f´acil resolver um sistema linear envolvendo uma matriz triangular. Considere a solu¸c˜ao para Ax = b.

A = LU =⇒ (LU)x = b Reagrupe, pois a multiplica¸c˜ao de matrizes ´e associativa

L(Ux ) = b Seja Ux = y . Ent˜ao

Ly = b

Como L ´e triangular, ´e f´acil (sem elimina¸c˜ao gaussiana) calcular y = L−1b

(78)

substi-Fatora¸c˜

ao LU

Como y agora ´e conhecido, resolvemos o sistema Ux = y para x .

Como L ´e triangular, ´e f´acil (sem elimina¸c˜ao gaussiana e sem de fato inverter a matriz) calcular

x = U−1y

Isto ´e, a express˜ao acima deve ser interpretada como “solucione Ux = y com substitui¸c˜ao reversa.”

(79)

Fatora¸c˜

ao LU

Listagem 5: Solu¸c˜ao LU

Fatore A em L e U

Resolva Ly = b para y utilize substitui¸c~ao forward

(80)

Fatora¸c˜

ao LU

Listagem 5: LU dado A for k = 1, . . . , n − 1 for i = k + 1, . . . , n xmult = aik/akk aik = xmult for j = k + 1, . . . , n aij = aij − (xmult)akj end end end

(81)

LU: obtendo a A

−1

Como dissemos anteriormente, uma das principais motiva¸c˜oes para a decomposi¸c˜ao LU ´e o c´alculo da inversa A−1 de uma matriz n × n. Achar a invesa se resume a encontrar cada uma das colunas que forma A−1.

A coluna i de A−1 ´e o vetor x que resolve o sistema Ax = bi onde bi

´

e o vetor com todas as entradas iguais a 0 exceto a entrada i , que possui valor 1.

Assim, precisamos resolver n sistemas lineares da forma Ax = bi onde

A ´e a mesma e apenas o vetor de coeficientes b muda.

Vamos mostrar que a solu¸c˜ao LU para este conjunto de n sistemas ´e mais eficiente (requer menos FLOPS) que resolver por elimina¸c˜ao gaussiana.

(82)

LU versus EG

Para resolver UM ´UNICO sistema linear Ax = b, elimina¸c˜ao gaussiana requer menos opera¸c˜oes que LU.

EG requer dois passos:

Forward elimination (ou elimina¸c˜ao sucessiva) para criar a matriz triangular superior U: precisamos de 2n3/3 + n2/2 − 7n/6 FLOPS. Backward substitution para resolver o sistema triangular resultante: n2 FLOPS

TOTAL = 2n3/3 + 3n2/2 − 7n/6 FLOPS.

LU decomposition requer trˆes passos:

Forward elimination (ou elimina¸c˜ao sucessiva) para criar a fatora¸c˜ao A = LU: 2n3/3 + n2/2 − 7n/6 FLOPS. Veja que s˜ao exatamente AS

MESMAS opera¸o˜oes do passo 1 da EG, apenas guardando os multiplicadores abaixo da diagonal da matriz L.

Forward substitution para achar z como solu¸c˜ao de Lz = b: n2FLOPS

Backward substitution para resolver Ux = z: n2 FLOPS

(83)

LU versus EG para calcular A

−1

Para calcular A−1 devemos resolver n sistemas lineares Ax = bi onde

b1= (1, 0, . . . , 0), b2= (0, 1, 0, . . . , 0), . . ., bn= (0, 0, . . . , 0, 1).

Se usarmos a elimina¸c˜ao gaussiana em todos eles precisaremos de EGn= n × (2n3/3 + 3n2/2 − 7n/6) FLOPS.

Se usarmos LU, a decomposi¸c˜ao A = LU ter´a de ser feita apenas um ´

unica vez no in´ıcio.

Os outros dois passos ser˜ao repetidos n vezes.

Dessa forma, LUn= 2n3/3 + n × (5n2/2 − 7n/6) FLOPS.

Comparando:

Com n = 10, temos GE10≈ 3LU10.

Com n = 100, temos GE100≈ 25LU100.

(84)

Fatora¸c˜

ao LU de Doolittle

Listagem 6: Doolittle dado A sa´ıda L, U for k = 1, . . . , n lkk = 1 for j = k, . . . , n ukj = akj−Pk−1i =1 lkiuij end for j = k + 1, . . . , n ljk =  ajk− Pk−1 i =1 ljiuik  /ukk end end

(85)

LU em Scilab

Com a EG, LU necessita pivotar. Com pivota¸c˜ao, a fatora¸c˜ao LU sempre existe, mesmo se A ´e singular. Com pivota¸c˜ao, obtemos LU = PA

(86)

Decomposi¸c˜

ao de Cholesky

Quando A n × n for sim´etrica e definida positiva: Cholesky.

Por Cholesky, existe uma matriz L triangular inferior tal que podemos escrever

A = LLt

A decomposi¸c˜ao de Cholesky ´e um caso especial da decomposi¸c˜ao LU com U = Lt.

´

E como se L fosse a raiz quadrada de A: L =

√ A

(87)

Por que Cholesky e n˜

ao LU?

Encontra apenas L (n˜ao precisa de U). Evita pivota¸c˜ao.

(88)

Decomposi¸c˜

ao de Cholesky

Para Cholesky precisamos de A sim´etrica e definida positiva. ´

E comum termos um sistema Ax = b onde A ´e sim´etrica?

Sim, ´e muito comum. Por exemplo,...

No modelo de regress˜ao linear, temos que resolver um sistema da forma Ax = b onde A = DtD ´e uma matriz sim´etrica e definida positiva.

(89)

Decomposi¸c˜

ao de Cholesky

O fato de A ser definida positiva garante que os elementos aii da

diagonal s˜ao > 0 Prova: tome x = (1, 0, . . . , 0). Ent˜ao 0 < xtAx = a11. Agora tome x = (0, 1, 0, . . . , 0). Ent˜ao 0 < xtAx = a22. Etc.

(90)

Algoritmo para decomposi¸c˜

ao de Cholesky

A = LLt =   l11 0 0 l21 l22 0 l31 l32 l33     l11 l21 l31 0 l22 l32 0 0 l33   =   l112 l21l11 l31l11 l21l11 l212 + l222 l31l21+ l32l22 l31l11 l31l21+ l32l22 l312 + l322 + l332  

O que deve ser o valor l11?

Iguale o elemento 11 da matriz A e o elemento 11 da matriz produto LLt.

Vemos que l2

11= a11, ou seja, l11=

√ a11.

(91)

Algoritmo para decomposi¸c˜

ao de Cholesky

A = LLt =   l11 0 0 l21 l22 0 l31 l32 l33     l11 l21 l31 0 l22 l32 0 0 l33   =   l112 ∗ ∗ l21l11 l212 + l222 ∗ l31l11 l31l21+ l32l22 l312 + l322 + l332  

Iguale o elemento 21 de A com o elemento 21 de LtL.

Temos l21l11= a21. Como j´a obtivemos l11=

a11, encontramos

l21= a21/

√ a11.

(92)

Algoritmo para decomposi¸c˜

ao de Cholesky

A = LLt =   l11 0 0 l21 l22 0 l31 l32 l33     l11 l21 l31 0 l22 l32 0 0 l33   =   l2 11 l21l11 l212 + l222 l31l11 l31l21+ l32l22 l312 + l322 + l332  

De maneira idˆentica, obtemos l31= a31/

√ a11.

Primeira coluna de L est´a pronta. Vamos agora obter a segunda

coluna de L.

Iguale o elemento a22 e o elemento 22 do produto LLt:

a22= l212 + l222 ).

(93)

Algoritmo para decomposi¸c˜

ao de Cholesky

A = LLt =   l11 0 0 l21 l22 0 l31 l32 l33     l11 l21 l31 0 l22 l32 0 0 l33   =   l112 l21l11 l212 + l222 l31l11 l31l21+ l32l22 l312 + l 2 32+ l 2 33  

Tendo obtido l11, l21, l31, l22 , passamos agora a l32

Iguale o elemento a32 e o elemento 32 do produto LLt

(94)

  25 15 −5 15 18 0 −5 0 11  =   l11 0 0 l21 l22 0 l31 l32 l33     l11 l21 l31 0 l22 l32 0 0 l33   primeira coluna de L   25 15 −5 15 18 0 −5 0 11  =   5 0 0 3 l22 0 −1 l32 l33     5 3 −1 0 l22 l32 0 0 l33  

(95)

conclus˜ao:   25 15 −5 15 18 0 −5 0 11  =   5 0 0 3 3 0 −1 1 3     5 3 −1 0 3 1 0 0 3  

(96)

Decomposi¸c˜

ao de Cholesky em Scilab

A deve ser definida positiva.

Sen˜ao,Scilabmostra uma mensagem de erro.

Sintaxe R=chol(A) L=chol(A,’lower’) [R,p]=chol(A) [L,p]=chol(A,’lower’) [R,p,S]=chol(A) [R,p,s]=chol(A,’vector’) [L,p,s]=chol(A,’lower’,’vector’)

(97)

Decomposi¸c˜

ao de Cholesky

Exemplo:

Os coeficientes binomiais dispostos em uma matriz sim´etrica criar uma matriz positiva definida interessante.

n=5 X=pascal(n) X= 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70

(98)

Decomposi¸c˜

ao de Cholesky

Exemplo: ´

E interessante porque o seu fator de Cholesky consiste nos mesmos coeficientes, dispostos em uma matriz triangular superior.

R=chol(X) R= 1 1 1 1 1 0 1 2 3 4 0 0 1 3 6 0 0 0 1 4 0 0 0 0 1

(99)

Decomposi¸c˜

ao de Cholesky

Exemplo:

Destru´ımos a propriedade de ser definida positiva ao subtrair 1 do ´ ultimo elemento. X(n,n)=X(n,n)-1 X= 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 69

Referências

Documentos relacionados

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

In: VI SEMINÁRIO NACIONAL DE PESQUISADORES DA HISTÓRIA DAS COMUNIDADES TEUTO-BRASILEIRAS (6: 2002: Santa Cruz do Sul).. BARROSO, Véra Lúcia

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

No presente trabalho, foi desenvolvido um programa para a verificação dos estados limites de serviço em vigas de concreto armado. Inicialmente, apresentam-se os fundamentos teóricos e

Assim com Miles (1980), Hall também convenciona o ambiente em: a) ambiente geral: que afeta todas as organizações e é igual para todas (condições tecnológicas,

[r]

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis

Analisando os ensaios, observou-se que o fenômeno da cavitação pode ser minimizado se a diferença de pressão entre a montante e jusante for menor ou igual à pressão