Derzeit arbeite ich mit "A Multigrid Tutorial" von Briggs et al., Kapitel 8.
Der Aufbau des Interpolationsoperators ist gegeben als:
Der Aufbau des Beschränkungsbetreibers und des Feinnetzbetreibers ist dann gegeben als:
Nehmen wir an, wir haben drei Gitterpunkte x0, x1, x2, wobei der mittlere x1 in Ordnung und die anderen grob sind. Die mittlere wird durch interpoliert x1 = x0*w0 + x2*w2
. Daher lautet der Interpolationsoperator (in Matlab):
I = [1, 0, 0; w0, 0, w2; 0, 0, 1]
I =
[ 1, 0, 0]
[ w0, 0, w2]
[ 0, 0, 1]
Der Restriktionsoperator ist dann:
transpose(I)
ans =
[ 1, w0, 0]
[ 0, 0, 0]
[ 0, w2, 1]
Nun wollen wir sehen, was passieren würde, wenn man einschränken und dann direkt interpolieren würde, was zu einer Multiplikation von I
und führt transpose(I)
:
I*transpose(I)
ans =
[ 1, w0, 0]
[ w0, w0^2 + w2^2, w2]
[ 0, w2, 1]
Ich würde erwarten, dass diese Matrix so etwas wie eine Identitätsmatrix ist oder zumindest die Norm 1 hat oder so. Wenn wir jedoch x = [1, 1, 1] für beispielsweise w0 = w2 = 0,5 anwenden würden, würden wir [1,5 1,5 1,5] erhalten. Ich würde annehmen, dass wiederholt angewendete Restriktionsinterpolationsoperationen zumindest zu etwas konvergieren würden. Nein, in diesem Fall werden alle Vektorkomponenten bei jeder Restriktionsinterpolation mit 1,5 multipliziert. Das kommt mir sehr merkwürdig vor.
Kann jemand erklären, was los ist?