A Poisson-egyenletre alkalmazott multigrid mo dszer

Hasonló dokumentumok
Konjugált gradiens módszer

Gauss-Seidel iteráció

Tartalomjegyzék. Typotex Kiadó, 2010

Explicit hibabecslés Maxwell-egyenletek numerikus megoldásához

Végeselem modellezés alapjai 1. óra

3. Lineáris differenciálegyenletek

I. Fejezetek a klasszikus analízisből 3

Differenciálegyenletek numerikus megoldása

Feladatok a Gazdasági matematika II. tárgy gyakorlataihoz

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Bevezetés az algebrába 2 Differencia- és differenciálegyenlet-rendszerek

GPK M1 (BME) Interpoláció / 16

Numerikus módszerek beugró kérdések

Mátrixhatvány-vektor szorzatok hatékony számítása

LNM folytonos Az interpoláció Lagrange interpoláció. Lineáris algebra numerikus módszerei

Vektorok, mátrixok, lineáris egyenletrendszerek

Vektorterek. =a gyakorlatokon megoldásra ajánlott

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

Lineáris algebra numerikus módszerei

Hatványsorok, Fourier sorok

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Felügyelt önálló tanulás - Analízis III.

1.9. B - SPLINEOK B - SPLINEOK EGZISZTENCIÁJA. numerikus analízis ii. 34. [ a, b] - n legfeljebb n darab gyöke lehet. = r (m 1) n = r m + n 1

Numerikus módszerek 1.

Saj at ert ek-probl em ak febru ar 26.

Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján

Differenciálegyenlet rendszerek

Determinánsok. A determináns fogalma olyan algebrai segédeszköz, amellyel. szolgáltat az előbbi kérdésekre, bár ez nem mindig hatékony.

Numerikus módszerek 1.

Bevezetés az algebrába 2

1 Lebegőpontos számábrázolás

Diszkrét matematika II., 8. előadás. Vektorterek

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

Utolsó el adás. Wettl Ferenc BME Algebra Tanszék, Wettl Ferenc (BME) Utolsó el adás / 20

Numerikus módszerek I. zárthelyi dolgozat (2017/18. I., A. csoport) Megoldások

3. előadás Stabilitás

Mátrixok 2017 Mátrixok

15. LINEÁRIS EGYENLETRENDSZEREK

valós számot tartalmaz, mert az ilyen részhalmazon nem azonosság.

λx f 1 (x) e λx f 2 (x) λe λx f 2 (x) + e λx f 2(x) e λx f 2 (x) Hasonlóan általában is elérhető sorműveletekkel, hogy csak f (j)

Eddig csak a polinom x-ben felvett értékét kerestük

Ipari matematika 2. gyakorlófeladatok

3. Fuzzy aritmetika. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

MÉSZÁROS JÓZSEFNÉ, NUMERIKUS MÓDSZEREK

Numerikus integrálás április 20.

NUMERIKUS MÓDSZEREK FARAGÓ ISTVÁN HORVÁTH RÓBERT. Ismertet Tartalomjegyzék Pályázati támogatás Gondozó

Példa: Tartó lehajlásfüggvényének meghatározása a Rayleigh Ritz-féle módszer segítségével

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Optimalizálás alapfeladata Legmeredekebb lejtő Lagrange függvény Log-barrier módszer Büntetőfüggvény módszer 2017/

Numerikus módszerek 1.

Norma Determináns, inverz Kondíciószám Direkt és inverz hibák Lin. egyenletrendszerek A Gauss-módszer. Lineáris algebra numerikus módszerei

Fraktálok. Kontrakciók Affin leképezések. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék. TARTALOMJEGYZÉK Kontrakciók Affin transzformációk

Lineáris egyenletrendszerek

Matematika (mesterképzés)

Differenciálegyenletek

DIFFERENCIÁLEGYENLETEK. BSc. Matematika II. BGRMA2HNND, BGRMA2HNNC

Nemlineáris programozás 2.

VEKTORTEREK I. VEKTORTÉR, ALTÉR, GENERÁTORRENDSZER október 15. Irodalom. További ajánlott feladatok

KOVÁCS BÉLA, MATEMATIKA II.

Numerikus integrálás

Differenciálegyenletek. Vajda István március 4.

1. Számsorok, hatványsorok, Taylor-sor, Fourier-sor

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Az Ampère-Maxwell-féle gerjesztési törvény

Sajátértékek és sajátvektorok. mf1n1a06- mf1n2a06 Csabai István

Parciális differenciálegyenletek numerikus módszerei számítógépes alkalmazásokkal Karátson, János Horváth, Róbert Izsák, Ferenc

Gauss-eliminációval, Cholesky felbontás, QR felbontás

2. (b) Hővezetési problémák. Utolsó módosítás: február25. Dr. Márkus Ferenc BME Fizika Tanszék

Gauss elimináció, LU felbontás

Matematika szigorlat június 17. Neptun kód:

Algebra es sz amelm elet 3 el oad as Nevezetes sz amelm eleti probl em ak Waldhauser Tam as 2014 oszi f el ev

Bevezetés az algebrába 2

BIOMATEMATIKA ELŐADÁS

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Normák, kondíciószám

DIFFERENCIÁLEGYENLETEK. BSc. Matematika II. BGRMA2HNND, BGRMA2HNNC

6. Előadás. Megyesi László: Lineáris algebra, oldal. 6. előadás Bázis, dimenzió

Parciális dierenciálegyenletek

Az impulzusnyomatékok általános elmélete

1.1. Vektorok és operátorok mátrix formában

A fontosabb definíciók

Numerikus integrálás április 18.

4. Laplace transzformáció és alkalmazása

A szimplex algoritmus

MODELLEK ÉS ALGORITMUSOK ELŐADÁS

Differenciálegyenletek numerikus integrálása április 9.

2. Hogyan számíthatjuk ki két komplex szám szorzatát, ha azok a+bi alakban, illetve trigonometrikus alakban vannak megadva?

9. Előadás. Megyesi László: Lineáris algebra, oldal. 9. előadás Mátrix inverze, Leontyev-modell

KOVÁCS BÉLA, MATEMATIKA I.

January 16, ψ( r, t) ψ( r, t) = 1 (1) ( ψ ( r,

NUMERIKUS MÓDSZEREK I. BEUGRÓ KÉRDÉSEK

PTE PMMFK Levelező-távoktatás, villamosmérnök szak

0-49 pont: elégtelen, pont: elégséges, pont: közepes, pont: jó, pont: jeles

Parciális differenciálegyenletek numerikus módszerei február 5.

A KroneckerCapelli-tételb l következik, hogy egy Bx = 0 homogén lineáris egyenletrendszernek

Véletlen jelenség: okok rendszere hozza létre - nem ismerhetjük mind, ezért sztochasztikus.

Mátrix-exponens, Laplace transzformáció

Átírás:

A Poisson-egyenletre alkalmazott multigrid mo dszer Szakdolgozat I rta: Klimaj Bettina Matematika BSc Alkalmazott matematikus szakira ny Te mavezeto : Dr. Ga spa r Csaba egyetemi tana r Numerikus Analı zis Tansze k Eo tvo s Lora nd Tudoma nyegyetem Termeszettudoma nyi Kar 2012

Köszönetnyilvánítás Szeretnék köszönetet mondani témavezetőmnek, Gáspár Csabának, amiért felkeltette érdeklődésemet a téma iránt, hasznos tanácsokkal, észrevételekkel és segédanyagokkal látott el, és hogy kérdéseimmel bármikor bizalommal fordulhattam hozzá. Köszönettel tartozom a családomnak, akiktől rengeteg támogatást és biztatást kaptam. Végül szeretném megköszönni Herczeg Bonifácnak, hogy matematikai hozzáértésével segítette a munkámat, a rengeteg türelmet, és hogy mindig mindenben mellettem állt. 2

Tartalomjegyzék Bevezetés 5 1. Parciális differenciálegyenletek és megoldási módszereik 7 1.1. A parciális differenciálegyenletek fogalma, osztályozása........ 7 1.2. Fizikai példák elliptikus egyenletekre és peremfeltételekre (3D-ben). 9 1.3. Numerikus megoldási módszerek..................... 13 1.3.1. Véges differencia módszer.................... 13 1.3.2. Végeselem-módszer........................ 16 2. A multigrid módszer 18 2.1. Diszkretizáció............................... 18 2.2. A módszer alapötlete........................... 19 2.3. Javítás durvább rácson.......................... 20 2.4. A simító iterációk és simító tulajdonságaik............... 24 2.5. Kétrácsos módszer............................ 28 2.6. A multigrid ciklus............................. 30 2.7. A teljes multigrid módszer........................ 32 3. A multigrid módszer implementálása MATLAB-ban 36 3.1. Multigrid program............................ 36 3.2. A teljes multigrid módszer hatékonyságának vizsgálata........ 38 3.3. A kaszkád módszer megvalósítása.................... 42 3.4. Az FMG és a Seidel-iteráció konvergenciasebességének összehasonlítása 43 Összefoglalás 48 Függelék 49 Irodalomjegyzék 61 3

Ábrák jegyzéke 2.1. Javítás durva rácson........................... 23 2.2. M l iterációs mátrix sajátértékei µh l függvényében........... 27 2.3. Kétrácsos módszer............................ 29 2.4. Egy multigrid iterációs lépés az L l u l = f l (l 1) megoldására.... 33 3.1. A közelítő megoldás hibája és a kiszámításához szükséges idő a szintek függvényében............................... 39 3.2. A közelítések hibájának csökkenése - 2. tesztfüggvény (l=3, 4).... 40 3.3. A közelítések hibájának csökkenése - 2. tesztfüggvény (l=5, 6).... 40 3.4. Első tesztfeladat - simító iteráció nélkül: mgteszt(6,0,0,1,1)...... 41 3.5. Második tesztfeladat - simitó iteráció nélkül: mgteszt(6,0,0,1,2)... 41 3.6. A multigrid és a kaszkád módszer által nyert közelítő megoldások hibája és a kiszámításukhoz szükséges idő a szintek függvényében.. 43 3.7. A Seidel- és a multigrid módszer által nyert közelítő megoldások lényegében azonos hibája és a kiszámításukhoz szükséges idő a szintek függvényében............................... 44 3.8. A Seidel- és a multigrid módszer által nyert közelítő megoldások hibája nagyjából azonos művelet esetén, a szintek függvényében... 44 3.9. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=2) 45 3.10. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=3) 46 3.11. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=4) 46 3.12. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=5) 47 4

