| | | |

Matemática Numérica III

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

1.5 Métodos de projeção

A maior parte dos métodos iterativos para a resolução de sistemas lineares podem ser vistos como métodos de projeção. A ideia básica é resolver o sistema linear

A𝒙=𝒃 (1.150)

buscando uma solução aproximada 𝒙~𝒦n de dimensão mn. 𝒦 é chamado de subespaço de busca. Uma forma de garantir que a aproximação 𝒙~ seja boa é impor as chamadas condições de Petrov2323endnote: 23Georgi Iwanowitsch Petrov, 1912 - 1987, engenheiro soviético. Fonte: Wikipedia.-Galerkin2424endnote: 24Boris Galerkin, 1871 - 1945, engenheiro e matemático soviético. Fonte: Wikipédia., em que o resíduo

𝒓~=𝒃A𝒙~ (1.151)

é ortogonal a um dado subespaço n de dimensão m. Os métodos de projeção são classificados em métodos ortogonais, quando =𝒦, e métodos oblíquos, quando 𝒦.

Sejam A uma matriz n×n não singular, 𝒦 e dois subespaços de n de dimensão mn e 𝒙(0) uma aproximação inicial da solução do sistema linear A𝒙=𝒃. O método de projeção consiste em encontrar uma aproximação 𝒙~𝒦 da solução do sistema, tal que

𝒙~=𝒙(0)+𝜹, (1.152)

com 𝜹𝒦, satisfazendo a condição de Petrov-Galerkin

𝒓~=𝒃A𝒙~. (1.153)

ou, equivalentemente,

(𝒓(0)A𝜹,𝒘)=0,𝒘, (1.154)

Em resumo, o método de projeção determina a solução aproximada 𝒙(m) pelas iterações

𝒙~=𝒙(0)+𝜹,com 𝜹𝒦, (1.155)
(𝒓(0)A𝜹,𝒘)=0,𝒘. (1.156)

A seguir, vamos apresentar três métodos de projeção unidimensionais. Embora estes métodos não sejam geralmente usados na prática (por não serem eficientes), eles foram a base metodológica para o desenvolvimento de métodos mais eficientes, como o método GMRES.

1.5.1 Métodos de projeção unidimensionais

Métodos de projeção unidimensionais são aqueles em que dim(𝒦)=dim()=1. Assim, temos 𝒦=span{𝒗} e =span{𝒘}, para dados vetores v,wn. Com isso, a aproximação 𝒙(m) é dada por

𝒙~=𝒙(0)+α𝒗, (1.157)

onde α é tal que

(𝒓(0)αA𝒗,𝒘)=0, (1.158)

ou seja,

α=(𝒓(0),𝒘)(A𝒗,𝒘). (1.159)

1.5.2 Iteração da descida mais íngrime

A iteração da descida mais íngrime (ou método do gradiente) é um método de projeção ortogonal em que 𝒦==span{𝒓}. Assim, a aproximação 𝒙(m) é dada por

𝒙(m)=𝒙(m1)+αm𝒓(m1), (1.160)

onde

αm=(𝒓(m1),𝒓(m1))(A𝒓(m1),𝒓(m1)). (1.161)

Notemos que, para uma matriz A simétrica positiva definida, o método da descida mais íngrime é equivalente ao método do gradiente discutido na Seção 1.4, observando que 𝒓=f(𝒙), onde

f(𝒙) =𝒙𝒙A2 (1.162)
=(𝒙𝒙,A(𝒙𝒙)), (1.163)

onde 𝒙 é a solução do sistema linear A𝒙=𝒃.

Para detalhes sobre a implementação, consulte o Código 6.

1.5.3 Iteração do mínimo resíduo

Para uma matriz apenas positiva definida (i.e. A+AT simétrica positiva definida), a iteração do mínimo resíduo é um método de projeção oblíquo em que 𝒦=span{𝒓} e =span{A𝒓}. Assim, a aproximação 𝒙(m) é dada por

𝒙(m)=𝒙(m1)+αm𝒓(m1), (1.164)

onde

αm=(A𝒓(m1),𝒓(m1))(A𝒓(m1),A𝒓(m1)). (1.165)

