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

Documentos relacionados
Renato Martins Assunção

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Resolução de Sistemas Lineares. Ana Paula

Métodos Numéricos - Notas de Aula

Cálculo Numérico BCC760

Resolução de sistemas de equações lineares: Fatorações de matrizes

Resolução de sistemas de equações lineares: Fatorações de matrizes

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Sistemas Lineares Métodos Diretos

decomposição de Cholesky.

Laboratório de Simulação Matemática. Parte 6 2

Agenda do Dia Aula 14 (19/10/15) Sistemas Lineares: Introdução Classificação

Matrizes e Sistemas Lineares

SISTEMAS LINEARES PROF. EDÉZIO

Sistemas de Equações Lineares

Resolução de sistemas de equações lineares: Fatorações de matrizes

Escalonamento. Sumário. 1 Pré-requisitos. 2 Sistema Linear e forma matricial. Sadao Massago a Pré-requisitos 1

Modelagem Computacional. Parte 6 2

Métodos Numéricos. Turma CI-202-X. Josiney de Souza.

Solução de sistemas de equações lineares

Parte 1 - Matrizes e Sistemas Lineares

Notas para o Curso de Algebra Linear Il Dayse Haime Pastore 20 de fevereiro de 2009

Resolução de Sistemas Lineares. Ana Paula

Disciplina: Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer. Aula 6 - Solução de Sistema de Equações Algébricas

Sistemas de Equações Lineares Algébricas

Consideremos um sistema linear de n equações lineares e n incógnitas, do tipo:

Problema 5a by

Algoritmos Numéricos 2 a edição

Sistemas Lineares. Métodos Iterativos Estacionários

Nota importante: U é a matriz condensada obtida no processo de condensação da matriz

Resolução de sistemas de equações lineares: Método de eliminação de Gauss - estratégias de pivotamento

Sistemas Lineares - Eliminação de Gauss