Bevezetés A diszkrét elliptikus peremérték-problémák megoldására szolgáló iteratív multigrid algoritmus a következőkön alapszik: A klasszikus iterációk segítségével elérhető, hogy egy tetszőleges közelítés hibájának magas frekvenciás komponensei kellően kicsik legyenek, ebből adódóan lehetőség nyílik az adott közelítés javítására a hiba egy durvább rácson számított közelítésével. Ezen ötlet rekurzív módon történő alkalmazása egyre durvább és durvább rácsokon egy aszimptotikusan optimális, azaz a diszkrét ismeretlenszámmal arányos műveletigényű iterációs eljárást eredményez. A multigrid módszer vizsgálatában elért első eredmények Fedorenko nevéhez fűződnek, aki az egységnégyzeten értelmezett Poisson-egyenleten tanulmányozta a módszer konvergenciáját. Utána Bakhvalov vizsgálta a módszer viselkedését másodrű, nem állandó együtthatós elliptikus peremérték-problémák esetében. Az algoritmus gyakorlatban mutatott hatékonyságának felismerése Achi Brandt [1] és a tőle függetlenül alkotó Hackbush [5, 6] érdeme. Megemlítő, hogy a multigrid eljárás számos egyéb területen használatos, például nem-lineáris peremérték-problémák, sajátérték-problémák, bifurkációs problémák, parabolikus és hiperbolikus problémák, sőt integrálegyenletek megoldására is alkalmazzák. A dolgozat első fejezetében áttekintjük, hogy mik is azok a parciális differenciálegyenletek, és hogy milyen gyakorlati alkalmazások ösztönözték a bevezetésüket. Konkrét fizikai példákat láthatunk, melyeket a Poisson-egyenlet (egy általánosabb változata) ír le, mely egy speciális elliptikus típusú parciális differenciálegyenlet. A szakdolgozat fő célja egy ezen egyenlet közelítő megoldásának megkeresésére szolgáló algoritmus bemutatása. Ennek a numerikus problémának a megoldásához áttekintjük a véges differenciák módszerét, melynek segítségével diszkretizálhatjuk a Poisson-egyenletet, azaz helyette egy véges sok ismeretlent tartalmazó közelítőegyenlet megoldására szorítkozunk. A második fejezetben betekintést nyerünk a multigrid módszer rejtelmeibe. Részletesen áttekintjük az algoritmus építőköveit, alapegységeit, melyek tehát a hiba- 5

simító iterációk, a közelítés korrekciójának kiszámítása egy durvább hálón, valamint a módszer önmeghívó mivolta. Ennek egy még hatékonyabb továbbfejlesztése a már nem iteratív teljes multigrid módszer, melynek alapötlete az, hogy az egyre jobb közelítések eléréséhez multigrid algoritmust alkalmazunk az előző közelítést használva az iteráció kezdeti közelítésének. A multigrid módszer elméletének megismerése után a harmadik fejezetben a gyakorlatban való alkalmazására láthatunk példát. Három példaprogram hivatott szemléltetni az algoritmus rkívül gyors konvergenciáját a Poisson-egyenlet megoldása során. Az elsőnél megfigyelhetjük, hogy egyre finomabb hálók alkalmazása esetén hogy csökken az egyre javuló közelítés hibája amellett, hogy már a másodperc töredéke alatt is szert tehetünk egy elég jó közelítő megoldásra. A klasszikus Seideliterációval szembeállítva a módszer hatékonysága még szemléletesebb, melyet a második és a harmadik program segítségével követhetünk nyomon. Előbbiben azt mérjük, mennyi időre van szüksége a Seidel-iterációnak olyan pontosságú közelítés előállításához, mint amilyet a multigrid módszer szolgáltat, utóbbiban pedig megfigyeljük, hogy nagyjából azonos művelet végrehajtásával melyik módszer mennyire pontos közelítést eredményez. Végül a negyedik program az egyszerű kaszkád algoritmus és a jóval bonyolultabb teljes multigrid módszer gyorsaságát és pontosságát hasonlítja össze. A megfelelő programkódok a függelékben olvashatók. 6

1. fejezet Parciális differenciálegyenletek és megoldási módszereik 1.1. A parciális differenciálegyenletek fogalma, osztályozása. Vegyünk egy Ω R n tartományt (azaz összefüggő, nyílt halmazt), melyre n 2. Az α = (α 1, α 2,..., α n ) úgynevezett multiindexekre (α j 0 egész) vezessük be a következő jelöléseket: α := n j=1 α j és α u := α 1 1 α 2 2... n αn u, tetszőleges u n-változós függvényre. Legyen N azon multiindexek száma, melyek kielégítik az α m egyenlőtlenséget, ahol m N adott szám. Tekintsünk egy G R N tartományt és egy F : Ω G R adott függvényt. Keressünk olyan u : Ω R m-szer folytonosan differenciálható függvényt, melyre F (x, u(x), 1 u(x),..., α u(x),...) = 0 teljesül minden x Ω és α m esetén, azaz fennáll, hogy F (id, u, 1 u,..., α u,...) = 0. (1.1) Az (1.1)-et parciális differenciálegyenletnek, az m számot pedig a rjének nevezzük. A egyik legfontosabb speciális típusú egyenlet a főrészében lineáris parciális differenciálegyenlet, mely általános alakja a következő: α =m a α α u = f (id, u, 1 u,..., β u,...), ahol a α, f : Ω R adott függvények és β m 1. f = 0 esetén homogén, egyébként inhomogén egyenletről beszélünk. Amennyiben a α állandó, a differenciál- 7

egyenletet állandó együtthatósnak nevezzük. (A parciális differenciálegyenletekről, illetve ezek további típusairól részletesebb anyag [2]-ben található.) A másodrű főrészükben lineáris parciális differenciálegyenletek a következő alakban írhatók: n a jk j k u = g (id, u, 1 u,..., n u), j,k=1 ahol a jk : Ω R, g : Ω G R adott függvények (itt G R n+1 tartomány). a jk együtthatókról feltehető, hogy valósak és a jk = a kj. Egy x 0 Ω rögzített pontban tekintsük az A valós szimmetrikus együtthatómátrixot: A := A(x 0 ) = [a jk (x 0 )] n j,k=1. Ismeretes, hogy ezen mátrix minden sajátértéke valós. Jelölje n +, n, illetve n 0 az A mátrix pozitív, negatív, illetve nullával egyenlő sajátértékeinek (multiplicitással vett) számát. Ekkor n + + n + n 0 = n. 1.1.1. Definíció. Azt mondjuk, hogy a főrészében lineáris másodrű parciális differenciálegyenlet az Ω tartományon 1. elliptikus, ha n + = n vagy n = n, 2. hiperbolikus, ha n + = 1 és n = n 1 vagy n + = n 1 és n = 1, 3. parabolikus, ha n 0 = 1 és n + = n 1 vagy n = n 1, és a megfelelő feltétel a tartomány minden pontjában teljesül. Példák: n 1. a u := j 2 u = 0 Laplace-egyenlet elliptikus j=1 2. a 0u 2 3. a 0 u n j 2 u = 0 egyenlet hiperbolikus j=1 n j 2 u = 0 egyenlet parabolikus j=1 Számunkra a későbbiek során a Laplace-egyenlet inhomogén általánosítása, azaz a u = n j 2 u = f, j=1 úgynevezett Poisson-egyenlet lesz fontos annak is az egy- illetve kétdimenziós változata, mely tehát egy elliptikus típusú másodrű lineáris parciális differenciálegyenlet. 8

1.2. Fizikai példák elliptikus egyenletekre és peremfeltételekre (3D-ben) Nézzünk meg most néhány a valós életből vett fizikai folyamatot, melyek leírása az elliptikus parciális differenciálegyenletek, azon belül is a Poisson-egyenlet egy általánosabb változatának segítségével történik. Mivel egy parciális differenciálegyenletnek általában végtelen sok megoldása van, a szóbanforgó jelenségek egyértelmű leírásához szükséges megadnunk bizonyos mellékfeltételeket is. A továbbiakban néhány példán keresztül áttekintjük, hogyan vezethet valamely fizikai folyamat parciális differenciálegyenletre, és hogy milyen mellékfeltételeket szükséges előírnunk a megoldhatóság érdekében. Stacionárius hővezetés Legyen Ω R 3 adott tartomány Γ határral, melyben stacionárius hővezetés játszódik le, azaz a hőmérsékleteloszlás az időtől független. Jelölje u(x) az időben állandósult hőmérsékletet (mértékegysége: K (kelvin)) az x Ω pontban. Ekkor az u függvény az Ω tartományban kielégíti a 3 α u = α j 2 u = f (1.2) j=1 egyenletet, ahol f : Ω R függvény az Ω-ban lévő hőforrások intenzitását mutatja (mértékegysége: W/m 3 (watt/m 3 )), α : Ω R pedig az Ω egyes pontjaihoz tartozó hődiffúziós tényezőket adja meg (mértékegysége: W/mK (watt/m kelvin)). Integrálva az egyenletünket az Ω tartományon, alkalmazva az Ω div v dx = Γ v n ds Gauss-féle divergencia-tételt (ahol n a Γ perem Ω-ból kifelé mutató normálisa), valamint felhasználva a u = div( u) és u n = u n összefüggéseket az α u Γ n Ω ds = f dx egyenletet nyerjük, melyet átrezve Γ α u n Ω ds + f dx = 0 9

adódik. Ennek fizikai jelentése az, hogy az Ω tartományban a hőforrások keltette energia és a peremen (időegység alatt) beáramló energia összege megegyezik a peremen keresztül kiáramló hőenergiával (energiamegmaradás). Speciálisan, ha a tartományban nincsenek hőforrások (f 0), akkor azt kapjuk, hogy a peremen keresztül időegység alatt a tartományba beáramló illetve az onnan kiáramló energia megegyezik. Ahhoz, hogy az Ω tartomány hőmérsékleteloszlását egyértelműen meg tudjuk határozni, ismernünk kell Ω határán az alábbi peremfeltételek egyikét: 1. peremfeltétel: u Γ = ϕ 2. peremfeltétel: α u n ( 3. peremfeltétel: β Γ = ϕ α u n ) ( n a Γ perem Ω-ból kifelé mutató normálisa) Γ + δu Γ = ϕ (β, δ adott függvények Γ peremen) Így kapjuk az általánosabb Poisson-egyenletre vonatkozó Dirichlet-feladatot ((1.2)+ +1. peremfeltétel), Neumann-feladatot ((1.2)+2. peremfeltétel), valamint a harmadik típusú peremérték-feladatot ((1.2)+3. peremfeltétel). Ezen peremfeltételek fizikai jelentése: 1. Dirichlet-peremfeltétel: a tartomány peremén a hőmérséklet előírt 2. Neumann-peremfeltétel: a tartomány peremén az α u n mennyiség, vagyis az úgynevezett normális irányú hőáram-sűrűség (mértékegysége: W/m 2 ) előírt. (Speciálisan, ha ez zérus, az azt jelenti, hogy Ω hőszigetelt.) 3. Harmadik típusú, vagy Robin-peremfeltétel: a tartomány peremén a hőmérséklet és a hőáram-sűrűség egy lineáris kombinációja előírt. (Közelítőleg ilyen peremfeltétel érvényes, ha a testet egy rossz hővezetésű, de a test méreteihez képest vékony anyagba burkoljuk, és a hőmérséklet ennek a külső felületén lesz adott.) Stacionárius elektromos áram kiterjedt vezetőben Legyen Ω R 3 adott tartomány Γ határral, melyben stacionárius (időtől független) áramterjedés folyik. Jelölje u(x) az (időben állandósult) elektromos potenciált (mértékegysége: V (volt)) az x Ω pontban. Ekkor az u függvény az Ω tartományban kielégíti a α u = α 10 3 j 2 u = f j=1

