ms 512 - análise numéricams512/sites/default/files/gmm.pdf · figura 4: utilizando svd para...

60
MS 512 - Análise Numérica P ROJETO COMPUTACIONAL 2 GABRIEL LUIZ - 135800 MATEUS S ANGALLI - 156684 MATHEUS ZABIN - 156743

Upload: others

Post on 05-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

MS 512 - Análise Numérica

PROJETO COMPUTACIONAL 2

GABRIEL LUIZ - 135800MATEUS SANGALLI - 156684

MATHEUS ZABIN - 156743

Page 2: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Sumário1 Questão 1 2

1.1 Teorema SVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Interpretação Geométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Compressão de imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.1 Imagens em escala de cinza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3.2 Imagens Coloridas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Questão 2 162.1 Teorema de Schur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 Teorema Espectral para matrizes simétricas reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3 Decomposição Espectral e Decomposição SVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Questão 3 183.1 Equação de Sylvester e Teorema da Inércia de Sylvester . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.2 Resultados, propriedades e aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.1 Linearidade da Equação de Sylvester e Relação com o Problema de Autovalores e Autovetores . . 183.2.2 Existência e Unicidade da Solução da Equação de Sylvester . . . . . . . . . . . . . . . . . . . . 193.2.3 Regra de Remoção de Roth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Questão 4 204.1 Fatoração QR com Rotação de Givens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2 Fatoração QR com Reflexão de Householder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5 Questão 5 225.1 Iteração de Subespaço . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.2 Iteração Simultânea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.3 Algorítmo de Francis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6 Questão 6 246.1 Método do Ponto Fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.2 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.3 Método de Broyden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.4 Exercício 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.5 Exercício 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7 Questão extra 297.1 Equação H de Chandrasekhar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2 Equações de Ornstein-Zernike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.3 Reprodução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317.4 Ampliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

8 Códigos Utilizados 348.1 Questão 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

8.1.1 Código para comprimir imagens coloridas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348.1.2 Código para comprimir imagens em escala de cinza . . . . . . . . . . . . . . . . . . . . . . . . . 34

8.2 Questão 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358.2.1 Código para Fatoração QR com rotação de Givens . . . . . . . . . . . . . . . . . . . . . . . . . 358.2.2 Código para Fatoração QR com reflexão de Householder . . . . . . . . . . . . . . . . . . . . . . 35

8.3 Questão 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368.3.1 Códigos para resolução do exercício 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368.3.2 Códigos para resolução do exercício 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

8.4 Questão extra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408.4.1 Códigos para resolução da Equação H de Chandrasekhar . . . . . . . . . . . . . . . . . . . . . . 408.4.2 Códigos para a resolução da equação de Ornstein-Zernike . . . . . . . . . . . . . . . . . . . . . 428.4.3 Métodos de Newton-Krylov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Bibliografia 59

1

Page 3: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

1 Questão 1

1.1 Teorema SVDTeorema 1.1. Se A é uma matriz real m× n, então existem matrizes ortogonais,

U = [u1| · · · |um] ∈ Rm×m e V = [v1| · · · |vn] ∈ Rn×n,

tais que,U tAV = Σ = diag(σ1, . . . , σp) ∈ Rm×n, p = min(m,n),

onde σ1 ≥ σ2 ≥ · · · ≥ σp ≥ 0 ≥ ... ≥ 0.

Demonstração. Seja x ∈ Rn e y ∈ Rm vetores unidade pela norma-2 que satisfazem Ax = σy com σ = ‖A‖2. Daálgebra linear sabemos que existe V2 ∈ Rn×(n−1) e U2 ∈ Rm×(m−1), então V = [x|V2] ∈ Rn×n e U = [y|U2] ∈ Rm×msão ortogonais. Podemos facilmente ver que

U tAV =

[σ wt

0 β

]≡ A1,

onde w ∈ Rn−1 e β ∈ R(m−1)×(n−1). Como∥∥∥∥A1

([σw

])∥∥∥∥22

≥ (σ2 + wtw)2,

nós temos ‖A1‖22 ≥ (σ2 + wtw). Mas σ2 = ‖A‖22 = ‖A1‖22, e então devemos ter w = 0. Por uma indução óbviapodemos completar o teorema.Como vimos no enunciado do teorema, podemos utilizar matrizes retangulares m × n, e até mesmo matrizes de postoincompleto. Logo o método SVD não é restrito apenas a matrizes definidas-positivas e simétricas, como nos métodosestudados anteriormente.

Demonstrações mais intuitivas e construtivas para o teorema SVD podem ser vistas em [11].

1.2 Interpretação GeométricaPara realizar a interpretação geométrica da decomposição SVD vamos nos basear no seguinte fato geométrico:A imagem da esfera unitária sob qualquer matrix m× n é uma hiper-elipse.Primariamente, vale lembrar que SVD é aplicável tanto em matrizes reais quanto em complexas. Porém, para descrever ainterpretação geométrica vamos assumir que a matriz seja real.

Como vimos pelo Teorema, a decomposição (SVD) nos permite transformar uma matriz A ∈ Rn×n para uma formadiagonal utilizando matrizes unitárias, i.e,

U tAV = Σ ou A = U ΣV ∗,

onde U ∈ Rn×n tem colunas ortonormais, Σ ∈ Rn×n é diagonal, e V ∈ Rn×n é unitária. Como V é unitária (i.eV ∗ = V −1) nós temos uma equivalência:

A = U ΣV ∗ ⇔ AV = U Σ,

considerando cada coluna de V separadamente:

Avj = σjuj , j = 1, ..., n.

Assim, os vetores unitários de um sistema coordenado ortogonal v1, ..., vn são mapeados sob A, num novo sistema coor-denado ortogonal σ1u1, ..., σnun. Em outras palavras a esfera unitária com respeito a norma-2 da matriz é transformadanum elipsóide com eixos σjuj . Outra maneira de interpretar geometricamente a transformação SVD é: Qualquer matrizA, m× n mapeia a esfera unitária da norma-2 em Rn em um elipsóide em Rr, tal que r ≤ min(m,n).

2

Page 4: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 1: Interpretação geométrica da SVD.

Assim vamos nos referir aos σj como valores singulares de A (as entradas na diagonal de Σ). Eles usualmente sãoordenados tal que σ1 ≥ σ2 ≥ σ3 ≥ ... ≥ σn. Os vetores ortonormais uj (colunas de U ) são chamados de vetoressingulares esquerdos de A e os vetores ortonormais vj (colunas de V) são chamados de vetores singulares direitos de A.

1.3 Compressão de imagens1.3.1 Imagens em escala de cinza

Existe no mundo atual uma necessidade para o armazenamento de informações. Decomposição SVD é uma maneiraefetiva de diminuir o espaço utilizado por imagens, por exemplo. Ele remove os detalhes sem importância ao passo quepreserva as informações uteis.

Os computadores armazenam imagens em forma de matrizes. Com uma escala de cinza, cada tom de cinza, indo do pretoao branco, tem um número associado. Quando analisados pela máquina esses números vão formar a imagem novamente.Essencialmente, a decomposição SVD pode ser utilizada para minimizar a quantidade de diferentes números usados parafazer a imagem, minimizando o número de valores singulares que a matriz possui.

A maneira mais comum de utilizar SVD para a compressão de imagens é tal que seu espaço de armazenamento sejareduzido. SVD decompõe a matriz M em 3 matrizes, U , Σ, e V t. A matriz Σ contém os valores singulares da matriz Mem sua diagonal. Para reduzir a quantidade de espaço necessário para armazenamento, o número de valores singulares,ou o rank, precisa ser reduzido até certo ponto. Os menores valores singulares, até chegarmos na taxa de compressão quequeremos, são substituídos por zeros. Isso reduz o espaço utilizado para o armazenamento ao custo da perda de valoressingulares, ao passo que ainda preservamos o tamanho da matriz.

Uma imagem M, que incomprimida possui tamanho m × n pixels, precisa de zM = mn espaço para ser amarzenada.Uma vez que o SVD é aplicado, a imagem precisa de zM = k(m + n + 1), onde k é o rank da matriz M, que é umamedida do numero de linhas linearmente independentes, podemos lembrar então que rank(M) ≤ min(m,n). Logo seusarmos SVD para reduzir o rank da matriz, o espaço necessário para seu armazenamento também diminui.

3

Page 5: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 2: Utilizando SVD para compressão de imagem em escala de cinza.

Como podemos ver na figura acima, nós conseguimos diminuir a quantidade de informação até certo ponto, pois quandoforçamos uma compressão maior da imagem, acabamos por ter uma perda de informação que seria importante. Note porexemplo o tigre no rank 3, que é a imagem de menor custo de armazenagem para o computador. Ele perde informação detal maneira que não entendível ao olho humano. Temos então que encontrar a compressão ótima para cada imagem de talforma que minimizamos o espaço ocupado por ela, ao passo que ela deve conter suas características principais.

Figura 3: Utilizando SVD para compressão de imagem em escala de cinza.

Novamente notamos que chegamos a um ponto que a imagem começa a se deteriorar e perder informação. Note que atéo rank 30, a imagem do gato ainda está integra. apesar de um leve borrado em seu contorno e no fundo, a imagem estáperfeitamente visível. No rank 20, temos um começo de perda de informação borrando o interior do gato.Vamos repetir por fim esse processo para a imagem do quadro Monalisa. Novamente vamos ver a imagem se preservandoaté um limite

4

Page 6: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda.

Para converter e comprimir imagens em preto e branco, pode ser utilizado o código disponível na seção 8.1.2.

1.3.2 Imagens Coloridas

Agora nos surge uma dúvida natural: como tratar a compressão de imagens em figuras coloridas usando SVD? Será quebasta aplicar SVD na matriz ou requer algo um pouco mais delicado?

Figura 5: Imagem colorida que será trabalhada.

Quando uma imagem colorida é armazenada em um computador, ela é armazenada como três matrizes correlacionandoos contrastes e quantidade de cor do vermelho, verde e azul em pixels (i.e. sistema RGB). Quando aplicamos SVD

5

Page 7: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

em uma imagem colorida, devemos aplicar separadamente para cada matriz ”red”, ”green” e ”blue”, essas podem sertratadas como imagens em escala de cinza e comprimidas e depois recompiladas todos como uma para mostrar a imagemcomprimida total.

Vamos utilizar o software MATLAB para separar as escalas de cada uma das partes da imagem:

Figura 6: Escala de cinza mostrando os pixels "vermelhos".

Figura 7: Escala de cinza mostrando os pixels "verdes".

6

Page 8: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 8: Escala de cinza mostrando os pixels "azuis".

Agora vamos aplicar SVD para essas imagens individualmente e comprimi-las para o rank 50:

Figura 9: Escala de cinza mostrando os pixels "vermelhos"em rank 50.

Figura 10: Escala de cinza mostrando os pixels "verdes"em rank 50.

7

Page 9: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 11: Escala de cinza mostrando os pixels "azuis"em rank 50.

Agora por fim, concatenamos essas três camadas numa nova imagem para obtermos nossa imagem colorida em rank 50:

Figura 12: Imagem colorida comprimida por SVD com rank 50.

Tendo em vista como isso tudo é feito, é simples notar que uma imagem colorida de rank 50 ocupa 3 vezes mais espaçode armazenamento que sua correspondente em escala de cinza, assim como são necessários 3 vezes mais operações paracomprimi-lo, pois estaremos trabalhando com 3 matrizes.

Alguns outros ranks para a mesma imagem:

8

Page 10: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 13: Imagem colorida comprimida por SVD com rank 350.

Figura 14: Imagem colorida comprimida por SVD com rank 300.

.

Figura 15: Imagem colorida comprimida por SVD com rank 150.

9

Page 11: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 16: Imagem colorida comprimida por SVD com rank 20.

Figura 17: Imagem colorida comprimida por SVD com rank 10.

Essas imagens mostram que o SVD pode ser utilizado para decompor imagens coloridas. Reduzir uma imagem como estapara rank 150 já salva muito espaço de memória ao mesmo tempo que preserva os detalhes da imagem e as cores.O código para compressão de imagens coloridas se encontra na seção 8.1.1

Vamos colocar mais algumas imagens para podermos trabalhar bem com as cores:

10

Page 12: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 18: Imagem colorida comprimida por SVD com rank 350.

Figura 19: Imagem colorida comprimida por SVD com rank 300.

Figura 20: Imagem colorida comprimida por SVD com rank 150.

11

Page 13: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 21: Imagem colorida comprimida por SVD com rank 50.

Figura 22: Imagem colorida comprimida por SVD com rank 20.

Figura 23: Imagem colorida comprimida por SVD com rank 10.

12

Page 14: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 24: Imagem colorida comprimida por SVD com rank 350.

Figura 25: Imagem colorida comprimida por SVD com rank 300.

Figura 26: Imagem colorida comprimida por SVD com rank 150.

13

Page 15: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 27: Imagem colorida comprimida por SVD com rank 50.

Figura 28: Imagem colorida comprimida por SVD com rank 20.

Figura 29: Imagem colorida comprimida por SVD com rank 10.

14

Page 16: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

E por último, com fim de tirarmos impressões sobre a preservação de informações necessárias para reconhecimento defaces ou leitura de textos, elaboramos uma foto com os integrantes do grupo e disponibilizamos sua decomposição comranks 350, 50 e 10, respectivamente.

Figura 30: Imagem colorida comprimida com rank 350.

Figura 31: Imagem colorida comprimida com rank 50.

Figura 32: Imagem colorida comprimida com rank 10.

15

Page 17: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Podemos notar por essas imagens que mesmo após uma compressão com rank razoável como 50, ainda podemos ler amensagem com clareza. Quando atingimos ranks muito baixos e perdemos os valores singulares principais da matriz,acabamos por perder a nitidez e por consequência, não conseguindo ler a mensagem.

2 Questão 2

2.1 Teorema de SchurTeorema 2.1. (Teorema de Schur) Seja A ∈ Cn×n. Então existe uma matriz unitária U ∈ Cn×n e uma matriz triangularsuperior T ∈ Cn×n tal que T = U∗AU .Podemos igualmente escrever A = UTU∗ e essa será a decomposição Schur da matriz A. [3]

Demonstração. A prova é feita por indução em n. O resultado é trivial para n = 1. Agora, vamos provar que continuaválido para n = k dado que valha para n = k − 1. Seja A ∈ Ck×k. Seja λ um autovalor da matriz A e v o autovetorassociado escolhido de forma que ‖v‖2 = 1. Seja U1 uma matriz unitária qualquer que tenha v como sua primeira coluna.Existem muitas matrizes como essa, então tome qualquer base ortonormal de Ck tal que v é o primeiro membro e U1

sendo a matriz cujas colunas são os membros da base escolhida. Seja W ∈ Ck×(k−1) denotada como submatriz de U1

consistindo da coluna 2 até a coluna k de U1 de tal forma que U1 = [ v W ]. Já que as colunas de W são ortogonais à v,Wv = 0. Seja A1 = U∗1AU1. Então,

A1 =

[v∗

W ∗

]A[v W

]=

[v∗Av v∗AWW ∗Av W ∗AW

].

Já que Av = λv, segue que v∗Av = λ e W ∗Av = λW ∗v = 0. Seja A = W ∗AW . Então A1 tem a forma,

A1 =

λ ∗ . . . ∗0... A0

.A ∈ C(k−1)×(k−1), então por hipótese de indução existe uma matriz unitária U2 e uma matriz triangular superior T talque T = U∗2 AU2. Defina U2 ∈ Ck×k como sendo

U2 =

1 0 . . . 00... U2

0

.Então U2 é unitária e

U∗2A1U2 =

λ ∗ . . . ∗0... U∗2 AU2

0

=

λ ∗ . . . ∗0... T0

,que é diagonal superior. Vamos chamar essa matriz de T , e seja U = U1U2. Então T = U∗2A1U2 = U∗2U

∗1AU1U2 =

U∗AU . [3]

2.2 Teorema Espectral para matrizes simétricas reaisTeorema 2.2. (Teorema Espectral para matrizes reais simétricas) Seja A ∈ Rn×n simétrica. Então existe uma matrizortogonal U ∈ Rn×n e uma matriz diagonal D ∈ Rn×n tal que D = UTAU . [3]

Demonstração. A prova é por indução em n. É semelhante a prova do Teorema de Schur, exceto que as matrizes são reaise podemos esperar simetria. Portanto vamos apenas esboçar a prova.Seja λ um autovalor qualquer de A. Dado que λ é real, ele possui um autovetor real v associado, que escolheremos deforma que ‖v‖2 = 1. Seja U1 uma matriz ortogonal real tal que a primeira coluna é o vetor v, e seja A1 = UT1 AU1. EntãoA1 é real e simétria, e (como na prova do Teorema de Schur),

A2 =

1 0 . . . 00... A0

.

16

Page 18: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Dado que A ∈ R(n−1)×(n−1) é simétrica, nós podemos assumir indutivamente que existe uma matriz ortogonal U2 e umamatriz diagonal D tal que D = UT2 AU2. Seja,

U2 =

1 0 . . . 00... U2

0

, D =

λ 0 . . . 00... D0

,e U = U1U2. Então U é ortogonal e D = UTAU . [3]

2.3 Decomposição Espectral e Decomposição SVDDefinição 2.1. A decomposição espectral de uma matriz quadrada A é a fatoração

A = XΛX−1. [4]

Definição 2.2. A decomposição em valores singular (SVD) de uma matriz A ∈ Rm×n é a fatoração

A = UΣV T ,