[a11 a12 a1n 7. SISTEMAS LINEARES 7.1. CONCEITO. Um sistema de equações lineares é um conjunto de equações do tipo

Introdução aos Métodos Numéricos

Vetores e Geometria Analítica

Introdução aos Métodos Numéricos

é encontrado no cruzamento da linha i com a coluna j, ou seja, o primeiro índice se refere à linha e o segundo à coluna.

Uma equação linear com n variáveis tem a seguinte forma:

= o A MATRIZ IDENTIDADE. a(i, :) = (aii, ai2,, ai.) i = 1,, m

Solução de Sistemas Lineares: Métodos Diretos

Universidade Federal do Espírito Santo - UFES

Material Teórico - Módulo Matrizes e Sistemas Lineares. Sistemas Lineares - Parte 2. Terceiro Ano do Ensino Médio

Resolução de Sistemas de Equações Lineares

Sistema de Equaçõs Lineares

Álgebra Linear Semana 04

Introdução aos Métodos Numéricos. Instituto de Computação UFF

Fatoração LU André Luís M. Martinez UTFPR

Sistemas Lineares e Matrizes

Álgebra Linear Semana 01

Sistemas de Equações Lineares Algébricas

1, , ,

Métodos Matemáticos II

Resolução de Sistemas Lineares. Ana Paula

Laboratório de Matemática Computacional II

Uma matriz m x n é um quadro de elementos dispostos em m linhas e n colunas. Os valores de m e n são sempre positivos e inteiros.

Profs. Alexandre Lima e Moraes Junior 1

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

INTRODUÇÃO AOS MÉTODOS NUMÉRICOS. Solução de Sistemas Lineares

Álgebra Matricial - Nota 03 Eliminação Gaussiana e Método de Gauss-Jordan

Álgebra Linear e Geometria Analítica

Matemática II /06 - Matrizes 1. Matrizes

Álgebra Linear e Geometria Anaĺıtica. Matrizes e Sistemas de Equações Lineares

Matriz, Sistema Linear e Determinante

1 NOTAS DE AULA FFCLRP-USP - VETORES E GEOMETRIA ANALÍTICA. Professor Doutor: Jair Silvério dos Santos

Computação Paralela: Algoritmos e Aplicações

Resolução de Sistemas Lineares. Método de Gauss. O algoritimo conhecido como Método de Gauss é desenvolvido a partir de dois ingredientes básicos:

Curso de Matemática Aplicada - MCC03 Algebra Linear. Iniciado em 03 de Agosto de 2017 Notas de aula e trabalhos Márcio Vital de Arruda

UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE CAMPUS AVANÇADO DE NATAL CURSO DE CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: ÁLGEBRA LINEAR

Determinantes. det A = a 11. Se A = a11 a 12 a 21 a 22. é uma matriz 2 2, então. det A = a 11 a 22 a 12 a 21. Exemplo 1. det 3 4. = 1; det 3 4 = 0.

ANÁLISE NUMÉRICA. Sistemas Lineares (3) 5º P. ENG. DE COMPUTAÇÃO/TELECOMUNICAÇÃO/CONTROLE FACIT / Prof. Rodrigo Baleeiro Silva

2. Sistemas lineares

Regressão Linear. Renato Martins Assunção DCC - UFMG. Renato Martins Assunção (DCC - UFMG) Regressão Linear / 25

Curso Satélite de. Matemática. Sessão n.º 1. Universidade Portucalense

Revisão: Matrizes e Sistemas lineares. Parte 01

PESQUISA OPERACIONAL

Resolução de sistemas de equações lineares: Método de eliminação de Gauss - estratégias de pivotamento

Introdução aos Métodos Numéricos

Introdução aos Métodos Numéricos

MAP Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017

Sistemas de equações lineares

Matrizes e sistemas de equações algébricas lineares

n. 1 Matrizes Cayley (1858) As matrizes surgiram para Cayley ligadas às transformações lineares do tipo:

Refletores de Householder e Fatoração QR

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Figura : Monitoria. Monitoria Cálculo Numérico

1 Complexidade de Algoritmos em Álgebra Linear

Unicidade da Forma Escalonada Reduzida de uma Matriz

A = Utilizando ponto flutuante com 2 algarismos significativos, 2 = 0, x (0)

MÉTODO DE FATORAÇÃO LU PARA SOLUÇÃO DE SISTEMAS LINEARES

Pode-se mostrar que da matriz A, pode-se tomar pelo menos uma submatriz quadrada de ordem dois cujo determinante é diferente de zero. Então P(A) = P(A

DCC008 - Cálculo Numérico

Matriz de Admitância e Cálculo de Redes

1.3 Matrizes inversas ] [ 0 1] = [ ( 1) ( 1) ] = [1 0

Introdução aos Sistemas Lineares

1 Subespaços Associados a uma Matriz

Aulas práticas de Álgebra Linear

Fração, Potenciação, Radiciação, Matrizes e Sistemas Lineares - Ozias Jr.

INSTITUTO SUPERIOR TÉCNICO Licenciatura em Engenharia Física Tecnológica Licenciatura em Engenharia e Gestão Industrial Ano Lectivo: 2002/

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Transcrição:

Métodos Numéricos Renato Martins Assunção DCC - UFMG 9 de agosto de 2016 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 1 / 99

Sistema diagonal Solução de sistema diagonal O sistema definido por é equivalente a A = A solução é muito simples 1 0 0 0 3 0 0 0 5 b = 1x 1 = 1 3x 2 = 6 5x 3 = 15 1 6 15 x 1 = 1 1 = 1 x 2 = 6 3 = 2 x 3 = 15 = 3 5 Note que precisamos ter todos os elementos da diagonal 0. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 2 / 99

Sistema diagonal Algoritmo para sistema diagonal Listagem 1: Solução de sistema diagonal dado A, b for i = 1,..., n x i = b i /a ii end Devemos ter a ii 0 para todo i para fazer a divisão. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 3 / 99

Sistema triangular 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 0. Triangular superior: somente aqueles acima podem ser 0. PODEM SER 0: não é obrigatório que sejam todos 0. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 4 / 99

Sistema triangular Matrizes triangulares As matrizes triangulares inferior e superior (genéricas) são l 11 0... 0 u 11 u 12... u 1n l 21 l 22... 0 0 u 22... u 2n L =..... e U =....... l n1 l n2... l nn 0 0... u nn com l ii 0 e u ii 0 para todo i. L: Lower U: Upper Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 5 / 99

Sistema triangular Matrizes triangulares Sistemas triangulares também são resolvidos facilmente: O sistema triangular inferior Ly = b e o sistema triangular superior são facilmente resolvidos por: Ux = c substituição sucessiva (forward) (sistema inferior) substituição reversa (retroativa ou backward) (sistema superior) IMPORTANTE: Nós não precisamos inverter as matrizes L e U. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 6 / 99

Sistema triangular Solução de sistemas triangulares A = é equivalente a 2 1 2 0 3 2 0 0 4 b = 9 1 8 Ax = b ou 2x 1 + x 2 + 2x 3 = 9 3x 2 + 2x 3 = 1 4x 3 = 8 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 7 / 99

Sistema triangular Solução de sistemas triangulares 2x 1 + x 2 + 2x 3 = 9 3x 2 + 2x 3 = 1 4x 3 = 8 ou 2 1 2 0 3 2 0 0 4 x 1 x 2 x 3 = 9 1 8 Resolva em ordem reversa, a última equação sendo resolvida primeiro: x 3 = 8 4 = 2 x 2 = 1 3 ( 1 + 2x 3) = 1 3 ( 1 + 2 2) = 3 3 = 1 x 1 = 1 2 (9 x 2 2x 3 ) = 1 4 (9 1 2 2) = 2 2 = 2 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 8 / 99

Sistema triangular Solução de sistemas triangulares Resolver um sistema triangular superior para obter x 1, x 2,..., x n : substituição reversa, retroativa ou backward. Listagem 2: substituição reversa dado A ( superior), b x n = b n /a nn for i = n 1,..., 1 s = b i for j = i + 1,..., n s = s a ij x j end x i = s/a ii end Note que precisamos ter a ii 0 para fazermos a divisão. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 9 / 99

Scilab: Sistema triangular for i = (n-1):-1:1 s = b(i); for j = (i+1):n s = s - U(i,j)*x(j); end x(i) = s/u(i,i); end Renato endfunction Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 10 / 99 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);

Scilab: Sistema triangular Usando a função 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ão seja quadrada? Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 11 / 99

Scilab: Sistema triangular Usando a função 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); Vamos modificar a função para verificar este possível erro na entrada. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 12 / 99

Scilab: Sistema triangular 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); for i = (n-1):-1:1 (etc) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 13 / 99

Scilab: Sistema triangular 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 A matriz de entrada nao eh quadrada. at line 9 of function TriSup called by : sol = TriSup(A,b); Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 14 / 99

Scilab: Sistema triangular Vetorizando em Scilab Algoritmo e sua implementação: explorando particularidades da linguagem Scilab O laço (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); end endfunction Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 15 / 99