egyenletet, ahol f : Ω R függvény az Ω-ban lévő áramforrások keltette áramsűrűséget mutatja (mértékegysége: A/m 3 (amper/m 3 )), α : Ω R pedig Ω pontjainak fajlagos vezetőképességét adja meg (mértékegysége: 1/mΩ ( 1/m ohm )). Vegyük a múltkori meggondolásnak megfelelően nyert: Γ α u n Ω ds + f dx = 0 egyenletet. Ennek az a fizikai jelentése, hogy az Ω tartományban az áramforrások keltette áram valamint a peremen belépő áram összege megegyezik a peremen kilépő árammal, vagyis az időegység alatt átáramló töltésmennyiséggel (töltésmegmaradás). Speciálisan, ha a tartományban nincsenek áramforrások (f 0), akkor a peremen a tartományba belépő illetve az onnan kilépő áramok megegyeznek. A peremérték-feladatok megadása ugyanúgy történik, mint az előző példa esetében. Ahhoz, hogy az Ω tartomány potenciáleloszlását egyértelműen meg tudjuk határozni, ismernünk kell Ω határán valamelyik peremfeltételt. Nézzük meg ennél a példánál milyen fizikai jelentések bújnak meg a peremfeltételek mögött: 1. Dirichlet-peremfeltétel: a tartomány peremén az elektromos potenciál előírt 2. Neumann-peremfeltétel: a tartomány peremén az α u n mennyiség, vagyis a normális irányú elektromos áramsűrűség (mértékegysége: A/m 2 ) előírt. (Speciálisan, ha ez zérus, az azt jelenti, hogy Ω elektromosan szigetelt.) 3. Harmadik típusú, vagy Robin-peremfeltétel: a tartomány peremén az elektromos potenciál és az áramsűrűség egy lineáris kombinációja előírt. (Közelítőleg ilyen peremfeltétel érvényes, ha a testet egy elektromosan rossz vezetőképességű, de a test méreteihez képest vékony anyagba burkoljuk, és az elektromos potenciál ennek a külső felületén lesz adott.) Stacionárius szivárgás porózus közegen keresztül Legyen Ω R 3 adott tartomány (porózus közeg) Γ határral, melyben stacionárius (időtől független) szivárgás történik. Jelölje u(x) a folyadék (időben állandósult) szivárgási potenciálját (mértékegysége: m) az x Ω pontban. Ezen u függvényre érvényes az u = h + p γ 11

összefüggés, ahol h egy rögzített alapszinttől mért geodetikus magasság, p jelöli a nyomást, γ pedig a fajsúlyt. Ekkor az u függvény az Ω tartományban kielégíti a 3 α u = α j 2 u = f j=1 egyenletet, ahol f : Ω R függvény az Ω-ban lévő belső vízforrások intenzitását mutatja (azaz, hogy a vízforrás egységnyi térfogatban hány m 3 /sec összhozamú, mértékegysége ennélfogva: (m 3 /sec)/m 3 = 1/sec), α : Ω R pedig az Ω egyes pontjaihoz tartozó szivárgási tényezőket adja meg (mértékegysége: m/sec), továbbá α u a szivárgási sebességet jelenti. Az α u Γ n Ω ds + f dx = 0 egyenlet jelen esetben is egy fontos fizikai jelenséget ír le. Jelentése az, hogy az Ω tartományban a belső vízforrások összhozama és a peremen belépő vízhozam összege megegyezik a peremen kilépő vízhozammal, vagyis az időegység alatt átáramló víztérfogat-mennyiséggel (tömegmegmaradás). Speciálisan, ha a tartományban nincsenek vízforrások (f 0), akkor a peremen a tartományba belépő illetve az onnan kilépő vízhozamok megegyeznek. Nézzük meg ebben az esetben milyen fizikai tartalommal bírnak a peremfeltételek: 1. Dirichlet-peremfeltétel: a tartomány peremén a szivárgási potenciál előírt. (Ilyen peremfeltétel érvényes, ha a perem szabad víztérrel (folyó, tó) érintkezik, ekkor a szivárgási potenciál a szabad víztér felszínének geodetikus magasságával egyezik meg.) 2. Neumann-peremfeltétel: a tartomány peremén az α u n mennyiség, vagyis a normális irányú szivárgási sebességkomponens (mértékegysége: m/sec) előírt. (Speciálisan, ha ez zérus, az azt jelenti, hogy Ω szivárgási tartományt vízzáró anyag határolja.) 3. Harmadik típusú, vagy Robin-peremfeltétel: a tartomány peremén a szivárgási potenciál és az normális irányú sebességkomponens egy lineáris kombinációja előírt. (Közelítőleg ilyen peremfeltétel érvényes, ha a szivárgási tartományt egy majdnem vízzáró, de a tartomány méreteihez képest vékony réteg borítja, és a szivárgási potenciál ennek a külső felületén lesz adott. Ez a helyzet például folyók vagy tavak fenekén, ha az idők folyamán leülepedett finomszemcsés anyag részben eltömíti a talaj pórusait, melyeken keresztül a szivárgás végbemegy. Ez a jelenség a partközeli kutak működésére kedvezőtlen hatással van, csökkenti a kutak vízhozamát.) 12

További általános megjegyzések: Előfordulhat sőt, általában ez a jellemző hogy Ω határán egyszerre több, különböző típusú peremfeltétel is adott, azaz Γ diszjunkt módon felbontható véges sok peremszakaszra, melyeken más-más típusú peremfeltételt (de csak egyfélét) írunk elő. Ilyenkor kevert peremfeltételről beszélünk. Amennyiben a vizsgált fizikai folyamatban az anyagra jellemző α tényező nem konstans, hanem a helytől függ, a folyamatot az α u = f egyenlet helyett a bonyolultabb div(α u) = f egyenlet írja le. Ha α konstans, akkor természetesen beolvasztható a jobb oldali függvénybe, így a formailag egyszerűbb u = f Poisson-egyenletet nyerjük. Hangsúlyozzuk azonban, hogy ekkor a megoldásnak, a jobb oldalnak valamint a peremfeltételeknek már nem a fentebb vázolt természetes fizikai jelentése van. 1.3. Numerikus megoldási módszerek Mint láttuk számos a gyakorlatban felmerülő probléma megoldása során parciális differenciálegyenletekbe ütközünk. Ezen egyenletek numerikus megoldása a diszkretizáció segítségével történik, amikoris a parciális differenciálegyenletet egy másik, véges sok ismeretlent tartalmazó egyenlettel közelítjük. Ilyenkor az értelmezési tartományt egy véges sok pontból álló hálóval helyettesítjük. A két legismertebb diszkretizációs technika a véges differencia módszer és a végeselem-módszer. A következő részben ezen módszerek rövid ismertetésére kerül sor (a részletekért lsd. [7]). 1.3.1. Véges differencia módszer A véges differencia módszer a parciális deriváltak lokális approximációján alapul. A közelítéseket a parciális deriváltak Taylor-sorba fejtett alakjából nyerjük. Egy adott u függvény x pontbeli elsőrű deriváltjának legegyszerűbb közelítése a következő: u u(x + h) u(x) (x). x h 13

Ha u négyszer folytonosan differenciálható x egy környezetében, akkor a Taylorformula felhasználásával u(x + h) = u(x) + h u h2 (x) + x 2 2 u h3 (x) + x2 6 3 u h4 (x) + x3 24 4 u x (ξ 1), (1.3) 4 illetve u(x h) = u(x) h u h2 (x) + x 2 2 u h3 (x) x2 6 3 u h4 (x) + x3 24 4 u x (ξ 2) (1.4) 4 adódik, ahol ξ 1 (x, x + h) és ξ 2 (x h, x). (1.3) átrezéséből u u(x + h) u(x) (x) = h x h 2 2 u x (x) + 2 O(h2 ) adódik, melyből az elsőrű derivált előbb látott közelítése ered. (1.3)-ból és (1.4)- ből alkalmazva a negyedrű parciális deriváltakra a középétéktételt a következő formulát nyerjük: ahol ξ 1 ξ ξ 2. 2 u u(x + h) 2u(x) + u(x h) (x) = h2 x2 h 2 12 4 u x (ξ), 4 Differenciaséma a Laplace-operátor közelítésére Vegyünk u kétváltozós függvény értelmezési tartományában egy téglalap alakú rácsot, melyben h 1 az x irányú, h 2 az y irányú rácsméret. Ha a másodrű derivált előbb ismertetett közelítését a Laplace operátorban szereplő 2 xu és 2 yu kifejezésekre alkalmazzuk, a következőt kapjuk eredményül: u(x, y) u(x+h 1, y) 2u(x, y)+u(x h 1, y) h 2 1 + u(x, y+h 2) 2u(x, y)+u(x, y h 2 ), h 2 2 Abban a speciális esetben, amikor h := h 1 = h 2, az előző közelítés a alábbi alakra egyszerűsödik: u(x, y) 1 [u(x + h, y) + u(x h, y) + u(x, y + h) + u(x, y h) 4u(x, y)], h2 melyet a Laplace operátor közönséges ötpontos approximációjának nevezünk. Ezen közelítés egyszerűsített jelölésére a következő stencil használatos: 1 1 4 1 1 14

