Obecnie pracuję z „A Multigrid Tutorial” Briggsa i in., Rozdział 8.
Konstrukcja operatora interpolacji jest podana jako:
Następnie konstrukcję operatora ograniczenia i operatora drobnej sieci podano jako:
Załóżmy, że mamy trzy punkty siatki x0, x1, x2 ze środkowym jeden x1 jest w porządku, a pozostałe są gruboziarniste. Środkowy jest interpolowany przez x1 = x0*w0 + x2*w2
. Dlatego operatorem interpolacji jest (w Matlab):
I = [1, 0, 0; w0, 0, w2; 0, 0, 1]
I =
[ 1, 0, 0]
[ w0, 0, w2]
[ 0, 0, 1]
Operatorem ograniczenia jest wówczas:
transpose(I)
ans =
[ 1, w0, 0]
[ 0, 0, 0]
[ 0, w2, 1]
Zobaczmy teraz, co by się stało, gdyby ograniczyć, a następnie interpolować bezpośrednio, co powoduje pomnożenie I
i transpose(I)
:
I*transpose(I)
ans =
[ 1, w0, 0]
[ w0, w0^2 + w2^2, w2]
[ 0, w2, 1]
Spodziewałbym się, że ta matryca jest jak matryca tożsamości lub przynajmniej miałaby normę 1 lub coś takiego. Ale jeśli zastosowalibyśmy x = [1, 1, 1] dla powiedzmy, że w0 = w2 = 0,5, otrzymalibyśmy [1,5 1,5 1,5]. Zakładałbym, że wielokrotnie stosowane operacje interpolacji restrykcyjnej przynajmniej by się do czegoś zbliżyły. Ale nie, w takim przypadku wszystkie komponenty wektorowe są mnożone przez 1,5 przy każdej interpolacji ograniczenia. To wydaje mi się bardzo dziwne.
Czy ktoś może wyjaśnić, co się dzieje?
źródło
Odpowiedzi:
źródło
źródło