Scilab: Sistema triangular Vetorizando em Scilab Mesmo a instrução x(n) = b(n)/u(n,n); pode ser omitida. Fazemos k começar em n. Quando k=n, temos j = [], um objeto vazio, de efeito nulo e assim U(n,j)*x(j) não 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 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 16 / 99

FLOPS em sistema triangular Número de operações para resolver um sistema triangular floating point operation = adição, subtração, multiplicação ou divisão. FLOP Considere um sistema com n equações e n incógnitas. Quanto tempo (FLOPS) toma? O tempo exato depende da máquina. O que nos interessa é comparar diferentes algoritmos na mesma máquina: só nos interessam as diferenças relativas, que serão as mesmas em todas as máquinas. Triangular superior ou inferior: n 2 FLOPS Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 17 / 99

FLOPS em sistema triangular Soma dos primeiros ímpares Do livro Proofs Without Words, de Roger Nelsen Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 18 / 99

FLOPS em sistema triangular De novo, soma dos primeiros ímpares Do livro Proofs Without Words, de Roger Nelsen Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 19 / 99

FLOPS em sistema triangular Número de operações 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) n j=1 (2j 1) = 2 n j=1 j n j=1 1 = 2 n(n+1) 2 n = n 2. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 20 / 99

FLOPS em sistema triangular FLOPS para resolver um sistema triangular com n equaçôes Sistema triangular superior ou inferior com n equaçôes: precisamos de n 2 FLOPS. Suponha que uma máquina toma x segundos para resolver um sistema triangular com n equações. O que acontece se o sistema dobrar de tamanho passando a ter 2n equações. Ele vai tomar (2n) 2 FLOPS, o que significa 2 2 = 4 vezes mais que o sistema com n. Se o sistema tiver 10n equações ele vai demorar 10 2 n 2 FLOPS, ou 10 2 = 100 vezes mais. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 21 / 99

Eliminação gaussiana E quando A não for triangular? Eliminação gaussiana (ou método de escalonamento) O objetivo é transformar um sistema quadrado arbitrário em um sistema triangular superior equivalente, de modo que possa ser facilmente resolvido com substituição reversa. A solução formal para Ax = b, em que A é uma matriz n n é x = A 1 b Nós NÃO VAMOS calcular diretamente a matriz inversa A 1. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 22 / 99

Eliminação gaussiana Solucionar x 1 + 3x 2 = 5 2x 1 + 4x 2 = 6 Vamos subtrair 2 vezes a primeira equação da segunda equação x 1 + 3x 2 = 5 2x 2 = 4 Este novo sistema é equivalente ao primeiro. Isto é, os dois sistemas possuem as mesmas soluções. O segundo está na forma triangular superior, e pode ser resolvido por substituição reversa. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 23 / 99

Eliminação gaussiana Ao realizar a eliminação gaussiana à mão, podemos evitar copiar o x i usando uma notação abreviada. Por exemplo, para resolver: 3 2 1 1 A = 6 6 7 b = 7 3 4 4 6 Forme o sistema aumentado à = [A b] = 3 2 1 1 6 6 7 7 3 4 4 6 A barra vertical dentro da matriz aumentada é apenas um lembrete de que a última coluna é o vetor b. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 24 / 99

Eliminação gaussiana Some 2 vezes a linha 1 à linha 2, e some (1 vez) a linha 1 à linha 3 Ã (1) = Subtraia (1 vez) a linha 2 da linha 3 Ã (2) = 3 2 1 1 0 2 5 9 0 2 3 7 3 2 1 1 0 2 5 9 0 0 2 2 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 25 / 99

Eliminação gaussiana O sistema transformado está agora na forma triangular superior 3 2 1 1 Ã (2) = 0 2 5 9 0 0 2 2 Solucione por substituição reversa para obter x 3 = 2 2 = 1 x 2 = 1 2 ( 9 5x 3) = 2 x 1 = 1 3 ( 1 2x 2 + x 3 ) = 2 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 26 / 99

Eliminação gaussiana Resumo: Eliminação gaussiana Usamos eliminação gaussiana quando a matriz A do sistema A não for triangular. Resolver um sistema via eliminação gaussiana implica em dar DOIS passos. Primeiro: Elimine elementos para reduzir à forma triangular superior. Segundo: Resolva o sistema triangular superior (que precisa de n 2 flops). Vamos rever estes dois passos de forma genérica. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 27 / 99

Eliminação gaussiana 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úmeros, e não são necessariamente os mesmos valores. Comece a eliminação usando a primeira linha como a linha pivô e o primeiro elemento da primeira linha como o elemento pivô: x x x x x x x x x x x x x x x x x x x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 28 / 99

Eliminação gaussiana Elimine elementos abaixo do elemento pivô na primeira coluna. x 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 x x x x x x x x x x x x x x x x x x x 0 x x x x 0 x x x x x x x x x x x x x x 0 x x x x 0 x x x x 0 x x x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 29 / 99

Eliminação gaussiana O elemento pivô é agora o elemento da diagonal na segunda linha. Elimine elementos abaixo do elemento pivô na segunda coluna. x indica um valor que foi alterado duas vezes. x x x x x 0 x x x x 0 x x x x 0 x x x x = = x x x x x 0 x x x x 0 0 x x x 0 x x x x x x x x x 0 x x x x 0 0 x x x 0 0 x x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 30 / 99

Eliminação gaussiana O elemento pivô é agora o elemento da diagonal na terceira linha. Elimine elementos abaixo do elemento pivôna terceira coluna. x indica um valor que foi alterado três vezes. x x x x x 0 x x x x 0 0 x x x 0 0 x x x = x x x x x 0 x x x x 0 0 x x x 0 0 0 x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 31 / 99