onde U ∈ Rm×m, V ∈ Rn×n e Σ ∈ Rm×n é uma matriz diagonal na forma,

Σ = diag(σ1, σ2, ..., σr, 0, ..., 0), com σi > 0.

Podemos destacar três diferenças fundamentais entre a decomposição SVD e a decomposição espectral:

1. Enquanto a decomposição espectral utiliza a base de autovetores de A para construir a matriz X , a decomposiçãoSVD utiliza o conjunto ortonormal dos vetores singulares de ATA para construção da matriz U e o conjuntoortonormal de autovetores de ATA para construir a matriz V .

2. A ortonormalidade da base utilizada na decomposição SVD é garantida pelo fato de que ATA é simétrica positiva-definida e portanto seus autovetores formam uma base ortonormal para o Rn. Na decomposição espectral a ortogo-nalidade dos autovetores de A não pode ser garantida.

3. A decomposição SVD é construída de forma que qualquer matriz A a possua, podendo ser não quadrada, já nadecomposição espectral nem toda matriz A possui a fatoração, já que ela deve ser quadrada, não-singular e devepossuir todos seus autovetores linearmente independentes, característica que não pode ser facilmente verificada,possuindo custo computacional elevado.

17

Page 19: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

3 Questão 3

3.1 Equação de Sylvester e Teorema da Inércia de SylvesterDefinição 3.1. A inércia de uma matriz simétrica A é a tripla de inteiros Inertia(A) ≡ (υ, ζ, π), aonde υ é o número deautovalores negativos de A, ζ é o número de autovalores nulos de A e π é o número de autovalores positivos de A.

Teorema 3.1. (Teorema da Inércia de Sylvester) Seja A uma matriz simétrica e X uma matriz não singular. Então A eXTAX possuem a mesma inércia. [6]

Demonstração. Seja n a dimensão de A. Agora suponha que A tenha υ autovalores negativos mas XTAX tenha υ′ < υautovalores negativos; iremos encontrar uma contradição para provar que isso não pode acontecer. Seja N o correspon-dente autoespaço υ-dimensional de A; i.e., N é gerado pelos autovalores dos υ autovalores negativos de A. Isso significaque para qualquer x ∈ N não nulo, XTAX < 0. Seja P o (n − υ′)-dimensional autoespaço não nulo de XTAX; issosignifica que para qualquer x ∈ P, xTXTAXx ≥ 0. Dado que X é não singular, o espaço XP é também (n − υ′)-dimensional. Dado que dim(N) + dim(XP) = υ + n− υ′ > n, os espaços N e XP precisam conter um vetor não nulox em sua intersecção. Mas então 0 > xTAx dado que x ∈ N e 0 ≤ xTAx dado que x ∈ XP, que é uma contradição.Portanto, υ = υ′; i.e., A e XTAX possuem o mesmo número de autovalores negativos. Um argumento análogo mostraque eles possuem o mesmo número de autovalores positivos. Logo, eles devem também possuir o mesmo número deautovalores nulos. [6]

Definição 3.2. (Equação de Sylvester) A Equação de Sylvester é dada por,

AX −XB = C,

onde X ∈ Rm×n, C ∈ Rm×n, A ∈ Rm×m, B ∈ Rn×n.

3.2 Resultados, propriedades e aplicações3.2.1 Linearidade da Equação de Sylvester e Relação com o Problema de Autovalores e Autovetores

A expressão AX −XB é linear em X , ou seja, A(aX) − (aX)B = a(AX −XB) e A(X1 + X2) − (X1 + X2)B =AX1 − X1B + AX1 − X1B. Portanto podemos escrever essa equação numa forma de sistema linear. Nessa forma aequação fica [5]

(In ⊗A+BT ⊗ Im)vec(X) = vec(C),

onde In é a identidade n× n, Im é a identidade m×m. O produto Kronecker entre as matrizes U ∈ Rm×n e V ∈ p× qé definido como a matriz de blocos de dimensão mp× nq,

U ⊗ V =

u1,1V u1,2V . . . u1,nV

u2,1V. . .

......

. . ....

um,1V . . . . . . um,nV

,com ui,j sendo o elemento da i-ésima linha e j-ésima coluna da matriz U . E

vec(U) =

u1,1u2,1

...um1

u1,2u2,2

...um,2

...um,n

.

Considerando a equação de Sylvester no caso onde n = 1 e C = 0 temos exatamente a equação de autovetores, ondequeremos encontrar o autovetor X associado a um autovalor λ, onde λ é a única entrada da matriz B e supondo que λ éum autovalor de A.

18

Page 20: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

3.2.2 Existência e Unicidade da Solução da Equação de Sylvester

Um resultado importante que da uma condição necessária e suficiente para que a equação de Sylvester tenha uma únicasolução para cada C dado vem dos resultados seguintes. Primeiro note que, se AX = XB, então A2X = AAX =AXB = XBB = XB2 e A3X = AA2X = AXB2 = XBB2 = XB3. Podemos generalizar esse resultado noseguinte resultado, considerando que A0 é a matriz identidade,( m∑

k=0

akAk

)X =

m∑k=0

akAkX =

m∑k=0

akXBk = X

( m∑k=0

akBk

)(1)

formalizado no lema

Lema 3.1. Seja A ∈ Rn×, B ∈ Rm×m e X ∈ Rn×m, se AX −XB = 0, então , para qualquer polinômio g(t), temosg(A)X = Xg(B) [7].

Podemos então mostrar o seguinte teorema

Teorema 3.2. Seja A ∈ Rn×, B ∈ Rm×m, a equação AX −XB = C possui solução única para cada C ∈ Rn×m se, esomente se, σ(A) ∩ σ(B) = ∅, ou seja, A e B não possuem autovalor em comum[7].

Demonstração. Considere T (X) = AX − XB, sabemos que T é um operador linear no espaço das matrizes n porm. Basta, então, mostrar que a única solução de T (X) = 0 é X = 0. Seja pB o polinômio característico de B naforma mônica, sabemos pelo teorema de Cayley-Hamilton que pB(B) = 0. Sabemos também pelo resultado anterior quepB(A)X −XpB(B) = 0, portanto pB(A)X = 0.Sejam λ1, . . . , λn os autovalores de B, então pB(A) = (A− λ1I) . . . (A− λnI). Se A não possui autovalor em comumcom B, então as matrizes (A− λ1I), . . . , (A− λnI) não tem autovalor zero e portanto são não-singulares. Sendo pB(A)é não singular e a única solução de pB(A)X = 0 é X = 0.Supondo agora que pB(A)X = 0 tem solução não trivial, então para algum i, A − λiI é singular e portanto A tem umautovalor em comum com B [7].

3.2.3 Regra de Remoção de Roth

Uma possível utilidade da equação de Sylvester é na diagonalização de uma matriz triangular de blocos [7]

A =

[A1,1 A1,2

0 A2,2

].

Suponha que queremos achar uma transformação similar que introduza zeros na parte de A1,2, ou seja[I −X0 I

]−1 [A1,1 A1,2

0 A2,2

] [I −X0 I

]=

[A1,1 0

0 A2,2

],

Podemos verificar que isso acontece se, e somente se,

A1,1X −XA2,2 = A1,2.

E que só tem solução única se A1,1 não tem autovalores em comum com A2,2.Essa regra as vezes é chamada de regra de remoção de Roth.

19

Page 21: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

4 Questão 4

4.1 Fatoração QR com Rotação de GivensAplicaremos o algoritmo QR com fatoração de Givens na matriz A ∈ R5×3 dada por,

A =

1 5 23 7 110 4 11 3 52 7 3

Abaixo seguem as matrizes retornadas a cada iteração da fatoração QR com rotação de Givens, aonde A será a matriz Rsobreposta à matriz A e a matriz G será a matriz de rotação de Givens. O código usado para obtenção de tais resultadospode ser visto na seção 8.2.1.

• 1a Iteração

G =

−0.3162 0.9487 0 0 0−0.9487 −0.3162 0 0 0

0 0 1 0 00 0 0 1 00 0 0 0 1

, A =

−3.1623 −8.2219 −11.0680

0 2.5298 −1.58110 4 11 3 52 7 3

.• 2a Iteração

G =

1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1

, A =

−3.1623 −8.2219 −11.0680

0 2.5298 −1.58110 4 11 3 52 7 3

.• 3a Iteração

G =

0.9535 0 0 0.3015 0

0 1 0 0 00 0 1 0 0

−0.3015 0 0 0.9535 00 0 0 0 1

, A =

−3.3166 −8.7438 −12.0605

0 2.5298 −1.58110 4 10 0.3814 1.43022 7 3

.• 4a Iteração

G =

0.8563 0 0 0 0.5164

0 1 0 0 00 0 1 0 00 0 0 1 0

−0.5164 0 0 0 0.8563

, A =

−3.8730 −11.1026 −11.8771

0 2.5298 −1.58110 4 10 0.3814 1.43020 1.4791 −3.6589

.• 5a Iteração

G =

1 0 0 0 00 −0.5345 0.8452 0 00 −0.8452 −0.5345 0 00 0 0 1 00 0 0 0 1

, A =

−3.8730 −11.1026 −11.8771

0 −4.7329 00 0 −1.87080 0.3814 1.43020 1.4791 −3.6589

.• 6a Iteração

1 0 0 0 00 0.9968 0 0.0803 00 0 1 0 00 −0.0803 0 0.9968 00 0 0 0 1

, A =

−3.8730 −11.1026 −11.8771

0 −4.7482 −0.11490 0 −1.87080 0 1.42560 1.4791 −3.6589

.• 7a Iteração

G =

1 0 0 0 00 0.9547 0 0 0.29740 0 1 0 00 0 0 1 00 −0.2974 0 0 0.9547

, A =

−3.8730 −11.1026 −11.8771

0 −4.9733 0.97860 0 −1.87080 0 1.42560 0 −3.5275

.

20

Page 22: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

• 8a Iteração

G =

1 0 0 0 00 1 0 0 00 0 0.7954 0.6061 00 0 −0.6061 0.7954 00 0 0 0 1

, A =

−3.8730 −11.1026 −11.8771

0 −4.9733 0.97860 0 −2.35210 0 00 0 −3.5275

.• 9a Iteração

G =

1 0 0 0 00 1 0 0 00 0 −0.5548 0 0.83200 0 0 1 00 0 −0.8320 0 −0.5548

, A =

−3.8730 −11.1026 −11.8771

0 −4.9733 0.97860 0 4.23980 0 00 0 0

.E finalmente nossa matriz R obtida diretamente pelo MATLAB,

R =

−3.8730 −11.1026 −11.87710 −4.9733 0.97860 0 4.2398

.Podemos notar que a matriz R possui algumas entradas diferentes de nossa última matriz A obtida, porém como R diferede A por uma transformação ortogonal, os resultados são equivalentes.

4.2 Fatoração QR com Reflexão de HouseholderAplicaremos o fatoração QR com reflexão de Householder na matriz A ∈ R5×3, a mesma da aplicação da rotação deGivens realizada anteriormente, dada por,

A =

1 5 23 7 110 4 11 3 52 7 3

Abaixo seguem as matrizes retornadas a cada iteração da fatoração QR com reflexão de Householder, aonde A será amatriz R sobreposta à matriz A e a matriz P será a matriz de reflexão de Householder. O código utilizado para obter taisresultados pode ser visto na seção 8.2.2.

• 1a Iteração

P =

−0.2582 −0.7746 0 −0.2582 −0.5164−0.7746 0.5231 0 0.1590 −0.3179

0 0 1 0 0−0.2582 −0.1590 0 0.9470 −0.1060−0.5164 −0.3179 0 −0.1060 0.7881

, A =

−3, 8730 −11.1026 −11.8771

0 −2.9134 2.45670 4 10 −0.3045 2.15220 0.3911 −2.6955

.• 2a Iteração

P =

1 0 0 0 00 −0.5858 0.8043 −0.06012 0.07860 0.8043 0.5921 0.0310 −0.03990 −0.0612 0.0310 0.9976 0.00300 0.0786 −0.0399 0.0030 0.9961

, A =

−3.8730 −11.1026 −11.8771

0 4.9733 −0.97860 0 2.74230 0 2.01960 0 −2.5252

.

• 3a Iteração

P =

1 0 0 0 00 1 0 0 00 0 −0.6468 −0.4763 0.59560 0 −0.4763 0.8622 0.17230 0 0.5956 0.1723 0.7846

, A =

−3.8730 −11.1026 −11.8771

0 4.9733 −0.97860 0 −4.23980 0 00 0 0

.E então temos a matriz R calculada diretamente pelo MATLAB,

R =

−3.8730 −11.1026 −11.87710 4.9733 −0.97860 0 −4.2398

.Notamos que a última matriz A calculada e a matriz R possuem exatamente asmesmas entradas.

21

Page 23: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

5 Questão 5

5.1 Iteração de SubespaçoSeja A ∈ Rn×n com autovalores associados λ1, λ2, . . . , λn, com autovetores v1, v2, . . . , vn respectivamente. Suponhaque |λ1| ≥ |λ2| ≥ · · · ≥ |λk| > |λk+1| ≥ |λk+2| ≥ · · · ≥ |λn|.Seja o subespaço S ⊂ Rn tal que dim(S) = k. A iteração de subespaço consiste em aplicar o método das potências emtodo o S, ou seja, temos a sequência de espaços

S, AS, A2S, . . . , AmS, . . .

Onde AS = Ax|x ∈ S.Note que, como A representa uma transformação linear, dado x1, x2 ∈ S então aAx1 + bAx2 = A(ax1 + bx2) ∈ AS eportanto AS é um subespaço. É fácil mostrar desta forma que, por indução, todos os AmS são subespaços.Observe que se S = spanq1, q2, . . . , qk então, dado x ∈ S arbitrário, temos que x = c1q1 + c2q2 + . . . ckqk eAx = c1Aq1 + c2Aq2 + . . . ckAqk, portanto AS = spanAq1, Aq2, . . . Aqk.Seja N (A) = x|Ax = 0 o núcleo de A. Supondo que S ∩ N (A) = 0, então temos que, dado que q1, q2, . . . , qk éuma base de S, então todo vetor x ∈ S pode ser escrito como uma combinação linear única x = c1q1 + c2q2 + . . . ckqk.Ou seja, todo Ax = c1Aq1 + c2Aq2 + . . . ckAqk também é único e Aq1, Aq2, . . . Aqk é uma base para AS, portantodim(AS) = k.Dado S, T ⊂ Rn subespaços, vamos definir a distância

d(S, T ) = sups∈S,‖s‖2=1

inft∈T‖s− t‖2,

que é o seno do maior ângulo canônico entre um vetor de S e um de T [1] [3].É fácil perceber que se d(S, T ) = 0 e dim(S) = dim(T ) então S = T .

Teorema 5.1. Seja A ∈ Cn×n semisimples e com autovalores λ1, λ2, . . . , λn satisfazendo |λ1| ≥ |λ2| ≥ · · · ≥ |λk| >|λk+1| ≥ |λk+2| ≥ · · · ≥ |λn| e com autovetores associados v1, v2, . . . , vn. Seja Uk = spanv1, v2, . . . , vk e Tk =span = vk+1, . . . , vn e S um subespaço de Cn de dimensão k tal que Vk ∩ S = 0. Então existe um número real ctal que

d(AjS, Uk) ≤ c|λk+1/λk|j , j = 0, 1, 2, . . .

Portanto AjS converge para Uk linearmente com taxa |λk+1/λk|.[3]

A plausibilidade do teorema pode ser verificada facilmente. Seja v ∈ Cn, não nulo e tal que v /∈ Tk, então

v = c1v1 + c2v2 + · · ·+ ckvk

+ck+1vk+1 + · · · cnvn,

onde a primeira linha é a componente em Uk e a segunda linha é uma componente em Tk. Como v /∈ Tk algum coeficienteda primeira linha é diferente de zero. Temo que

Ajv/λjk = c1(λ1/λk)jv1 + c2(λ2/λk)jv2 + · · ·+ ckvk

+ck+1(λk+1/λk)jvk+1 + · · · cn(λn/λk)jvn.

Note que a segunda linha tende a zero conforme j → ∞, portanto, no limite, todo vetor v ∈ S é levado a um vetor emUk, se aplicadas as devidas transformações de escala. Como todos os iterandos tem dimensão k então o limite não podeser ser um subespaço próprio de Uk.

5.2 Iteração SimultâneaNa prática não se pode realizar a iteração do subespaço, mas pode-se realizar estas operações numa base de S. Inicial-mente, suponha uma base q(0)1 , q

(0)2 , . . . , q

(0)k para S, se realizarmos as iterações da forma

q(m+1)i = Aq

(m)i , i = 1, 2, . . . , k m = 0, 1, 2, . . . ,

teremos que os vetores convergiram para vetores de Uk, mas todos estarão convergindo separadamente para o autovetordominante. Agora, supondo que a cada iteração calculamos

p(m)i = Aq

(m)i , i = 1, 2, . . . , k m = 0, 1, 2, . . . ,

e calculamos a ortomalização dos p(m)i , q(m+1)

1 , q(m+1)2 , . . . q

(m+1)k .

O resultado disso é que os q(m)i convergem para uma base ortonormal de Uk, ou seja, os autovalores v1, v2, . . . , vk.

22

Page 24: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Definindo a matrizQ = [q

(m)1 q

(m)2 . . . q

(m)k ],

E fazendo Q∗AQ, onde Q∗ é o conjugado transposto de Q, podemos interpretar como uma mudança de base, primeiromudamos da base canônica para a base q(m)

