Numerieke Wiskunde, Computeropgave A0 Projectie op Continue

advertisement
Numerieke Wiskunde, Computeropgave A0
Projectie op Continue Stuksgewijs Lineaire Functies
Jan Brandts
1
Continue stuksgewijs lineaire functies en hun nodale basis
Allereerst definiëren we wat we bedoelen met een continue stuksgewijs lineaire functie ten
opzichte van een gegeven partitie J van een interval I.
Definition 1.1 (Partititie en maaswijdte) Laat n+1 punten x0 , . . . , xn gegeven zijn met
a = x0 < x1 < · · · < xn−1 < xn = b. De verzameling J van intervallen Ij := [xj , xj+1 ] heet
een partitie van I = [a, b]. Definieer voor j ∈ {1, . . . , n} ook
hj = xj − xj−1 en h = max{hj }.
j
(1)
De parameter h heet de maaswijdte van J . Een partitie J van I heet uniform als hj = h
voor alle j ∈ {1, . . . , n}: een uniforme partitie is een partitie in intervallen van gelijke lengte.
Figuur 1. Een continue stuksgewijs lineaire functie.
Definition 1.2 (Ruimte S01 (J )) Een functie v op I is een continue stuksgewijs lineare functie ten opzichte van de partitie J als v continu is op I en lineair op iedere I ∈ J . We schrijven
S01 (J ) = {v ∈ C 0 (I) | ∀I ∈ J , v|I ∈ P 1 (I)}.
Het superscript 1 staat hierbij voor lineair (eerstegraads), en het subscript 0 for continu.
1
(2)
Voor gegegeven J is S01 (J ) een lineaire vector ruimte van dimensie n + 1. Immers, iedere
v ∈ S01 (J ) wordt uniek bepaald door zijn waarden in de punten xj . Dus, S01 (J ) is een
(n + 1)-dimensionale deelruimte van C 0 (I),
S01 (J ) ⊂ C 0 (I).
(3)
We voorzien de ruimte S01 (J ) van een basis, de zogeheten nodale basis.
Definition 1.3 (Nodale basis) Voor gegeven j ∈ {0, . . . , n}, laat vj het unieke element
uit S01 (J ) zijn dat waarde één heeft in xj en waarde nul in alle xi met i 6= j. De collectie
B = {v0 , . . . , vn } vormt een basis voor S01 (J ), genaamd de nodale basis.
De functies v0 , . . . , vn zijn lineair onafhankelijk. Immers, voor gegeven j is vj de enige functie
uit B die ongelijk aan nul is in xj .
Figuur 2. Nodale basisfuncties v0 , v2 en v3 , voor dezelfde partitie als in Figuur 1.
In het bijzonder is vj dus geen lineaire combinatie van de andere elementen uit B. We zien
ook onmiddellijk dat
v = α0 v0 + · · · + αn vn
⇔
αj = v(xj ) voor alle j ∈ {0, . . . , n}
(4)
voor iedere functie v uit S01 (J ). Oftewel, de coordinaten van v the opzichte van de nodale
basis zijn gelijk aan de waarden van v in de punten xj .
2
Functies loodrecht projecteren op S01 (J )
Laat J een partitie van I = [a, b] zijn met a, b ∈ R, a < b. Schrijf zoals gebruikelijk (·, ·) voor
het standaard inproduct op C 0 (I), oftewel,
Z
(f, g) = f (x)g(x)dx.
(5)
I
Functies f, g ∈ C 0 (I) staan loodrecht op elkaar als (f, g) = 0. Met behulp van dit loodrechtheidsbegrip definiëren we nu de loodrechte projectie op S01 (J ) op de gebruikelijke manier.
2
2.1
De orthogonale projectie P : C 0 (I) → S01 (J )
De loodrechte projectie P f van een gegeven f ∈ C 0 (I) op de deelruimte S01 (J ) ⊂ C 0 (I) is per
definitie de functie P f ∈ S01 (J ) waarvoor geldt dat f − P f loodrecht staat op alle functies
v ∈ S01 (J ). Laat B de nodale basis voor S01 (J ) zijn. Er geldt
P f = α0 v0 + · · · + αn vn
(6)
voor zekere coördinaten α0 , . . . , αn van P f ten opzichte van B die kunnen worden bepaald
uit de n + 1 orthogonaliteitsrelaties f − P f ⊥ vj voor j ∈ {0, . . . , n},
f − P f ⊥ vj ⇔ f − (α0 v0 + · · · + αn vn ) ⊥ vj ⇔ (f, vj ) = (α0 v0 + · · · + αn vn , vj )