Eliminação gaussiana Resumo Eliminação gaussiana é um processo ordenado para transformar uma matriz aumentada em uma forma triangular superior equivalente. A operação de eliminação no k-ésimo passo é ã ij = ã ij (ã ik /ã kk )ã kj, i > k, j k Eliminação requer três loops aninhados. O resultado da fase de eliminação é 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 x x x x 0 0 x x x 0 0 0 x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 32 / 99

Eliminação gaussiana Listagem 3: eliminação sucessiva (forward) input A, b for k = 1,..., n 1 for i = k + 1,..., n for j = k + 1,..., n a ij = a ij (a ik /a kk )a kj end b i = b i (a ik /a kk )b k a ik = 0 end end Não há necessidade de realmente calcular zeros: a ik = 0 sempre. Esta é uma das razões para tomarmos j = k + 1,..., n. O termo (a ik /a kk ) é chamado de multiplicador. Ele pode ficar fora do loop-j, evitando recalculá-lo a cada iteração do loop-j. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 33 / 99

Eliminação gaussiana Listagem 4: eliminação sucessiva (forward) dado A, b for k = 1,..., n 1 for i = k + 1,..., n xmult = a ik /a kk for j = k + 1,..., n a ij = a ij (xmult)a kj end b i = b i (xmult)b k a ik = 0 end end Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 34 / 99

Eliminação gaussiana em Scilab 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 Basta usar sol = ElimGauss(A,b) Usamos apenas DOIS laços for acima; no algoritmo, temos 3 laços. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 35 / 99

FLOPS em eliminação gaussiana FLOPS para resolver um sistema via EG Considere o sistema Ax = b onde A tem dimensão n n. Para zerar o termo na posição (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 b 1 por xmult e subtraia de b 2. Total: 1 + 2(n 1) + 2 = 2n + 1 Para zerar o termo na posição (3, 1) de A: também 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. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 36 / 99

FLOPS em eliminação gaussiana 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é a penúltima quando vamos precisar de (2 2 + 1)(1) FLOPS Total: n 1 (n i)(2n + 1 2(i 1)) = 2 3 n3 + 1 2 n2 7 6 n i=1 onde usamos que n i=1 i 2 = 1 n(n + 1)(2n + 1) 6 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 37 / 99

FLOPS em eliminação gaussiana FLOPS para resolver sistema via EG Para reduzir o sistema a um sistema triangular via EG: 2 3 n3 + 1 2 n2 7 6 n Para resolver o sistema triangular resultante: mais n 2 FLOPS TOTAL: 2 3 n3 + 3 2 n2 7 6 n Se n é grande o primeiro termo é o dominante: 2n 3 /3 = O(n 3 ). Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 38 / 99

FLOPS em eliminação gaussiana RESUMO: FLOPS para resolver sistema via EG Considere um sistema com n equações e n incógnitas. Quanto tempo (FLOPS) toma? Triangular superior ou inferior: n 2 FLOPS. Matriz genérica: da ordem de n 3 FLOPS. Se matriz dobrar de tamanho passando a ter 2n equações, número de FLOPS fica 2 3 = 8 vezes maior. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 39 / 99

Pivotação parcial 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ão há nada errado com este sistema. A é de posto completo existe A 1 e portanto x = A 1 b. A solução existe e é única: x = [1; 2; 3; 4]. O problema é que, no algoritmo de eliminação gaussiana, aparecem zeros nas posições dos pivôs e portanto não podemos usá-los como divisores. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 40 / 99

Pivotação parcial Necessidade de pivotar Forme o sistema aumentado. Ã = 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ção gaussiana e ver onde nos levará. 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. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 41 / 99

Pivotação parcial Resultado de zerar a primeira coluna da matriz aumentada com o pivô a 11 2 4 2 2 4 Ã = 0 0 5 2 7 0 3 5 5 1 0 3 5 4 5 O próximo passo da eliminação gaussiana não irá funcionar porque há um zero na posição pivô, ã 22. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 42 / 99

Pivotação parcial Tentando eliminação gaussiana em Scilab Melhor trocar para o Scilab Vamos usar a função 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) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 43 / 99

Pivotação parcial Vamos trocar a segunda e a quarta linhas da matriz aumentada. Isto não pode modificar a solução do sistema. Ã = 2 4 2 2 4 0 3 5 4 5 0 3 5 5 1 0 0 5 2 7 Continue com a eliminação: multiplicar a linha 2 por 1 e a seguir subtrair da linha 3. 2 4 2 2 4 Ã = 0 3 5 4 5 0 0 0 1 4 0 0 5 2 7 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 44 / 99

Pivotação parcial Outro zero apareceu na posição pivô. Troque as linhas 3 e 4. 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á pronto para substituição reversa. A solução do sistema reduzido pela eliminação gaussiana COM TROCA das linhas da matriz AUMENTADA é a mesma solução do sistema original: x = [1; 2; 3; 4]. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 45 / 99

Pivotação parcial Tentando eliminação gaussiana em Scilab Melhor trocar para o Scilab Vamos usar a função 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) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 46 / 99

Pivotação parcial No meio do processo de eliminação gaussiana, tivemos de trocar a 2 a. linha pela 4 a. e, a seguir, a 3 a. pela 4 a.. Isto é 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ção P para colocar as linhas de A na ordem desejada. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 47 / 99

