Lista 2 - Análise Numérica
Escola de Matemática Aplicada, Fundação Getulio Vargas
Professor: Hugo A. de la Cruz Cancino
Monitor: Lucas Machado Moschen
Data da entrega: 12/09/2021
- Considere a matriz diagonal por blocos onde é a matriz identidade é dada por
(a) O método de Gauss-Seidel aplicado ao sistema é convergente ? Justifique bem sua resposta.
Existem algumas formas de verificar esse resultado usando alguns resultados da literatura. De forma geral para métodos iterativos, podemos fazer:
(i) Mostrar que a matriz do método tem o maior autovalor em módulo é menor do que 1. Seja autovetor de cujo autovalor correspondente é . Assim . De fato, teríamos que para todo autovetor , que pode ser considerado de norma 1. Assim, se conseguíssemos mostrar que para todo autovetor , teríamos que . Se tomarmos a norma máximo, é fácil ver que . Será que é fácil mostrar que ? Eu acredito que não. Para isso teríamos que encontrar o formato dos autovalores, pois, de forma geral, se é um vetor qualquer, essa desigualdade não é observada.
(ii) Mostrar que para alguma norma induzida. Infelizmente, isso também não parece trivial de se fazer, mesmo sabendo que a inversa de uma matriz triangular inferior é triangular inferior.
(iii) A matriz é estritamente diagonalmente dominante: isso não é verdade para essa matriz.
(iv) A matriz é irredutivelmente diagonalmente dominante: aqui precisamos mostrar que ela é diagonalmente dominante (o que de fato é, pois a diagonal é 4, enquanto ou outros elementos da mesma linha são no máximo quatro valores -1) e que pelo menos uma linha vale a desigualdade estrita, o que vale para a primeira linha. Assim já provamos que vale a convergência de Gauss-Seidel. Para verificar esse teorema, esse artigo pode ser um bom início.
(v) A matriz é positiva definida. Provamos que se , o método SOR converge nesse caso. Como Gauss-Seidel é um casso particular , basta verificar a positividade. Um bom material nesse sentido é esse aqui. Nesse caso, procurar os autovalores de (que têm um formato bem conveniente) e mostrar que eles são positivos é uma boa.
(b) Uma boa escolha do parâmetro no método SOR pode levar a uma convergência mais rápida, comparado com Jacobi e Seidel. Em geral determinar o valor ótimo de não é um problema fácil, mas em alguns casos em que a matriz do sistema tem uma estrutura específica é possível achar esse valor ótimo ótimo. Por exemplo, para a matriz acima é conhecido que
Implemente o método SOR para resolver o sistema ; onde é um vetor tal que o sistema tem a solução exata . Compare a performance do método SOR usando 4 valores diferentes do parâmetro :
i)
ii) (o método de Seidel)
iii)
iv) ,
para 4 valores diferentes de : . Como critério de comparação use o número de iterações necessárias para que o erro na norma seja . Comente sobre os resultados obtidos.
A implementação desse problema pode ser encontrado na pasta do repositório.
Vamos lembrar que a iteração do método SOR é dada por
Para essa matriz em particular, temos uma estrutura interessante. Observe que para linha temos:
- Um valor 4 na diagonal, isto é, .
- Um valor -1 à esquerda de 4 (exceto na primeira linha de cada ), isto é, se .
- Um valor -1 à direita de 4 (exceto na última linha de cada ), isto é, se .
- Um valor -1 na identidade ao lado esquerdo de , isto é, se .
- Um valor -1 na identidade ao lado direito de , isto é, se .
A iteração se reduz a com as restrições já citadas a cima.
Além disso, também tem uma estrutura bem particular que pode ser também utilizada. Multiplicando pelo vetor com só valores 1 faz com que somemos as linhas. O que fazemos então é subtrair de 4 o número de condições verdadeiras: , , , e .
Uma visualização interessante do processo que podemos ter é sobre o vetor . Ele é um vetor em . Porém podemos imagina-lo como uma matriz . Nesse caso se , dizemos que a menos que . Nesse caso . Com essa estrutura, veja que fica na mesma coluna de , mas uma linha acima. Isso nos permite escrever
e as condições se restringem a condições de borda (isto é, ). Do jeito que calculamos agora, não é possível paralelizar o cálculo. Para fazer isso, uma estratégia é montar o Grid Red-Black.
Esse problema é muito custoso quando cresce. Em particular, colocando a uma distância de Normal(0, sd = 0.01), para fazer a seguinte figura, levou 11s. Porém, para , esse tempo já foi muito superior.