i , i = 1, 2, . . . , k, aplicamos a transformação representada por A entãoretornamos a base canônica multiplicando o resultado por Q−1 = Q∗.Suponha uma matriz

A′ =

[A11 A12

A21 A22

]onde A11 ∈ Rk×k e A22 ∈ Rn−k×n−k Então temos que, dado um vetor não nulo [v′0]T = v ∈ spane1, e2, . . . , ek

A′v =

[A11v

′ +A120A21v

′ +A220

]=

[A11v

A21v′

],

Portanto A′v pertence a spane1, e2, . . . ek se, e somente se A21 = 0. Logo spane1, e2, . . . , ek é invariante a A′ se, esomente se A21 = 0. Ou seja, A′ é uma matriz de blocos triangular.Esse resultado será usado em seguida para mostrar que Q(m)∗AQ(m) converge para uma matriz triangular superior, ondeQ(m) = [q

(m)1 q

(m)2 . . . q

(m)n ], se q(m)

1 , q(m)2 , . . . , qmn converge para os autovalores pela iteração simultânea.

Uma característica importante da iteração simultânea é que, se q(m)1 , q

(m)2 , . . . , q

(m)k converge para a base do autoespaço

dominante de dimensão k então q(m)1 , q

(m)2 , . . . , q

(m)i converge para a base do autoespaço dominante de dimensão i,

com i = 1, 2, 3, . . . , k. Supondo que k = n, então cada um dos vetores qmi converge para a base de um espaço invariantepor A. Pelos resultados anteriores, temos que se q(m)

1 , q(m)2 , . . . , q

(m)i converge para um subespaço invariante, então

Q(m)∗AQ(m)v converge para um vetor em spane1, . . . , ei se v ∈ spane1, . . . , ei. Portanto, Q(m)∗AQ(m) convergepara uma matriz de blocos triangular. Como isso acontece para todo i ∈ 1, 2, . . . , n, então Q(m)∗AQ(m) converge parauma matriz triangular.É fácil perceber que os elementos da diagonal principal são q(m)T

i Aq(m)i , e conforme os q(m)

i convergem para os auto-valores, Aq(m)

i converge para λivi, e como a base é ortonormal q(m)Ti Aq

(m)i converge para λi pois q(m)T

i q(m)i converge

para 1.Portanto a diagonal principal converge para os autovalores e um critério de parada é checar se a matriz está próxima deuma matriz triangular superior.

5.3 Algorítmo de FrancisSeja a iteração do algorítmo QR

A(m) = Q(m)R(m)

A(m+1) = R(m)Q(m).(2)

Vamos relacioná-la com a iteração simultânea. Seja Q(m) a matriz cujas colunas são q(m)1 , q

(m)2 , . . . , q

(m)n e defina

Dm+1 = AQ(m) Dm+1 = Q(m+1)R(m+1),

onde Q(m+1)R(m+1) é a decomposição QR de Dm+1.Para checar a convergência basta ver se

Am = Q(m)AQ(m)

é próxima de triangular superior.Suponha que Q(0) = I , ou seja, q(0)1 = e1, q

(0)2 = e2, . . . , q

(0)n = en. Então D1 = A e D1 = Q(1)R(1). Fazendo

Q(1) = Q(1) temos A = Q(1)R(1). Com A1 = Q∗(1)AQ(1) = R(1)Q(1) temos duas matrizes que podem representara mesma transformação linear em bases diferentes, uma na base canônica e outra na base q(1)1 , q

(1)2 , . . . , q

(1)n . Ou seja

q(1)i vira ei no sistema de A1. Com isso podemos optar por fazer as operações e A1 ao invés de A. Então D2 = AQ(2) =

A1 = R(1)Q(1) e temos que D(2) = Q(2)R(2) que é equivalente a usar a decomposição QR de A1, A1 = Q(2)R(2). Parachecar a convergência então é feito A2 = Q(2)∗AQ(2) = Q(2)∗A1Q

(2) = R(2)Q(2).É simples perceber que o método gera, a partir disso, uma sequência de matrizes da forma de (2) ou

Am = Q(m)∗AQ(m)

onde Q(m) = Q(1)Q(2) . . . Q(m) pode ser visto como a mudança de coordenada após m passos.

23

Page 25: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

6 Questão 6

6.1 Método do Ponto FixoSeja o sistema

f1(x1, x2, . . . , xn) = 0,

f2(x1, x2, . . . , xn) = 0,...fn(x1, x2, . . . , xn) = 0,

ou

F (x) =

f1(x)f2(x)

...fn(x)

= 0, (3)

Dado que algumas condições sejam satisfeitas, podemos definir o método do ponto fixo para resolver (3). Antes deprosseguir, vamos passar por algumas definições.

Teorema 6.1. Seja f : D ⊂ Rn → R e x0 ∈ D. Suponha que existem todas as derivadas parciais de f e que existemδ > 0 e K > 0 tais que sempre que ‖x− x0‖ < δ e x ∈ D∣∣∣∣∂f(x)

∂xi

∣∣∣∣ ≤ K, i = 1, 2, . . . , n.

Então f é contínua em x0.

Prova:

‖x− x0‖ < δ ⇒∣∣∣∣∂f(x)

∂xi

∣∣∣∣ =

∣∣∣∣f(x+ hei)− f(x)

h

∣∣∣∣ < K.

Para h suficientemente pequeno. Então|f(x+ hei)− f(x)| < hK,

limx→x0

f(x) = f(x).

Definição 6.1. Seja G : D ⊂ Rn → Rn, p ∈ D é ponto fixo de G se G(p) = p.

Teorema 6.2. SejaD = (x1, x2, . . . , xn)T |ai ≤ xi ≤ bi ∀i = 1, 2, . . . , n para constantes a1, a2, . . . , an, b1, b2, . . . , bntais que, para todo i, ai < bi. Suponha G uma função contínua de D para Rn, suponha também que a imagem de G éD. Suponha também que existe K, tal que para todo i, j = 1, 2, . . . , n∣∣∣∣∂gi(x)

∂xj

∣∣∣∣ < K

n, ∀x ∈ D.

Então a sequência x(k)∞k=0, definida escolhendo x(0) ∈ D e fazendo

x(k+1) = G(x(k)),

converge para o único ponto fixo p de G, além disso,

‖x(k) − p‖∞ ≤Kk

1−K‖x(1) − x(0)‖∞ [9].

Ná prática pode ser difícil verificar se as hipóteses são verificadas, mas se pudermos encontrar uma função G como acimade forma que seu ponto fixo seja o zero de F , por exemplo G(x) = F (x) + x.Desta forma, se temos x(0) basta fazemos a iteração

x(k+1) ← G(x(k)),

para termos um método que converge para o zero x∗ de F , com o custo computacional por iteração de avaliar G.Como ‖x(k+1) + x∗‖∞ = ‖G(x(k)) +G(x∗)‖∞ ≤ K‖x(k) + x∗‖∞ o método tem convergência linear.

24

Page 26: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

6.2 Método de NewtonVamos encontrar uma função matricial A(x) e uma função

G(x) = x−A(x)−1F (x),

tais que o ponto que resolve F (x) = 0, p, seja o ponto fixo de G.Para isso tem precisamos do seguinte teorema

Teorema 6.3. Seja p uma solução de G(x) = x. Suponha que exista δ > 0 tal que

1. ∂gi/∂xj é contínua em Nδ = x|‖x− p‖ < δ, para i = 1, 2, . . . , n e j = 1, 2, . . . , n.

2. ∂2gi/∂xjxk é contínua e |∂2gi/∂xjxk| < M para alguma constante M em Nδ para i = 1, 2, . . . , n, j =1, 2, . . . , n, k = 1, 2, . . . , n.

3. ∂gi(p)/∂xj = 0 para i = 1, 2, . . . , n e j = 1, 2, . . . , n.

Então existe δ ≤ δ tal que a sequência dada por x(k+1) = G(x(k)) converge quadraticamente para qualquer escolha dex(0) tal que ‖x(0) − p‖ < δ. Além disso

‖x(k) − p‖∞ ≤n2M

2‖x(k) − p‖2∞, ∀ k ≥ 1 [9].

Para esclarescer, suponha que A é não singular numa vizinhança de p e seja bij(x) a entrada na linha i e coluna j de

A(x)−1. Então, para G(x) = x−A(x)−1F (x), temos gi(x) = xi −n∑j=1

bij(x)fj(x). Então

∂gi(x)

∂xk=

1−

n∑j=1

bij(x)∂fj(x)∂xk

(x) +∂bij(x)∂xk

(x)fj(x)

−n∑j=1

bij(x)∂fj(x)∂xk

(x) +∂bij(x)∂xk

(x)fj(x)

Se quisermos utilizar o teorema anterior temos que ter ∂gi(p)∂xk= 0 para todo i = 1, 2, . . . , n e k = 1, 2, . . . , n.

Então, como fi(p) = 0 para i = 1, 2, . . . , n temos que, para i = k

1−n∑j=1

bij(x)∂fj(x)

∂xk(x) = 0,

ou seja,n∑j=1

bij(x)∂fj(x)

∂xk(x) = 1. (4)

e para i 6= kn∑j=1

bij(x)∂fj(x)

∂xk(x) = 0. (5)

Defina a matriz Jacobiana J(x) como a matriz onde a entrada na linha i e coluna j é ∂fi(x)/∂xj , então as condições (4)e (5) implicam que A(x)−1J(x) = 1, ou seja, A(x) = J(x).Assim a iteração fica

x(k+1) = x(k) − J(x(k))−1F (x(k)),

e temos o método de Newton. Na prática o produto s = J(x(k))−1F (x(k)) é calculado resolvendo o sistema linearJ(x(k))s = F (x(k)).O método pode ter convergência quadrática se as hipóteses do teorema 6.3 forem satisfeitas, ou seja, as derivadas dex− J(x)−1F (x) são contínuas numa região próxima de p e as derivadas segundas são limitadas nessa região, além dissodevemos ter x(0) nessa região, o que na prática implica numa boa aproximação inicial, e que pode depender de modelomatemático por trás da equação. Ser feito efetuando, por iteração uma avaliação de F (x), ou seja, de n funções escalarese uma avaliação de J(x), ou seja, de n2 funçcões escalares, além da resolução de um sistema linear que é feito em O(n3)operações.

25

Page 27: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

6.3 Método de BroydenInspirado pela aproximação da derivada do método da secante para uma variável

f ′(x(i+1)) ≈ f(x(i))− f(x(i−1))

x(i) − x(i−1).

Como no caso multivariável x(i) − x(i−1) é um vetor, não podemos efetuar a divisão.Supondo que temos x(0) e x(1), e uma aproximação de J(x(0)), A0, então podemos procurar uma matriz A1 tal que

A1(x(1) − x(0)) = F (x(1))− F (x(0)),

Podemos utilizar a restriçãoA1z = A0z, ∀z tal que (x(1) − x(0))T z = 0,

dessa forma isso define unicamente a matriz

A1 = A0 +(F (X(1))− F (x(0))−A0(x(1) − x(0)))(x(1) − x(0))T

‖x(1) − x(0)‖22.

E portantox(2) = x(1) −A−1 1F (x(1)).

Depois disso usamos A1, x(2) e x(1) para determinar A2 da mesma forma e assim por diante.Dessa forma temos a iteração

Ai = Ai−1 +yi −Ai−1si‖si‖22

sTi

x(i+1) = x(i) −A−1i F (x(i)),

(6)

onde yi = F (x(i))− F (x(i−1)) e si = x(i) − x(i−1).Note que podemos computar si+1 resolvendo o sistema

Aisi+1 = −F (x(i)),

e entãox(i+1) = x(i) + si+1.

Dessa forma reduzimos o custo por iteração, pois não precisamos mais computar as n2 funções escalares da Jacobiana.Porém ainda temos que resolver um sistema linear que requer O(n3) operações.Uma desvantagem é que a convergência quadrática do método de Newton é substituída por uma convergência superlinear.Podemos melhorar o custo utilizando a fórmula de Sherman-Morrison, dada pelo teorema a seguir

Teorema 6.4. Suponha que A é uma matriz quadrada não-singular, e x e y vetores tais que yTA−1x 6= −1, entãoA+ xyt é não-singular e

(A+ xyt)−1 = A−1 − A−1xyTA−1

1 + yTA−1x[9]. (7)

Dessa forma podemos computar A−1i diretamente a partir de A−1i−1, com A = Ai−1, x = (yi − Ai−1si)/‖si‖22 e y = si.De fato

A−1i =

(Ai−1 +

yi −Ai−1si‖si‖22

sTi

)−1

= A−1i−1 −A−1i−1(yi−Ai−1si

‖si‖22sTi )A−1i−1

1 + sTi Ai−1(yi−Ai−1si‖si‖22

)

= A−1i−1 −(A−1i−1yi − si)sTi A

−1i−1

‖si‖22sTi A−1i−1yi − ‖si‖22

,

portanto

A−1i = A−1i−1 −(A−1i−1yi − si)sTi A

−1i−1

‖si‖22sTi A−1i−1yi − ‖si‖22

.

Dessa forma, como isso só envolve multiplicações de matriz e vetor, podemos calcular o tamanho do passo em O(n2)operações, ao invés de O(n3).

26

Page 28: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

6.4 Exercício 7Queremos resolver

F (x) =

3x1 − cos(x1x2)− 1/2x21 − 625x22 − 1/4

e−x1x2 + 20x3 + (10π − 3)/3

= 0,

utilizando o método de Broyden.Todos os códigos em MATLAB usados nesse exercício estão disponíveis na seção 8.3.1.Utilizamos como critério de parada ‖F (x)‖2 < τr‖x(0)‖2 + τa, para τr, τa > 0. No nosso caso, τr = τa = 10−3.A Jacobiana fica

J(x) =

3 x3 sin(x2x3) x2 sin(x2x3)2x1 −1250x22 0

−x2e−x1x2 −x1e−x1x2 20

Utilizamos x(0) = [1, 1,−1]T .Aplicamos o método de Broyden com e sem a fórmula de Sherman-Morrison. Em ambos os casos, chegamos, em 12iterações, na resposta

x =

0.49999780.0017029−0.5235565

, com F (x) =

−6.3204 · 10−6

−1.8147 · 10−3

−6.1003 · 10−6

.Utilizando a fórmula de Sherman-Morrison o método demorou 0.00193191 segundos, utilizando o método normalmentedemorou 0.00199485.Para o caso do método de Newton, com o mesmo critério de parada, não obtivemos convergência para x(0) = [1, 1,−1]T ,mas, para x(0) = [0, 0, 0]T obtivemos convergência em 1 iteração, 0.013936 segundos e

x =

0.500000.00000−0.52360

, com F (x) =

00

−1.7764 · 10−15

.Notamos que mesmo o método de Newton tendo levado 1 iteração enquanto os outros levaram 12, ele levou muito maistempo, isso é devido a sua iteração envolver a computação da Jacobiana e a resolução do sistema linear. Quanto ao métodode Broyden, vemos que utilizando a fórmula de Sherman-Morrison, o processo ocorreu ligeiramente mais rápido. Se oproblema fosse maior essa diferença provavelmente seria maior, devido ao fato de não necessitar resolver o sistema linear.Um fator que pode aumentar o tempo no caso do método de Broyden com a fórmula de Sherman-Morrison é a inversãoda matriz J(x(0)).

6.5 Exercício 11No exercício 11 do conjunto de exercícios 10.3 da referência [9], queremos determinar os parâmetros a e b da equação

R = bW a, (8)

que está relacionada á respiração da mariposa sphinxmodesta. Utilizamos um conjunto de dados de W e R e vamosminimizar a equação do erro

E(a, b) =

37∑i=1

(Ri − bW ai )2,

27

Page 29: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

onde Wi e Ri, dados respectivamente pela i-ésima entrada dos vetores

W =

0.0170.0870.1741.111.744.095.455.960.0250.1110.2110.9993.024.284.584.680.0200.0850.1711.293.044.295.300.0200.1190.2101.323.345.480.0250.2330.7831.351.692.754.835.53

e R =

0.1540.2960.3630.5312.233.583.522.400.230.3570.3660.7712.013.282.965.100.1810.2600.3340.873.593.403.880.1800.2990.4281.152.834.150.2340.5371.472.481.441.844.666.94

,

que representam nosso conjunto de dados. Para minimizar essa função precisamos encontrar o zero do gradiente de E.Em outras palavras, resolver

F (a, b) =

−37∑i=1

2b(log(Wi)(Wai ))(Ri − b(W a

i ))

−37∑i=1

2(W ai )(Ri − b(W a

i ))

= 0,

onde F tem Jacobiana

J(a, b) =

37∑i=1

2b((log(Wi)2)(W a

i ))(2b(W ai )−Ri)

37∑i=1

log(Wi)(4b(W2ai )− 2Ri(W

ai ))

37∑i=1

log(Wi)(4b(W2ai )− 2Ri(W

ai ))

37∑i=1

2W 2∗ai

.Todos os códigos em MATLAB usados nesse exercício estão disponíveis na seção 8.3.2.Utilizando o método de Newton, de Broyden e de Broyden com a fórmula de Sherman-Morrison, todo com aproximaçãoinicial x(0) = [1, 0.5]T e utilizando como critério de parada ‖F (x)‖2 < τr‖x(0)‖2 + τa, para τr, τa > 0, com τr = τa =10−3, chegamos nas soluções a seguir.Método de Newton: Em 21 iterações e 0.0207238 segundos chegamos em