Pivotação parcial Seja P a seguinte matriz de permutação P = 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 Se multiplicarmos à por P teremos o sistema aumentado com as linhas na ordem correta: PÃ. Este novo sistema aumentado está pronto para eliminação gaussiana usual, sem necessidade de trocar as linhas. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 48 / 99

Pivotação parcial Operações elementares A eliminação gaussiana é um método sistemático de realizar operações elementares de linhas na matriz aumentada. O objetivo é terminar com uma matriz triangular superior. As operações elementares por linhas são as seguintes: (1) multiplicar uma linha por um escalar não nulo; (2) somar a i-ésima linha multiplicada por algum escalar r R a j-ésima linha; (3) intercambiar duas linhas. Observação. Linhas são somadas e multiplicadas por escalares como vetores (isto é, vetores linha). Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 49 / 99

Pivotação parcial Operação elementar e matrizes Toda operação elementar por linha é idêntica 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ênticas, podemos fazer o seguinte: 1 0 0 0 2 0 0 0 1 a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 = a 1 a 2 a 3 2b 1 2b 2 2b 3 c 1 c 2 c 3 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 50 / 99

Pivotação parcial Matrizes elementares Seja à uma matriz aumentada n (n + 1). Considere a matriz E n n dada por 1... O 1 E = r 1. O.. 1 linha #i O produto matricial Eà gera uma matriz idêntica a à exceto pela linha i. Os elementos da linha i da matriz Eà são iguais aos elementos correspondentes da linha i de à multiplicados por r. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 51 / 99

Pivotação parcial Matrizes elementares Para trocar duas linhas de lugar: 1 0 0 a 1 a 2 a 3 0 0 1 b 1 b 2 b 3 0 1 0 c 1 c 2 c 3 = Basta multiplicar por uma matriz de permutação P. a 1 a 2 a 3 c 1 c 2 c 3 b 1 b 2 b 3 Esta matriz de permutação é a matriz identidade com suas linhas permutadas. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 52 / 99

Pivotação parcial Matrizes elementares Seja à a matriz aumentada n (n + 1) de um sistema linear. Seja P a matriz n n dada por 1 O... 0 1 P =..... 1 0... O 1 1 1 linha #i 1 linha #j 1 1 P é a matriz identidade com as linhas i e j permutadas. A matriz Pà é a matriz aumentada à com suas linhas i e j permutadas. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 53 / 99

Pivotação parcial Matrizes elementares Finalmente, a última operação elementar. Criar uma nova matriz onde a segunda linha de A é substituï 1 2 da pela segunda linha somada a 3 vezes a primeira linha: 1 0 0 a 1 a 2 a 3 a 1 a 2 a 3 3 1 0 b 1 b 2 b 3 = b 1 + 3a 1 b 2 + 3a 2 b 3 + 3a 3 0 0 1 c 1 c 2 c 3 c 1 c 2 c 3 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 54 / 99

Pivotação parcial Matrizes elementares Seja à a matriz aumentada n (n + 1) de um sistema linear. Seja E a matriz n n dada por 1.... O 0 1 E =..... 0 r 1...... 0 0 0 1 O produto Eà subsitui a linha L j de à por L j + rl i. 1 1 linha #i 1 linha #j 1 1 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 55 / 99

Pivotação parcial Produto de matrizes elementares A eliminação gaussiana pode ser vista como um processo de multiplicação da matriz aumentada por matrizes elementares. Seja à a matriz n (n + 1) aumentada de um sistema linear. A matriz escalonada final (a matriz triangular superior) é a matriz B obtida como B = E k E k 1... E 2 E 1 à Onde cada matriz E j é uma matriz elementar. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 56 / 99

Pivotação parcial Um exemplo Considere o sistema linear Ax = b onde 3 2 1 A = 6 6 7 b = 3 4 4 1 7 6 Forme o sistema aumentado à = [A b] = 3 2 1 1 6 6 7 7 3 4 4 6 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 57 / 99

Pivotação parcial Começando com a matriz aumentada 3 2 1 1 à = [A b] = 6 6 7 7 3 4 4 6 Some 2 vezes a linha 1 à linha 2, e some (1 vez) a linha 1 à linha 3 3 2 1 1 à (1) = 0 2 5 9 0 2 3 7 Isto pode ser obtido da seguinte maneira: Sejam 1 0 0 E 1 = 2 1 0 E 2 = 0 0 1 1 0 0 0 1 0 1 0 1 Se multiplicarmos à por E 1 e a seguir por E 2 teremos à (1). Verifique isto por você mesmo. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 58 / 99

Pivotação parcial Assim à (1) = 3 2 1 1 0 2 5 9 0 2 3 7 = E 2 E 1 à Queremos agora zerar o elemento 32 de à (1). Para isto, some ( 1 linha 2) à linha 3. Vamos representar isto como uma matriz elementar multiplicando à (1). Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 59 / 99

Pivotação parcial Multiplicando por teremos à (2) = à (1) = E 3 = 3 2 1 1 0 2 5 9 0 2 3 7 3 2 1 1 0 2 5 9 0 0 2 2 1 0 0 0 1 0 0 1 1 = E 3 à (1) = E 3 E 2 E 1 à Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 60 / 99

Pivotação parcial Se temos Ax = b, e efetuamos EG, acabamos com x x x x A = x x x x x x x x = x x x x x x x x 0 x x x 0 0 x x 0 0 0 x A eliminação gaussiana é obtida por meio da multiplicação de uma séquência de matrizes elementares: E k E k 1... E 1 Ax = E k E k 1... E 1 b MAx = Mb Ux = Mb MA é uma matriz triangular superior e denotada por U. M é a matriz eliminação, resultado da multiplicação das matrizes elementares: M = E k E k 1... E 1. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 61 / 99