α0


⇔ (v0 , vj ) . . . (vn , vj )  ...  = (f, vj ).
(7)
αn
Deze n + 1 lineaire relaties in α0 , . . . , αn laten zich schrijven als het volgende matrix-vector
stelsel,


 

(v0 , v0 ) . . . (vn , v0 )
α0
(f, v0 )

  ..  

..
..
..
..
(8)

 .  = 
,
.
.
.
.
(v0 , vn ) . . . (vn , vn )
αn
(f, vn )
waaruit α0 , . . . , αn kunnen worden opgelost zodra f en J en B bekend zijn, en dus ieder van
de getallen in de matrix en in de rechterlidvector kan worden uitgerekend.
Figuur 3. De functie f (x) = sin(2πx) op I = [0, 1] en zijn projectie op S01 (J ).
Merk nogmaals op dat
(P f )(xj ) = (α0 v0 + · · · + αn vn )(xj ) = αj ,
(9)
oftewel, P f is de continue stuksgewijs lineaire functie die waarde αj heeft in xj . Zodra het
stelsel (8) is opgelost, kan dus eenvoudig een grafiek van P f getekend worden.
3
2.2
Berekening van de inproducten (vi , vj )
Schrijf M voor de matrix uit vergelijking (8). De entries van M bestaat uit de (n + 1)2
inproducten van de vorm (vi , vj ). Hierover merken we het volgende op:
(A) Voor j = 0 en j = n is (vj , vj ) gelijk aan de integraal van vj2 over Ij ,
(B) Voor j ∈ {1, . . . , n − 1} is (vj , vj ) is gelijk aan de integraal van vj2 over Ij ∪ Ij+1 ,
(C) Voor j ∈ {1, . . . , n} is (vj−1 , vj ) gelijk aan de integraal van vj−1 vj over Ij ,
(D) (vi , vj ) = 0 als |j − i| ≥ 2, omdat het product vi vj de nulfunctie op I is.,
(E) Wegens symmetrie van het inproduct geldt dat (vi , vj ) = (vj , vi ).
Op het interval Ij zijn slechts twee nodale basisfuncties niet identiek nul, namelijk vj−1 en
vj . De beperkingen tot Ij van vj−1 en vj zijn linear op Ij en hebben als voorschrift
xj − x
xj − x
x − xj−1
x − xj−1
vj−1 (x) =
=
en vj (x) =
=
.
(10)
xj − xj−1
hj
xj − xj−1
hj
Met mj hj = 1 hebben we dus dat vj−1 (x) = mj (xj − x) en vj (x) = mj (x − xj−1 ). We
berekenen twee integralen. Allereerst,
xj
Z
Z xj
1
1
2
2
2
2 1
3
vj−1 (x) dx = mj
(xj − x) dx = mj (xj − x) = m2j h3j = hj ,
(11)
3
3
3
Ij
xj−1
xj−1
en we merken op dat wegens symmetrie-overwegingen duidelijk is dat ook
Z
1
vj (x)2 dx = hj .
3
Ij
(12)
Vervolgens berekenen we met behulp van partiële integratie, waarbij de randterm wegvalt
omdat het product vj−1 vj nul is op de rand, dat
Z
Z xj
Z xj
1
2
2
vj−1 (x)vj (x)dx = mj
(xj − x)(x − xj−1 )dx = mj
(xj − x)2 dx
Ij
xj−1
xj−1 2
xj
1
1
2 1
3
= mj (xj − x) = m2j h3j = hj .
(13)
6
6
6
xj−1
Met deze uitdrukkingen kunnen we nu alle inproducten bepalen. Uit (A) volgt immers dat
1
1
(v0 , v0 ) = h1 en (vn , vn ) = hn ,
(14)
3
3
terwijl uit (B) en (C) volgt dat
1
1
(vj , vj ) = (hj + hj+1 ) en (vj−1 , vj ) = hj .
(15)
3
6
Volgens (D) zijn alle andere inproducten gelijk aan nul, en dus hebben we M nu bepaald,