Véges differencia módszer egydimenziós problémára Nézzük a következő egydimenziós peremérték-problémát: u (x) = f(x) x (0, 1), u(x) = 0 x {0, 1}. A [0, 1] intervallumot úgy diszkretizáljuk, hogy vesszük azon n + 2 pontját, melyekre x i = i h (i = 0,..., n + 1) és h = 1/(n + 1). Alkalmazzuk most a véges differenciák módszerét! Eszerint az u(x i ) pontok u i közelítéseit (i = 1,..., n) a u i 1 + 2u i u i+1 = h 2 f i (i = 1,..., n) rszer megoldásával nyerjük (ahol f i = f(x i ) és u 0 = u(x 0 ), u n+1 = u(x n+1 )). Mivel u 0 = u n+1 = 0, az eredeti probléma diszkretizásával és a peremfeltételek eliminálásával nyert lineáris rszer a következő: L h u h = f h, ahol L h = 1 h 2 2 1 1 2 1 1 2 1......... 1 2 1 1 2, u h = (u 1,..., u n ), f h = (f 1,..., f n ). Véges differencia módszer kétdimenziós problémára Vegyük az alábbi kétdimenziós peremérték-problémát: ( 2 ) u x + 2 u = f (Ω-ban), 2 y 2 u = 0 (Γ mentén), ahol Ω egy (0, A 1 ) (0, A 2 )-es téglalap és Γ a határa. Ω diszkretizálásával egy Ω h rácsot kapunk, melyre az x irányú rácsméret h 1, az y irányú h 2 (h := (h 1, h 2 )) és a rácsot (n 1 + 2) (n 2 + 2) pont alkotja, azaz Ω h = {(x, y) = (κ 1 h 1, κ 2 h 2 ) : κ j = 0,..., n j + 1, h j = A j n j + 1 (j = 1, 2)}, Nézzük most a h := h 1 = h 2 esetet, valamint legyen u h az ismeretlen vektor, melyet a belső rácspontokban felvett u(x, y) értékek közelítései alkotnak (a rácspontokat 15

balról jobbra, lentről felfele, sorfolytonosan szokás sorba rezni), f h pedig az f függvény belső rácspontokban felvett értékeiből álló oszlopvektor. Alkalmazzuk most a véges differencia módszert! Eszerint az u(x+h, y), u(x h, y), u(x, y+h), u(x, y h) típusú pontnégyesek u E, u W, u N, u S közelítéseit a u E + u W + u N + u S 4u C = h 2 f C típusú egyenletekből álló rszer megoldásával nyerjük. Mivel u a határon 0, az eredeti probléma diszkretizásával és a peremfeltételek eliminálásával nyert lineáris rszer a következő: L h u h = f h, ahol L h = 1 h 2 B I I B I......... I B I I B, B = 4 1 1 4 1 1 4 1......... 1 4 1 1 4. 1.3.2. Végeselem-módszer Vegyük a kétdimenziós Poisson-egyenletet Dirichlet-peremfeltétellel: u = f u = 0 (Ω-ban), (Γ-n), A végeselem-módszer megértéséhez szükségünk lesz a Green-formulára, mely szerint: Ω v u dx = v u dx + v u Ω Γ n ds. A fenti peremérték-probléma gyenge alakjának definiálásához vezessük be a következő jelöléseket: a(u, v) := (f, v) := Ω u v dx Ω fv dx. Szorozzuk meg az egyenletünk mindkét oldalát egy tetszőleges v H 1 0(Ω) tesztfüggvénnyel, majd integráljunk Ω-n. Ekkor azon függvényekre, melyek teljesítik a peremfeltételt, a Green-formula felhasználásával a(u, v) = ( u, v). 16

adódik. Mostmár megfogalmazhatjuk az eredeti probléma gyenge alakját: Keressük azt az u H 1 0(Ω) függvényt, melyre az a(u, v) = (f, v) minden v H 1 0(Ω) variációs egyenlet teljesül, ahol a(u, v) = ( u, v). Ezen u függvényt az eredeti peremérték-feladat gyenge megoldásának nevezzük (u egyértelmű). A végeselem módszer a gyenge megoldás egy u h közelítését állítja elő. Szükségünk lesz egy V h H0(Ω) 1 véges dimenziós altérre, melyen az u h közelítő megoldást keressük. Készítsük el Ω egy felbontását háromszögeléssel, és jelöljük Ω h -val a K j háromszögek uniójaként előálló tartományt. Ekkor V h altér a következő függvényekből épül fel: V h = {v : v Ωh folytonos, v Ωh = 0, v Kj lineáris j}. Továbbá az alábbi v i függvények V h egy bázisát alkotják: 1, ha x j = x i v i (x j ) = 0, ha x j x i, ahol x j pontok a háromszögelés csomópontjai. Ekkor u h ezen V h -beli bázisfüggvények lineáris kombinációjaként áll elő. Vagyis keressük azokat a c i együtthatókat, melyekre u h = i c i v i és a(u h, v) = (f, v) minden v V h teljesül, melyből egy lineáris egyenletrszer írható fel, melynek megoldására valamilyen numerikus megoldó módszert alkalmazunk. A hatékony numerikus problémamegoldáshoz egy megfelelően pontos diszkretizáció önmagában kevés, ezt még egy alkalmas megoldó algoritmussal is ki kell egészíteni. Elliptikus parciális differenciálegyenletek megoldására az egyik leggyorsabb ilyen algoritmus a multigrid módszer. Ez alapvetően a véges differencia módszerhez kapcsolódik, de alkalmazható a végeselem módszerrel kombinálva is, bár ennek megvalósítása komplikáltabb feladat. 17

2. fejezet A multigrid módszer 2.1. Diszkretizáció Egy lineáris peremérték-probléma a következő alakban írható fel: L Ω u = f Ω (x) (x Ω) L Γ u = f Γ (x) (x Γ). Itt Ω R n adott értelmezési tartomány Γ := Ω határral, L Ω lineáris differenciáloperátor Ω-n, L Γ lineáris operátor Γ-n, f Ω és f Γ adott függvények Ω-n és Γ-n, továbbá u = u(x) jelöli a peremérték-probléma megoldását. Az előző differenciálegyenlet és peremfeltétel diszkretizációjával nyert rszer: L Ω h u h = f Ω h (x) (x Ω h ) L Γ hu h = f Γ h (x) (x Γ h ). Itt h a rácsméret, u h a diszkrét megoldás, mely egy Ω h Γ h rácson értelmezett függvény, fh Ω és fh Γ rácsfüggvények (f Ω és f Γ diszkrét analógjai), valamint L Ω h és L Γ h rácsoperátorok, melyek rácsfüggvényeket rácsfüggvényekbe visznek. L Ω h -t differencia operátornak nevezzük. A peremfeltétel eliminálásával az előző rszer egyszerűbb alakba írható: L h u h = f h (Ω h -ban). (2.1) Ez egy rácsegyenlet, melyben u h és f h az Ω h rácson értelmezett függvények, továbbá L h : G(Ω h ) G(Ω h ) lineáris operátor, ahol G(Ω h ) jelöli az Ω h -n értelmezett rácsfüggvények lineáris terét. Amennyiben Ω téglalap alakú, vagyis Ω = (0, A 1 ) (0, A 2 ) R 2, jelölje G h := {(x, y) = (κ 1 h 1, κ 2 h 2 ) : (κ 1, κ 2 ) Z 2, h j := A j N j, N j N (j = 1, 2)}, a végtelen rácsot, ahol h := (h 1, h 2 ). Ekkor Ω h = Ω G h teljesül. 18

A Poisson-egyenlet diszkretizációja A legalapvetőbb példa peremérték-feladatra a kétdimenziós Poisson-egyenlet Dirichlet-peremfeltétellel, az egységnégyzeten. Ez a következőképpen néz ki: L Ω u := u = f Ω (x) (x Ω := (0, 1) 2 ) L Γ u := u = f Γ (x) (x Γ), ahol := 2 x + 2 y. Diszkretizáljuk az egyenletet és a peremfeltételt egy h-négyzetrácson a közönséges ötpontos approximáció segítségével. Ekkor a következő adódik a differenciaoperátorra: L Ω h = h = 1 1 h 2 1 4 1 1 Itt Ω h = Ω G h, G h := {(x, y) = (κ 1 h, κ 2 h) : κ Z 2, h = 1, N N}. A diszkrét N peremfeltétel eliminálásával (2.1)-nek megfelelő rácsegyenletet kapunk. h 2.2. A módszer alapötlete A következőkben rátérünk a multigrid módszer tárgyalására, melynek legnagyobb előnye, hogy segítségével egy N ismeretlenű, diszkrét elliptikus rszer közelítő megoldását O(N) művelettel megkaphatjuk, azaz a módszer nagyságr szerint optimális. Tekintsük át most ezen módszer alapötletét. A differenciálegyenlet és a peremfeltétel diszkretizációjával nyert egyenlet: L h u h = f h. Legyen az u h diszkrét megoldás tetszőleges közelítése u j h. Jelölje ezen j-edik közelítés hibáját: v j h := u h u j h, és a maradékot: d j h := f h L h u j h. Ekkor az eredetivel ekvivalens egyenletet kapunk (maradékegyenlet): L h v j h = dj h. Amennyiben v j h -t csak közelítőleg állítjuk elő (jelölje ezt ˆvj h ) egy olyan egyenletrszerből, melyet az eredeti feladat egy durvább rácson való diszkretizálásával nyerünk, kiszámítása a kevesebb ismeretlen miatt kevesebb műveletet igényel. Ekkor u j+1 h = u j h + ˆvj h, 19

javított megoldás már egy jobb közelítése u h -nak. Az eljárást iteratív módon ismételjük, a finom Ω h és a durva Ω H rácson dolgozva. Sőt, egyáltalán nem szükséges az L H ˆv j H = d j H egyenletet sem pontosan megoldani, Ω H -ról egy még durvább rácsra térhetünk át és így tovább, eljutva ezzel a többrácsos módszerhez. Ez a módszer még önmagában általában nem konvergens. Vezessük be a következő jelölést: n H :=dimg(ω H ) és n h :=dimg(ω h ). Rezzük az L h és L H mátrixok sajátvektorait a hozzájuk tartozó sajátértékek nagysága szerint növekvő sorrbe. Ekkor elmondható, hogy L H sajátvektorai közelítik L h első n H sajátvektorát, viszont az utolsó n h n H sajátvektorának nincsen megfeleltetése a durva rácson. Így, bár az alacsonyabb sorszámú sajátvektoroknak megfelelő megoldási komponensek Ω H -n gyorsabban előállíthatók, a magas sorszámú sajátvektorok számára nem szerezhető hasznos információ a durva rácson. Tehát az eljárás konvergenciájában csak akkor reménykedhetünk, ha a magas frekvenciájú sajátvektorokkal kapcsolatos megoldási komponensek lényegében már u j h -ben jelen vannak, azaz u h u j h-ből hiányoznak. Másképp fogalmazva, ha a j-edik közelítés hibája sima abban az értelemben, hogy lényegében nincs benne magas frekvenciájú sajátvektor. A későbbiekben megbizonyosodhatunk arról, hogy erre a problémára kielégítő megoldást jelentenek a simító iterációk. A módszer alapja tehát a két egymást kiegészítő művelet: 1. hiba közelítése durva rácson 2. simító iterációk finom rácson. 2.3. Javítás durvább rácson Az előző részben bemutatott iteráció lényege tehát az, hogy az eredetivel ekvivalens maradékegyenlet közelítő megoldását úgy kapjuk, hogy áttérünk egy durvább rácsra és az újonnan kapott rácsegyenletet oldjuk meg, mely jóval kevesebb műveletbe kerül. A maradékegyenlet közelítő megoldásával javítva az előző közelítést, az eredeti egyenletrszer u h megoldásának egy jobb közelítését kapjuk. Tehát az L h v j h = dj h egyenletről áttérünk a durva rácson diszkretizált L H ˆv j H = d j H 20

