Attualmente sto lavorando con "A Multigrid Tutorial" di Briggs et al, capitolo 8.
La costruzione dell'operatore di interpolazione è data come:
Quindi la costruzione dell'operatore di restrizione e dell'operatore di griglia fine viene data come:
Supponiamo di avere tre punti della griglia x0, x1, x2 con quello centrale x1 va bene e gli altri sono grossolani. Quello centrale è interpolato da x1 = x0*w0 + x2*w2
. Pertanto, l'operatore di interpolazione è (in Matlab):
I = [1, 0, 0; w0, 0, w2; 0, 0, 1]
I =
[ 1, 0, 0]
[ w0, 0, w2]
[ 0, 0, 1]
L'operatore di restrizione è quindi:
transpose(I)
ans =
[ 1, w0, 0]
[ 0, 0, 0]
[ 0, w2, 1]
Ora vediamo cosa succederebbe se uno si limitasse e quindi interpolasse direttamente, cosa si traduce in una moltiplicazione di I
e transpose(I)
:
I*transpose(I)
ans =
[ 1, w0, 0]
[ w0, w0^2 + w2^2, w2]
[ 0, w2, 1]
Mi aspetto che questa matrice sia qualcosa di simile a una matrice di identità o almeno abbia la norma 1 o qualcosa del genere. Ma se applichiamo x = [1, 1, 1] per diciamo w0 = w2 = 0,5, otterremmo [1.5 1.5 1.5]. Suppongo che le operazioni di restrizione-interpolazione applicate ripetutamente converrebbero almeno in qualcosa. Ma no, in quel caso tutti i componenti vettoriali vengono moltiplicati per 1,5 per ogni restrizione-interpolazione. Mi sembra molto strano.
Qualcuno può spiegare cosa sta succedendo?