Aqui, cada iterada minimiza

f(𝒙)=bA𝒙2, (1.166)

na direção do resíduo 𝒓.

Código 8: imr.py
1from numpy import dot
2from numpy.linalg import norm
3
4def imr(A, b, x0, rtol=1e-5, atol=0.0, maxiter=100000):
5 x = x0.copy()
6 r = b - A @ x
7 norm_b = norm(b)
8 r2 = dot(r, r)
9
10 info = 0
11 for k in range(maxiter):
12 Ar = A @ r
13 alpha = dot(Ar, r) / dot(Ar, Ar)
14 x = x + alpha * r
15 r = r - alpha * Ar
16 r2 = dot(r, r)
17
18 if np.sqrt(r2) <= max(rtol*norm_b, atol):
19 info = 1
20 break
21
22 return x, info, k+1
Exemplo 1.5.1.(Problema de difusão-advecção 2D)

Consideremos o seguinte problema de difusão-advecção 2D

ϵΔu+𝒂u=f,em Ω=(0,1)×(0,1), (1.167)
u=0,em Ω, (1.168)

onde ϵ=1 é o coeficiente de difusão, 𝒂=(20,1) é o campo de advecção e a fonte é dada por

f(x)={100,se 0.4x,y0.6,0,caso contrário. (1.169)

Assumimos uma malha espacial uniforme de n×n , com tamanho de malha h=1/(n1). Denotamos ui,ju(xi,yi), onde xi=ih e yj=jh, para i,j=1,2,,n. Aplicando um espuema upwind para a advecção e diferenças finitas centrais para a difusão, obtemos o seguinte esquema de diferenças finitas

ϵ(ui+1,j2ui,j+ui1,jh2+ui,j+12ui,j+ui,j1h2) (1.170)
+a1ui,jui1,jh+a2ui,j+1ui,jh=fi,j, (1.171)

para i,j=2,3,,n1, onde fi,j=f(xi,yj). As condições de contorno são dadas por u1,j=un,1=ui,1=ui,n=0, para i,j=1,2,,n1. Por fim, consideramos a enumeração dos nodos da malha k=i1+(j2)(n2) para obtermos o sistema linear

A𝒖=𝒇, (1.172)

onde A é uma matriz esparsa de ordem N=(n2)2, 𝒖N é o vetor das incógnitas e 𝒇N é o vetor da fonte.

Observando que A é apenas positiva definida (i.e. A+AT é simétrica positiva definida), aplicamos a iteração do mínimo resíduo para resolver o sistema linear. A seguinte tabela mostra o número de iterações necessárias para a convergência do método, para diferentes tamanhos de malha. O critério de parada é dado por rtol=105 e atol=0. Verifique!

n IMR
11 129
21 469
41 1761
81 6770

1.5.4 Iteração da descida mais íngrime do resíduo

A iteração da descida mais íngrime do resíduo é um método de projeção oblíquo em que 𝒦=span{AT𝒓} e =span{AAT𝒓}. Assim, a aproximação 𝒙(m) é dada por

𝒙(m)=𝒙(m1)+αmAT𝒓(m1), (1.173)

onde

αm=(AT𝒓(m1),AT𝒓(m1))(AAT𝒓(m1),AAT𝒓(m1)). (1.174)

Notemos que esta iteração é equivalente à do mínimo resíduo aplicada às equações normais

ATA𝒙=AT𝒃. (1.175)

Logo, se A é não-singular, o método converge para a solução do sistema linear A𝒙=𝒃.

Código 9: idir.py
1def idir(A, b, x0, rtol=1e-5, atol=0.0, maxiter=100000):
2 x = x0.copy()
3 r = b - A @ x
4 norm_b = norm(b)
5 r2 = dot(r, r)
6
7 info = 0
8 for k in range(maxiter):
9 v = A.T @ r
10 Av = A @ v
11 alpha = dot(v, v) / dot(Av, Av)
12 x = x + alpha * r
13 r = r - alpha * Av
14 r2 = dot(r, r)
15
16 if np.sqrt(r2) <= max(rtol*norm_b, atol):
17 info = 1
18 break
19
20 return x, info, k+1

1.5.5 Exercícios

E. 1.5.1.

Aplique a iteração da descida mais íngrime para resolver o sistema linear A𝒙=𝒃, com

A=[2113] (1.176)

e 𝒃=(3,4). Usando uma aproximação inicial 𝒙(0)=(0.5,0), faça uma análise geométrica das iterações.

Dica: faça um gráfico de contorno da norma 𝒓(𝒙)2=𝒃A𝒙2 e mostre as iterações do método sobre o gráfico.

E. 1.5.2.

Aplique a iteração do mínimo resíduo para resolver o sistema linear A𝒙=𝒃, com

A=[2103] (1.177)

e 𝒃=(3,3). Usando uma aproximação inicial 𝒙(0)=(0,0.5), faça uma análise geométrica das iterações do método.

Dica: faça um gráfico de contorno da norma 𝒓(𝒙)2=𝒃A𝒙2 e mostre as iterações do método sobre o gráfico.

E. 1.5.3.

Aplique a iteração da descida mais íngrime resíduo para resolver o sistema linear A𝒙=𝒃, com

A=[212.12] (1.178)

e 𝒃=(3,4.1). Usando uma aproximação inicial 𝒙(0)=(0.5,0), faça uma análise geométrica das iterações do método.

Dica: faça um gráfico de contorno da norma 𝒓(𝒙)2=𝒃A𝒙2 e mostre as iterações do método sobre o gráfico.

E. 1.5.4.

Considere o problema de difusão-advecção 2D do Exemplo 1.5.1, discretizado com o esquema upwind. Aplique a iteração da descida mais íngrime do resíduo para resolver o sistema linear resultante para os seguintes coeficientes de advecção:

  1. a)

    𝒂=(1,1);

  2. b)

    𝒂=(1,1);

  3. c)

    𝒂=(1,1).

