I'm currently working with "A Multigrid Tutorial" by Briggs et al, Chapter 8.
The construction of the interpolation operator is given as:
Then construction of restriction operator and fine grid operator are given as:
Let's assume we have three grid points x0, x1, x2 with the middle one x1 is fine and the others are coarse. The middle one is interpolated by x1 = x0*w0 + x2*w2
. Therefore, the interpolation operator is (in Matlab):
I = [1, 0, 0; w0, 0, w2; 0, 0, 1]
I =
[ 1, 0, 0]
[ w0, 0, w2]
[ 0, 0, 1]
The restriction operator is then:
transpose(I)
ans =
[ 1, w0, 0]
[ 0, 0, 0]
[ 0, w2, 1]
Now let's see what would happen if one would restrict and then interpolate directly, what results in a multiplication of I
and transpose(I)
:
I*transpose(I)
ans =
[ 1, w0, 0]
[ w0, w0^2 + w2^2, w2]
[ 0, w2, 1]
I would expect that this matrix is something like an identity matrix or would at least have norm 1 or something. But if we would apply x = [1, 1, 1] for lets say w0 = w2 = 0.5, we would get [1.5 1.5 1.5]. I would assume that repeatedly applied restriction-interpolation operations would at least converge to something. But no, in that case all vector components are multiplied by 1.5 on every restriction-interpolation. That seems very strange to me.
Can anyone explain what's going on?