Pivotação parcial O truque LU Vamos agora fazer algo bizarro. Vamos reverter a operação de eliminação gaussiana que deu tanto trabalho!! Transformamos o sistema Ax = b no sistema equivalente Ux = Mb onde M é a matriz resultante das operações elementares. Vamos agora reverter multiplicando os dois lados da equação matricial Ux = Mb por M 1. Com isto teremos M 1 Ux = M 1 Mb. Ou seja, temos M 1 Ux = b. Como todos estes sistemas são equivalentes, isto quer dizer que voltamos ao sistema original: Isto implica que A = M 1 U. M 1 Ux = b Ax = b Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 62 / 99

Pivotação parcial A fatoração LU Vamos pensar sobre o que fizemos. Começamos com o sistema Ax = b Após a eliminação gaussiana, terminamos com Ux = Mb. Invertemos M e com isto voltamos ao sistema original (Ax = b) mas agora escrito como M 1 Ux = b. Isto é, nós FATORAMOS A no produto de duas matrizes, M 1 e U. Isto é, escrevemos A = M 1 U. Parece muito trabalho para simplesmente voltar ao ponto de partida ligeiramente modificado. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 63 / 99

Pivotação parcial Para quê a fatoração LU? Existe uma razão muito importante e prática para fazer a decomposição LU. Quando quisermos resolver vários sistemas lineares com a mesma matriz A mas diferentes b s, a decomposição LU será muito mais eficiente que a elminação gaussiana simples. Mas, alto lá: quando alguém estaria interssado num problema desses? Simples: toda vez que quisermos achar a inversa A 1 teremos de resolver n sistemas lineares com a mesma matriz A e diferentes b s. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 64 / 99

Pivotação parcial O produto AB em colunas Suponha que A e B sejam matrizes com dimensões compatíveis. Seja AB = C. Podemos mostrar que a 1a coluna de C é o resultado de Ax onde x é a 1a coluna de B. Do mesmo modo, a 2a coluna de C é Ax onde x é a 2a coluna de B. Em geral, AB j = C j onde B j e C j são as colunas j de B e C. E daí? Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 65 / 99

Pivotação parcial Cálculo da inversa de A Por definição, A 1 é 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 (única) solução x de Ax = I 1 onde I 1 = (1, 0, 0,..., 0) t é a primeira coluna da matriz identidade I de dimensão n n. A segunda coluna de B deve ser a (única) solução x de Ax = (0, 1, 0, 0,..., 0) t. E assim sucessivamente. Temos de resolver n sistemas lineares, todos da forma Ax = b i, onde apenas b i muda e é a i-ésima coluna da matriz identidade. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 66 / 99

Pivotação parcial Resumo da utilidade de LU LU será melhor que a eliminação gaussiana quando tivermos vários sistemas Ax = b i Isto é, a mesma matriz A mas diferentes b i s Isto ocorre principalmente quando queremos A 1. Uma pergunta que responderemos em breve é: LU é muito mais eficiente, um pouco mais ou só um pouquinho mais eficiente que EG? Voltaremos a esta pergunta daqui a pouco. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 67 / 99

Pivotação parcial A fatoração LU Entretanto, existe uma razão muito importante e prática para isto. M 1 tem uma estrutura muito especial, tão simples que não temos trabalho algum em calcular esta matriz inversa. Sempre teremos M 1 da seguinte forma L = M 1 = 1 0 0 0 m 21 1 0 0 m 31 m 32 1 0 m 41 m 42 m 43 1 M 1 será uma matriz triangular inferior. Além disso, os elementos não-nulos serão os MULTIPLICADORES da eliminação gaussiana. Estes elementos são os inversos dos números usados nas matrizes de eliminação. Isto é mais facilmente entendido com um exemplo. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 68 / 99

Pivotação parcial Fatoração LU Como um exemplo, tome um passo da EG. A torna-se 6 2 2 4 A = 12 8 6 10 3 13 9 3 = B = 6 4 1 18 utilizando a matriz eliminação M 1 = 1 0 0 0 2 1 0 0 1 2 0 1 0 1 0 0 1 Isto é, M 1 A = A e o sistema Ax = b torna-se A x = M 1 Ax = M 1 b 6 2 2 4 0 4 2 2 0 12 8 1 0 2 3 14 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 69 / 99

Pivotação parcial Fatoração LU Vamos dar mais passo na EG. A torna-se 6 2 2 4 A = M 1 A = 0 4 2 2 0 12 8 1 0 2 3 14 utilizando a matriz eliminação M 2 = = A = 1 0 0 0 0 1 0 0 0 3 1 0 0 1/2 0 1 Isto é, M 2 M 1 A = A e o sistema Ax = b torna-se A x = M 2 M 1 Ax = M 2 M 1 b 6 2 2 4 0 4 2 2 0 0 2 5 0 0 4 13 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 70 / 99

Pivotação parcial Fatoração LU Vamos dar o último passo na EG. A matriz A torna-se uma matriz triangular superior U. Isto é, 6 2 2 4 6 2 2 4 A = M 2 M 1 A = 0 4 2 2 0 0 2 5 = U = 0 4 2 2 0 0 2 5 0 0 4 13 0 0 0 3 utilizando a matriz eliminação M 3 = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2 1 Isto é, M 3 A = M 3 M 2 M 1 A = U e o sistema Ax = b torna-se Ux = M 3 M 2 M 1 Ax = M 3 M 2 M 1 b Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 71 / 99