Analise a convergência do método para diferentes tamanho de malha.

Dica: lembre-se que o esquema upwind deve ser adaptado para cada caso.


Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Matemática Numérica III

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

1.5 Métodos de projeção

A maior parte dos métodos iterativos para a resolução de sistemas lineares podem ser vistos como métodos de projeção. A ideia básica é resolver o sistema linear

A𝒙=𝒃 (1.150)

buscando uma solução aproximada 𝒙~𝒦n de dimensão mn. 𝒦 é chamado de subespaço de busca. Uma forma de garantir que a aproximação 𝒙~ seja boa é impor as chamadas condições de Petrov2323endnote: 23Georgi Iwanowitsch Petrov, 1912 - 1987, engenheiro soviético. Fonte: Wikipedia.-Galerkin2424endnote: 24Boris Galerkin, 1871 - 1945, engenheiro e matemático soviético. Fonte: Wikipédia., em que o resíduo

𝒓~=𝒃A𝒙~ (1.151)

é ortogonal a um dado subespaço n de dimensão m. Os métodos de projeção são classificados em métodos ortogonais, quando =𝒦, e métodos oblíquos, quando 𝒦.

Sejam A uma matriz n×n não singular, 𝒦 e dois subespaços de n de dimensão mn e 𝒙(0) uma aproximação inicial da solução do sistema linear A𝒙=𝒃. O método de projeção consiste em encontrar uma aproximação 𝒙~𝒦 da solução do sistema, tal que

𝒙~=𝒙(0)+𝜹, (1.152)

com 𝜹𝒦, satisfazendo a condição de Petrov-Galerkin

𝒓~=𝒃A𝒙~. (1.153)

ou, equivalentemente,

(𝒓(0)A𝜹,𝒘)=0,𝒘, (1.154)

Em resumo, o método de projeção determina a solução aproximada 𝒙(m) pelas iterações

𝒙~=𝒙(0)+𝜹,com 𝜹𝒦, (1.155)
(𝒓(0)A𝜹,𝒘)=0,𝒘. (1.156)

A seguir, vamos apresentar três métodos de projeção unidimensionais. Embora estes métodos não sejam geralmente usados na prática (por não serem eficientes), eles foram a base metodológica para o desenvolvimento de métodos mais eficientes, como o método GMRES.