[a, b]T =

[0.750201.18471

], com F (a, b) =

[5.3743 · 10−4

1.7831 · 10−4

], e E(a, b) = 19.796.

Método de Broyden (sem utilizar a fórmula de Sherman-Morrison): Em 30 iterações e 0.014215 segundos chegamos em

[a, b]T =

[0.750201.18471

], com F (a, b) =

[−2.7932 · 10−4

−4.0224 · 10−4

], e E(a, b) = 19.796.

Método de Broyden (utilizando a fórmula de Sherman-Morrison): Em 30 iterações e 0.015907 segundos chegamos em

[a, b]T =

[0.750201.18471

], com F (a, b) =

[−2.7932 · 10−4

−4.0224 · 10−4

], e E(a, b) = 19.796.

Vemos que o método de Newton levou menos tempo que o método de Broyden, mas mesmo assim ele levou mais tempo,devido ao cálculo da Jacobiana.

28

Page 30: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

7 Questão extra

7.1 Equação H de ChandrasekharA Equação H de Chandrasekhar, ou Chandrasekhar H-equation, tem a forma [10]

F (H)(µ) = H(µ)−(

1− c

2

∫ 1

0

µH(ν)dν

µ+ ν

)−1= 0, (9)

onde a icógnita H é uma função contínua. Essa equação aparece em problemas de transferência de radioativa. Sabemosque a equação tem duas soluções, a não ser que c = 0 ou c = 1 [10].Para a discretização da equação, vamos aproximar a integral de forma que∫ 1

0

f(µ)dµ ≈ 1

N

N∑j=1

f(µj),

onde µi = (i − 1/2)/N , para 1 ≤ i ≤ N . Dessa forma, considerando F como a função discretizada, a i-ésima entradade F (x) pode ser escrita como

Fi(x) = xi −(

1− c

2N

N∑j=1

µixjµi + µj

)−1,

Podemos definir a matrix A, tal que a entrada na coluna i e linha j de A é

Aij =cµj

2N(µi + µj). (10)

Podemos guardar Aij e usá-la para computar F e F , poupando esforço computacional.Para computar F ′ basta verificar que,

∂Fi(x)

∂xk=

1 +Aik

(1−

N∑j=1

Aijxj

)−2, se k = i

Aik

(1−

N∑j=1

Aijxj

)−2, se k 6= i

.Como as expressões são dadas por somatórios, vemos que o custo para computar Fi(x) e ∂Fi(x)

∂xksão O(N) operações,

portanto, para computar F (x) temos O(N2) operações e para computar F ′(x) temos O(N3) operações.Os códigos utilizados para computar a função e resolve-la estão disponibilizados na seção 8.4.1.

7.2 Equações de Ornstein-ZernikeAs equações de Ornstein-Zernike são uma equação integral juntamente com uma restriaccão algébrica. Elas aparecem namecânica estatística. Na sua forma mais simples a equação é [10]

F (h, c)(r) = h(r)− c(r)− ρ(h ∗ c)(r) = 0,

onde(h ∗ c)(r) =

∫R3

c(‖r− r′‖)h(‖r′‖)dr′,

é o produto de convolução e ρ é um parâmetro.E a restrição é [10]

G(h, c)(r) = exp(−βu(r) + h(r)− c(r))− h(r)− 1) = 0, ∀ 0 ≤ r ≤ R.

onde

u(r) = 4ε

((σ

r

)12

−(σ

r

)6),

e β, ε e σ são parâmetros. Assim como na referência [10], vamos utilizar β = 10, ρ = 0.2, ε = 0.1 e σ = 2.Podemos utilizar a transformada de Bessel esférica para computar (h ∗ c)(r). Se h decai suficientemente rápido, comonós assumimos, definimos

(h)(k) = H(h)(k) = 4π

∫ ∞0

sin(kr)

krh(r)r2dr,

29

Page 31: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

e

h(r) = H−1(h)(r) =1

2π2π

∫ ∞0

sin(kr)

krh(r)k2dk,

desta forma podemos computar h ∗ c discretizando a fórmula [10]

h ∗ c = H−1(hc).

Vamos aproximar os valores de h e c na malhaΩδ = rδi Ni=1,

onde δ = L/(N − 1) é o tamanho do passo e rδi = (i− 1)(δ).Seja kj = (j − 1)δk para 2 ≤ j ≤ N − 1, onde δk = πδ/(N − 1),

vj = H(v)(kj)

=4πδ2

(j − 1)δk

N−1∑i=2

(i− 1)vi sin((i− 1)(j − 1)δkδ)

=4πδ3

(j − 1)

N−1∑i=2

(i− 1)vi sin((i− 1)(j − 1)π/(N − 1)).

(11)

Então para 2 ≤ i ≤ N − 1,

H−1(v)i =1

2(i− 1)πδ3

N−1∑j=2

(j − 1)vj sin((i− 1)(j − 1)π/(N − 1)).

Finalmente, definimos, para 2 ≤ i ≤ N − 1(u ∗ v)i = H−1(uv)i,

Dessa forma, definindo (u ∗ v)N = 0 temos [10]

(u ∗ v)1 = 2(u ∗ v)2 − (u ∗ v)3.

Dessa forma podemos então usar a função fft do Matlab para computar a somatório de senos, assim como na seção 3.6 dareferência [10].Note que o custo das avaliações nesse caso é maior do que o da Equação-H para um mesmo valor de N , pois temos umasomatória de senos no meio, mas este custo pode ser diminuído usando o comando fft do Matlab.Resolvendo as equações de Ornstein-Zernike encontramos as soluções do gráfico da figura 33, para h e c respectivamente.

Figura 33: Reprodução da figura referente a página 70 da referência [10].

30

Page 32: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

7.3 ReproduçãoUtilizando os códigos encontrados na página http://www4.ncsu.edu/ ctk/newtony.html reproduzimos as imagens encontra-das na referência [10].

Figura 34: Reprodução da figura referente a página 67 da referência [10].

Figura 35: Reprodução da figura referente a página 71 da referência [10].

31

Page 33: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

7.4 Ampliação

Figura 36: Ampliação da figura referente a página 67 da referência [10].

Figura 37: Avaliações da função F pelo pela norma relativa residual.

32

Page 34: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Figura 38: Avaliações da função F pelo pela norma relativa residual, com critérios de parada modificados.

As figuras 34 e 36 são referentes a resolução da Chandrasekhar H-Equation. Na figura 34 temos η = 0.9, maxit = 40,maxitl = 40. Na figura 36 temos η = 0.001, maxit = 100, maxitl = 1000. Como podemos ver, um aumentona precisão faz o BICGSTAB se aproximar do TFQMR nesse caso. Com o GMRES ainda são feitas menos avaliaçõesobtendo-se um resíduo menor. As figuras 37 e 38 são referentes a resolução das equações de Ornstein-Zernike. Na figura37 temos η = 0.1, maxit = 40, maxitl = 80. Na figura 37 temos η = 0.001, maxit = 40, maxitl = 300. Novamenteo GMRES faz menos avaliações da função não-linear com uma norma residual menor, mas o TFQMR consegue ir além,diminuindo a norma a custo de mais avaliações de F .A principal desvantagem do GMRES é o fato de ter que guardar uma base para um espaço de Krylov de dimensão kna iteração k, o que pode ser um problema para um problema muito grande. O Bi-CGSTAB, que é baseado no métododos gradientes conjugados, resolve o problema do armazenamento e pode ter uma iteração menos custosa ao GMRESem certos casos. O TFQMR, que minimiza uma quantidade chamada quasi-resíduo, também elimina o problema dearmazenamento. Os métodos TFQMR e GMRES tem a propriedade de terminar em um número finito de passos, ignorandoerros númericos que causem a perda de ortogonalidade [15].

33

Page 35: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

8 Códigos Utilizados

8.1 Questão 18.1.1 Código para comprimir imagens coloridas

As entradas do vetor ”ranks” devem ser os diversos valores de rank que o usuario deseja computar. A entrada ” image.jpg”deve ser o nome do arquivo de imagem que se deseja decompor (o arquivo de imagem deve estar no mesmo diretório doarquivo do código).Segue abaixo o código compColored.m.

r a n k s = [350 300 150 50 20 1 0 ] ;M = imread ( ’ image . j p g ’ ) ;

R = M( : , : , 1 ) ;G = M( : , : , 2 ) ;B = M( : , : , 3 ) ;R = im2double (R ) ;G = im2double (G ) ;B = im2double (B ) ;

[UR SR VR] = svd (R ) ;[UG SG VG] = svd (G ) ;[UB SB VB] = svd (B ) ;

f o r i = r a n k sRp = UR ( : , 1 : i )∗SR ( 1 : i , 1 : i )∗ t r a n s p o s e (VR ( : , 1 : i ) ) ;Gp = UG( : , 1 : i )∗SG ( 1 : i , 1 : i )∗ t r a n s p o s e (VG( : , 1 : i ) ) ;Bp = UB ( : , 1 : i )∗SB ( 1 : i , 1 : i )∗ t r a n s p o s e (VB ( : , 1 : i ) ) ;Qp ( : , : , 1 ) = Rp ;Qp ( : , : , 2 ) = Gp ;Qp ( : , : , 3 ) = Bp ;f i g T i t l e = s p r i n t f ( ’ Compressao Rank : %d ’ , i ) ;f i g u r e ( i ) ;imshow ( Qp )t i t l e ( f i g T i t l e ) ;

end

c l e a r

8.1.2 Código para comprimir imagens em escala de cinza

As entradas do vetor ”ranks” devem ser os diversos valores de rank que o usuario deseja computar. A entrada ” image.jpg”deve ser o nome do arquivo de imagem que se deseja decompor (o arquivo de imagem deve estar no mesmo diretório doarquivo do código).Segue abaixo o código compGrayScale.m.

r a n k s = [200 100 50 30 20 10 3 ] ;M = imread ( ’ image . j p g ’ ) ;M = r g b 2 g r a y (M) ;M = im2double (M) ;

[U S V] = svd (M) ;

f o r i = r a n k sI = U ( : , 1 : i )∗S ( 1 : i , 1 : i )∗ t r a n s p o s e (V ( : , 1 : i ) ) ;f i g T i t l e = s p r i n t f ( ’ Compressao Rank : %d ’ , i ) ;f i g u r e ( i ) ;imshow ( I )t i t l e ( f i g T i t l e ) ;

end

c l e a r

34

Page 36: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

8.2 Questão 48.2.1 Código para Fatoração QR com rotação de Givens

Para a fatoração QR com rotação de Givens temos duas funções, a primeira é a que realiza o procedimento de fatoração ea segunda função é uma função auxiliar que retorna as contantes c e s da matriz de rotação de Givens.Segue abaixo o código runQRgivensRot.m.

m=5; n =3;A = [1 5 2 ; 3 7 1 1 ; 0 4 1 ; 1 3 5 ; 2 7 3 ] ;

[Q, R]= qr (A , 0 ) ;i = 0 ;f o r j =1 : n ,

f o r k= j +1:m,i = i +1 ;

[ c , s ]= g i v e n s r o t (A( j , j ) ,A( k , j ) ) ;G=[ c s ; −s c ] ;

f p r i n t f ( ’−−−−−−−−− ITERACAO %d −−−−−−−−−−’ , i )

A( [ j k ] , j : n ) = G’∗A( [ j k ] , j : n )G = eye (m) ;G( j , j ) = c ;G( j , k ) = s ;G( k , k ) = c ;G( k , j ) = −s ;

G

pause

endend

R

Segue abaixo o código givensrot.m.

f u n c t i o n [ c , s ]= g i v e n s r o t ( a , b )i f b ==0 ,

c =1;s =0;

e l s ei f abs ( b ) > abs ( a ) ,

t=−a / b ;s =1 / s q r t (1+ t ^ 2 ) ;c=s∗ t ;

e l s et=−b / a ;c =1/ s q r t (1+ t ^ 2 ) ;s=c∗ t ;

endend

end

8.2.2 Código para Fatoração QR com reflexão de Householder

Para a fatoração QR com reflexão de Householder temos duas funções, a primeira é a que realiza o procedimento defatoração e a segunda função é uma função auxiliar que retorna o vetor u utilizado na construção da matriz de reflexão deHouseholder.Segue abaixo o código runQRhouseholderRef.m.

m=5; n =3;A = [1 5 2 ; 3 7 1 1 ; 0 4 1 ; 1 3 5 ; 2 7 3 ] ;

[Q, R]= qr (A , 0 ) ;

35

Page 37: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

i =0 ;f o r j =1 : n ,

i = i +1 ;

f p r i n t f ( ’−−−−−−−−− ITERACAO %d −−−−−−−−−−’ , i )

u= h o u s e r e f l e (A( j :m, j ) ) ;P=eye (m−j +1)−2∗u∗u ’ ;

A( j :m, j : n )=P∗A( j :m, j : n )aux = P ;P = eye (m) ;P ( j :m, j :m) = aux

pauseend

R

Segue abaixo o código houserefle.m.

f u n c t i o n u= h o u s e r e f l e ( x )n= l e n g t h ( x ) ;y=−s i g n ( x ( 1 ) ) ∗ norm ( x ) ;u= z e r o s ( n , 1 ) ;u ( 1 ) = s q r t ( ( y−x ( 1 ) ) / ( 2 ∗ y ) ) ;u ( 2 : n)=−x ( 2 : n ) / ( 2 ∗ y∗u ( 1 ) ) ;

end

8.3 Questão 68.3.1 Códigos para resolução do exercício 7

Para resolução do exercício 7 proposto, precisaremos dos códigos do Método de Broyden com e sem Sherman-Morrisone do Método de Newton.

Segue abaixo o código do Método de Broyden sem Sherman-Morrison (ex7-broyden-sSm.m).

t i cx = [ 1 , 1 , −1 ] ’ ;r0 = norm ( x ) ;h = 10^( −6) ;f = F ( x ) ;j = J ( x ) ;

t 1 = 10^( −3) ;t 2 = 10^( −3) ;eps = t 1 ∗ r0 + t 2 ;N = eps +1;k_max = 1000 ;

s = − j \ f ;

k =0;

whi le k<k_max && N>= epsx = x + s ;f _ o l d = f ;f = F ( x ) ;y = f−f _ o l d ;j = j + ( ( y−j ∗ s )∗ s ’ ) / ( s ’∗ s ) ;s = − j \ f ;N = norm ( f ) ;k ++;

e n d w h i l ekx

36

Page 38: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

F ( x )t o c

Segue abaixo o código do Método de Broyden com Sherman-Morrison (ex7-broyden-cSm.m).

t i cx = [ 1 , 1 , −1 ] ’ ;r0 = norm ( x ) ;h = 10^( −6) ;f = F ( x ) ;j = J ( x ) ;

j = inv ( j ) ;

t 1 = 10^( −3) ;t 2 = 10^( −3) ;eps = t 1 ∗ r0 + t 2 ;N = eps +1;k_max = 1000 ;

s = − j ∗ f ;

k =0;

whi le k<k_max && N>= epsx = x + s ;f _ o l d = f ;f = F ( x ) ;y = f−f _ o l d ;j = j + ( ( s−j ∗y ) ∗ ( s ’∗ j ) ) / ( s ’ ∗ ( j ∗y ) ) ;s = − j ∗ f ;N = norm ( f ) ;k ++;

e n d w h i l ekxF ( x )t o c

Segue abaixo o código do Método de Newton (ex7-newton.m).

t i cx = [ 0 , 0 , 0 ] ’ ;r0 = norm ( x ) ;h = 10^( −6) ;f = F ( x ) ;j = J ( x ) ;

t 1 = 10^( −3) ;t 2 = 10^( −3) ;eps = t 1 ∗ r0 + t 2 ;N = norm ( f ) ;k_max = 1000 ;

s = − j \ f ;

k =0;

whi le k<k_max && N>= epsx = x + s ;f = F ( x ) ;j = J ( x ) ;s = − j \ f ;N = norm ( f )k ++;

37

Page 39: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

e n d w h i l ekxF ( x )t o c

8.3.2 Códigos para resolução do exercício 11

Para resolução do exercício 11 proposto, precisaremos dos códigos do Método de Broyden com e sem Sherman-Morrisone do Método de Newton.

Segue abaixo o código do Método de Broyden sem Sherman-Morrison (ex11-broyden-sSm.m).

t i cW = [ 0 . 0 1 7 , 0 . 0 8 7 , 0 . 1 7 4 , 1 . 1 1 , 1 . 7 4 , 4 . 0 9 , 5 . 4 5 , 5 . 9 6 , 0 . 0 2 5 , 0 . 1 1 1 , 0 . 2 1 1 , 0 . 9 9 9 , 3 . 0 2 , 4 . 2 8 , . . .

4 . 5 8 , 4 . 6 8 , 0 . 0 2 0 , 0 . 0 8 5 , 0 . 1 7 1 , 1 . 2 9 , 3 . 0 4 , 4 . 2 9 , 5 . 3 0 , 0 . 0 2 0 , 0 . 1 1 9 , 0 . 2 1 0 , 1 . 3 2 , 3 . 3 4 , 5 . 4 8 , . . .0 . 0 2 5 , 0 . 2 3 3 , 0 . 7 8 3 , 1 . 3 5 , 1 . 6 9 , 2 . 7 5 , 4 . 8 3 , 5 . 5 3 ] ’ ;