Pivotação parcial Fatoração LU Terminamos a eliminação gaussiana com a expressão Ux = M 3 M 2 M 1 b em que U é triangular superior (U vem de Upper) e cada M i era uma matriz de eliminação. O que fazemos agora é 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ção acima (se esta inversa existir). Isto é, multiplicando por (M 3 M 2 M 1 ) 1 dos dois lados da equação, temos (M 3 M 2 M 1 ) 1 Ux = (M 3 M 2 M 1 ) 1 M 3 M 2 M 1 b = b Surpresa: L = (M 3 M 2 M 1 ) 1 é uma matriz triangular inferior e os elementos não nulos são os inversos dos elementos não nulos nas M i s. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 72 / 99

Pivotação parcial Fatoração LU Terminamos com LUx = b onde L = (M 3 M 2 M 1 ) 1. Precisamos verificar que L é triangular inferior e os elementos não nulos são os inversos dos elementos não nulos nas M i s. Não faremos a demonstração matemática deste fato. Vamos apenas verificá-lo no contexto de um exemplo concreto. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 73 / 99

Pivotação parcial Fatoração LU Para escalonar a matriz A = 6 2 2 4 12 8 6 10 3 13 9 3 6 4 1 18 usamos três matrizes de eliminação: = U = 6 2 2 4 0 4 2 2 0 0 2 5 0 0 0 3 Ux = M 3 M 2 M 1 Ax = M 3 M 2 M 1 b onde M 1 = 1 0 0 0 2 1 0 0 1/2 0 1 0 1 0 0 1, M 2 = 1 0 0 0 0 1 0 0 0 3 1 0 0 1/2 0 1, M 3 = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2 1 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 74 / 99

Pivotação parcial Fatoração LU Temos onde M 1 = 1 0 0 0 2 1 0 0 1 0 1 0, M 2 = 2 1 0 0 1 Ux = M 3 M 2 M 1 b 1 0 0 0 0 1 0 0 0 3 1 0 0 1/2 0 1, M 3 = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2 1 É fácil verificar que L = (M 3 M 2 M 1 ) 1 = M1 1 M 1 2 M 1 3 é dada por L = 1 0 0 0 2 1 0 0 1/2 3 1 0 1 1/2 2 1 L é uma matriz triangular inferior em que os elementos não-nulos são os multiplicadores m ij da eliminação gaussiana. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 75 / 99

Pivotação parcial A fatoração LU Assim, concluímos que o sistema pode ser escrito como Ax = b LUx = b onde: L é uma matriz triangular inferior com elementos abaixo da diagonal iguais aos multiplicadores da eliminação gaussiana. U é a matriz triangular superior resultante do processo de eliminação gaussiana. E daí? O que fazer com isto? Uma vez que L e U são triangulares, é fácil resolver o sistema original Ax = b resolvendo dois sistemas triangulares, um envolvendo L e outro envolvendo U. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 76 / 99

Pivotação parcial Fatoração LU É muito fácil resolver um sistema linear envolvendo uma matriz triangular. Considere a solução para Ax = b. A = LU = (LU)x = b Reagrupe, pois a multiplicação de matrizes é associativa Seja Ux = y. Então L(Ux) = b Ly = b Como L é triangular, é fácil (sem eliminação gaussiana) calcular y = L 1 b Esta expressão deve ser interpretada como solucione Ly = b com substituição forward. Não precisamos calcular a inversa de L. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 77 / 99

Pivotação parcial Fatoração LU Como y agora é conhecido, resolvemos o sistema Ux = y para x. Como L é triangular, é fácil (sem eliminação gaussiana e sem de fato inverter a matriz) calcular x = U 1 y Isto é, a expressão acima deve ser interpretada como solucione Ux = y com substituição reversa. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 78 / 99

Pivotação parcial Fatoração LU Listagem 5: Solução LU Fatore A em L e U Resolva Ly = b para y Resolva Ux = y para x utilize substituiç~ao forward utilize substituiç~ao reversa Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 79 / 99

Pivotação parcial Fatoração LU Listagem 5: LU dado A for k = 1,..., n 1 for i = k + 1,..., n xmult = a ik /a kk a ik = xmult for j = k + 1,..., n a ij = a ij (xmult)a kj end end end U é armazenado na parte superior triangular de A. L (sem a diagonal) é armazenado no triangular inferior. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 80 / 99

Pivotação parcial LU: obtendo a A 1 Como dissemos anteriormente, uma das principais motivações para a decomposição LU é o cálculo 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 é o vetor x que resolve o sistema Ax = b i onde b i é 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 = b i onde A é a mesma e apenas o vetor de coeficientes b muda. Vamos mostrar que a solução LU para este conjunto de n sistemas é mais eficiente (requer menos FLOPS) que resolver por eliminação gaussiana. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 81 / 99

Pivotação parcial LU versus EG Para resolver UM ÚNICO sistema linear Ax = b, eliminação gaussiana requer menos operações que LU. EG requer dois passos: Forward elimination (ou eliminação sucessiva) para criar a matriz triangular superior U: precisamos de 2n 3 /3 + n 2 /2 7n/6 FLOPS. Backward substitution para resolver o sistema triangular resultante: n 2 FLOPS TOTAL = 2n 3 /3 + 3n 2 /2 7n/6 FLOPS. LU decomposition requer três passos: Forward elimination (ou eliminação sucessiva) para criar a fatoração A = LU: 2n 3 /3 + n 2 /2 7n/6 FLOPS. Veja que são exatamente AS MESMAS opera oões do passo 1 da EG, apenas guardando os multiplicadores abaixo da diagonal da matriz L. Forward substitution para achar z como solução de Lz = b: n 2 FLOPS Backward substitution para resolver Ux = z: n 2 FLOPS TOTAL = 2n 3 /3 + 5n 2 /2 7n/6 FLOPS. Assim, LU requer um pouco mais de FLOPS que EG para resolver um único sistema. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 82 / 99