k0 h1
0
...
0

.. 
..
 h1 k1
.
h
. 
2

1


..
..
M =  0 ...
(16)
,
.
.
0

6
 .. . .

 .
. hn−1 kn−1 hn 
0 ...
0
hn kn
waarbij voor het schrijfgemak de notaties kj = 2(hj + hj+1 ) en h0 = hn+1 = 0 zijn ingevoerd.
4
2.3
Berekening van de inproducten (f, vj )
Lastiger is om de inproducten in de rechterlid-vector uit te rekenen, omdat hierin de te
projecteren functie f ∈ C 0 (I) figureert. Er zijn manieren om de integralen
Z
(f, vj ) = f (x)vj (x)dx
(17)
I
te benaderen, bijvoorbeeld met behulp van Riemann-sommen. Hier volstaan we met aan te
nemen dat we expliciet beschikken over een primitieve F van f en een primitieve G van F ,
oftewel,
G0 = F en F 0 = f.
(18)
Laat om te beginnen j ∈ {1, . . . , n − 1} zijn. Dan leeft de nodale basisfunctie vj op K =
Ij ∪ Ij+1 en is nul op de rand ∂K van K. We vinden dat
Z
Z xj
Z xj+1
(f, vj ) =
f (x)vj (x)dx =
f (x)mj (x − xj−1 )dx +
f (x)mj+1 (xj+1 − x)dx. (19)
K
xj−1
xj
Beschouw de eerste integraal in het rechterlid. Partiele integratie gevolgd door de Hoofdstelling levert
xj
Z xj
Z xj
f (x)mj (x − xj−1 )dx = F (x)mj (x − xj−1 )
−
F (x)mj dx
xj−1
xj−1
xj−1
= F (xj ) − mj (G(xj ) − G(xj−1 )).
(20)
Evenzo vinden we voor de tweede integraal dat
xj+1 Z
Z xj+1
+
f (x)mj+1 (xj+1 − x)dx = F (x)mj+1 (xj+1 − x)
xj
xj
xj+1
F (x)mj+1 dx
xj
= −F (xj ) + mj+1 (G(xj+1 ) − G(xj )).
(21)
Uit (19) volgt dus uiteindelijk dat
(f, vj ) = mj G(xj−1 ) − (mj + mj+1 )G(xj ) + mj+1 G(xj+1 )


G(xj−1 )
= mj −(mj + mj+1 ) mj+1  G(xj )  .
G(xj+1 )
(22)
Resteren nog de inproducten (f, v0 ) en (f, vn ). Deze kunnen echter direct worden opgeschreven
aan de hand van de reeds berekende integralen in (21) en (20), respectievelijk. Dit geeft
(f, v0 ) = −F (x0 ) + m1 (G(x1 ) − G(x0 )) en
(f, vn ) = F (xn ) − mn (G(xn ) − G(xn−1 )). (23)
De inproducten (f, vj ) kunnen uitgerekend worden middels de volgende matrix-vectorvermenigvuldiging. In implementaties kan worden volstaan met een loop gebaseerd op (22).
 


 

(f, v0 )
d 0 m1
0
...
0
G(x0 )
−F (x0 )
 


 

..
.. 
..
..
  m1 d1


 
.
.
m2
. 
.
0 
 


 

 


 

..
.
.
.
.
.
.
.
.
.
.
,
(24)
= 0


+
.
.
.
.
0 
.
. 
 


 

  ..


 

..
..
..
  .
 

