tehnici de programare pentru calcul stiintific

13

Click here to load reader

Upload: difuzor

Post on 11-Aug-2015

116 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Tehnici de Programare Pentru Calcul Stiintific

Universitatea “Ovidius” din Constanta

Facultatea de Matematica si Informatica

Studii masterat: Modelare si tehnologii informatice

Disciplina: Tehnici de programare pentru calcule stiintifice

Proiect de curs

Multigrid

2012

Page 2: Tehnici de Programare Pentru Calcul Stiintific

I. Descrierea problemei

Acest proiect isi propune sa studieze introducerea in metode de tip multigrid. Metodele de tip multigrid au fost dezvoltate pentru a rezolva eficient sisteme liniare. Metoda multigrid se bazeaza pe faptul ca exista metode iterative care poseda proprietatea de netezire: metode care descresc rapid componentele oscilatorii mari ale erorii.

Se poate proiecta eroarea solutiei pe o grila mai rara si se poate rezolva o versiune mai rara pentru ecuatia erorii. Prin aplicarea metodei 2-grid de mai multe ori se obţine metoda multigrid. Sistemul liniar generat in acest studiu este generat folosind metode de tip diferente finite pentru aproximarea derivatelor de ordin 1 sau 2.

II. Problema

Se da problema:

cu α = 3, β = 0.25, p = 0, q = 0, avand solutia exacta data de:

Pentru solutia exacta enuntata mai sus se va calcula termenul liber corespunzator.

Discretizarea si numarul aferent de puncte pe un iterval, va tine cont de urmatoarea formula:

unde A si B reprezinta capetele intervalului iar N numarul de puncte din discretizare.

Page 3: Tehnici de Programare Pentru Calcul Stiintific

Se va aplica o dubla derivare pentru afisarea termenului liber, iar pasii anteriori vor fi ilustrati in urmatoarea imagine:

Page 4: Tehnici de Programare Pentru Calcul Stiintific

Matricea obtinuta in urma discretizarii, pentru grila fina ese data de:

Se formeaza grila rara prin racirea punctelor de pe grila fina din 2 in 2.

Numarul de puncte interioare pe grila va fi de .

Matricea obtinuta pentru grila rara este :

Trecerea de la nivelul fin la nivelul rar se face prin operatorul (restrictie)

iar invers prin operatorul (interpolare) .

Forma acestui operator este data de :

unde:

Page 5: Tehnici de Programare Pentru Calcul Stiintific

Codul sursa matlab:

III Algoritmul 2, 3 si 4 grid

Folosindu-ne de punctele anterioare implementam algoritmul 2-grid.

Page 6: Tehnici de Programare Pentru Calcul Stiintific

Algoritmul 3-grid

Page 7: Tehnici de Programare Pentru Calcul Stiintific

Algoritmul 4-grid

Page 8: Tehnici de Programare Pentru Calcul Stiintific

IV Metodele Gauss-Seidel si Richardson

Metoda Gauss-Seidel a fost implementata dupa formula:

avand urmatorul cod implementat in matlab:

unde, A reprezinta matricea, b este termenul liber, x0 initial, steps reprezinta numarul de iteratii iar omega este parametrul de relaxare.

Metoda Richardson implementata dupa formula:

avand urmatorul cod implementat in matlab:

unde B reprezinta valoarea parantezei din formula iar x rezultatul final.

Page 9: Tehnici de Programare Pentru Calcul Stiintific

V Rezultate si concluzii

Tabela 2-grid + grafic

Page 10: Tehnici de Programare Pentru Calcul Stiintific

Tabela 3-grid + grafic

Tabela 4-grid + grafic

Page 11: Tehnici de Programare Pentru Calcul Stiintific

Concluzie:

Se observa ca metoda Gauss - Seidel este mai eficienta decat metoda Richardson deoarece punctele sunt mai apropiate de graficul functiei exacte.