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?
fonte
Respostas:
Uma explicação mais simples - a faixa do operador de restrição é o espaço da grade grossa, enquanto a faixa do operador de interpolação é o espaço da grade fina. A menos que os dois sejam iguais, interpolação + restrição não resultará em uma matriz de identidade, porque sempre haverá componentes de que são truncados pelo operador de restrição e perdidos.x
fonte
Existem duas partes da resposta. Primeiro, você não obtém a identidade porque joga fora as informações durante a operação de restrição (se você pensa em uma malha maior do que apenas os três pontos que considera, então "esquece" os valores de qualquer outro nó durante a restrição) e você não pode recuperar essas informações durante a operação de transposição. Conseqüentemente, você não poderá obter a operação de identidade ao aplicar o .ITI
Segundo, sua intuição de que você deve obter algo que tenha uma norma em torno de uma está correta, e você faria se escolher a matriz de prolongamento de maneira diferente. Na sua declaração, você a escolhe como a transposição da matriz de restrição. Essa é uma opção conveniente, pois torna o ciclo multigrid um operador simétrico . Mas a transposição da restrição não é equivalente à matriz de incorporação que simplesmente interpolaria os valores da função da grade grossa para a grade fina. Se você considerou o operador , este possui a propriedade que você está procurando. Em particular, a é idempotente : se você a aplicar duas vezes, o resultado será o mesmo que se você a aplicasse uma vez:E I E I ( E I ) ( E I ) = E IE EI EI (EI)(EI)=EI .
fonte