R = [ 0 . 1 5 4 , 0 . 2 9 6 , 0 . 3 6 3 , 0 . 5 3 1 , 2 . 2 3 , 3 . 5 8 , 3 . 5 2 , 2 . 4 0 , 0 . 2 3 , 0 . 3 5 7 , 0 . 3 6 6 , 0 . 7 7 1 , 2 . 0 1 , 3 . 2 8 , . . .2 . 9 6 , 5 . 1 0 , 0 . 1 8 1 , 0 . 2 6 0 , 0 . 3 3 4 , 0 . 8 7 , 3 . 5 9 , 3 . 4 0 , 3 . 8 8 , 0 . 1 8 0 , 0 . 2 9 9 , 0 . 4 2 8 , 1 . 1 5 , 2 . 8 3 , 4 . 1 5 , . . .0 . 2 3 4 , 0 . 5 3 7 , 1 . 4 7 , 2 . 4 8 , 1 . 4 4 , 1 . 8 4 , 4 . 6 6 , 6 . 9 4 ] ’ ;

x = [ 1 , 0 . 5 ] ’ ;r0 = norm ( x ) ;h = 10^( −6) ;f = F2 ( x ( 1 ) , x ( 2 ) ) ;j = J2 ( x ( 1 ) , x ( 2 ) )

t 1 = 10^( −3) ;t 2 = 10^( −3) ;eps = t 1 ∗ r0 + t 2 ;N = eps +1;k_max = 1000 ;

s = − j \ f ;

k =0;

whi le k<k_max && N>= epsx = x + s ;f _ o l d = f ;f = F2 ( x ( 1 ) , x ( 2 ) ) ;y = f−f _ o l d ;j = j + ( ( y−j ∗ s )∗ s ’ ) / ( s ’∗ s ) ;s = − j \ f ;N = norm ( f ) ;k ++;

e n d w h i l ekxF2 ( x ( 1 ) , x ( 2 ) )a = x ( 1 ) ;b = x ( 2 ) ;sum ( ( R−b ∗ (W. ^ a ) ) . ^ 2 )t o c

Segue abaixo o código do Método de Broyden com Sherman-Morrison (ex11-broyden-cSm.m).

t i cW = [ 0 . 0 1 7 , 0 . 0 8 7 , 0 . 1 7 4 , 1 . 1 1 , 1 . 7 4 , 4 . 0 9 , 5 . 4 5 , 5 . 9 6 , 0 . 0 2 5 , 0 . 1 1 1 , 0 . 2 1 1 , 0 . 9 9 9 , 3 . 0 2 , 4 . 2 8 , . . .

4 . 5 8 , 4 . 6 8 , 0 . 0 2 0 , 0 . 0 8 5 , 0 . 1 7 1 , 1 . 2 9 , 3 . 0 4 , 4 . 2 9 , 5 . 3 0 , 0 . 0 2 0 , 0 . 1 1 9 , 0 . 2 1 0 , 1 . 3 2 , 3 . 3 4 , 5 . 4 8 , . . .0 . 0 2 5 , 0 . 2 3 3 , 0 . 7 8 3 , 1 . 3 5 , 1 . 6 9 , 2 . 7 5 , 4 . 8 3 , 5 . 5 3 ] ’ ;

R = [ 0 . 1 5 4 , 0 . 2 9 6 , 0 . 3 6 3 , 0 . 5 3 1 , 2 . 2 3 , 3 . 5 8 , 3 . 5 2 , 2 . 4 0 , 0 . 2 3 , 0 . 3 5 7 , 0 . 3 6 6 , 0 . 7 7 1 , 2 . 0 1 , 3 . 2 8 , . . .2 . 9 6 , 5 . 1 0 , 0 . 1 8 1 , 0 . 2 6 0 , 0 . 3 3 4 , 0 . 8 7 , 3 . 5 9 , 3 . 4 0 , 3 . 8 8 , 0 . 1 8 0 , 0 . 2 9 9 , 0 . 4 2 8 , 1 . 1 5 , 2 . 8 3 , 4 . 1 5 , . . .0 . 2 3 4 , 0 . 5 3 7 , 1 . 4 7 , 2 . 4 8 , 1 . 4 4 , 1 . 8 4 , 4 . 6 6 , 6 . 9 4 ] ’ ;

x = [ 1 , 0 . 5 ] ’ ;

38

Page 40: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

r0 = norm ( x ) ;h = 10^( −6) ;f = F2 ( x ( 1 ) , x ( 2 ) ) ;j = J2 ( x ( 1 ) , x ( 2 ) ) ;

j = inv ( j ) ;

t 1 = 10^( −3) ;t 2 = 10^( −3) ;eps = t 1 ∗ r0 + t 2 ;N = eps +1;k_max = 1000 ;

s = − j ∗ f ;

k =0;

whi le k<k_max && N>= epsx = x + s ;f _ o l d = f ;f = F2 ( x ( 1 ) , x ( 2 ) ) ;y = f−f _ o l d ;j = j + ( ( s−j ∗y ) ∗ ( s ’∗ j ) ) / ( s ’ ∗ ( j ∗y ) ) ;s = − j ∗ f ;N = norm ( f ) ;k ++;

e n d w h i l ekxF2 ( x ( 1 ) , x ( 2 ) )a = x ( 1 ) ;b = x ( 2 ) ;sum ( ( R−b ∗ (W. ^ a ) ) . ^ 2 )t o c

Segue abaixo o código do Método de Newton (ex11-newton.m).

t i cW = [ 0 . 0 1 7 , 0 . 0 8 7 , 0 . 1 7 4 , 1 . 1 1 , 1 . 7 4 , 4 . 0 9 , 5 . 4 5 , 5 . 9 6 , 0 . 0 2 5 , 0 . 1 1 1 , 0 . 2 1 1 , 0 . 9 9 9 , 3 . 0 2 , 4 . 2 8 , . . .

4 . 5 8 , 4 . 6 8 , 0 . 0 2 0 , 0 . 0 8 5 , 0 . 1 7 1 , 1 . 2 9 , 3 . 0 4 , 4 . 2 9 , 5 . 3 0 , 0 . 0 2 0 , 0 . 1 1 9 , 0 . 2 1 0 , 1 . 3 2 , 3 . 3 4 , 5 . 4 8 , . . .0 . 0 2 5 , 0 . 2 3 3 , 0 . 7 8 3 , 1 . 3 5 , 1 . 6 9 , 2 . 7 5 , 4 . 8 3 , 5 . 5 3 ] ’ ;

R = [ 0 . 1 5 4 , 0 . 2 9 6 , 0 . 3 6 3 , 0 . 5 3 1 , 2 . 2 3 , 3 . 5 8 , 3 . 5 2 , 2 . 4 0 , 0 . 2 3 , 0 . 3 5 7 , 0 . 3 6 6 , 0 . 7 7 1 , 2 . 0 1 , 3 . 2 8 , . . .2 . 9 6 , 5 . 1 0 , 0 . 1 8 1 , 0 . 2 6 0 , 0 . 3 3 4 , 0 . 8 7 , 3 . 5 9 , 3 . 4 0 , 3 . 8 8 , 0 . 1 8 0 , 0 . 2 9 9 , 0 . 4 2 8 , 1 . 1 5 , 2 . 8 3 , 4 . 1 5 , . . .0 . 2 3 4 , 0 . 5 3 7 , 1 . 4 7 , 2 . 4 8 , 1 . 4 4 , 1 . 8 4 , 4 . 6 6 , 6 . 9 4 ] ’ ;

x = [ 1 , 0 . 5 ] ’ ;r0 = norm ( x ) ;h = 10^( −6) ;f = F2 ( x ( 1 ) , x ( 2 ) ) ;j = J2 ( x ( 1 ) , x ( 2 ) ) ;

t 1 = 10^( −3) ;t 2 = 10^( −3) ;eps = t 1 ∗ r0 + t 2 ;N = norm ( f ) ;k_max = 1000 ;

s = − j \ f ;

k =0;

whi le k<k_max && N>= epsx = x + s ;f = F2 ( x ( 1 ) , x ( 2 ) ) ;j = J2 ( x ( 1 ) , x ( 2 ) ) ;s = − j \ f ;N = norm ( f ) ;

39

Page 41: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

k ++;e n d w h i l ekxF2 ( x ( 1 ) , x ( 2 ) )a = x ( 1 ) ;b = x ( 2 ) ;sum ( ( R−b ∗ (W. ^ a ) ) . ^ 2 )t o c