egyenletre, ahol az L H : G(Ω H ) G(Ω H ) operátor L h alkalmas közelítése a durvább rácson, valamint n H n h teljesül, ˆv j H és d j H pedig rácsfüggvények Ω H -n. A legfontosabb és leggyakrabban alkalmazott választás Ω H -ra az adott rácsméret megduplázásából adódik, azaz H := 2h választással. Szükségünk lesz két lineáris transzfer operátorra, melyek lehetővé teszik az áttérést a finom rácsról a durvábbra és fordítva: Ih H : G(Ω h ) G(Ω H ), IH h : G(Ω H ) G(Ω h ). I H h az úgynevezett restrikciós vagy leszűkítő operátor, melyre d j H := I H h d j h, és Ih H az interpolációs vagy másnéven prolongációs operátor, melyre ˆv j h := Ih H ˆv j H. Nézzünk most meg a leggyakrabban használatos restrikciós és prolongációs operátorokat egy-, illetve kétdimenziós peremérték-probléma esetén, H := 2h választással. Egy prolongációs operátort legegyszerűbben a lineáris interpoláció felhasználásával definiálhatunk. Vegyük először az egydimenziós esetet, amikoris a durva hálót n H belső pont és két határpont alkotja. Ekkor a finomabb háló a szomszédos pontok közti felezőpontok hozzávételével jön létre. Amennyiben a hiba ˆv j H közelítését szeretnék áttranszformálni a durváról a finomabb rácsra, akkor a ˆv j h képvektort így definiáljuk a finom háló pontjaiban: ˆv j h (x) := ˆv (pˆvj H)(x) = H(x), j j ˆ[v H(x h) + vh(x j + h)]/2, Legyen n h := 1 h 1, n H mátrix a következő: x Ω H x Ω h \Ω H := 1 H 1, ekkor az előző prolongációt leíró n h n H -as 1 2 0 1 1 p = 1 2..., 2 2 1 1 0 2 1 melyet egyszerűbb alakban így szokás jelölni: p = 1 2 ] 1 2 1 Kétdimenzióban ennek analógjára a vektor egy adott finom rácspontban felvett értéke a szomszédos durva rácspontokban felvett értékekből kerül kiszámításra 21 [.

lineáris interpolációval: ˆv j h (0, 0) := ˆvj H(0, 0); ˆv j h (H, 0) := ˆvj H(H, 0); ˆv j h (0, H) := ˆvj H(0, H); ˆv j h (H, H) := ˆvj H(H, H); ˆv j h (0, h) := 1 2 ˆvj H(0, 0) + 1 2 ˆvj H(0, H); ˆv j h (h, 0) := 1 2 ˆvj H(0, 0) + 1 2 ˆvj H(H, 0); ˆv j h (H, h) := 1 2 ˆvj H(H, 0) + 1 2 ˆvj H(H, H); ˆv j h (h, H) := 1 2 ˆvj H(0, H) + 1 2 ˆvj H(H, H); ˆv j h (h, h) := 1 4 ˆvj H(0, 0) + 1 4 ˆvj H(0, H) + 1 4 ˆvj H(H, 0) + 1 4 ˆvj H(H, H); A többi ilyen, 9 pontból álló cellán (azaz [k H, k H + H] [l H, l H + H]-n, ahol k, l = 0, 1, 2,... n H ) ugyanígy számítjuk ki a vektor értékeit. Ezt kilenc pontos prolongációnak nevezzük és a következő egyszerűsített jelölés (stencil) segítségével reprezentáljuk: p = 1 1 2 1 2 4 2 4 1 2 1 A prolongáció megfordítása tehát a restrikció, mely az adott vektort a a finomabbról a durvább rácsra képezi. Természetesen a legegyszerűbb példa restrikcióra az identitás (r inj ), hiszen minden durva rácspont egyben finom rácspont is: d j H(x) := (r inj d j h )(x) = dj h (x) minden x Ω H Ω h -ra. Egy gyakrabban alkalmazott példa a következő súlyozott restrikció, az úgynevezett full weighting (FW), melynek egydimenziós változata a maradékvektorra alkalmazva a következő: d j H(x) := (rd j h )(x) = 1 4 [dj h (x h) + 2dj h (x) + dj h (x + h)] minden x Ω H-ra. Az előbb definiált restrikciót az alábbi n H n h -as mátrix írja le: 1 2 1 0 r = 1 1 2 1..., 4 1 2 1 0 1 2 1 22

mely az előzőekben bemutatott prolongáció mátrixának transzponáltjának 1/2-szerese. A fenti operátort leíró stencil: r = 1 [ ] 1 2 1. 4 Tehát a p prolongáció p T transzponáltja, mely az ellentétes irányba képez, azaz a finomabb rácsról visz a durvábbra, alkalmazható restrikciós operátorként. A FW restrikció kétdimenziós analógját éppen a már bevezetésre került kilenc pontos prolongáció transzponáltjaként kapjuk (konstans szorzótól eltekintve). Ezt a következő egyszerűsített jelöléssel adhatjuk meg: r = 1 1 2 1 2 4 2 16. 1 2 1 Mostmár minden részletében áttekintettük a durva rács alkalmazásával javító iteráció módszerét. u j+1 h -t) a következőképpen fest: Összefoglalva, egy iterációs lépés (azaz hogyan kapjuk u j h -ből 1. A maradék kiszámítása: d j h := f h L h u j h. 2. A maradék transzformálása a durvább rácsra: d j H := I H h d j h. 3. A pontos megoldás kiszámítása a durvább rácson: L H ˆv j H = d j H. 4. A hiba közelítésének transzformálása a finomabb rácsra: ˆv j h := Ih H ˆv j H. 5. Az új közelítés kiszámítása: u j+1 h := u j h + ˆvj h. Az eljárást a következő ábra szemlélteti: u j h d j h = f h L h u j h ˆv j h u j+1 h = u j h + ˆvj h I H h I h H d j H L H ˆv j H = d j H 2.1. ábra. Javítás durva rácson 23

Mint azt korábban meggondoltuk, a durva hálón javító iteráció önmagában általában még csak nem is konvergens. Tudjuk, a probléma abból adódik, hogy amikor áttérünk a durvább rácsra, a v j h hiba egyes komponenesei ezen nem reprezentálhatók, így nem is csökkenthetők. Az iteráció ezen hátrányának kiküszöbölése végett alkalmazzuk a simító iterációkat, melyek nagyon hatákonyan lesimitják a hibát, azaz a hiba magas frekvenciájú komponenseit gyorsan csökkentik. Így a két iteráció kombinációja rkívül gyorsan konvergál annak ellenére, hogy külön-külön igen lassan, illetve egyáltalán nem. Ezen kombinációt kétrácsos iterációnak nevezzük. 2.4. A simító iterációk és simító tulajdonságaik Az iterációk alapjai Vegyük a következő rácsegyenletet: L l u l = f l (Ω l -ben). (2.2) Ennek megoldása egy ϕ l lineáris leképezés által generált iteratív eljárással nyerhető: u 0 l u 1 l... u j 1 l u j l..., melyre u j+1 l = ϕ l (u j l, f l) teljesül. A klasszikus iterációkat és a multigrid iterációt is így reprezentáljuk. Mivel ϕ l lineáris leképezés, ezért ϕ l (u l, f l ) = M l u l + N l f l formában is magadható, így az iteráció u j+1 l = M l u j l + N lf l (2.3) alakba írható. M l -t iterációs mátrixnak nevezzük. Továbbá kézenfekvő feltétel, hogy a (2.2)-es egyenlet u l megoldása az iterációnak fixpontja legyen, vagyis teljesüljön. u l = M l u l + N l f l (2.4) Ebből azt kapjuk, hogy I = M l + N l L l, ahol I az identitás mátrix. Amennyiben L l nem szinguláris, N l egyszerűen kifejezhető: N l = (I M l )L 1 l. Így az iteráció megadható csak az iterációs mátrixával is: Kivonva (2.4)-ből (2.3)-at u j+1 l = M l u j l + (I M l)l 1 l f l. u l u j+1 l = M l (u l u j l ) j = 0, 1, 2,... 24

adódik, így a j-edik közelítés hibájára u l u j l = M j l (u l u 0 l ) teljesül. Tehát a hiba csökkenése csak az iterációs mátrixtól függ. Ismeretes, hogy egy A mátrix spektrálsugarát így definiáljuk: ϱ(a) := max{ λ : λ sajátértéke A-nak}. Ennek tudatában megemlítő az alábbi, ismert lemma, mely a későbbiek folyamán még fontos lesz a számunkra. 2.4.1. Lemma. A (2.3)-as iteráció pontosan akkor konvergál bármely kezdeti u 0 l közelítésre, ha ϱ(m l ) < 1. Az iterációs mátrix spektrálsugarát ezért a konvergencia rjének nevezzük. Néhány klasszikus iteráció A (2.3) típusú iterációk szerkezetét általánosan a következőképpen is megadhatjuk: Vegyük az A l u l = f l egyenletrszert. Tegyük fel, hogy A l = B l C l, ahol B l nem szinguláris. Legyen B l u j+1 l u j+1 l C l u j l = f l, ebből a következő iteráció adódik: = Bl 1 C l u j l + B 1 l f l. Tehát (2.3)-ban M l = Bl 1 C l és N l = Bl 1. Vegyük A l egy másik felbontását: A l = D l L l U l, ahol D l =diag(a 11, a 22,..., a nn ) az A l diagonálelemeiből alkotott mátrix, L l és U l pedig A l szigorú alsó és felső háromszögmátrixai. Ekkor B l = 1 ω D l és C l = 1 ω [(1 ω)d l + ω(l l + U l )], 0 < ω 1 választással éppen a csillapított Jacobi iterációt kapjuk: u j+1 l = (I ωdl 1 A l )u j l + ωd 1 l f l, valamint a B l = D l L l és C l = U l választás a Gauss-Seidel iterációt eredményezi: u j+1 l = (D l L l ) 1 U l u j l + (D l U l ) 1 f l. A klasszikus iterációk simító tulajdonsága Simító iterációknak megfelelők lesznek a klasszikus iterációk. Bár lassan konvergálnak, de az adott közelítés hibáját gyorsan lesimítják, azaz a magasabb sorszámú sajátvektorokkal kapcsolatos megoldási komponenseket jóval gyorsabban pontosítják, mint az alacsony sorszámúakét. 25

Az iterációk simító tulajdonságának analizálásához vegyük példaként (lsd. [6]) az egydimenziós Poisson-egyenletet a legegyszerűbb Dirichlet-peremfeltétellel: Definiáljuk rácsméretek egy sorozatát: u (x) = f(x) Ω = (0, 1) u(x) = 0 x Γ = {0, 1}. h 0 > h 1 > h 2 >... > h l >..., ahol h 0 = 1 2, h 1 = 1 4,..., h l = 1 2 l+1,... l-et szintszámnak nevezzük. Legyen az l-edik szinthez tartozó rács: Ω l := {kh l : k = 1, 2,..., 2 l+1 1} (l = 0, 1, 2,...). Diszkretizáljuk a peremérték-feladatot a véges differenciák módszerével. Ekkor u l := (u l (kh l )) n l k=1 és f l := (f l (kh l )) n l k=1 (n l = 1 h l 1, az ismeretlenek száma) vektorokkal a következő rácsegyenleteket kapjuk (l = 0, 1, 2,...): 2 1 1 2 1 1 1 2 1 h 2. l...... u.. l = L l u l = f l 1 2 1 1 2 Vizsgáljuk most a csillapított Jacobi iteráció simító tulajdonságát ezen rszer segítségével. A Jacobi iteráció, ahogy azt már láttuk, a következő alakban írható: u j+1 l = (I ΘDl 1 L l )u j l + ΘD 1 l f l Θ (0, 1). Ezt átalakítva u j+1 l = u j l ΘD 1 l (L l u j l f l) Θ (0, 1) adódik. Jelen esetben D 1 l = h2 l I, így ω = Θ/2-vel azt kapjuk, hogy 2 u j+1 l = u j l ωh2 l (L l u j l f l) ω (0, 1 2 ). Jelöljük ezen Jacobi iterációhoz tartozó iterációs mátrixot M l -el. A konvergencia vizsgálatához szükségünk van ennek sajátvektoraira és sajátértékeire, melyekre: M l v µ l = λ µ l vµ l (µ = 1,... n l ). 26

Először nézzük L l sajátvektorait, ezek a következők: v µ l = 2h l (sin(kµπh l )) n l k=1 (µ = 1,... n l ). Ekkor miatt és abból, hogy L l v µ l = 4 h 2 l sin 2 (µπh l /2)v µ l (µ = 1,... n l ) M l = I ωh 2 l L l, azt kapjuk, hogy M l sajátvektorai megegyeznek L l sajátvektoraival és a megfelelő sajátértékek: λ µ (ω) = 1 4ω sin 2 (µπh l /2) (µ = 1,... n l ). 2.2. ábra. M l iterációs mátrix sajátértékei µh l függvényében A (2.2)-es ábráról leolvasható, hogy ω = 1 2 sajátérték λ 1, így a konvergencia rje: esetén a legnagyobb abszolútértékű ϱ(m l ) = λ 1 ( 1 2 ) = 1 2 sin2 (πh l /2) = 1 1 2 π2 h 2 l + O(h 4 l ), azaz ebben az esetben a Jacobi iteráció nagyon lassan konvergál. Könnyen adódik, hogy ω (0, 1 ) választás még lassabb konvergenciát eredményez. 2 Vegyük most az ω = 1 esetet. A (2.2)-es ábra alapján elmondhatjuk, hogy a magas frekvenciájú v µ l sajátvektorok (µ 1/(2h l )) minden iterációs lépésben legalább 4 1/2-szeresére csökkennek. Tehát ha csak a magas frekvenciájú sajátértékeket vesszük figyelembe, a csillapított Jacobi iteráció nagyon gyorsan konvergál. 27 Ebből azt a

következtetést vonhatjuk le, hogy a lassú konvergenciáért az alacsony frekvenciájú komponensek a felelősek. Vizsgáljuk meg ezután a hiba csökkenését. Írjuk fel a kezdeti közelítés hibáját a sajátvektorok segítségével: u 0 l u l = α µ v µ l. Ebből j iterációs lépés elvégzése után a j-edik közelítés hibájára a következőt kapjuk: u j l u l = M j l (u0 l u l ) = α µ M j l vµ l = α µ [λ µ ( 1 4 )]j v µ l = β µ v µ l. Az előző megfontolás szerint α µ β µ teljesül az alacsony, β µ α µ a magas frekvenciás komponensekre. Ekkor azt mondjuk, hogy az u j l u l hiba simább, mint az u 0 l u l. Azaz a csillapított Jacobi iteráció simító iterációként funkcionál. (Megjegyező, hogy a túlrelaxált Jacobi-iteráció (ω > 1) már nem relkezik a kívánt simítási tulajdonsággal.) A klasszikus iterációk simító tulajdonságának általános esetben történő igazolásáért lsd. [3]. 2.5. Kétrácsos módszer Összegezve tehát az eddig tapasztaltakat, azt kaptuk, hogy érdemes kombinálnunk a két egymást jól kiegészítő eljárást, az iterációs simítást és a durva rácson történő hibajavítást. Ez adja az alapját a kétrácsos módszernek. Két rácson dolgozunk, egy finomabb Ω h és durvább Ω H rácson Az eljárást iteratív módon ismételjük. Egy iterációs lépés (azaz hogy kapjuk u j h algoritmussal adható meg: 1. Iterációs simítás I. -ből uj+1 h -t) a következő u j h kiszámítása uj h -ből az adott simító iteráció ν 1-szer történő alkalmazásával: 2. Hibajavítás a durva rácson u j h := Sν 1 h (uj h, L h, f h ). A maradék kiszámítása: d j h := f h L h u j h. A maradék transzformálása a durvább rácsra: d j H := I H h d j h. A pontos megoldás kiszámítása a durvább rácson: L H ˆv j H = d j H. A hiba közelítésének transzformálása a finomabb rácsra: ˆv j h := Ih H ˆv j H. A javított közelítés kiszámítása: u j h + ˆvj h. 28

3. Iterációs simítás II. u j+1 h kiszámítása u j h + ˆvj h -ből az adott simító iteráció ν 2-szer történő alkalmazásával: u j+1 h := S ν 2 h (uj h + ˆvj h, L h, f h ). ν 1 ν 2 u j h u j h d j h = f h L h u j h ˆv j h u j h + ˆvj h u j+1 h I H h I h H d j H L H ˆv j H = d j H 2.3. ábra. Kétrácsos módszer Az eljárást a (2.3)-as ábra szemlélteti. Erről könnyen leolvashatjuk az iterációs mátrixot: M H h = S ν 2 h KH h S ν 1 h, ahol KH h = I h I h HL 1 H I H h L h, és S h a simító iterációnak megfelelő opreátor. Összegezzük most kétrácsos módszer azon komponenseit, melyek nincsenek előre meghatározva (ezen komponensek megválasztása mindig a megoldandó feladattól függ): a simító iteráció (S h ) az elő- és utósimítások végrehajtásainak száma (ν 1, ν 2 ) a durva rács (Ω H ) a restrikciós operátor (I H h ) az L h operátor megfeleltetése a durva rácson (L H ) az interpolációs operátor (I h H) A célunk a módszer ezen komponenseit úgy megválasztani, hogy az algoritmus optimális legyen. A választások jelentősen befolyásolják az algoritmus hatékonyságát. Sajnos nincsen általános érvényű, minden feladatra optimálisan működő eljárás, ezen komponensek megválasztása az optimalitás érdekében mindig az adott feladat függvényében kell hogy történjen. 29

A módszer hatékonyságának vizsgálatához szükség van a ϱ(mh H ) érték, azaz az aszimptotikus konvegencia faktor vagy a megfelelő Mh H norma meghatározására. A módszer egyes komponenseinek megválasztásakor azt kell figyelembe venni, hogy azok milyen hatással vannak ϱ(mh H ) és Mh H értékekre, melyekből tehát a módszer hatékonyságára vonatkozó következtetéseket vonhatunk le. A kétrácsos módszer alapjául szolgál a multigrid módszernek, mely az előző algoritmus azon alapuló továbbfejlesztése, hogy nem csak egy, hanem több durvább rácsot alkalmazunk. Azaz nem szükséges a durva rácson diszkretizált maradékegyenletet pontosan megoldanunk, hanem elegő elérnünk egy közelítő megoldást, egy újabb kétrácsos módszer, egy még durvább rácson történő alkalmazásával. 2.6. A multigrid ciklus Eddig csak a multigrid módszer kétrácsos verzióját láttuk, melynek kevésbé gyakorlati, de annál inkább elméleti jelentősége van, hiszen a valódi multigrid eljárás alapjául szolgál. A módszerhez az alapötletet az a tény adja, hogy egy adott kétrácsos eljárás során keletkező L H ˆv j H = d j H maradékegyenletet nem szükséges pontosan megoldanunk, ehelyett egy megfelelő közelítő megoldás megadása is elegő. Szerencsére ez kivitelezhető a kovergenciasebesség lényeges csökkenése nélkül. Természetes módon adódik az a lehetőség, hogy ezt a közelítő megoldást egy újabb kétrácsos algoritmussal állítsuk elő, ahol egy még durvább rácsot használunk. Világos, hogy amennyiben a kétrácsos módszerünk konvergencia faktora elég kicsi, elegő mindössze néhány (γ) iterációs lépést alkalmaznunk egy megfelelő közelítéshez eléréséhez. Kézenfekvő, hogy ez az ötlet rekurzívan alkalmazható egyre durvább és durvább rácsokat használva, eljutva ezzel egy olyan rácsegyenlethez, melynek pontos megoldása már elegően kevés műveletbe kerül. Nézzük meg most a módszer formális leírását. Ehhez szükségünk van egyre finomabb rácsok egy Ω hl sorozatára, ahol h l (l = 0, 1, 2,...) a rácsméretek sorozata. Az egyszerűség kedvéért az elkövetkezőkben h l helyett l-et írunk. Minden Ω l -re legyenek adottak a következő lineáris rácsoperátorok: L l : G(Ω l ) G(Ω l ), S l : G(Ω l ) G(Ω l ), 30

és a diszkrét rácsegyenletek: I l 1 l : G(Ω l ) G(Ω l 1 ), I l l 1 : G(Ω l 1 ) G(Ω l ), L l u l = f l (Ω l -ben), ahol L l invertálható, G(Ω l ) az Ω l -en értelmezett rácsfüggvények tere, S l pedig az adott simitó iterációnak megfelelő operátort jelöli. γ jelöli tehát, hogy hány multigrid iterációs lépést kell végrehajtanunk az egyes durvább rácsokon. A tapasztalatok azt mutatják, hogy nem érdemes γ-t 2-nél nagyobbra választani, mert bár pontosabb közelítést kapunk az adott szinten, de egy újabb iterációs lépés már annyival növeli a lépésszámot, hogy nem nyerünk, hanem veszítünk a pontosabb közelítés előállításával, így a konvergencia sebessége romlik. A γ = 1 esetet V-ciklusnak, a γ = 2 esetet W-ciklusnak nevezzünk. Most pedig nézzük meg a multigrid iteráció -vagyis az (l + 1)-rácsos iteráció - egy lépését (multigrid ciklus) az L l u l = f l (Ω l -ben), rácsegyenlet megoldására, ahol l 1 fix. Ehhez szükségünk lesz Ω k rácsokra, L k operátorokra (k = l, l 1,..., 0), valamint S k, Ik k 1, Ik 1 k operátorokra (k = l, l 1,..., 1). Legyenek továbbá ν 1, ν 2, γ fix paraméterek. A multigrid ciklust egy önmagát meghívó, rekurzív algoritus definiálásával kapjuk. Az u l megoldás egy adott u j l közelítéséből az új u j+1 l következő algoritmussal történik: közelítés kiszámítása a Ha l = 1: a kétrácsos módszer alkalmazása Ω 1, Ω 0 rácsokra Ha l > 1: 1. Iterációs simítás I. u j l kiszámítása uj l -ből az adott simító iteráció ν 1-szer történő alkalmazásával: 2. Hibajavítás a durva rácson u j l := S ν 1 l (u j l, L l, f l ). A maradék kiszámítása: d j l := f l L l u j l. A maradék transzformálása a durvább rácsra: d j l 1 := I l 1 l d j l. 31

Az L l 1ˆv j l 1 = dj l 1 (Ω l 1 ) egyenlet ṽ j l 1 közelítő megoldásásának kiszámítása az l-rácsos módszerrel, γ iterációs lépéssel az azonosan 0 rácsfüggvényt véve kezdeti közelítésnek (a Ω l 1, Ω l 2,..., Ω 0 rácsok és a megfelelő rácsfüggvények használatával). A hiba közelítésének transzformálása a finomabb rácsra: ṽ j l := I l l 1ṽ j l 1. A javított közelítés kiszámítása: u j l + ṽj l. 3. Iterációs simítás II. u j+1 l kiszámítása u j l + ṽj l -ből az adott simító iteráció ν 2-szer történő alkalmazásával: u j+1 l := S ν 2 l (u j l + ṽj l, L l, f l ). Az algoritmus lefutását nyomon követhetjük a (2.4)-es ábra segítségével. 0 C(k) γ számlálja, hogy az egyes szinteken eddig hány multigrid iterációs lépés történt. ν 1 -et, ν 2 -t és γ-t fix paramétereknek választottuk, de ez nem volt feltétlenül szükséges. Sok esetben ugyanis γ-t k függvényében választjuk, például γ = 1, ha k páratlan, γ = 2, ha k páros. A most definiált multigrid eljárás iterációs mátrixa: M l = S ν 2 l (I l Il 1(I l l 1 M γ l 1 )L 1 l 1 Il 1 l L l )S ν 1 l. Erre a későbbiek során, a teljes multigrid módszer konvergenciájának tárgyalásakor lesz szükségünk. Ezzel el is jutottunk az utolsó lépéshez, a teljes multigrid módszer következik, mely a multigridtől eltérően már nem iteratív eljárás. Itt 2.7. A teljes multigrid módszer A diszkrét, elliptikus peremérték-problémák megoldására alkalmazott iteratív multigrid eljárást már definiáltuk. Habár ezen módszer megfelelő verziói is nagyon hatékonyak lehetnek, hatékonyságuk még tovább növelhető, amennyiben teljes multigrid módszerben formájában kerülnek felhasználásra. A teljes multigrid algoritmus azon az ötleten alapszik, hogy a megoldás új közelítését néhány multigrid iterációs lépés elvégzésével kapjuk, az (interpolált) előző közelítést választva a multigrid iteráció kezdeti közelítésének, melyet szintén néhány hasonló, de az eggyel durvább rácson alkalmazott multigrid iterációs lépéssel kaptunk. Tehát az alacsonyabb szinteken nagyon jó kezdeti közelítésre tehetünk szert 32

2.4. ábra. Egy multigrid iterációs lépés az L l u l = f l (l 1) megoldására 33

a következő magasabb szinten elvégző iterációhoz. Adott az alábbi L Ω u = f Ω L Γ u = f Γ (Ω-ban), (Γ := Ω mentén), elliptikus peremérték-probléma korlátos Ω tartományon. Ezen peremérték-feladat diszkrét közelítései a következő rácsegyenletek: L l u l = f l (Ω l -ben) (l = 0, 1, 2,...) Minden l 1-re jelöljük így: MGI µ (, l, L l, f l ) : G(Ω l ) G(Ω l ) a µ iterációs lépésből álló, Ω 0,... Ω l rácsokon alkalmazott, adott iteratív multigrid eljárást. A elkövetkezőkben legyen µ fix (mint említettük, µ általában 1 vagy 2, és esetleg függhet l-től is). Legyen l 0 fix. Ekkor az L l u l = f l (Ω l -ben) rácsegyenlet közelítő megoldásának előállítására szolgáló teljes multigrid módszer (FMG) algoritmusa a következő: 1. k := 0, ũ 0 : az L 0 u 0 = f 0 pontos megoldása 2. k := k + 1 3. û k := Ik 1ũ k k 1 4. ũ k := MGI µ (û k, k, L k, f k ) 5. ha k < l : 2. ha k = l : ũ l : az L l u l = f l megoldásának FMG eljárással nyert közelítése Itt Ik 1 k : G(Ω k 1 ) G(Ω k ) egy megfelelő interpolációs eljárás. Az FMG algoritmus relkezik a következő tulajdonságokkal: ũ h u h kisebb, mint a u u h diszkretizációs hiba, ahol ũ h a diszkrét u h megoldás FMG módszerrel nyert közelítése. A műveletigény arányos a Ω h lépésszám). rács pontjainak számával: O(N k ) (optimális 34

A teljes multigrid módszer konvergenciája Az előzőek alapján legyen L k u k = f k a k-adik szinthez tartozó egyenletrszer (0 k l), Ik 1 k az az interpoláció, mely az adott közelítést a k 1-edik szintről a k-adikra viszi, valamint µ az MGI eljárás hívásainak száma a mindenkori legmagasabb szinten. Jelölje továbbá κ a diszkretizáció rjét, mely az alkalmazott differenciaséma pontosságát mutatja, illetve legyen ζ k := M k, ahol M k a k-adik szinthez tartozó multigrid eljárás iterációs mátrixa és ζ := max 0 k l ζ k. 2.7.1. Tétel. (Hackbusch): Minden 0 k l-re legyen h k = 1/2 k+1. Legyen µ olyan, hogy ζ µ 1/(1 + 2 κ ), és tegyük fel, hogy teljesülnek az alábbi feltételek: 1. Ik 1 k 1 2. Ik 1u k k 1 u k c 0 h κ k, ahol c 0 = c 0 (u) konstans az eredeti feladat u pontos megoldásától függ 3. a k-adik szinten az MGI µ (, k, L k, f k ) eljárás az azonosan 0 kezdeti közelítéssel ζ k -ra csökkenti a hibát, és ζ < 1 teljesül. Ekkor a teljes multigrid módszer konvergál, és minden ũ k közelítés hibájára ũ k u k c 0 h κ k, adódik, ahol u k az L k u k = f k egyenletrszer megoldása. Ez azt jelenti, hogy a k-adik szinten O(N k ) művelettel előállított ũ k közelítés hibája O(h κ k) (ahol N k = n k n k a diszkrét ismeretlenszám a k-adik szinten). A tétel bizonyításáért lsd. [3]. A multigrid eljárás elméleti hátterének áttekintésével végeztünk, a következő fejezetben rátérünk a módszer gyakorlati hatékonyságának bemutatására. A multigrid módszerről a további részletekért lsd. [1, 6, 5, 3, 7]. 35

3. fejezet A multigrid módszer implementálása MATLAB-ban 3.1. Multigrid program Az fmgcycle.m fájlban egy teljes multigrid módszert definiáltunk, mely az alábbi két peremérték-feladat megoldására alkalmas: u = 2π 2 sin(πx) sin(πy) x Ω := (0, 1) 2, (3.1) u(x) = 0 x Γ := Ω, u = 13π 2 sin(2πx) sin(3πy) x Ω := (0, 1) 2, (3.2) u(x) = 0 x Γ := Ω. Tehát két speciális, az egységnégyzeten értelmezett, kétdimenziós Poisson-egyenlet közelítő megoldását keressük a megadott Dirichlet-peremfeltétel teljesülése esetén. A programban a rácsméretek a szintek növekedésével feleződnek, azaz a k-adik szinthez tartozó rácsméret: h k = 1/2 k+1. Megadhatjuk a programnak, hogy hány szintet használjon, hányszor simítson (elő- és utósimítás), valamint hány multigrid ciklust alkalmazzon az egyes szinteken, és hogy melyik tesztfeladatot szeretnénk megoldani ((3.1) vagy (3.2)). Azaz input paraméterei a következők: l: szintszám nu1: elősimítások száma nu2: utósimítások száma gamma: multigrid iterációk száma az egyes szinteken 36

t: tesztfüggvény sorszáma Az u output a megfelelő tesztfeladathoz tartozó közelítő megoldás, w pedig egy segédoutput, melyre az csak egyik tesztfeladatban lesz szükség (arra, hogy mi is ez pontosan, majd később térünk ki). A program a módszer részegységeinek megfelelően a következő alprogramokból épül fel: laplace.m: az adott szinthez tartozó Laplace-operátort állítja elő a közönséges ötpontos approximáció segítségével input: l: szintszám output: L: Laplace-operátor rhs.m: a rácsegyenlet jobboldali vektorát állítja elő a szintszám és a tesztfeladat függvényében input: l: szintszám, t: tesztfüggvény sorszáma output: f: jobboldali vektor pre smooth.m: néhány Jacobi-iterációs lépést végez (elősimítás) input: l: szintszám, u: bemenő vektor, f: jobboldali vektor, nu: simítások száma output: u: a lesimított vektor post smooth.m: néhány Gauss-Seidel iterációs lépést végez (utósimítás) input: l: szintszám, u: bemenő vektor, f: jobboldali vektor, nu: simítások száma output: u: a lesimított vektor restri.m: az adott vektort a előző durvább szintre viszi (l-edikről az l-1-edikre) input: l: szintszám, r in: bemenő vektor output: r out: a bemenő vektorból kapjuk full weighting restrikcióval prolong.m: az adott vektort a következő finomabb szintre viszi (l-1-edikről az l-edikre) input: l: szintszám, p in: bemenő vektor output: p out: a bemenő vektor megszorozva az adott szinthez tartozó kilencpontos prolongáció mátrixával 37

mgcycle.m: néhány multigrid iterációs lépést hajt végre az adott szinten input: l: szintszám, u in: régi közelítés, f: jobboldali vektor, nu1: elősimítások száma, nu2: utósimítások száma, gamma: multigrid iterációk száma output: u out: új közelítés, w: segédoutput alprogramjai: laplace.m, rhs.m, pre smooth.m, post smooth.m, restri.m, prolong.m 3.2. A teljes multigrid módszer hatékonyságának vizsgálata Az mgteszt.m fájlban megírt program a (3.1)-es és a (3.2) peremérték-feladatok pontos megoldásait hasonlítja össze az fmgcycle.m fájl használatával kapott közelítő megoldásokkal. A (3.1)-es feladat pontos megoldása az u(x) = sin(πx) sin(πy), a (3.2)-esé pedig az u(x) = sin(2πx) sin(3πy). A program a pontos és a multigrid módszer által szolgáltatott közelítő megoldás közti eltérést a két függvény különbségének ábrázolásával szemlélteti, egyre finomodó rácsok esetében. Erre azért van szükség, mert a módszer olyan pontos, hogy a megfelelő függvények ábrázolásakor szabad szemmel nem is észlelhető az eltérés. Minden rácsméret esetén ki is számítjuk, hogy pontosan mennyi az adott közelítés relatív hibája, vagyis az u ũ / u arány (%-os alakban), ahol u a pontos megoldás, ũ pedig a közelítő megoldás vektora. Emellett a program kiírja, hogy az egyes közelítések kiszámításához mennyi időre volt szüksége. Input paraméterei ugyanazok, mint az fmgcycle.m alprogramjának. Nézzük meg mit eredményez az mgteszt() függvény, ha input paramétereit például így választjuk: 1. l = 9, azaz 10 rácsot alkalmazunk 2. elősimítások száma: ν 1 = 4 3. utósimítások száma: ν 2 = 4 4. multigrid iterációk száma az egyes szinteken: γ = 1 38

5. tesztfüggvény sorszáma: 2 Az mgteszt(9,4,4,1,2) parancs beírásával az alábbi eredmény születik: Idő Relatív hiba 1. szint 0.002239 sec 48.1111% 2. szint 0.006548 sec 10.1226% 3. szint 0.011695 sec 2.194% 4. szint 0.040206 sec 0.50671% 5. szint 0.147134 sec 0.1222% 6. szint 0.641772 sec 0.030129% 7. szint 2.879955 sec 0.0074966% 8. szint 12.128315 sec 0.0018713% 9. szint 51.297938 sec 0.00046762% 3.1. ábra. A közelítő megoldás hibája és a kiszámításához szükséges idő a szintek függvényében A kapott eredményekből azt a következtetést vonhatjuk le, hogy a multigrid módszer rkívül rövid idő alatt nagyon pontos megoldást szolgáltatott, mivel a hálók finomításával a közelítések hibája igen gyorsan lecsökkent. A következő képsoron ((3.2)-es és (3.3)-as ábrák) megfigyelhetjük a közelítő megoldás hibájának csökkenését a szintek előrehaladtával (l=3, 4, 5, 6). Az ábrákon a közelítő és a pontos megoldás különbsége látható, valamint az adott közelítés hibája is fel van tüntetve. Az x és y tengelyek a rácspontok szerint vannak felosztva, a z tengelyen a függvényértékek minden ábrán azonosan -0.02 és 0.02 között vannak ábrázolva. Amint láthattuk simító iterációk használatára azért van szükség, mert a hiba magas frekvenciájú komponenseit melyek javítása a durvább rácsokon már nem lehetséges gyorsan lecsökkentik. Érdekes megfigyelni, hogyan viselkedik a módszer a simítások elvégzése nélkül, azaz hogyan torzul el a közelítő megoldás, ha a magas sorszámú sajátvektorokhoz tartozó megoldási komponensek javítása nem történik meg a szintváltásokkor. A simítás nélküli multigriddel nyert közelítő megoldásokat szembeállítva a pontos megoldásokkal a (3.4)-es és (3.5)-ös ábrákon tekinthetjük meg. Amint látható, már az első tesztfüggvény esetén is jelentős az eltérés, de a második esetben a közelítések még csak nem is hasonlítanak a pontos megoldásokra. 39

3.2. ábra. A közelítések hibájának csökkenése - 2. tesztfüggvény (l=3, 4) 3.3. ábra. A közelítések hibájának csökkenése - 2. tesztfüggvény (l=5, 6) 40

3.4. ábra. Első tesztfeladat - simító iteráció nélkül: mgteszt(6,0,0,1,1) 3.5. ábra. Második tesztfeladat - simitó iteráció nélkül: mgteszt(6,0,0,1,2) 41

3.3. A kaszkád módszer megvalósítása Ebben a részben megvizsgáljuk az úgynevezett kaszkád módszer hatékonyságát, méghozzá a jóval bonyolultabb teljes multigrid módszerhez viszonyítva. A kaszkád algoritmus lényege a következő: Ugyanúgy, mint a multigrid módszer esetében egy adott peremérték-probléma megoldásához diszkretizálnunk kell a feladatot l + 1 rácson. Első lépésben megoldjuk a feladatot a legdurvább szinten. Az így nyert megoldást transzformáljuk az eggyel magasabb szintre egy megfelelő prolongáció segítségével. Ezután végrehajtunk ν db simító iterációs lépést (ν adott, általában 5 és 10 közötti szám), mely lehet példál Jacobi- vagy Seidel-iteráció. A kapott javított közelítést szintén emeljük az eggyel finomabb szintre, és simítsuk le a hibáját. Végezzük el ezeket a lépéseket minden szinten egészen addig, míg eljutunk a legfinomabb rácsig. Így az eredeti feladat egy közelítő megoldását nyerjük. (A módszerről részletesebb anyag [8]-ban található.) Az alábbi programok segítségével meg fogjuk mutatni, hogy ez az egyszerű módszer is képes igen jó eredmények elérésére. A kaszkad.m fájlban egy olyan kaszkád módszert definiáltuk, mely a multigrid program analógjára készült, szintén a (3.1)-es és a (3.2)-es peremérték-feladatok megoldására alkalmas, ugyanazokkal a rácsokkal dolgozik és Gauss-Seidel iterációt végez utósimításként. Input paraméterei a következők: l: szintszám nu2: utósimítások száma t: tesztfüggvény sorszáma Az u output a megfelelő tesztfeladathoz tartozó közelítő megoldás. A két módszer összehasonlítására szolgáló, a kaszkadteszt.m fájlban található program inputparaméterei megegyeznek a többi tesztprograméval, azaz a multigrid és jelen esetben a kaszkád algoritmus speciális tényezőit állítják be, vagyis azonos paraméterekkel bíró eljárásokat fogunk összevetni (ugyanannyi szint- és utósimításszám, ugyanaz a tesztfeladat). A program futtatásának végeztével a megfelelő módszerek által szolgáltatott közelítő megoldások hibáit és a kiszámításukhoz szükséges időket tekinthetjük át a szintek számának függvényében. A kaszkadteszt(9,4,4,1,1) utasítás kiadásával kapott eredményeket a (3.6)-os ábrán összegezzük. Látható, hogy a kaszkád módszer, egyszerűsége dacára, egész jó közelítéseket eredményez, míg a full multigriddel, bár pontosabb megoldásokra tettünk szert, kiszámításuk már jóval több műveletbe került. A kaszkád közelítés hibája, a multigridével ellentétben, a szintek előrehaladtával növekszik, de ez a növekedés elég kismértékű. 42

Multigrid módszer Kaszkád módszer idő relatív hiba idő relatív hiba 1. szint 0.002661 sec 5.1281% 0.001247 sec 3.8369 % 2. szint 0.004144 sec 1.0874% 0.001885 sec 1.5777% 3. szint 0.012083 sec 0.24749% 0.007339 sec 2.9006% 4. szint 0.040443 sec 0.059298% 0.027537 sec 3.2342% 5. szint 0.153938 sec 0.014586% 0.105074 sec 3.3178% 6. szint 0.666729 sec 0.0036261% 0.458630 sec 3.3387% 7. szint 2.941658 sec 0.0009049% 1.901906 sec 3.3439% 8. szint 12.645947 sec 0.0002261% 7.857439 sec 3.3452% 9. szint 52.440102 sec 0.000056515% 32.077767 sec 3.3455% 3.6. ábra. A multigrid és a kaszkád módszer által nyert közelítő megoldások hibája és a kiszámításukhoz szükséges idő a szintek függvényében 3.4. Az FMG és a Seidel-iteráció konvergenciasebességének összehasonlítása A teszt.m és a teszt2.m fájlokban megtalálható programok a multigrid módszer hatékonyságát hívatottak igazolni, melyet a Gauss-Seidel iteráció és a multigrid eljárás konvergenciasebességeinek összehasonlításával érzékeltetünk. A programok input paraméterei megegyeznek az mgteszt.m fájlban megírt programéval, azaz most is a multigrid módszer speciális tényezőit hivatottak beállítani. Nézzük először a teszt.m programját, melynek segítségével azt fogjuk összevetni, hogy mennyi időre van szüksége a multigrid módszernek és a Seidel-iterációnak majdnem ugyanolyan pontosságú közelítés előállításához. Pontosabban mindig annyiszor futtatjuk a Seidel-iterációt, hogy legalább olyan jó közelítést adjon, mint az adott szinthez tartozó multigrid közelítés. Teszteljük ezt a függvényt is a megszokott inputon (teszt(6,4,4,1,1) parancs). Mint azt a kapott eredmények is mutatják (lsd. (3.7)-es ábra), a Gauss-Seidel iterációnak nagyság-rekkel több időre van szüksége egy adott pontosságú közelítő megoldás előállításához, mint a multigrid módszernek. A teszt2.m fájl programja a másik szemszögből hasonlítja össze a Seidel-iterációt és a multigrid módszert, vagyis azt vizsgálja, hogy körülbelül azonos számú művelet 43

Multigrid módszer Seidel-iteráció idő relatív hiba idő relatív hiba 1. szint 0.002375 sec 5.1281% 0.001651 sec 4.2227% 2. szint 0.006400 sec 1.0874% 0.016854 sec 1.0405% 3. szint 0.011440 sec 0.24749% 0.129532 sec 0.24609% 4. szint 0.039755 sec 0.059298% 2.404275 sec 0.058976% 5. szint 0.148012 sec 0.014586% 49.214101 sec 0.014585% 6. szint 0.648248 sec 0.0036261% 1191.548492 sec 0.0036243% ( 20 perc) 3.7. ábra. A Seidel- és a multigrid módszer által nyert közelítő megoldások lényegében azonos hibája és a kiszámításukhoz szükséges idő a szintek függvényében elvégzésével melyik eljárás milyen relatív hibát produkál. Amennyiben a Seidelben annyi iterációt hajtunk végre, amennyi a teljes multigridben a legfinomabb szinten van (elő- és utósimítások összesen), a két módszer műveletszáma lényegében megegyezik (ez annak köszönhető, hogy a multigridben az egyre durvább rácsokon az iterációk szükséges műveletszáma sokkal kisebb, mint a Seidel-iterációé). Ezért van szükség az mgcycle.m és az fmgcycle.m fájlokban a w változóra, mellyel összeszámláljuk a multigridben az egyes szinteken elvégzett iterációkat, hogy megkapjuk az FMG-ben a legfinomabb szinten végrehajtott iterációk számát. Vizsgáljuk meg mit kapunk eredményül, ha a multigrid módszer paramétereit az előzőekhez hasonlóan választjuk (teszt2(6,4,4,1,1) parancs kiadása): Relatív hiba Multigrid módszer Seidel iteráció 1. szint 5.1281% 7.1377% 2. szint 1.0874% 35.7734% 3. szint 0.24749% 68.8501% 4. szint 0.059298% 88.372% 5. szint 0.014586% 96.2163% 6. szint 0.0036261% 98.8499% 3.8. ábra. A Seidel- és a multigrid módszer által nyert közelítő megoldások hibája nagyjából azonos művelet esetén, a szintek függvényében 44

Amint tapasztalhattuk, nagyjából az a lépésszám, mellyel a multigrid módszer egy nagyon pontos közelítést ér el, a Gauss-Seidel iteráció számára igen kevésnek bizonyul, az eredményül kapott Seidel-közelítés minden szinten sokkal rosszabb lesz a multigridesnél. Ráadásul a szintek előrehaladtával a Seidel-iteráció egyre nagyobb és nagyobb relatív hibát eredményez, ellenben a multigriddel, mely hibája csökkenő tenciát mutat. A következő ábrák jól szemléltetik a a szintek előrehaladtával növekvő különbséget a két módszer által nyert közelítő megoldások között: 3.9. ábra. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=2) 45

3.10. ábra. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=3) 3.11. ábra. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=4) 46

3.12. ábra. Az FMG és a Seidel-iteráció összehasonlítása - 1. tesztfüggvény (l=5) 47