Зараз я працюю з "Підручником з декількох сіток" від Briggs et al, Глава 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 на кожне обмеження-інтерполяцію. Це здається мені дуже дивним.
Хтось може пояснити, що відбувається?