1.5.1 Métodos de projeção unidimensionais

Métodos de projeção unidimensionais são aqueles em que dim(𝒦)=dim()=1. Assim, temos 𝒦=span{𝒗} e =span{𝒘}, para dados vetores v,wn. Com isso, a aproximação 𝒙(m) é dada por

𝒙~=𝒙(0)+α𝒗, (1.157)

onde α é tal que

(𝒓(0)αA𝒗,𝒘)=0, (1.158)

ou seja,

α=(𝒓(0),𝒘)(A𝒗,𝒘). (1.159)

1.5.2 Iteração da descida mais íngrime

A iteração da descida mais íngrime (ou método do gradiente) é um método de projeção ortogonal em que 𝒦==span{𝒓}. Assim, a aproximação 𝒙(m) é dada por

𝒙(m)=𝒙(m1)+αm𝒓(m1), (1.160)

onde

αm=(𝒓(m1),𝒓(m1))(A𝒓(m1),𝒓(m1)). (1.161)

Notemos que, para uma matriz A simétrica positiva definida, o método da descida mais íngrime é equivalente ao método do gradiente discutido na Seção 1.4, observando que 𝒓=f(𝒙), onde

f(𝒙) =𝒙𝒙A2 (1.162)
=(𝒙𝒙,A(𝒙𝒙)), (1.163)

onde 𝒙 é a solução do sistema linear A𝒙=𝒃.

Para detalhes sobre a implementação, consulte o Código 6.

1.5.3 Iteração do mínimo resíduo

Para uma matriz apenas positiva definida (i.e. A+AT simétrica positiva definida), a iteração do mínimo resíduo é um método de projeção oblíquo em que 𝒦=span{𝒓} e =span{A𝒓}. Assim, a aproximação 𝒙(m) é dada por

𝒙(m)=𝒙(m1)+αm𝒓(m1), (1.164)

onde

αm=(A𝒓(m1),𝒓(m1))(A𝒓(m1),A𝒓(m1)). (1.165)

Aqui, cada iterada minimiza

f(𝒙)=bA𝒙2, (1.166)

na direção do resíduo 𝒓.

Código 8: imr.py
1from numpy import dot
2from numpy.linalg import norm
3
4def imr(A, b, x0, rtol=1e-5, atol=0.0, maxiter=100000):
5 x = x0.copy()
6 r = b - A @ x
7 norm_b = norm(b)
8 r2 = dot(r, r)
9
10 info = 0
11 for k in range(maxiter):
12 Ar = A @ r
13 alpha = dot(Ar, r) / dot(Ar, Ar)
14 x = x + alpha * r
15 r = r - alpha * Ar
16 r2 = dot(r, r)
17
18 if np.sqrt(r2) <= max(rtol*norm_b, atol):
19 info = 1
20 break
21
22 return x, info, k+1
Exemplo 1.5.1.(Problema de difusão-advecção 2D)

Consideremos o seguinte problema de difusão-advecção 2D

ϵΔu+𝒂u=f,em Ω=(0,1)×(0,1), (1.167)
u=0,em Ω, (1.168)

onde ϵ=1 é o coeficiente de difusão, 𝒂=(20,1) é o campo de advecção e a fonte é dada por