8.4 Questão extraAqui apresentamos os códigos utilizados na resolução da questão extra. Todos os códigos aqui apresentados estão dispo-níveis no link (http://www4.ncsu.edu/ ctk/newtony.html).

8.4.1 Códigos para resolução da Equação H de Chandrasekhar

O código abaixo computa a função dado uma matriz A pré-computada, definida em (10). (heq.m)

f u n c t i o n [ h , h j a c ]= heq ( x )% HEQ Chandrasekhar H−e q u a t i o n r e s i d u a l% J a c o b i a n u s e s precomputed da ta f o r f a s t e v a l u a t i o n%% [H, HJAC] = HEQ( X ) r e t u r n s t h e n o n l i n e a r r e s i d u a l% H and ( o p t i o n a l l y ) t h e J a c o b i a n .%% Be s u r e and s t o r e t h e c o r r e c t da ta i n t h e g l o b a l a r r a y A_heq .%g l o b a l A_heq ;n= l e n g t h ( x ) ;h= ones ( n ,1) − ( A_heq∗x ) ;ph= ones ( n , 1 ) . / h ;h=x−ph ;i f nargout ==2

h j a c =( ph .∗ ph )∗ ones ( 1 , n ) ;h j a c =A_heq .∗ h j a c ;h j a c =eye ( n)− h j a c ;

end

O código abaixo resolve a equação H com os métodos de Newton-Krylov e plota algumas informações importantes.(heqkdemo.m)

% HEQKDEMO S o l v e t h e H−e q u a t i o n w i t h n s o l i .% T h i s program c r e a t e s t h e H−e q u a t i o n example i n Chapter 3 .%g l o b a l A_heq ;c = . 9 ;n =100;%% noda l p o i n t s f o r t h e m i d p o i n t r u l e%gr =1: n ;g r =( gr − . 5 ) / n ;g r =gr ’ ;%% form and s t o r e t h e k e r n e l o f t h e i n t e g r a l o p e r a t o r%cc = .5∗ c / n ;A_heq= ones ( n , 1 ) ∗ gr ’ ; A_heq=cc∗A_heq ’ . / ( A_heq+A_heq ’ ) ;%t o l = [ 1 . d−8 ,1. d−8];

%% GMRES%x= ones ( n , 1 ) ; parms = [ 4 0 , 4 0 , . 9 , 1 ] ;[ s o l , i t _ h i s t g , i e r r ] = n s o l i ( x , ’ heq ’ , t o l , parms ) ;

40

Page 42: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

%% BICGSTAB%x= ones ( n , 1 ) ; parms = [ 4 0 , 4 0 , . 9 , 3 ] ;[ s o l , i t _ h i s t b , i e r r ] = n s o l i ( x , ’ heq ’ , t o l , parms ) ;%% TFQMR%x= ones ( n , 1 ) ; parms = [ 4 0 , 4 0 , . 9 , 4 ] ;[ s o l , i t _ h i s t t , i e r r ] = n s o l i ( x , ’ heq ’ , t o l , parms ) ;f i g u r e ( 1 )ng= l e n g t h ( i t _ h i s t g ( : , 1 ) ) ;nb= l e n g t h ( i t _ h i s t b ( : , 1 ) ) ;n t = l e n g t h ( i t _ h i s t t ( : , 1 ) ) ;semi logy ( 0 : ng−1, i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , . . .0 : nb−1, i t _ h i s t b ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−−’ , . . .0 : n t −1, i t _ h i s t t ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−. ’ ) ;x l a b e l ( ’ N o n l i n e a r i t e r a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;f i g u r e ( 2 )semi logy ( i t _ h i s t g ( : , 2 ) , i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t b ( : , 2 ) , i t _ h i s t b ( : , 1 ) / i t _ h i s t b ( 1 , 1 ) , ’−−’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t t ( : , 2 ) , i t _ h i s t t ( : , 1 ) / i t _ h i s t t ( 1 , 1 ) , ’−. ’ , " l i n e w i d t h " , 2 ) ;x l a b e l ( ’ F u n c t i o n e v a l u a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;

O código abaixo foi usado na ampliação da figura da resolução da equação-H. (heqkdemo.m)

% HEQKDEMO S o l v e t h e H−e q u a t i o n w i t h n s o l i .% T h i s program c r e a t e s t h e H−e q u a t i o n example i n Chapter 3 .%g l o b a l A_heq ;c = . 9 ;n =100;%% noda l p o i n t s f o r t h e m i d p o i n t r u l e%gr =1: n ;g r =( gr − . 5 ) / n ;g r =gr ’ ;%% form and s t o r e t h e k e r n e l o f t h e i n t e g r a l o p e r a t o r%cc = .5∗ c / n ;A_heq= ones ( n , 1 ) ∗ gr ’ ; A_heq=cc∗A_heq ’ . / ( A_heq+A_heq ’ ) ;%t o l = [ 1 . d−8 ,1. d−8];

%% GMRES%x= ones ( n , 1 ) ; parms = [ 1 0 0 , 1 0 0 0 , . 0 0 1 , 1 , 1 0 0 ] ;[ s o l , i t _ h i s t g , i e r r ] = n s o l i ( x , ’ heq ’ , t o l , parms ) ;%% BICGSTAB%parms = [ 1 0 0 , 1 0 0 0 , . 0 0 1 , 3 , 1 0 0 ] ;[ s o l , i t _ h i s t b , i e r r ] = n s o l i ( x , ’ heq ’ , t o l , parms ) ;%% TFQMR%parms = [ 1 0 0 , 1 0 0 0 , . 0 0 1 , 4 , 1 0 0 ] ;[ s o l , i t _ h i s t t , i e r r ] = n s o l i ( x , ’ heq ’ , t o l , parms ) ;f i g u r e ( 1 )ng= l e n g t h ( i t _ h i s t g ( : , 1 ) ) ;nb= l e n g t h ( i t _ h i s t b ( : , 1 ) ) ;n t = l e n g t h ( i t _ h i s t t ( : , 1 ) ) ;

41

Page 43: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

semi logy ( 0 : ng−1, i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , . . .0 : nb−1, i t _ h i s t b ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−−’ , . . .0 : n t −1, i t _ h i s t t ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−. ’ ) ;x l a b e l ( ’ N o n l i n e a r i t e r a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;f i g u r e ( 2 )semi logy ( i t _ h i s t g ( : , 2 ) , i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t b ( : , 2 ) , i t _ h i s t b ( : , 1 ) / i t _ h i s t b ( 1 , 1 ) , ’−−’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t t ( : , 2 ) , i t _ h i s t t ( : , 1 ) / i t _ h i s t t ( 1 , 1 ) , ’−. ’ , " l i n e w i d t h " , 2 ) ;x l a b e l ( ’ F u n c t i o n e v a l u a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;

8.4.2 Códigos para a resolução da equação de Ornstein-Zernike

O código abaixo computa a função de Ornstein-Zernike.(oz.m)

f u n c t i o n fm=oz ( x )%OZ FM=OZ( X ) i s t h e n o n l i n e a r r e s i d u a l f o r t h e% O r n s t e i n−Z e r n i k e e q u a t i o n s .%% E v a l u a t e t h e n o n l i n e a r i t y as a sum o f t h e s u b s t i t u t i o n% and compact p a r t s .%fm= ozsub ( x )+ o z i n t e g ( x ) ;%% T h i s i s t h e s u b s t i t u t i o n p a r t .%f u n c t i o n km= ozsub ( x )g l o b a l L U rhon= l e n g t h ( x ) ; n2=n / 2 ; h=x ( 1 : n2 ) ; c=x ( n2 +1: n ) ;n l =U.∗ exp ( h−c ) ;mup=h+1− n l ;mdown=c+1−n l ;km=[mup ’ , mdown ’ ] ’ ;%% T h i s i s t h e compact p a r t o f t h e n o n l i n e a r i t y . The upper% component i s zero , t h e lower i s rho∗L∗c∗h .%% rho and L are s c a l a r s f o r t h i s problem%f u n c t i o n km= o z i n t e g ( x )g l o b a l L U rhoL3=L∗L∗L∗ rho ;n= l e n g t h ( x ) ; n2=n / 2 ; h=x ( 1 : n2 ) ; c=x ( n2 +1: n ) ;kd=L3∗ convk ( c , h ) ;kd (1 )=2∗ kd (2)−kd ( 3 ) ;kd ( n2 )=2∗ kd ( n2−1)−kd ( n2 −2);kup= z e r o s ( n2 , 1 ) ;km=[ kup ’ , kd ’ ] ’ ;%% D i s c r e t e c o n v o l u t i o n w i t h t h e Hankel t r a n s f o r m .%f u n c t i o n hc=convk ( h , c )Lx = 1 . 0 ;n= l e n g t h ( h ) ;d r =Lx / n ;t h =hank2 ( h ) ; t c =hank2 ( c ) ; f h c = t h .∗ t c ; hc= i han k2 ( f h c ) ;

%% Hankel t r a n s f o r m u s i n g t h e f a s t s i n e t r a n s f o r m .%f u n c t i o n hf =hank2 ( f )n f = l e n g t h ( f ) ; n=nf −1; m=nf −2;h =1/ n ; beta =2∗(m+ 1 )∗ ( h ^ 3 ) ; f f = beta ;p =1 :m; p=p ’ ;h f t = f f ∗ l s i n t ( p .∗ f ( 2 : n ) ) . / p ;

42

Page 44: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

hf = [0 , h f t ’ , 0 ] ’ ;%% I n v e r s e Hankel t r a n s f o r m u s i n g t h e f a s t s i n e t r a n s f o r m .%f u n c t i o n i h f = i han k2 ( f )n f = l e n g t h ( f ) ; n=nf −1; m=nf −2;h =1/ n ; beta =2∗(m+ 1 )∗ ( h ^ 3 ) ; f f = 2 / ( n∗beta ) ;p =1:m; p=p ’ ;h f t = f f ∗ l s i n t ( p .∗ f ( 2 : n ) ) . / p ;p1 =1: n ; p1=p1 ’ ; p1=p1 .∗ p1 ; p1 ( n )= p1 ( n ) / 2 ;i h f = [0 , h f t ’ , 0 ] ’ ;

% LSINT% Fas t s i n e t r a n s f o r m w i t h MATLAB’ s FFT .%f u n c t i o n l f = l s i n t ( f )n= l e n g t h ( f ) ;f t =− f f t ( [ 0 , f ’ ] ’ , 2∗ n + 2 ) ;l f =imag ( f t ( 2 : n + 1 ) ) ;

O código abaixo resolve a equação de Ornstein-Zernike.(textitozdemo.m)

% OZDEMO% T h i s program c r e a t e s t h e O r n s t e i n−Z e r n i k e example i n Chapter 3 .% [H, C]=OZDEMO r e t u r n s t h e s o l u t i o n on a g r i d w i t h a mesh% s p a c i n g o f 1 / 2 5 6 .%f u n c t i o n [ h , c ]= ozdemog l o b a l L U rhon =257;e p s i l o n = . 1 ; s igma = 2 . 0 ; rho = . 2 ; beta =10; L=9;dx=L / ( n−1); r =0 : dx : L ; r =r ’ ;%% Compute t h e p o t e n t i a l and s t o r e i t i n a g l o b a l v a r i a b l e .%U= e l j ( r , sigma , e p s i l o n , beta ) ;%t o l = [ 1 . d−8 ,1. d−8];x= z e r o s (2∗n , 1 ) ;parms = [ 4 0 , 8 0 , − . 1 ] ;[ s o l , i t _ h i s t , i e r r ] = n s o l i ( x , ’ oz ’ , t o l ) ;%% Unpack h and c .%h= s o l ( 1 : n ) ; c= s o l ( n +1:2∗ n ) ;%% P l o t t h e s o l u t i o n .%f i g u r e ( 1 )s u b p l o t ( 1 , 2 , 1 )p l o t ( r , h , ’− ’ , " l i n e w i d t h " , 2 ) ;y l a b e l ( ’ h ’ , ’ R o t a t i o n ’ , 1 ) ;x l a b e l ( ’ r ’ ) ;s u b p l o t ( 1 , 2 , 2 )p l o t ( r , c , ’− ’ , " l i n e w i d t h " , 2 ) ;y l a b e l ( ’ c ’ , ’ R o t a t i o n ’ , 1 ) ;x l a b e l ( ’ r ’ ) ;

%% Do a second s o l v e w i t h c o n s t a n t f o r c i n g t e r m s .% Are you g e t t i n g t h e same r e s u l t s each t i m e ?%fb = i t _ h i s t ( 1 , 1 ) ;parms = [ 4 0 , 8 0 , − . 1 ] ; x= z e r o s (2∗n , 1 ) ;[ s o l a , i t _ h i s t 1 , i e r r ] = n s o l i ( x , ’ oz ’ , t o l , parms ) ;norm ( s o l a−s o l )%% p l o t r e s i d u a l v s i t e r a t i o n c o u n t e r%f i g u r e ( 2 )

43

Page 45: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

n i = l e n g t h ( i t _ h i s t ( : , 1 ) ) ;n1= l e n g t h ( i t _ h i s t 1 ( : , 1 ) ) ;semi logy ( 0 : n i −1, i t _ h i s t ( : , 1 ) / fb , ’− ’ , " l i n e w i d t h " , 2 , . . .0 : n1−1, i t _ h i s t 1 ( : , 1 ) / fb , ’−−’ ) ;l egend ( ’ d e f a u l t ’ , ’ . 1 ’ ) ;x l a b e l ( ’ N o n l i n e a r i t e r a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l ’ ) ;

%% p l o t r e s i d u a l v s f u n c t i o n c o u n t e r%f i g u r e ( 3 )semi logy ( i t _ h i s t ( : , 2 ) , i t _ h i s t ( : , 1 ) / fb , ’− ’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t 1 ( : , 2 ) , i t _ h i s t 1 ( : , 1 ) / fb , ’−−’ , " l i n e w i d t h " , 2 ) ;x l a b e l ( ’ F u n c t i o n e v a l u a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l ’ ) ;l egend ( ’ d e f a u l t ’ , ’ . 1 ’ ) ;

%f u n c t i o n u= e l j ( r , sigma , e p s i l o n , beta )n2= l e n g t h ( r ) ;r a = r ( 2 : n2 ) ;r12 =( sigma . / r a ) . ^ 1 2 ; r6 =( s igma . / r a ) . ^ 6 ;ua=exp (−4∗beta ∗ e p s i l o n ∗ ( r12−r6 ) ) ;u = [ 0 , ua ’ ] ’ ;

O código abaixo resolve a equação de Ornstein-Zernike com os métodos de Newton-Krylov e plota a norma residual pelonúmero de avaliações da função.(ozdemo2.m)

% OZDEMO% T h i s program c r e a t e s t h e O r n s t e i n−Z e r n i k e example i n Chapter 3 .% [H, C]=OZDEMO r e t u r n s t h e s o l u t i o n on a g r i d w i t h a mesh% s p a c i n g o f 1 / 2 5 6 .%f u n c t i o n [ h , c ]= ozdemo_2g l o b a l L U rhon =257;e p s i l o n = . 1 ; s igma = 2 . 0 ; rho = . 2 ; beta =10; L=9;dx=L / ( n−1); r =0 : dx : L ; r =r ’ ;%% Compute t h e p o t e n t i a l and s t o r e i t i n a g l o b a l v a r i a b l e .%U= e l j ( r , sigma , e p s i l o n , beta ) ;%t o l = [ 1 . d−8 ,1. d−8];x= z e r o s (2∗n , 1 ) ;parms = [ 4 0 , 8 0 , − . 1 ] ;[ s o l , i t _ h i s t , i e r r ] = n s o l i ( x , ’ oz ’ , t o l ) ;%% Unpack h and c .%h= s o l ( 1 : n ) ; c= s o l ( n +1:2∗ n ) ;%% P l o t t h e s o l u t i o n .%f i g u r e ( 1 )s u b p l o t ( 1 , 2 , 1 )p l o t ( r , h , ’− ’ , " l i n e w i d t h " , 2 ) ;y l a b e l ( ’ h ’ , ’ R o t a t i o n ’ , 1 ) ;x l a b e l ( ’ r ’ ) ;s u b p l o t ( 1 , 2 , 2 )p l o t ( r , c , ’− ’ , " l i n e w i d t h " , 2 ) ;y l a b e l ( ’ c ’ , ’ R o t a t i o n ’ , 1 ) ;x l a b e l ( ’ r ’ ) ;

%% Do a second s o l v e w i t h c o n s t a n t f o r c i n g t e r m s .% Are you g e t t i n g t h e same r e s u l t s each t i m e ?%%

44

Page 46: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

% GMRES%x= ones (2∗n , 1 ) ; parms = [ 4 0 , 8 0 , . 1 , 1 ] ;[ s o l , i t _ h i s t g , i e r r ] = n s o l i ( x , ’ oz ’ , t o l , parms ) ;%% BICGSTAB%x= ones (2∗n , 1 ) ; parms = [ 4 0 , 8 0 , . 1 , 3 ] ;[ s o l , i t _ h i s t b , i e r r ] = n s o l i ( x , ’ oz ’ , t o l , parms ) ;%% TFQMR%x= ones (2∗n , 1 ) ; parms = [ 4 0 , 8 0 , . 1 , 4 ] ;[ s o l , i t _ h i s t t , i e r r ] = n s o l i ( x , ’ oz ’ , t o l , parms ) ;f i g u r e ( 1 )ng= l e n g t h ( i t _ h i s t g ( : , 1 ) ) ;nb= l e n g t h ( i t _ h i s t b ( : , 1 ) ) ;n t = l e n g t h ( i t _ h i s t t ( : , 1 ) ) ;semi logy ( 0 : ng−1, i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , . . .0 : nb−1, i t _ h i s t b ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−−’ , . . .0 : n t −1, i t _ h i s t t ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−. ’ ) ;x l a b e l ( ’ N o n l i n e a r i t e r a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;f i g u r e ( 2 )semi logy ( i t _ h i s t g ( : , 2 ) , i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t b ( : , 2 ) , i t _ h i s t b ( : , 1 ) / i t _ h i s t b ( 1 , 1 ) , ’−−’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t t ( : , 2 ) , i t _ h i s t t ( : , 1 ) / i t _ h i s t t ( 1 , 1 ) , ’−. ’ , " l i n e w i d t h " , 2 ) ;x l a b e l ( ’ F u n c t i o n e v a l u a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;

f u n c t i o n u= e l j ( r , sigma , e p s i l o n , beta )n2= l e n g t h ( r ) ;r a = r ( 2 : n2 ) ;r12 =( sigma . / r a ) . ^ 1 2 ; r6 =( s igma . / r a ) . ^ 6 ;ua=exp (−4∗beta ∗ e p s i l o n ∗ ( r12−r6 ) ) ;u = [ 0 , ua ’ ] ’ ;

O código abaixo resolve a equação de Ornstein-Zernike com os métodos de Newton-Krylov e plota a norma residual pelonúmero de avaliações da função, mudando os critérios de parada do código anterior.(ozdemo3.m)

% OZDEMO% T h i s program c r e a t e s t h e O r n s t e i n−Z e r n i k e example i n Chapter 3 .% [H, C]=OZDEMO r e t u r n s t h e s o l u t i o n on a g r i d w i t h a mesh% s p a c i n g o f 1 / 2 5 6 .%f u n c t i o n [ h , c ]= ozdemo_3g l o b a l L U rhon =257;e p s i l o n = . 1 ; s igma = 2 . 0 ; rho = . 2 ; beta =10; L=9;dx=L / ( n−1); r =0 : dx : L ; r =r ’ ;%% Compute t h e p o t e n t i a l and s t o r e i t i n a g l o b a l v a r i a b l e .%U= e l j ( r , sigma , e p s i l o n , beta ) ;%t o l = [ 1 . d−8 ,1. d−8];x= z e r o s (2∗n , 1 ) ;parms = [ 4 0 , 8 0 , − . 1 ] ;[ s o l , i t _ h i s t , i e r r ] = n s o l i ( x , ’ oz ’ , t o l ) ;%% Unpack h and c .%h= s o l ( 1 : n ) ; c= s o l ( n +1:2∗ n ) ;%% P l o t t h e s o l u t i o n .%

45

Page 47: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

f i g u r e ( 1 )s u b p l o t ( 1 , 2 , 1 )p l o t ( r , h , ’− ’ , " l i n e w i d t h " , 2 ) ;y l a b e l ( ’ h ’ , ’ R o t a t i o n ’ , 1 ) ;x l a b e l ( ’ r ’ ) ;s u b p l o t ( 1 , 2 , 2 )p l o t ( r , c , ’− ’ , " l i n e w i d t h " , 2 ) ;y l a b e l ( ’ c ’ , ’ R o t a t i o n ’ , 1 ) ;x l a b e l ( ’ r ’ ) ;

%% Do a second s o l v e w i t h c o n s t a n t f o r c i n g t e r m s .% Are you g e t t i n g t h e same r e s u l t s each t i m e ?%%% GMRES%x= ones (2∗n , 1 ) ; parms = [ 4 0 , 3 0 0 , . 0 0 1 , 1 ] ;[ s o l , i t _ h i s t g , i e r r ] = n s o l i ( x , ’ oz ’ , t o l , parms ) ;%% BICGSTAB%x= ones (2∗n , 1 ) ; parms = [ 4 0 , 3 0 0 , . 0 0 1 , 3 ] ;[ s o l , i t _ h i s t b , i e r r ] = n s o l i ( x , ’ oz ’ , t o l , parms ) ;%% TFQMR%x= ones (2∗n , 1 ) ; parms = [ 4 0 , 3 0 0 , . 0 0 1 , 4 ] ;[ s o l , i t _ h i s t t , i e r r ] = n s o l i ( x , ’ oz ’ , t o l , parms ) ;f i g u r e ( 1 )ng= l e n g t h ( i t _ h i s t g ( : , 1 ) ) ;nb= l e n g t h ( i t _ h i s t b ( : , 1 ) ) ;n t = l e n g t h ( i t _ h i s t t ( : , 1 ) ) ;semi logy ( 0 : ng−1, i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , . . .0 : nb−1, i t _ h i s t b ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−−’ , . . .0 : n t −1, i t _ h i s t t ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’−. ’ ) ;x l a b e l ( ’ N o n l i n e a r i t e r a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;f i g u r e ( 2 )semi logy ( i t _ h i s t g ( : , 2 ) , i t _ h i s t g ( : , 1 ) / i t _ h i s t g ( 1 , 1 ) , ’− ’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t b ( : , 2 ) , i t _ h i s t b ( : , 1 ) / i t _ h i s t b ( 1 , 1 ) , ’−−’ , " l i n e w i d t h " , 2 , . . .i t _ h i s t t ( : , 2 ) , i t _ h i s t t ( : , 1 ) / i t _ h i s t t ( 1 , 1 ) , ’−. ’ , " l i n e w i d t h " , 2 ) ;x l a b e l ( ’ F u n c t i o n e v a l u a t i o n s ’ ) ;y l a b e l ( ’ R e l a t i v e r e s i d u a l norm ’ ) ;l egend ( ’GMRES’ , ’BICGSTAB ’ , ’TFQMR’ ) ;

f u n c t i o n u= e l j ( r , sigma , e p s i l o n , beta )n2= l e n g t h ( r ) ;r a = r ( 2 : n2 ) ;r12 =( sigma . / r a ) . ^ 1 2 ; r6 =( s igma . / r a ) . ^ 6 ;ua=exp (−4∗beta ∗ e p s i l o n ∗ ( r12−r6 ) ) ;u = [ 0 , ua ’ ] ’ ;

8.4.3 Métodos de Newton-Krylov

O código abaixo resolve um sistema não linear com os parâmetros especificados.(nsoli.m)

f u n c t i o n [ s o l , i t _ h i s t , i e r r , x _ h i s t ] = n s o l i ( x , f , t o l , parms )% NSOLI Newton−Kr y l ov s o l v e r , g l o b a l l y c o n v e r g e n t% s o l v e r f o r f ( x ) = 0%% I n e x a c t−Newton−Armi jo i t e r a t i o n%% E i s e n s t a t −Walker f o r c i n g term%% P a r a b o l i c l i n e s e a r c h v i a t h r e e p o i n t i n t e r p o l a t i o n .%

46

Page 48: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

% C . T . K e l l e y , A p r i l 27 , 2001%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n [ s o l , i t _ h i s t , i e r r , x _ h i s t ] = n s o l i ( x , f , t o l , parms )%% i n p u t s :% i n i t i a l i t e r a t e = x% f u n c t i o n = f% t o l = [ a t o l , r t o l ] r e l a t i v e / a b s o l u t e% e r r o r t o l e r a n c e s f o r t h e n o n l i n e a r i t e r a t i o n% parms = [ maxi t , m a x i t l , etamax , lmeth , r e s t a r t _ l i m i t ]% m a x i t = maxmium number o f n o n l i n e a r i t e r a t i o n s% d e f a u l t = 40% m a x i t l = maximum number o f i n n e r i t e r a t i o n s b e f o r e r e s t a r t% i n GMRES(m) , m = m a x i t l% d e f a u l t = 40%% For i t e r a t i v e methods o t h e r than GMRES(m) m a x i t l% i s t h e upper bound on l i n e a r i t e r a t i o n s .%% | etamax | = Maximum e r r o r t o l e r a n c e f o r r e s i d u a l i n i n n e r% i t e r a t i o n . The i n n e r i t e r a t i o n t e r m i n a t e s% when t h e r e l a t i v e l i n e a r r e s i d u a l i s% s m a l l e r than e t a ∗ | F ( x_c ) | . e t a i s d e t e r m i n e d% by t h e m o d i f i e d E i s e n s t a t −Walker f o r m u l a i f e tamax > 0 .% I f etamax < 0 , t h e n e t a = | etamax | f o r t h e e n t i r e% i t e r a t i o n .% d e f a u l t : e tamax = . 9%% l m e t h = c h o i c e o f l i n e a r i t e r a t i v e method% 1 (GMRES) , 2 GMRES(m) ,% 3 ( BICGSTAB ) , 4 (TFQMR)% d e f a u l t = 1 (GMRES, no r e s t a r t s )%% r e s t a r t _ l i m i t = max number o f r e s t a r t s f o r GMRES i f% l m e t h = 2% d e f a u l t = 20%% o u t p u t :% s o l = s o l u t i o n% i t _ h i s t ( maxi t , 3 ) = l 2 norms o f n o n l i n e a r r e s i d u a l s% f o r t h e i t e r a t i o n , number o f f u n c t i o n e v a l u a t i o n s ,% and number o f s t e p l e n g t h r e d u c t i o n s% i e r r = 0 upon s u c c e s s f u l t e r m i n a t i o n% i e r r = 1 i f a f t e r m a x i t i t e r a t i o n s% t h e t e r m i n a t i o n c r i t e r i o n i s n o t s a t s i f i e d% i e r r = 2 f a i l u r e i n t h e l i n e s e a r c h . The i t e r a t i o n% i s t e r m i n a t e d i f t o o many s t e p l e n g t h r e d u c t i o n s% are t a k e n .%% x _ h i s t = m a t r i x o f t h e e n t i r e i n t e r a t i o n h i s t o r y .% The columns are t h e n o n l i n e a r i t e r a t e s . T h i s% i s u s e f u l f o r making movies , f o r example , b u t% can consume way t o o much s t o r a g e . T h i s i s an% OPTIONAL argument . S t o r a g e i s o n l y a l l o c a t e d% i f x _ h i s t i s i n t h e o u t p u t argument l i s t .%%%% i n t e r n a l p a r a m e t e r s :% debug = t u r n s on / o f f i t e r a t i o n s t a t i s t i c s d i s p l a y as% t h e i t e r a t i o n p r o g r e s s e s%% alpha = 1 . d−4, parame te r t o measure s u f f i c i e n t d e c r e a s e%% sigma0 = . 1 , s igma1 = . 5 , s a f e g u a r d i n g bounds f o r t h e l i n e s e a r c h

47

Page 49: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

%% maxarm = 20 , maximum number o f s t e p l e n g t h r e d u c t i o n s b e f o r e% f a i l u r e i s r e p o r t e d%%%%% S e t t h e debug parame te r ; 1 t u r n s d i s p l a y on , o t h e r w i s e o f f .%debug = 0 ;%% S e t i n t e r n a l p a r a m e t e r s .%a l p h a = 1 . d−4; s igma0 = . 1 ; s igma1 = . 5 ; maxarm = 2 0 ; gamma = . 9 ;

%% I n i t i a l i z e i t _ h i s t , i e r r , x _ h i s t , and s e t t h e d e f a u l t v a l u e s o f% t h o s e i t e r a t i o n p a r a m e t e r s which are o p t i o n a l i n p u t s .%i e r r = 0 ; max i t = 4 0 ; l m a x i t = 4 0 ; etamax = . 9 ; i t _ h i s t x = z e r o s ( maxi t , 3 ) ;lme th = 1 ; r e s t a r t _ l i m i t = 2 0 ;i f nargout == 4 , x _ h i s t = x ; end

%% I n i t i a l i z e p a r a m e t e r s f o r t h e i t e r a t i v e methods .% Check f o r o p t i o n a l i n p u t s .%gmparms = [ abs ( e tamax ) , l m a x i t ] ;i f nargin == 4

maxi t = parms ( 1 ) ; l m a x i t = parms ( 2 ) ; e tamax = parms ( 3 ) ;i t _ h i s t x = z e r o s ( maxi t , 3 ) ;gmparms = [ abs ( e tamax ) , l m a x i t ] ;i f l e n g t h ( parms ) >= 4

lme th = parms ( 4 ) ;endi f l e n g t h ( parms ) == 5

gmparms = [ abs ( e tamax ) , l m a x i t , parms ( 5 ) , 1 ] ;end

end%r t o l = t o l ( 2 ) ; a t o l = t o l ( 1 ) ; n = l e n g t h ( x ) ; fnrm = 1 ; i t c = 0 ;

%% E v a l u a t e f a t t h e i n i t i a l i t e r a t e , and% compute t h e s t o p t o l e r a n c e .%f0 = f e v a l ( f , x ) ;fnrm = norm ( f0 ) ;i t _ h i s t x ( i t c +1 ,1 ) = fnrm ; i t _ h i s t x ( i t c +1 ,2 ) = 0 ; i t _ h i s t x ( i t c +1 ,3 ) = 0 ;fnrmo = 1 ;s t o p _ t o l = a t o l + r t o l ∗ fnrm ;o u t s t a t ( i t c +1 , : ) = [ i t c fnrm 0 0 0 ] ;

%% main i t e r a t i o n loop%whi le ( fnrm > s t o p _ t o l & i t c < max i t )%% Keep t r a c k o f t h e r a t i o ( r a t = fnrm / frnmo )% o f s u c c e s s i v e r e s i d u a l norms and% t h e i t e r a t i o n c o u n t e r ( i t c ) .%

r a t = fnrm / fnrmo ;fnrmo = fnrm ;i t c = i t c +1 ;[ s t e p , e r r s t e p , i n n e r _ i t _ c o u n t , i n n e r _ f _ e v a l s ] = . . .

d k r y l o v ( f0 , f , x , gmparms , lme th ) ;

%% The l i n e s e a r c h s t a r t s here .%

48

Page 50: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

xo ld = x ;lambda = 1 ; lamm = 1 ; lamc = lambda ; ia rm = 0 ;x t = x + lambda∗ s t e p ;f t = f e v a l ( f , x t ) ;n f t = norm ( f t ) ; n f0 = norm ( f0 ) ; f f 0 = nf0 ∗ nf0 ; f f c = n f t ∗ n f t ; ffm = n f t ∗ n f t ;whi le n f t >= (1 − a l p h a ∗ lambda ) ∗ nf0 ;

%% Apply t h e t h r e e p o i n t p a r a b o l i c model .%

i f i a rm == 0lambda = sigma1∗ lambda ;

e l s elambda = pa rab3p ( lamc , lamm , f f 0 , f f c , ffm ) ;

end%% Update x ; keep t h e books on lambda .%

x t = x+lambda∗ s t e p ;lamm = lamc ;lamc = lambda ;

%% Keep t h e books on t h e f u n c t i o n norms .%

f t = f e v a l ( f , x t ) ;n f t = norm ( f t ) ;ffm = f f c ;f f c = n f t ∗ n f t ;i a rm = iarm +1;i f i a rm > maxarm

di sp ( ’ Armijo f a i l u r e , t o o many r e d u c t i o n s ’ ) ;i e r r = 2 ;di sp ( o u t s t a t )i t _ h i s t = i t _ h i s t x ( 1 : i t c + 1 , : ) ;

i f nargout == 4 , x _ h i s t = [ x _ h i s t , x ] ; ends o l = xo ld ;re turn ;

endendx = x t ;f0 = f t ;

%% End o f l i n e s e a r c h .%

i f nargout == 4 , x _ h i s t = [ x _ h i s t , x ] ; endfnrm = norm ( f0 ) ;i t _ h i s t x ( i t c +1 ,1 ) = fnrm ;

%% How many f u n c t i o n e v a l u a t i o n s d i d t h i s i t e r a t i o n r e q u i r e ?%

i t _ h i s t x ( i t c +1 ,2 ) = i t _ h i s t x ( i t c , 2 ) + i n n e r _ f _ e v a l s + ia rm +1;i f i t c == 1 , i t _ h i s t x ( i t c +1 ,2 ) = i t _ h i s t x ( i t c + 1 , 2 ) + 1 ; end ;i t _ h i s t x ( i t c +1 ,3 ) = ia rm ;

%r a t = fnrm / fnrmo ;

%% A d j u s t e t a as per E i s e n s t a t −Walker .%

i f etamax > 0e t a o l d = gmparms ( 1 ) ;e tanew = gamma∗ r a t ∗ r a t ;i f gamma∗ e t a o l d ∗ e t a o l d > . 1

e tanew = max ( etanew , gamma∗ e t a o l d ∗ e t a o l d ) ;endgmparms ( 1 ) = min ( [ etanew , etamax ] ) ;gmparms ( 1 ) = max ( gmparms ( 1 ) , . 5 ∗ s t o p _ t o l / fnrm ) ;

end%

49

Page 51: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

o u t s t a t ( i t c +1 , : ) = [ i t c fnrm i n n e r _ i t _ c o u n t r a t i a rm ] ;%ends o l = x ;i t _ h i s t = i t _ h i s t x ( 1 : i t c + 1 , : ) ;i f debug == 1

di sp ( o u t s t a t )i t _ h i s t = i t _ h i s t x ( 1 : i t c + 1 , : ) ;

end%% on f a i l u r e , s e t t h e e r r o r f l a g%i f fnrm > s t o p _ t o l , i e r r = 1 ; end

%%f u n c t i o n lambdap = pa rab3p ( lambdac , lambdam , f f 0 , f f c , ffm )

% Apply t h r e e−p o i n t s a f e g u a r d e d p a r a b o l i c model f o r a l i n e s e a r c h .%% C . T . K e l l e y , A p r i l 1 , 2003%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n lambdap = parab3p ( lambdac , lambdam , f f 0 , f f c , f f m )%% i n p u t :% lambdac = c u r r e n t s t e p l e n g t h% lambdam = p r e v i o u s s t e p l e n g t h% f f 0 = v a l u e o f \ | F ( x_c ) \ | ^ 2% f f c = v a l u e o f \ | F ( x_c + \ lambdac d ) \ | ^ 2% f f m = v a l u e o f \ | F ( x_c + \ lambdam d ) \ | ^ 2%% o u t p u t :% lambdap = new v a l u e o f lambda g i v e n p a r a b o l i c model%% i n t e r n a l p a r a m e t e r s :% sigma0 = . 1 , s igma1 = . 5 , s a f e g u a r d i n g bounds f o r t h e l i n e s e a r c h%

%% s e t i n t e r n a l p a r a m e t e r s%s igma0 = . 1 ; s igma1 = . 5 ;%% compute c o e f f i c i e n t s o f i n t e r p o l a t i o n p o l y n o m i a l%% p ( lambda ) = f f 0 + ( c1 lambda + c2 lambda ^ 2 ) / d1%% d1 = ( lambdac − lambdam )∗ lambdac∗ lambdam < 0% so i f c2 > 0 we have n e g a t i v e c u r v a t u r e and d e f a u l t t o% lambdap = sigam1 ∗ lambda%c2 = lambdam ∗ ( f f c−f f 0 )− lambdac ∗ ( ffm−f f 0 ) ;i f c2 >= 0

lambdap = sigma1∗ lambdac ; re turnendc1 = lambdac∗ lambdac ∗ ( ffm−f f 0 )−lambdam∗ lambdam ∗ ( f f c−f f 0 ) ;lambdap = −c1 ∗ . 5 / c2 ;i f lambdap < sigma0∗ lambdac , lambdap = sigma0∗ lambdac ; endi f lambdap > sigma1∗ lambdac , lambdap = sigma1∗ lambdac ; end

%%%f u n c t i o n [ s t e p , e r r s t e p , t o t a l _ i t e r s , f _ e v a l s ] = . . .

d k r y l o v ( f0 , f , x , params , lme th )% Kr y l ov l i n e a r e q u a t i o n s o l v e r f o r use i n n s o l i%% C . T . K e l l e y , A p r i l 1 , 2003

50

Page 52: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

%%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n [ s t e p , e r r s t e p , t o t a l _ i t e r s , f _ e v a l s ]% = d k r y l o v ( f0 , f , x , params , l m e t h )%%% I n p u t : f 0 = f u n c t i o n a t c u r r e n t p o i n t% f = n o n l i n e a r f u n c t i o n% t h e f o r m a t f o r f i s f u n c t i o n f x = f ( x )% Note t h a t f o r Newton−GMRES we i n c o r p o r a t e any% p r e c o n d i t i o n i n g i n t o t h e f u n c t i o n r o u t i n e .% x = c u r r e n t p o i n t% params = v e c t o r t o c o n t r o l i t e r a t i o n% params ( 1 ) = r e l a t i v e r e s i d u a l r e d u c t i o n f a c t o r% params ( 2 ) = max number o f i t e r a t i o n s% params ( 3 ) = max number o f r e s t a r t s f o r GMRES(m)% params ( 4 ) ( O p t i o n a l ) = r e o r t h o g o n a l i z a t i o n method i n GMRES% 1 −− Brown / Hindmarsh c o n d i t i o n ( d e f a u l t )% 2 −− Never r e o r t h o g o n a l i z e ( n o t recommended )% 3 −− Always r e o r t h o g o n a l i z e ( n o t cheap ! )%% l m e t h = method c h o i c e% 1 GMRES w i t h o u t r e s t a r t s ( d e f a u l t )% 2 GMRES(m) , m = params ( 2 ) and t h e maximum number% o f r e s t a r t s i s params ( 3 )% 3 Bi−CGSTAB% 4 TFQMR%% Outpu t : x = s o l u t i o n% e r r s t e p = v e c t o r o f r e s i d u a l norms f o r t h e h i s t o r y o f% t h e i t e r a t i o n% t o t a l _ i t e r s = number o f i t e r a t i o n s%%

%% i n i t i a l i z a t i o n%l m a x i t = params ( 2 ) ;r e s t a r t _ l i m i t = 2 0 ;i f l e n g t h ( params ) >= 3

r e s t a r t _ l i m i t = params ( 3 ) ;endi f lme th == 1 , r e s t a r t _ l i m i t = 0 ; endi f l e n g t h ( params ) == 3

%% d e f a u l t r e o r t h o g o n a l i z a t i o n%

gmparms = [ params ( 1 ) , params ( 2 ) , 1 ] ;e l s e i f l e n g t h ( params ) == 4

%% r e o r t h o g o n a l i z a t i o n method i s params ( 4 )%

gmparms = [ params ( 1 ) , params ( 2 ) , params ( 4 ) ] ;e l s e

gmparms = [ params ( 1 ) , params ( 2 ) ] ;end%% l i n e a r i t e r a t i v e methods%i f lme th == 1 | lme th == 2 % GMRES or GMRES(m)

%% compute t h e s t e p u s i n g a GMRES r o u t i n e e s p e c i a l l y d e s i g n e d% f o r t h i s purpose%

51

Page 53: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

[ s t e p , e r r s t e p , t o t a l _ i t e r s ] = dgmres ( f0 , f , x , gmparms ) ;k inn = 0 ;

%% r e s t a r t a t most r e s t a r t _ l i m i t t i m e s%

whi le t o t a l _ i t e r s == l m a x i t & . . .e r r s t e p ( t o t a l _ i t e r s ) > gmparms ( 1 )∗norm ( f0 ) & . . .k inn < r e s t a r t _ l i m i t

k inn = k inn +1;[ s t e p , e r r s t e p , t o t a l _ i t e r s ] = dgmres ( f0 , f , x , gmparms , s t e p ) ;

endt o t a l _ i t e r s = t o t a l _ i t e r s + k inn ∗ l m a x i t ;f _ e v a l s = t o t a l _ i t e r s + k inn ;

%% Bi−CGSTAB%e l s e i f lme th == 3

[ s t e p , e r r s t e p , t o t a l _ i t e r s ] = d c g s t a b ( f0 , f , x , gmparms ) ;f _ e v a l s = 2∗ t o t a l _ i t e r s ;

%% TFQMR%e l s e i f lme th == 4

[ s t e p , e r r s t e p , t o t a l _ i t e r s ] = d t fq mr ( f0 , f , x , gmparms ) ;f _ e v a l s = 2∗ t o t a l _ i t e r s ;

e l s eerror ( ’ lme th e r r o r i n f d k r y l o v ’ )

end%%f u n c t i o n z = d i r d e r ( x , w, f , f 0 )

% F i n i t e d i f f e r e n c e d i r e c t i o n a l d e r i v a t i v e% Approx imate f ’ ( x ) w%% C . T . K e l l e y , A p r i l 1 , 2003%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n z = d i r d e r ( x , w , f , f 0 )%% i n p u t s :% x , w = p o i n t and d i r e c t i o n% f = f u n c t i o n% f 0 = f ( x ) , i n n o n l i n e a r i t e r a t i o n s% f ( x ) has u s u a l l y been computed% b e f o r e t h e c a l l t o d i r d e r

%% Use a hardwi red d i f f e r e n c e i n c r e m e n t .%epsnew = 1 . d−7;%n = l e n g t h ( x ) ;%% s c a l e t h e s t e p%i f norm (w) == 0

z = z e r o s ( n , 1 ) ;re turnend%% Now s c a l e t h e d i f f e r e n c e i n c r e m e n t .%xs =( x ’∗w ) / norm (w ) ;i f xs ~= 0 . d0

epsnew=epsnew∗max ( abs ( xs ) , 1 . d0 )∗ s i g n ( xs ) ;end

52

Page 54: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

epsnew=epsnew / norm (w ) ;%% d e l and f 1 c o u l d s h a r e t h e same space i f s t o r a g e% i s more i m p o r t a n t t han c l a r i t y .%d e l = x+epsnew∗w;f1 = f e v a l ( f , d e l ) ;z = ( f1 − f0 ) / epsnew ;%%f u n c t i o n [ x , error , t o t a l _ i t e r s ] = dgmres ( f0 , f , xc , params , x i n i t )

% GMRES l i n e a r e q u a t i o n s o l v e r f o r use i n Newton−GMRES s o l v e r%% C . T . K e l l e y , A p r i l 1 , 2003%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n [ x , e r r o r , t o t a l _ i t e r s ] = dgmres ( f0 , f , xc , params , x i n i t )%%% I n p u t : f 0 = f u n c t i o n a t c u r r e n t p o i n t% f = n o n l i n e a r f u n c t i o n% t h e f o r m a t f o r f i s f u n c t i o n f x = f ( x )% Note t h a t f o r Newton−GMRES we i n c o r p o r a t e any% p r e c o n d i t i o n i n g i n t o t h e f u n c t i o n r o u t i n e .% xc = c u r r e n t p o i n t% params = two d i m e n s i o n a l v e c t o r t o c o n t r o l i t e r a t i o n% params ( 1 ) = r e l a t i v e r e s i d u a l r e d u c t i o n f a c t o r% params ( 2 ) = max number o f i t e r a t i o n s% params ( 3 ) ( O p t i o n a l ) = r e o r t h o g o n a l i z a t i o n method% 1 −− Brown / Hindmarsh c o n d i t i o n ( d e f a u l t )% 2 −− Never r e o r t h o g o n a l i z e ( n o t recommended )% 3 −− Always r e o r t h o g o n a l i z e ( n o t cheap ! )%% x i n i t = i n i t i a l i t e r a t e . x i n i t = 0 i s t h e d e f a u l t . T h i s% i s a r e a s o n a b l e c h o i c e u n l e s s r e s t a r t e d GMRES% w i l l be used as t h e l i n e a r s o l v e r .%% Outpu t : x = s o l u t i o n% e r r o r = v e c t o r o f r e s i d u a l norms f o r t h e h i s t o r y o f% t h e i t e r a t i o n% t o t a l _ i t e r s = number o f i t e r a t i o n s%% R e q u i r e s g i va pp . m, d i r d e r .m

%% i n i t i a l i z a t i o n%e r r t o l = params ( 1 ) ;kmax = params ( 2 ) ;r e o r t h = 1 ;i f l e n g t h ( params ) == 3

r e o r t h = params ( 3 ) ;end%% The r i g h t s i d e o f t h e l i n e a r e q u a t i o n f o r t h e s t e p i s −f 0 .%b = −f0 ;n = l e n g t h ( b ) ;%% Use z e r o v e c t o r as i n i t i a l i t e r a t e f o r Newton s t e p u n l e s s% t h e c a l l i n g r o u t i n e has a b e t t e r i d e a ( u s e f u l f o r GMRES(m ) ) .%x = z e r o s ( n , 1 ) ;r = b ;i f nargin == 5

x = x i n i t ;

53

Page 55: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

r = −d i r d e r ( xc , x , f , f 0 )− f0 ;end%%h = z e r o s ( kmax ) ;v = z e r o s ( n , kmax ) ;c = z e r o s ( kmax + 1 , 1 ) ;s = z e r o s ( kmax + 1 , 1 ) ;rho = norm ( r ) ;g = rho ∗ eye ( kmax + 1 , 1 ) ;e r r t o l = e r r t o l ∗norm ( b ) ;error = [ ] ;%% T e s t f o r t e r m i n a t i o n on e n t r y .%error = [ error , rho ] ;t o t a l _ i t e r s = 0 ;i f ( rho < e r r t o l )

% d i s p ( ’ e a r l y t e r m i n a t i o n ’ )re turnend%%v ( : , 1 ) = r / rho ;beta = rho ;k = 0 ;%% GMRES i t e r a t i o n%whi le ( ( rho > e r r t o l ) & ( k < kmax ) )

k = k +1;%% C a l l d i r e c t i o n a l d e r i v a t i v e f u n c t i o n .%

v ( : , k +1) = d i r d e r ( xc , v ( : , k ) , f , f 0 ) ;normav = norm ( v ( : , k + 1 ) ) ;

%% M o d i f i e d Gram−Schmid t%

f o r j = 1 : kh ( j , k ) = v ( : , j ) ’∗ v ( : , k + 1 ) ;v ( : , k +1) = v ( : , k+1)−h ( j , k )∗ v ( : , j ) ;

endh ( k +1 , k ) = norm ( v ( : , k + 1 ) ) ;normav2 = h ( k +1 , k ) ;

%% R e o r t h o g o n a l i z e ?%i f ( r e o r t h == 1 & normav + .001∗ normav2 == normav ) | r e o r t h == 3

f o r j = 1 : kh r = v ( : , j ) ’∗ v ( : , k + 1 ) ;

h ( j , k ) = h ( j , k )+ h r ;v ( : , k +1) = v ( : , k+1)− hr ∗v ( : , j ) ;

endh ( k +1 , k ) = norm ( v ( : , k + 1 ) ) ;

end%% Watch o u t f o r happy breakdown .%

i f ( h ( k +1 , k ) ~= 0)v ( : , k +1) = v ( : , k + 1 ) / h ( k +1 , k ) ;end

%% Form and s t o r e t h e i n f o r m a t i o n f o r t h e new Givens r o t a t i o n .%

i f k > 1h ( 1 : k , k ) = g iv ap p ( c ( 1 : k−1) , s ( 1 : k−1) , h ( 1 : k , k ) , k−1);

54

Page 56: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

end%% Don ’ t d i v i d e by z e r o i f s o l u t i o n has been found .%

nu = norm ( h ( k : k +1 , k ) ) ;i f nu ~= 0

% c ( k ) = h ( k , k ) / nu ;c ( k ) = conj ( h ( k , k ) / nu ) ;s ( k ) = −h ( k +1 , k ) / nu ;h ( k , k ) = c ( k )∗ h ( k , k)− s ( k )∗ h ( k +1 , k ) ;h ( k +1 , k ) = 0 ;g ( k : k +1) = g iv ap p ( c ( k ) , s ( k ) , g ( k : k + 1 ) , 1 ) ;

end%% Update t h e r e s i d u a l norm .%

rho = abs ( g ( k + 1 ) ) ;error = [ error , rho ] ;

%% end o f t h e main w h i l e loop%end%% At t h i s p o i n t e i t h e r k > kmax or rho < e r r t o l .% I t ’ s t i m e t o compute x and l e a v e .%y = h ( 1 : k , 1 : k ) \ g ( 1 : k ) ;t o t a l _ i t e r s = k ;x = x + v ( 1 : n , 1 : k )∗ y ;%%f u n c t i o n v r o t = g i vap p ( c , s , v in , k )

% Apply a s e q u e n c e o f k Givens r o t a t i o n s , used w i t h i n gmres codes .%% C . T . K e l l e y , A p r i l 1 , 2003%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n v r o t = g i va pp ( c , s , v in , k )%v r o t = v i n ;f o r i = 1 : k

w1 = c ( i )∗ v r o t ( i )− s ( i )∗ v r o t ( i + 1 ) ;%% Here ’ s a modes t change t h a t makes t h e code work i n complex% a r i t h m e t i c . Thanks t o Howard Elman f o r t h i s .%% w2 = s ( i )∗ v r o t ( i )+ c ( i )∗ v r o t ( i +1);

w2 = s ( i )∗ v r o t ( i )+ conj ( c ( i ) ) ∗ v r o t ( i + 1 ) ;v r o t ( i : i +1) = [ w1 , w2 ] ;

end%%f u n c t i o n [ x , error , t o t a l _ i t e r s ] = . . .

d c g s t a b ( f0 , f , xc , params , x i n i t )% Forward d i f f e r e n c e Bi−CGSTAB s o l v e r f o r use i n n s o l i%% C . T . K e l l e y , A p r i l 1 , 2003%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n [ x , e r r o r , t o t a l _ i t e r s ]% = d c g s t a b ( f0 , f , xc , params , x i n i t )%% I n p u t : f 0 = f u n c t i o n a t c u r r e n t p o i n t% f = n o n l i n e a r f u n c t i o n% t h e f o r m a t f o r f i s f u n c t i o n f x = f ( x )

55

Page 57: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

% Note t h a t f o r Newton−GMRES we i n c o r p o r a t e any% p r e c o n d i t i o n i n g i n t o t h e f u n c t i o n r o u t i n e .% xc = c u r r e n t p o i n t% params = two d i m e n s i o n a l v e c t o r t o c o n t r o l i t e r a t i o n% params ( 1 ) = r e l a t i v e r e s i d u a l r e d u c t i o n f a c t o r% params ( 2 ) = max number o f i t e r a t i o n s%% x i n i t = i n i t i a l i t e r a t e . x i n i t = 0 i s t h e d e f a u l t . T h i s% i s a r e a s o n a b l e c h o i c e u n l e s s r e s t a r t s are needed .%%% Outpu t : x = s o l u t i o n% e r r o r = v e c t o r o f r e s i d u a l norms f o r t h e h i s t o r y o f% t h e i t e r a t i o n% t o t a l _ i t e r s = number o f i t e r a t i o n s%% R e q u i r e s : d i r d e r .m%

%% i n i t i a l i z a t i o n%b = −f0 ;n = l e n g t h ( b ) ; e r r t o l = params ( 1 )∗norm ( b ) ; kmax = params ( 2 ) ; error = [ ] ;rho = z e r o s ( kmax + 1 , 1 ) ;%% Use z e r o v e c t o r as i n i t i a l i t e r a t e f o r Newton s t e p u n l e s s% t h e c a l l i n g r o u t i n e has a b e t t e r i d e a ( u s e f u l f o r GMRES(m ) ) .%x = z e r o s ( n , 1 ) ;r = b ;i f nargin == 5

x = x i n i t ;r = −d i r d e r ( xc , x , f , f 0 )− f0 ;

end%h a t r 0 = r ;k = 0 ; rho ( 1 ) = 1 ; a l p h a = 1 ; omega = 1 ;v = z e r o s ( n , 1 ) ; p = z e r o s ( n , 1 ) ; rho ( 2 ) = h a t r 0 ’∗ r ;z e t a = norm ( r ) ; error = [ error , z e t a ] ;

%% Bi−CGSTAB i t e r a t i o n%whi le ( ( z e t a > e r r t o l ) & ( k < kmax ) )

k = k +1;i f omega == 0

error ( ’ Bi−CGSTAB breakdown , omega = 0 ’ ) ;endbeta = ( rho ( k + 1 ) / rho ( k ) ) ∗ ( a l p h a / omega ) ;p = r + beta ∗ ( p − omega∗v ) ;v = d i r d e r ( xc , p , f , f 0 ) ;t a u = h a t r 0 ’∗ v ;i f t a u == 0

error ( ’ Bi−CGSTAB breakdown , t a u = 0 ’ ) ;enda l p h a = rho ( k + 1 ) / t a u ;s = r−a l p h a ∗v ;t = d i r d e r ( xc , s , f , f 0 ) ;t a u = t ’∗ t ;i f t a u == 0

error ( ’ Bi−CGSTAB breakdown , t = 0 ’ ) ;endomega = t ’∗ s / t a u ;rho ( k +2) = −omega ∗ ( h a t r 0 ’∗ t ) ;x = x+ a l p h a ∗p+omega∗ s ;r = s−omega∗ t ;z e t a = norm ( r ) ;

56

Page 58: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

t o t a l _ i t e r s = k ;error = [ error , z e t a ] ;

end%%

f u n c t i o n [ x , error , t o t a l _ i t e r s ] = . . .d t f q mr ( f0 , f , xc , params , x i n i t )

% Forward d i f f e r e n c e TFQMR s o l v e r f o r use i n n s o l i%% C . T . K e l l e y , A p r i l 1 , 2003%% T h i s code comes w i t h no g u a r a n t e e or wa r r a n t y o f any k i n d .%% f u n c t i o n [ x , e r r o r , t o t a l _ i t e r s ]% = d t f q m r ( f0 , f , xc , params , x i n i t )%%%% I n p u t : f 0 = f u n c t i o n a t c u r r e n t p o i n t% f = n o n l i n e a r f u n c t i o n% t h e f o r m a t f o r f i s f u n c t i o n f x = f ( x )% Note t h a t f o r Newton−GMRES we i n c o r p o r a t e any% p r e c o n d i t i o n i n g i n t o t h e f u n c t i o n r o u t i n e .% xc = c u r r e n t p o i n t% params = two d i m e n s i o n a l v e c t o r t o c o n t r o l i t e r a t i o n% params ( 1 ) = r e l a t i v e r e s i d u a l r e d u c t i o n f a c t o r% params ( 2 ) = max number o f i t e r a t i o n s%% x i n i t = i n i t i a l i t e r a t e . x i n i t = 0 i s t h e d e f a u l t . T h i s% i s a r e a s o n a b l e c h o i c e u n l e s s r e s t a r t s are needed .%%% Outpu t : x = s o l u t i o n% e r r o r = v e c t o r o f r e s i d u a l norms f o r t h e h i s t o r y o f% t h e i t e r a t i o n% t o t a l _ i t e r s = number o f i t e r a t i o n s%% R e q u i r e s : d i r d e r .m%

%% i n i t i a l i z a t i o n%b = −f0 ;n = l e n g t h ( b ) ; e r r t o l = params ( 1 )∗norm ( b ) ; kmax = params ( 2 ) ; error = [ ] ;x = z e r o s ( n , 1 ) ;r = b ;i f nargin == 5

x = x i n i t ;r = −d i r d e r ( xc , x , f , f 0 )− f0 ;

end%u = z e r o s ( n , 2 ) ; y = z e r o s ( n , 2 ) ; w = r ; y ( : , 1 ) = r ;k = 0 ; d = z e r o s ( n , 1 ) ;v = d i r d e r ( xc , y ( : , 1 ) , f , f 0 ) ;u ( : , 1 ) = v ;t h e t a = 0 ; e t a = 0 ; t a u = norm ( r ) ; error = [ error , t a u ] ;rho = t a u ∗ t a u ;%% TFQMR i t e r a t i o n%whi le ( k < kmax )

k = k +1;s igma = r ’∗ v ;

%i f s igma == 0

57

Page 59: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

error ( ’TFQMR breakdown , s igma = 0 ’ )end

%a l p h a = rho / s igma ;

%%%

f o r j = 1 : 2%% Compute y2 and u2 o n l y i f you have t o%

i f j == 2y ( : , 2 ) = y ( : , 1 ) − a l p h a ∗v ;u ( : , 2 ) = d i r d e r ( xc , y ( : , 2 ) , f , f 0 ) ;

endm = 2∗k−2+ j ;w = w−a l p h a ∗u ( : , j ) ;d = y ( : , j ) + ( t h e t a ∗ t h e t a ∗ e t a / a l p h a )∗ d ;t h e t a = norm (w ) / t a u ; c = 1 / s q r t (1+ t h e t a ∗ t h e t a ) ;t a u = t a u ∗ t h e t a ∗c ; e t a = c∗c∗ a l p h a ;x = x+ e t a ∗d ;

%% Try t o t e r m i n a t e t h e i t e r a t i o n a t each pass t h r o u g h t h e loop%

i f t a u ∗ s q r t (m+1) <= e r r t o lerror = [ error , t a u ] ;t o t a l _ i t e r s = k ;re turn

endend

%%%

i f rho == 0error ( ’TFQMR breakdown , rho = 0 ’ )

end%

rhon = r ’∗w; beta = rhon / rho ; rho = rhon ;y ( : , 1 ) = w + beta ∗y ( : , 2 ) ;u ( : , 1 ) = d i r d e r ( xc , y ( : , 1 ) , f , f 0 ) ;v = u ( : , 1 ) + beta ∗ ( u ( : , 2 ) + beta ∗v ) ;error = [ error , t a u ] ;t o t a l _ i t e r s = k ;

end%%

58

Page 60: MS 512 - Análise Numéricams512/sites/default/files/gmm.pdf · Figura 4: Utilizando SVD para compressão de imagem em escala de cinza para a Gioconda. Para converter e comprimir

Bibliografia[1] David S. Watkins, Understanding the QR algorithm, SIAM REVIEW, Vol. 24, No. 4, pp. 427-440, 1982.

[2] David S. Watkins, The QR Algorithm Revisited, SIAM REVIEW, Vol. 50, No. 1, pp. 133-145, 2008.

[3] David S. Watkins, Fundamentals of Matrix Computations, Wiley-Interscience, Second Edition, pp. 337-338, pp.340-341, 2002, pp. 420-433.

[4] Lloyd N. Trefethen & D. Bau, III, Numerical Linear Algebra, p. 182, SIAM, 1997.

[5] Nicholas J. Higham, Sylvester’s Influence on Applied Mathematics (ISSN 1361-2042). Mathematics Today, 50(4).pp. 202-206, 2014.

[6] James W. Demmel, Applied Numerical Linear Algebra, Society for Industrial and Applied Mathematics, Phila-delphia, PA, USA, 1997. p. 202, p. 188.

[7] Roger A. Horn & Charles R. Johnson, Matrix Analysis, Second Edition, Cambridge University Press, Cambridge,UK, 2013, xviii+643 pp. ISBN 978-521-83940-2.

[8] Gene H. Golub & Charles F. Van Loan. Matrix Computations, Third Editio, 1996.

[9] Richard L. Burden and J. Douglas Faires. Numerical Analysis. Brooks Cole, 8th edition, 2004.

[10] C. T. Kelley. Fundamentals of Algorithms: solving nonlinear equations with Newton’s Method.

[11] Keith J. Coates. An Intuitive Proof of the Singular Value Decomposition of a Matrix.

[12] H. A. VAN VORST, Bi-CGSTAB: A fast and smoothly converging variant of Bi-CG for solution of nonsymmetriclinear systems, SIAM I Sci. ans Stat. Comput. 13(1992). pp. 631-644.

[13] Y. SAAD AND M. H. SCHULTZ, CMRES: A generalized minimal residual algorithm for solving nonsymmetriclinear systems, SIAM J. Sci. Stat. Comput. 7(1986), pp. 856-867.

[14] R. W. FREUND, Transpose-Free Quasi-Minimal Residual Methods for Non-Hermitian Linear Systems, SIAM J.Sci. Comput. 14(1993), pp.470-482

[15] C.T.Kelley Iterative Methods for Linear and Nonlinear Equations, SIAM.

59