Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną.

Podobne dokumenty
Projekt 9: Dyfuzja ciepła - metoda Cranck-Nicloson.

Metoda elementów brzegowych

Rozwiązywanie równań różniczkowych cząstkowych metodą elementów skończonych - wprowadzenie

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Zagdanienia do egzaminu z Inżynierskich Metod Numerycznych - semestr zimowy 2017/2018

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

3. Macierze i Układy Równań Liniowych

Wykład 5. Metoda eliminacji Gaussa

Zagdanienia do egzaminu z Inżynierskich Metod Numerycznych - semestr 1

y i b) metoda różnic skończonych nadal problem nieliniowy 2 go rzędu z warunkiem Dirichleta

Metody numeryczne Wykład 4

Metoda eliminacji Gaussa

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Układy równań liniowych. Krzysztof Patan

Rozwiązywanie układów równań liniowych

Metoda simpleks. Gliwice

Analiza numeryczna Kurs INP002009W. Wykłady 6 i 7 Rozwiązywanie układów równań liniowych. Karol Tarnowski A-1 p.

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 24 czerwca 2019 roku

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Macierze. Rozdział Działania na macierzach

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 26 czerwca 2017 roku

Obliczenia iteracyjne

5. Rozwiązywanie układów równań liniowych

Równania różniczkowe cząstkowe (RRCz) równanie eliptyczne równanie Poissona

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne

Analiza numeryczna Lista nr 3 (ćwiczenia) x x 2 n x.

Obliczenia naukowe Wykład nr 8

Układy równań i równania wyższych rzędów

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

x y

1.1 Przegląd wybranych równań i modeli fizycznych. , u x1 x 2

Metody rozwiązania równania Schrödingera

1 Układy równań liniowych

Metoda Różnic Skończonych (MRS)

III TUTORIAL Z METOD OBLICZENIOWYCH

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Postać Jordana macierzy

Rozdział 1. Wektory losowe. 1.1 Wektor losowy i jego rozkład

2. Układy równań liniowych

Metody Obliczeniowe w Nauce i Technice

GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13

Zaawansowane metody numeryczne

1. PODSTAWY TEORETYCZNE

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

4. ELEMENTY PŁASKIEGO STANU NAPRĘŻEŃ I ODKSZTAŁCEŃ

ALGORYTM STATYCZNEJ ANALIZY MES DLA KRATOWNICY

Uczenie sieci typu MLP

Układy równań liniowych i metody ich rozwiązywania

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

UKŁADY RÓWNAŃ LINIOWYCH

Elementy projektowania inzynierskiego Przypomnienie systemu Mathcad

Rozwiązywanie algebraicznych układów równań liniowych metodami iteracyjnymi

Matematyka stosowana i metody numeryczne

PROGRAMOWANIE KWADRATOWE

Różniczkowanie numeryczne

PRZYKŁADOWE ZADANIA. ZADANIE 1 (ocena dostateczna)

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Zaawansowane metody numeryczne

Wyk lad 5 W lasności wyznaczników. Macierz odwrotna

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

Zad. 3: Układ równań liniowych

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Algorytmy numeryczne 1

Wstęp do metod numerycznych Algebraiczna metoda gradientów sprzężonych. P. F. Góra

Metody Numeryczne Wykład 4 Wykład 5. Interpolacja wielomianowa

TARCZE PROSTOKĄTNE Charakterystyczne wielkości i równania

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Metody numeryczne Laboratorium 2

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

ALGEBRA LINIOWA Z GEOMETRIĄ, LISTA ZADAŃ NR 8

Algebra liniowa II. Lista 1. 1 u w 0 1 v 0 0 1

Rozwiązywanie algebraicznych układów równań liniowych metodami iteracyjnymi. Plan wykładu:

Tydzień nr 9-10 (16 maja - 29 maja), Równania różniczkowe, wartości własne, funkcja wykładnicza od operatora - Matematyka II 2010/2011L

Programowanie dynamiczne

Zestaw 12- Macierz odwrotna, układy równań liniowych

METODY NUMERYCZNE. wykład. konsultacje: wtorek 10:00-11:30 środa 10:00-11:30. dr inż. Grażyna Kałuża pokój

Własności wyznacznika

Wstęp do metod numerycznych 9a. Układy równań algebraicznych. P. F. Góra

Rozdział 1 PROGRAMOWANIE LINIOWE

Wprowadzenie do Mathcada 1

Układy równań liniowych. Ax = b (1)

Równania różniczkowe zwyczajne: problem brzegowy [1D]

Ćwiczenie 3: Wprowadzenie do programu Matlab

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Podstawy OpenCL część 2

Metody Numeryczne. Wojciech Szewczuk

Wykład z Technologii Informacyjnych. Piotr Mika

10. Metody obliczeniowe najmniejszych kwadratów

Szybka transformacja Fouriera (FFT Fast Fourier Transform)