f(x)={100,se 0.4x,y0.6,0,caso contrário. (1.169)

Assumimos uma malha espacial uniforme de n×n , com tamanho de malha h=1/(n1). Denotamos ui,ju(xi,yi), onde xi=ih e yj=jh, para i,j=1,2,,n. Aplicando um espuema upwind para a advecção e diferenças finitas centrais para a difusão, obtemos o seguinte esquema de diferenças finitas

ϵ(ui+1,j2ui,j+ui1,jh2+ui,j+12ui,j+ui,j1h2) (1.170)
+a1ui,jui1,jh+a2ui,j+1ui,jh=fi,j, (1.171)

para i,j=2,3,,n1, onde fi,j=f(xi,yj). As condições de contorno são dadas por u1,j=un,1=ui,1=ui,n=0, para i,j=1,2,,n1. Por fim, consideramos a enumeração dos nodos da malha k=i1+(j2)(n2) para obtermos o sistema linear

A𝒖=𝒇, (1.172)

onde A é uma matriz esparsa de ordem N=(n2)2, 𝒖N é o vetor das incógnitas e 𝒇N é o vetor da fonte.

Observando que A é apenas positiva definida (i.e. A+AT é simétrica positiva definida), aplicamos a iteração do mínimo resíduo para resolver o sistema linear. A seguinte tabela mostra o número de iterações necessárias para a convergência do método, para diferentes tamanhos de malha. O critério de parada é dado por rtol=105 e atol=0. Verifique!

n IMR
11 129
21 469
41 1761
81 6770

1.5.4 Iteração da descida mais íngrime do resíduo

A iteração da descida mais íngrime do resíduo é um método de projeção oblíquo em que 𝒦=span{AT𝒓} e =span{AAT𝒓}. Assim, a aproximação 𝒙(m) é dada por

𝒙(m)=𝒙(m1)+αmAT𝒓(m1), (1.173)

onde

αm=(AT𝒓(m1),AT𝒓(m1))(AAT𝒓(m1),AAT𝒓(m1)). (1.174)

Notemos que esta iteração é equivalente à do mínimo resíduo aplicada às equações normais

ATA𝒙=AT𝒃. (1.175)

Logo, se A é não-singular, o método converge para a solução do sistema linear A𝒙=𝒃.

Código 9: idir.py
1def idir(A, b, x0, rtol=1e-5, atol=0.0, maxiter=100000):
2 x = x0.copy()
3 r = b - A @ x
4 norm_b = norm(b)
5 r2 = dot(r, r)
6
7 info = 0
8 for k in range(maxiter):
9 v = A.T @ r
10 Av = A @ v
11 alpha = dot(v, v) / dot(Av, Av)
12 x = x + alpha * r
13 r = r - alpha * Av
14 r2 = dot(r, r)
15
16 if np.sqrt(r2) <= max(rtol*norm_b, atol):
17 info = 1
18 break
19
20 return x, info, k+1

1.5.5 Exercícios

E. 1.5.1.

Aplique a iteração da descida mais íngrime para resolver o sistema linear A𝒙=𝒃, com

A=[2113] (1.176)

e 𝒃=(3,4). Usando uma aproximação inicial 𝒙(0)=(0.5,0), faça uma análise geométrica das iterações.

Dica: faça um gráfico de contorno da norma 𝒓(𝒙)2=𝒃A𝒙2 e mostre as iterações do método sobre o gráfico.

E. 1.5.2.

Aplique a iteração do mínimo resíduo para resolver o sistema linear A𝒙=𝒃, com

A=[2103] (1.177)

e 𝒃=(3,3). Usando uma aproximação inicial 𝒙(0)=(0,0.5), faça uma análise geométrica das iterações do método.

Dica: faça um gráfico de contorno da norma 𝒓(𝒙)2=𝒃A𝒙2 e mostre as iterações do método sobre o gráfico.

E. 1.5.3.

Aplique a iteração da descida mais íngrime resíduo para resolver o sistema linear A𝒙=𝒃, com

A=[212.12] (1.178)

e 𝒃=(3,4.1). Usando uma aproximação inicial 𝒙(0)=(0.5,0), faça uma análise geométrica das iterações do método.

Dica: faça um gráfico de contorno da norma 𝒓(𝒙)2=𝒃A𝒙2 e mostre as iterações do método sobre o gráfico.

E. 1.5.4.

Considere o problema de difusão-advecção 2D do Exemplo 1.5.1, discretizado com o esquema upwind. Aplique a iteração da descida mais íngrime do resíduo para resolver o sistema linear resultante para os seguintes coeficientes de advecção:

  1. a)

    𝒂=(1,1);

  2. b)

    𝒂=(1,1);

  3. c)

    𝒂=(1,1).

Analise a convergência do método para diferentes tamanho de malha.

Dica: lembre-se que o esquema upwind deve ser adaptado para cada caso.


Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |