Atualmente, estou trabalhando com "A Multigrid Tutorial", de Briggs et al, capítulo 8.
A construção do operador de interpolação é dada como:
A construção do operador de restrição e do operador de rede fina é dada como:
Vamos supor que temos três pontos de grade x0, x1, x2 com o do meio x1 é bom e os outros são grosseiros. O do meio é interpolado por x1 = x0*w0 + x2*w2
. Portanto, o operador de interpolação é (no Matlab):
I = [1, 0, 0; w0, 0, w2; 0, 0, 1]
I =
[ 1, 0, 0]
[ w0, 0, w2]
[ 0, 0, 1]
O operador de restrição é então:
transpose(I)
ans =
[ 1, w0, 0]
[ 0, 0, 0]
[ 0, w2, 1]
Agora vamos ver o que aconteceria se alguém restringisse e depois interpolasse diretamente, o que resulta em uma multiplicação de I
e transpose(I)
:
I*transpose(I)
ans =
[ 1, w0, 0]
[ w0, w0^2 + w2^2, w2]
[ 0, w2, 1]
Eu esperaria que essa matriz fosse algo como uma matriz de identidade ou teria pelo menos a norma 1 ou algo assim. Mas se aplicássemos x = [1, 1, 1], digamos que w0 = w2 = 0,5, obteríamos [1,5 1,5 1,5]. Eu assumiria que as operações de interpolação por restrição aplicadas repetidamente pelo menos convergiriam para alguma coisa. Mas não, nesse caso, todos os componentes do vetor são multiplicados por 1,5 em cada interpolação de restrição. Isso me parece muito estranho.
Alguém pode explicar o que está acontecendo?