det[a 1,..., A i,..., A j,..., A n ] + det[a 1,..., ka j,..., A j,..., A n ] Dowód Udowodniliśmy, że: det[a 1,..., A i + ka j,..., A j,...

Plan wykładu. Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 6 p. Rozwiazywanie układów równań. metody bezpośrednie,

OBLICZANIE POCHODNYCH FUNKCJI.

Całkowanie numeryczne

Transkrypt:

Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną. Tomasz Chwiej 9 sierpnia 18 1 Wstęp 1.1 Dyskretyzacja n y V V 1 V 3 1 j= i= 1 V 4 n x Rysunek 1: Geometria układu i schemat siatki obliczeniowej (docelowej). Potencjały V 1, V, V 3, V 4 określają warunki brzegowe Dirichleta, ρ 1, ρ to gęstości ładunku, ε 1, ε - stałe dielektryczne w obszarze lewym i prawym. Potencjał w 4 narożnych czerwonych węzłach nie wpływa na rozwiązanie i może mieć w nich dowolną wartość. Na zajęciach rozwiążemy równanie Poissona dla układu pokazanego na Rys.1 postępując następująco: i) zdyskretyzujemy równanie na regularnej siatce przy użyciu ilorazów różnicowych, ii) zapiszemy równanie jako układ równań liniowych z macierzą rzadką, iii) układ równań rozwiążemy stosując metody dla macierzy rzadkich. Ogólne rów. Poissona dla obszaru obejmującego różne wartości stałej dielektrycznej zapisujemy jako ε V = ρ (1) ε V + ε V = ρ () Dyskretyzujemy rów. Poissona stosując ilorazy różnicowe: d f dx = f i+1 f i +f i 1 x (dokładność O( x )) oraz df dx = f i+1 f i x (gorsza dokładność O( x) ale skok ε dokonuje się na jednym oczku siatki). Przyjmujemy oznaczenia x = y = (3) x i = i, i =, 1,,..., n x (4) y i = j, j =, 1,,..., n y (5) V (x, y) V (x i, y j ) V i,j (6) ρ(x, y) ρ(x i, y j ) ρ i,j (7) ε(x, y) ε(x i, y j ) ε i,j (8) 1

wówczas równanie zdyskretyzowane ma postać ( Vi+1,j V i,j + V i 1,j ε i,j + V ) i,j+1 V i,j + V i,j 1 ( εi+1,j ε i,j V i+1,j V i,j + + ε ) i,j+1 ε i,j V i,j+1 V i,j = ρ i,j (9) 1. Algebraizacja równania Równanie (9) zapiszemy w postaci macierzowej. Najpierw dokonamy reindekscaji węzłów, węzły ponumeryjemy tak aby każdemu odpowiadał jeden indeks (l) zamiast dwóch (i,j) l = i + j (n x + 1), (i =, 1,..., n x ; j =, 1,,..., n y ) (1) l =, 1,,..., N 1, N = (n x + 1) (n y + 1) (11) przejście w drugą stronę l (i, j) (przydatne np. przy sprządzaniu map potencjału) j = ( ) l floor n x + 1 (wyznaczamy część całkowitą) (1) i = l j (n x + 1) (13) Równanie (9) zapiszemy w postaci macierzowej (algebraicznej) w której mnożenie l-tego wiersza A przez V przebiega jak poniżej A V = b (14) a l,l nx 1 V l nx 1 + a l,l 1 V l 1 + a l,l V l + a l,l+1 V l+1 + a l,l+nx+1 V l+nx+1 = b l (15) a elementy macierzowe są zdefiniowane następująco a l,l nx 1 = ε l (16) a l,l 1 = ε l (17) a l,l = ε l + ε l+1 + ε l+nx+1 (18) a l,l+1 = ε l+1 (19) a l,l+nx+1 = ε l+n x+1 () Macierz układu jest macierzą rzadką, 5-przekątniową (zob. Rys.). Zmianę stałej dielektrycznej w przestrzeni określa poniższa relacja ε l = { ε1, i n x / ε, i > n x / (1) 1.3 Warunki brzegowe Dirichleta Zastosujemy warunki brzegowe Dirichelta tj. ustalone wartości potencjału w węzłach leżących na brzegu obszaru (rys. 1). Dla węzła leżącego na brzegu (indeks k na rys.) WB wprowadzamy następująco: a k,k nx 1 = a k,k 1 = a k,k+1 = a k,k+nx+1 = (zerowanie wiersza poza diagonalą) () a k,k = 1 (diagonala) (3) b k = V B (wartość potencjału na danym brzegu) (4)

k = V k V B Rysunek : Macierz układu jest macierzą rzadką 5-przekątniową. Zadania do wykonania Macierz układu zapiszemy w formacie CSR (compressed sparse row) indeksując elementy zaczynając od. Układ rozwiążemy stosując metodę GMRES używając procedury numerycznej napisanej w języku C. Aby sprawnie rozwiązać problem proszę postępować według poniższych wskazówek 1. Ustalamy początkowe wartości parametrów: =.1, n x = n y = 4, ε 1 = ε = 1, V 1 = V 3 = 1, V = V 4 = 1, ρ 1 (x, y) = ρ x,y =, N = (n x + 1)(n y + 1). Tworzymy 3 wektory definiujące macierz układu: a,ia ia,ja oraz wektor wyrazów wolnych b i wektor rozwiązań V gdzie: a to wektor typu double o 5 N elementach (niezerowe wartości el. macierzowych) ja to wektor typu int o 5 N elementach (przechowuje informacje o numerach kolumn) ia - wektor typu int, ilość elementów N +1 (wskaźniki do elementów rozpoczynających dany wiersz). Uwaga: po utworzeniu wektora ia wszystkie jego elementy wypełniamy wartością 1. b i V to wektory typu double o N elementach 3. Wyznaczamy niezerowe elementy macierzy A oraz wektora wyrazów wolnych b uwzględniając WB Dirichleta zgodnie z algorytmem przedstawionym w sekcji (3). W celu sprawdzenia poprawności wypełnienia macierzy A i wektora b należy zapisać je do pliku, podając niezerowe elementy l, i l, j l, a[l] (dla macierzy) oraz l, i l, j l, b[l] (dla wektora). pkt. 4. Rozwiązujemy układ równań z macierzą rzadką stosując procedurę (dołączyć pliki: mgmres.c i mgmres.h) void pmgmres_ilu_cr ( int N, int nz_num, int ia [], int ja [], double a[], double V[], double b[], int itr_max, int mr, double tol_abs, double tol_rel ) Opis znaczenia argumentów znaleźć można w pliku mgmres.c. Wraz ze zmianą n x i n y zmieniają się: N - rozmiar układu (wzór 11) oraz nz num - ilość elementów niezerowych w macierzy A (przedostatnia instrukcja w algorytmie w sekcji 3), dla pozostałych parametrów można przyjąć następujące wartości: itr max = 5, mr = 5, tol abs = 1 8, tol rel = 1 8. 5. Sporządzić mapy potencjału dla ε 1 = ε = 1, V 1 = V 3 = V = V 4 = 1, ρ (1) = ρ () = i trzech siatek: a) n x = n y = 5, b) n x = n y = 1, c) n x = n y =. 5 pkt. 6. Ustalamy wartości parametrów: n x = n y = 1, V 1 = V 3 = V = V 4 =, x max = n x, 3