. mn−1 dn−1 mn  
.
.
0 
(f, vn )
0 ...
0
mn dn
G(xn )
F (xn )
waarbij voor schrijfgemak de notaties dj = −(mj + mj+1 ) en m0 = mn+1 = 0 zijn ingevoerd.
5
3
Elementsgewijze assemblage van de massa-matrix M
Het berekenen van de inproducten (vi , vj ) zoals voorgesteld in Sectie 2.2 kan ook op een
hele andere manier worden gedaan. Deze manier is in tegenstelling tot de voorgaande direct
generaliseerbaar naar problemen met een soortgelijke structuur in meer variabelen.
3.1
Alternatieve berekening van de inproducten (vi , vj )
Een belangrijke observatie is dat elk inproduct tussen basisfuncties de som is van integralen
over elk van de sub-intervallen Ik uit de partitie J ,
Z
(vi , vj ) =
vi (x)vj (x)dx =
I
n
X
Z
(vi , vj )Ik waarbij (vi , vj )Ik =
vi (x)vj (x)dx.
(25)
Ik
k=1
Dientengevolge kan M worden geschreven als
M=
n
X
k=1

Mk waarbij
(v0 , v0 )Ik

..
Mk = 
.
(v0 , vn )Ik
...
..
.
...

(vn , v0 )Ik