Pivotação parcial LU versus EG para calcular A 1 Para calcular A 1 devemos resolver n sistemas lineares Ax = b i onde b 1 = (1, 0,..., 0), b 2 = (0, 1, 0,..., 0),..., b n = (0, 0,..., 0, 1). Se usarmos a eliminação gaussiana em todos eles precisaremos de EG n = n (2n 3 /3 + 3n 2 /2 7n/6) FLOPS. Se usarmos LU, a decomposição A = LU terá de ser feita apenas um única vez no início. Os outros dois passos serão repetidos n vezes. Dessa forma, LU n = 2n 3 /3 + n (5n 2 /2 7n/6) FLOPS. Comparando: Com n = 10, temos GE 10 3LU 10. Com n = 100, temos GE 100 25LU 100. Com n = 1000, temos GE 1000 250LU 1000. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 83 / 99

Pivotação parcial Fatoração LU de Doolittle Listagem 6: Doolittle dado A saída L, U for k = 1,..., n l kk = 1 for j = k,..., n u kj = a kj k 1 i=1 l kiu ij end for j = k + 1,..., n l jk = end end ( a jk k 1 i=1 l jiu ik ) /u kk Matematicamente o mesmo que LU anterior A diferença é que agora explicitamente forma L e U Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 84 / 99

Pivotação parcial LU em Scilab Com a EG, LU necessita pivotar. Com pivotação, a fatoração LU sempre existe, mesmo se A é singular. Com pivotação, obtemos LU = PA Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 85 / 99

Decomposição de Cholesky Decomposição de Cholesky Quando A n n for simétrica e definida positiva: Cholesky. Por Cholesky, existe uma matriz L triangular inferior tal que podemos escrever A = LL t A decomposição de Cholesky é um caso especial da decomposição LU com U = L t. É como se L fosse a raiz quadrada de A: L = A Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 86 / 99

Decomposição de Cholesky Por que Cholesky e não LU? Encontra apenas L (não precisa de U). Evita pivotação. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 87 / 99

Decomposição de Cholesky Decomposição de Cholesky Para Cholesky precisamos de A simétrica e definida positiva. É comum termos um sistema Ax = b onde A é simétrica? Sim, é muito comum. Por exemplo,... No modelo de regressão linear, temos que resolver um sistema da forma Ax = b onde A = D t D é uma matriz simétrica e definida positiva. A n n é definida positiva se x t Ax > 0 para todo x 0 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 88 / 99

Decomposição de Cholesky Decomposição de Cholesky O fato de A ser definida positiva garante que os elementos a ii da diagonal são > 0 Prova: tome x = (1, 0,..., 0). Então 0 < x t Ax = a 11. Agora tome x = (0, 1, 0,..., 0). Então 0 < x t Ax = a 22. Etc. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 89 / 99

Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l 31l 11 l 21l 11 l21 2 + l22 2 l 31l 21 + l 32l 22 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 O que deve ser o valor l 11? Iguale o elemento 11 da matriz A e o elemento 11 da matriz produto LL t. Vemos que l 2 11 = a 11, ou seja, l 11 = a 11. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 90 / 99

Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l21 2 + l22 2 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 Iguale o elemento 21 de A com o elemento 21 de L t L. Temos l 21 l 11 = a 21. Como já obtivemos l 11 = a 11, encontramos l 21 = a 21 / a 11. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 91 / 99

Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l21 2 + l22 2 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 De maneira idêntica, obtemos l 31 = a 31 / a 11. Primeira coluna de L está pronta. Vamos agora obter a segunda coluna de L. Iguale o elemento a 22 e o elemento 22 do produto LL t : a 22 = l21 2 + l 22 2 ). Assim, l 22 = a 22 l 221 = a 22 a21 2 /a 11. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 92 / 99

Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l21 2 + l22 2 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 Tendo obtido l 11, l 21, l 31, l 22, passamos agora a l 32 Iguale o elemento a 32 e o elemento 32 do produto LL t E assim sucessivamente. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 93 / 99

Decomposição de Cholesky 25 15 5 15 18 0 5 0 11 = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 primeira coluna de L 25 15 5 15 18 0 5 0 11 = 5 0 0 3 l 22 0 1 l 32 l 33 5 3 1 0 l 22 l 32 0 0 l 33 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 94 / 99

Decomposição de Cholesky conclusão: 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 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 95 / 99

Decomposição de Cholesky Decomposição de Cholesky em Scilab A deve ser definida positiva. Senão, Scilab mostra 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 ) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 96 / 99

Decomposição de Cholesky Decomposição de Cholesky Exemplo: Os coeficientes binomiais dispostos em uma matriz simétrica 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 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 97 / 99

Decomposição de Cholesky Decomposição de Cholesky Exemplo: É 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 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 98 / 99

Decomposição de Cholesky Decomposição de Cholesky Exemplo: Destruímos a propriedade de ser definida positiva ao subtrair 1 do último 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 Este é um caso em que a fatoração de Cholesky falha. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 99 / 99