y max = n y, σ = x max /1 oraz ( ρ (1) (x, y) = (+1) exp (x.5 x max) σ (y.5 y max) ) σ ( ρ () (x, y) = ( 1) exp (x.75 x max) σ (y.5 y max) ) σ (5) (6) Znaleźć rozkłady potencjału dla 3 przypadków: a) ε 1 = 1 i ε = 1, b) ε 1 = 1 i ε = oraz c) ε 1 = 1 i ε = 1. Za przedstawienie 3 map potencjału 3 pkt. 3 Algorytm wypełniania macierzy rzadkiej w formacie CSR + WB Dirichleta Po utworzeniu tablic: a, ia, ja oraz wektora wyrazów wolnych b, ich elementy wypełniamy zgodnie z poniższym algorytmem inicjalizacja : k = -1 // numeruje niezerowe elementy A FOR l= TO l<n STEP 1 DO int brzeg = // wskaźnik położenia : - środek obszaru ; 1- brzeg double vb =. // potencjal na brzegu IF(i ==) THEN // lewy brzeg vb=v1 IF(j== ny) THEN // górny brzeg vb=v IF(i== nx) THEN // prawy brzeg vb=v3 IF(j ==) THEN // dolny brzeg vb=v4 // wypełniamy od razu wektor wyrazów wolnych b[l]= -(ρ (1) l +ρ () l ); // jeśli w środku jest gęstość IF( brzeg ==1) THEN b[ l]= vb; // wymuszamy wartość potencjału na brzegu // wypełniamy elementy macierzy A 4

ia[ l ]= -1; // wskaźnik dla pierwszego el. w wierszu // lewa skrajna przekatna IF(l-nx -1 >= AND brzeg == ) THEN if(ia[l] <) ia[l]=k a[k]=a l,l nx 1 ja[k]=l n x 1 ENDIF // poddiagonala IF(l -1 >= AND brzeg == ) THEN if(ia[l] <) ia[l]=k a[k]=a l,l 1 ja[k]=l 1 // diagonala if(ia[l] <) ia[l]=k IF( brzeg ==) THEN a[k]=a l,l ELSE a[k ]=1 ja[k]=l // naddiagonala IF(l<N AND brzeg == ) THEN a[k]=a l,l+1 ja[k]=l + 1 // prawa skrajna przekątna IF(l<N n x 1 AND brzeg == ) THEN a[k]=a l,l+nx+1 ja[k]=l + n x + 1 END DO nz_ num = k +1 // ilosc niezerowych elementow (1 element ma indeks ) ia[n]= nz_num 4 Przykładowe rozwiązania 5

5 4 3 1 nx=ny=5 v5.dat u 1::3 example 1 5-5 1 3 4 5-1 Rysunek 3: n x = n y = 5, ρ (1) = ρ () =, ε 1 = ε = 1 1 8 6 4 nx=ny=1, e1=1, e= g_e1.dat u 1::3 example 4 6 8 1.8.6.4. -. -.4 -.6 -.8 Rysunek 4: n x = n y = 1, ρ (1) = ρ (), ε 1 = 1, ε = 6