..
.
.
(vn , vn )Ik
(26)
Zoals al opgemerkt zijn op ieder interval Ik alleen vk−1 en vk niet identiek nul. Dus heeft iedere
matrix Mk slechts 2 × 2 entries die ongelijk aan nul zijn, en die we bovendien al uitgerekend
hebben in (11), (12) en (13), namelijk,
1
(vk−1 , vk−1 )Ik (vk , vk−1 )Ik
2 1
.
(27)
Ek =
= hk
(vk−1 , vk )Ik (vk , vk )Ik
1 2
6
Merk op dat Ek op posities (k, k), (k + 1, k), (k, k + 1) en (k + 1, k + 1) staat in Mk . De
sommatie in (26) kan dus grafisch worden geı̈llustreerd als in Figuur 1.
Figuur 4. M = M1 + M2 + M3 . Elke Mk heeft een 2 × 2 niet-nul blokje Ek (zwart).
Ondanks het resultaat (27) zullen we de berekening van Ek nu herhalen, maar dan op een
wat generiekere wijze die zijn waarde zal hebben in meerdimensionale generalisaties.
3.2
Affiene transformatie van integralen
Gegeven een interval Ik en de twee beperkingen tot Ik van de twee nodale basisfuncties vk−1
en vk die op Ik niet identiek nul zijn, valt op (zie ook Figuur 5) dat deze in horizontale richting
samengeperste versies zijn van de functies
ψ1 , ψ2 : [0, 1] → R : ψ1 (x) = 1 − x en ψ2 (x) = x.
6
(28)
We zullen de substitutiestelling voor integratie gebruiken om de matrix Ek uit te rekenen in
termen van de volgende referentie matrix
1 2 1
(ψ1 , ψ1 ) (ψ2 , ψ1 )
EM =
=
.
(29)
(ψ1 , ψ2 ) (ψ2 , ψ2 )
6 1 2
Immers, merk op dat Ik het beeld is onder I van de inverteerbare affiene transformatie
Fk : I → Ik : x 7→ xk−1 + hk x,
(30)
en dat de functies vk−1 en vk dan gelijk zijn aan
vk−1 (x) = ψ1 Fk−1 (x) en vk (x) = ψ2 Fk−1 (x) .
(31)
Figuur 5. Functies vk−1 en vk beperkt tot Ik in termen van Fk en ψ1 en ψ2 .
We leiden hier een algemeen resultaat af voor paren functies die op deze wijze in termen van
elkaar zijn gedefinieerd.
Lemma 3.1 Laat I = [0, 1] en J = [a, b] voor zekere a, b ∈ R met a < b en definieer de affiene
inverteerbare afbeelding
F : I → J : x 7→ a + (b − a)x.
(32)
Voor gegeven f ∈ C 0 (J), definieer fˆ ∈ C 0 (I) als de functie
fˆ : I → R, x 7→ (f ◦ F )(x) = f (F (x)).
(33)
Dan geldt voor iedere f, g ∈ C 0 (J) dat
(f, g)J = (b − a)(fˆ, ĝ)I .
(34)
Bewijs. Gebruik makend van de substitutie F (y) = x en F 0 (y)dy = dx en F (I) = K vinden
we dat
Z
Z
Z
−1
−1
ˆ
(f, g)J =
f (x)g(x)dx =
f F (x) ĝ F (x) dx = fˆ(y)ĝ(y)F 0 (y)dy
J
F (I)
Z
= (b − a)
I
fˆ(y)ĝ(y)dy = (b − a)(fˆ, ĝ)I ,
I
en dit bewijst meteen de bewering.
.
7
Aangezien in (31) in feite wordt opgemerkt dat ψ1 = v̂k−1 en ψ2 = v̂k , vinden we dat de
matrix Ek gelijk is aan
E k = hk E M ,
(35)
met EM de referentie matrix uit (29). Dit is uiteraard precies het resultaat (27), maar nu
op een andere manier berekend. Kortom, om de massamatrix M te kunnen berekenen is in
feite niets meer nodig dan één eenvoudig uit te rekenen referentie matrix EM , en de affiene
transformaties Fk van I naar ieder van de deelintervallen Ik .
3.3
Matlab code voor assemblage van de massa matrix
Tot slot geven we de Matlab functie die, gegeven de partitie als horizontale vector als argument, de massamatrix uitrekent en retourneert.
01
02
03
04
05
06
07
08
09
function M = AssembleM(J)
h = diff(J);
n = length(h);
EM = [2 1 ; 1 2]/6; M = zeros(n+1,n+1);
for j=1:n;
v
= j:j+1;
M(v,v) = M(v,v) + h(j)*EM;
end
Merk het gebruik op van Matlab’s mogelijkheden in regel 08, om aan deelblokken van matrices,
matrices van de correcte grootte toe te kennen zonder dit met behulp van een loop te doen.
4
Generalisatie naar functies van meer veranderlijken
Hier bekijken we het probleem van projecteren op de ruimte van continue, stuksgewijs lineare
functies in twee variabelen. Na een korte introductie over deze ruimte passen we de assemblage
uit Sectie 3 toe om de massamatrix M voor deze nieuwe situatie te bepalen.
4.1
Lineaire functies op een driehoek
Laat K ⊂ R2 een driehoek zijn met hoekpunten xp , xq , xr ∈ R2 . De ruimte P 1 (K) van lineare
polynomen op K zijn de functies van de vorm
` : K → R : (x, y) 7→ a0 + a1 x + a2 y
(36)
voor zekere a0 , a1 , a2 ∈ R en dus is dim(P 1 (K)) = 3. Gegeven drie getallen c1 , c2 , c3 ∈ R
bestaat er precies één ` ∈ P 1 (K) bestaat met de eigenschap dat
`(xp ) = c1 , `(xq ) = c2 en
`(xr ) = c3 .
(37)
In het bijzonder is dus op K de lineaire interpolant L1 f van een gegeven functie f ∈ C 0 (K)
te bepalen, die in de hoekpunten van K dezelfde waarden aanneemt als f . Gegeven een basis
B = {φ1 , φ2 , φ3 } van P 1 (K) vinden we de coördinaten α1 , α2 , α3 van L1 f ten opzichte van B,
L1 f = α1 φ1 + α2 φ2 + α3 φ3 ,
8
(38)
door het volgende stelsel op te

φ1 (xp )
 φ2 (xp )
φ3 (xp )
lossen

 

φ1 (xq ) φ1 (xr )
α1
f (xp )
φ2 (xq ) φ2 (xr )   α2  =  f (xq )  .
φ3 (xq ) φ3 (xr )
α3
f (xr )
(39)
Natuurlijk is dit stelsel het gemakkelijkst op te lossen als de systeemmatrix gelijk is aan de
identiteit. Dat is zo voor de basis die bestaat uit de drie functies die als eigenschap hebben
dat ze waarde één hebben in één van de hoekpunten van K, en waarde nul in de overige twee.
Op de referentie-driehoek K̂ met hoekpunten de oorsprong en de standaard basisvectoren
e1 , e2 van R2 zijn dit de functies
ψ1 (x, y) = 1 − x − y, ψ2 (x, y) = x, en
ψ3 (x, y) = y.
(40)
De lineaire interpolant van f ∈ C 0 (K) neemt ten opzichte van deze basis de vorm
L1 f = f (0)ψ1 + f (e1 )ψ2 + f (e2 )ψ3
(41)
aan, wat laat zien dat de coördinaten van een functie uit P 1 (K) ten opzichte van deze basis
gelijk zijn aan de waarden van die functie in de hoekpunten.
4.2
De ruimte S01 (T ) met T een triangulatie van Ω ⊂ R2
Laat Ω ⊂ R2 een polygon zijn, en T = {Tk }m
k=1 een partitie van Ω zijn in m gesloten
driehoeken Tk , zodanig dat de doorsnede van twee verschillende driehoeken óf een hoekpunt,
óf een complete zijde van beide driehoeken is. Een dergelijke partitie heet een conforme
triangulatie van Ω, en bestaat voor ieder polygon.
Figuur 6. Een triangulatie van [−1, 1]2 \ [0, 1] × [0, −1] en een v ∈ S01 (T )
9
Definition 4.1 (Ruimte S01 (T )) Een functie v op Ω is een continue stuksgewijs lineare
functie ten opzichte van T als v continu is op Ω en lineair op iedere K ∈ T . We schrijven
S01 (J ) = {v ∈ C 0 (Ω) | ∀K ∈ T , v|K ∈ P 1 (K)}
(42)
voor deze lineaire ruimte van continue stuksgewijs lineaire functies. Per definitie geldt dat
S01 (T ) ⊂ C 0 (T )
(43)
een lineaire deelruimte is van C 0 (T ).
Een functie v ∈ S01 (T ) wordt uniek bepaald door de zijn waarden in de hoekpunten V ⊂ R2
van de driehoeken uit de triangulatie. Veronderstel dat het aantal hoekpunten n + 1 is, en
noteer ze als x0 , . . . , xn .
Definition 4.2 (Nodale basis) Voor gegeven hoekpunt xj ∈ V laat vj het unieke element
uit S01 (T ) zijn dat waarde één heeft in xj en waarde nul in alle xi ∈ V met i 6= j. De collectie
B = {v0 , . . . , vn } vormt een basis voor S01 (T ), genaamd de nodale basis.
Figuur 6. Een nodale basisfunctie van twee kanten bekeken.
De functies v0 , . . . , vn zijn lineair onafhankelijk. Immers, voor gegeven j is vj de enige functie
uit B die ongelijk aan nul is in xj . In het bijzonder is vj dus geen lineaire combinatie van de
andere elementen uit B. We zien ook onmiddellijk dat
v = α0 v0 + · · · + αn vn
⇔
αj = v(xj ) voor alle j ∈ {0, . . . , n}
(44)
voor iedere functie v uit S01 (T ). Oftewel, de coordinaten van v the opzichte van de nodale
basis zijn gelijk aan de waarden van v in de punten xj .
4.3
De orthogonale projectie P : C 0 (Ω) → S01 (T )
De loodrechte projectie P f van een gegeven f ∈ C 0 (Ω) op de deelruimte S01 (T ) ⊂ C 0 (Ω) is
per definitie de functie P f ∈ S01 (T ) waarvoor geldt dat f −P f loodrecht staat op alle functies
v ∈ S01 (T ). Het standaard inproduct op C 0 (Ω) wordt hierbij gegeven door
Z
(f, g) =
f (x, y)g(x, y)dxdy.
(45)
Ω
10
Laat B de nodale basis voor S01 (T ) zijn. Er geldt
P f = α0 v0 + · · · + αn vn
(46)
voor zekere coördinaten α0 , . . . , αn van P f ten opzichte van B die kunnen worden bepaald
uit de n + 1 orthogonaliteitsrelaties f − P f ⊥ vj voor j ∈ {0, . . . , n},
f − P f ⊥ vj ⇔ f − (α0 v0 + · · · + αn vn ) ⊥ vj ⇔ (f, vj ) = (α0 v0 + · · · + αn vn , vj )


α0


⇔ (v0 , vj ) . . . (vn , vj )  ...  = (f, vj ).
(47)
αn
Deze n + 1 lineaire relaties in α0 , . . . , αn laten zich schrijven als het volgende matrix-vector
stelsel,


 

(v0 , v0 ) . . . (vn , v0 )
α0
(f, v0 )

  ..  

..
..
..
..
(48)

 .  = 
,
.
.
.
.
(f, vn )
(v0 , vn ) . . . (vn , vn )
αn
waaruit α0 , . . . , αn kunnen worden opgelost zodra f en T en B bekend zijn, en dus ieder van
de getallen in de matrix en in de rechterlidvector kan worden uitgerekend. Merk nogmaals op
dat
(P f )(xj ) = (α0 v0 + · · · + αn vn )(xj ) = αj ,
(49)
oftewel, P f is de continue stuksgewijs lineaire functie die waarde αj heeft in xj . Zodra het
stelsel (8) is opgelost, kan dus relatief eenvoudig de grafiek van P f getekend worden.
4.4
Elementsgewijze assemblage van de massa-matrix
Een belangrijke observatie is dat elk inproduct tussen basisfuncties de som is van integralen
over elk van de m driehoeken T ∈ T .
Z
m
X
(vi , vj )Tk waarbij (vi , vj )Tk =
vi (x, y)vj (x, y)dxdy.
(50)
(vi , vj ) =
Tk
k=1
Dus M kan worden geschreven als

(v0 , v0 )Tk

..
M=
Mk =

.
k=1
k=1
(v0 , vn )Tk
m
X
m
X
...
..
.
...

(vn , v0 )Tk

..
.
.
(vn , vn )Tk
(51)
Merk op dat op een driehoek Tk met hoekpunten xp , xq , xr ∈ R2 alleen de nodale basisfuncties
vp , vq en vr niet identiek nul zijn. Dus heeft iedere matrix Mk slechts 3 × 3 entries die ongelijk
aan nul zijn, namelijk, de negen getallen in de matrix Ek gedefinieerd door


(vp , vp )Tk (vp , vq )Tk (vp , vr )Tk
(52)
Ek =  (vq , vp )Tk (vq , vq )Tk (vq , vr )Tk 
(vr , vp )Tk (vr , vq )Tk (vr , vr )Tk
Echter, in belangrijke tegenstelling tot het ééndimensionale geval staan deze negen getallen
in het algemeen niet op opéénvolgende posities in de matrix Mk , maar op de posities (i, j)
met i, j ∈ {p, q, r}. Dit heeft tot gevolg dat de niet-nul elementen in de matrices bijvoorbeeld
gedisribueerd kunnen zijn als in Figuur 7.
11
Figuur 7. Niet-nul structuur van drie matrices Ek behorende bij drie driehoeken.
4.5
Affiene transformatie van integralen
Gegeven een driehoek Tk met hoekpunten xp , xq en xr in R2 en de drie beperkingen tot Tk
van de drie nodale basisfuncties vp , vq en vr die op Tk niet identiek nul zijn, zien we dat deze,
net als in het ééndimensionale geval, affiene transformaties zijn van de functies ψ1 , ψ2 en ψ3
gedefinieerd op de referentie-driehoek K̂ in (40), waarbij de affiene transformatie Fk gegeven
wordt door
x
x
waarbij Bk = xq − xp | xr − xp ,
(53)
Fk : K̂ → Tk :
7→ xp + Bk
y
y
de matrix met kolommen xq − xp en xr − xp . We zien dat Fk de oorsprong afbeeldt op xp en
e1 op xq en e2 op xr , en dat
vp = ψ1 ◦ Fk−1 , vq = ψ2 ◦ Fk−1 en
vr = ψ3 ◦ Fk−1 .
(54)
We bewijzen nu het twee-dimensionale analogon van Lemma 3.1 met behulp van de substitutiestelling voor integratie in twee variabelen.
Lemma 4.3 Laat K, T ⊂ R2 driehoeken zijn en veronderstel dat F : K → T een affiene
inverteerbare afbeelding is met Jacobiaan B. Voor gegeven f ∈ C 0 (T ), definieer
fˆ = f ◦ F ∈ C 0 (K).
(55)
Dan geldt voor iedere f, g ∈ C 0 (T ) dat
(f, g)T = | det(B)|((fˆ, ĝ)K .
(56)
Bewijs. Gebruik makend van de substitutie F (u, v) = (x, y) en F (I) = K vinden we dat
Z
Z
(f, g)T =
f (x, y)g(x, y)dxdy =
fˆ F −1 (x, y) ĝ F −1 (x, y) dxdy
T
F (K)
Z
=
fˆ(u, v)ĝ(u, v)| det(B)|dudv = | det(B)|(fˆ, ĝ)K ,
K
en dit bewijst meteen de bewering.
.
12
Gewapend met dit resultaat vinden we onmiddellijk dat de matrix Ek als volgt kan worden
uitgerekend in termen van de onderlinge inproducten van de functies ψ1 , ψ2 en ψ3 op de
referentie-driehoek K̂,
Ek = | det(Bk )|EM ,
(57)
waarbij



(ψ1 , ψ1 ) (ψ2 , ψ1 ) (ψ3 , ψ1 )
2 1 1
1
 1 2 1 .
=  (ψ1 , ψ2 ) (ψ2 , ψ2 ) (ψ3 , ψ2 )  =
24
(ψ1 , ψ3 ) (ψ2 , ψ3 ) (ψ3 , ψ3 )
1 1 2

EM
(58)
Deze laatste gelijkheid kan relatief eenvoudig met de hand of met behulp van Mathematica
worden geverifieerd.
4.6
Matlab code voor assemblage van de massa matrix
In tegenstelling to het ééndimensionale geval is een triangulatie niet simpelweg op te geven als
een lijst van knooppunten in R2 . Ook moet worden aangegeven welke hoekpunten xp , xq , xr
een gegeven driehoek Tk heeft. We doen dit als volgt. Beschouw de triangulatie in Figuur 8.
Figuur 8. Een triangulatie van [−1, 1]2 \ [0, 1] × [0, −1]
Deze triangulatie kan worden gerepresenteerd middels twee matrices N en T. De j-de kolom
van N bevat de coördinaten van knooppunt xj , en in de k-de kolom van T staan de nummers
van de hoekpunten van de driehoek Tk .
N = [ 0 1 1 0 -1 -1 -1 0 ;
0 0 1 1 1 0 -1 -1];
T = [1 1 1 4 1 1 ;
7 6 4 5 3 2 ;
8 7 6 6 4 3];
Door nu van links naar rechts over de kolommen van T te loopen, kunnen we van iedere
driehoek zowel de nummers als de coördinaten van de hoekpunten vinden. Bijvoorbeeld,
v = T(:,3)
C = N(:,v)
13
maakt eerst een vector v van lengte drie met daarin de getallen 1, 4, 6. Dat betekent dus dat
driehoek 3 hoekpunten heeft met nummers 1, 4, 6. Vervolgens wordt een matrix C bepaald
door de eerste, vierde, en zesde kolom van N naast elkaar te zetten. Dus, C is een matrix
met twee rijen en drie kolommen. Iedere kolom bevat de coördinaten van een hoekpunt van
driehoek 3.
Merk vervolgens op dat C voldoende informatie bevat om de Jacobiaan van de affiene transformatie van de referentie-driehoek naar driehoek 3 te berekenen, en dat v precies de indices
van M3 bevat waar de negen elementen uit de matrix E3 bij opgeteld moeten worden. Dit
levert de volgende functie op:
function M = AssembleTwoD(N,T)
n = size(N,2);
M = zeros(n,n);
EM = [2 1 1 ; 1 2 1 ; 1 1 2]/24;
for v = T
C = N(:,v);
B = C(:,[2 3])-C(:,[1 1]);
M(v,v) = M(v,v) + abs(det(B))*EM;
end
Deze bijzonder compacte functie maakt, voor een gegeven triangulatie T in N en T de massamatrix aan die behoort bij loodrechte projectie op S01 (T ).
14
Download