代数多重网格:为什么插值和限制的乘积不会导致范数为 1 的结果?

计算科学 线性代数 多重网格
2021-12-08 02:33:22

我目前正在使用 Briggs 等人的“A Multigrid Tutorial”,第 8 章。

插值算子的构造如下: 在此处输入图像描述

那么限制算子和细网格算子的构造如下:

在此处输入图像描述

假设我们有三个网格点 x0、x1、x2,中间一个 x1 很好,其他的很粗糙。中间一个由 插值x1 = x0*w0 + x2*w2因此,插值算子是(在 Matlab 中):

I = [1, 0, 0; w0, 0, w2; 0, 0, 1]

I =

[  1, 0,  0]
[ w0, 0, w2]
[  0, 0,  1]

那么限制运算符是:

transpose(I)

ans =

[ 1, w0, 0]
[ 0,  0, 0]
[ 0, w2, 1]

现在让我们看看如果限制然后直接插值会发生什么,结果是I和的相乘transpose(I)

I*transpose(I)

ans =

[  1,          w0,  0]
[ w0, w0^2 + w2^2, w2]
[  0,          w2,  1]

我希望这个矩阵类似于单位矩阵,或者至少具有范数 1 或其他东西。但是,如果我们将 x = [1, 1, 1] 应用于假设 w0 = w2 = 0.5,我们将得到 [1.5 1.5 1.5]。我会假设重复应用的限制插值操作至少会收敛到某些东西。但是不,在这种情况下,所有向量分量在每个限制插值上都乘以 1.5。这对我来说似乎很奇怪。

谁能解释发生了什么?

2个回答

一种更简单的解释——限制算子的范围是粗网格空间,而插值算子的范围是细网格空间。除非两者相等,否则插值 + 限制不会产生单位矩阵,因为总会有x被限制运算符截断并丢失。

答案分为两部分。首先,您没有获得身份,因为您在限制操作期间丢弃了信息(如果您考虑的网格比您考虑的三个点更大,那么您在限制期间“忘记”其他节点的值),并且您无法在转置操作期间恢复此信息。因此,您在申请时将无法获得身份操作ITI.

其次,你的直觉认为你应该得到一个有范数的东西是正确的,如果你选择不同的延长矩阵,你就会这样做。在您的陈述中,您选择它作为限制矩阵的转置。这是一个方便的选择,因为它使多重网格循环成为对称算子。但是约束的转置并不等价于嵌入矩阵E这将简单地将函数值从粗网格插入到细网格。如果您考虑运营商EI, 那么这个有你要找的属性。特别是,EI幂等的:如果你应用两次,结果和你应用一次一样:(EI)(EI)=EI.