Równania różniczkowe cząstkowe...

Post on 05-Aug-2020

4 views 0 download

Transcript of Równania różniczkowe cząstkowe...

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

→ równanie eliptyczne → równanie Poissona

1. Klasyfikacja RRCz, przykłady

2. Metody numerycznego rozwiązywania równania Poissona

a) FFT (met. bezpośrednia)

b) metoda różnic skończonych

c) układ równań z jawnie zdefiniowaną macierzą

d) metody iteracyjne bez konstrukcji macierzy: - metoda Jakobiego, Gaussa-Seidla, zbieżność - całka działania - relaksacja, nadrelaksacja - metoda zagęszczania siatki

- relaksacja wielosiatkowa

2

Równania różniczkowe cząstkowe – klasyfikacja równań

Ogólna postać RRCz 2 rzędu zależnego od n zmiennych

i zakładamy

Zakładając, że: wówczas RRCz jest:

● eliptyczne jeśli (A jest dodatniookreślona)

● paraboliczne jeśli:

● hiperboliczne jeśli wartości własne A:

3

Przykłady RRCz

Eliptyczne - równanie Poissona

Opisuje rozwiązania stacjonarne. Gdzie się pojawia?

● Rozkład potencjału elektrycznego (grawitacyjnego)

ε - „stała” dielektryczna (w określonych podobszarach Ω), f -gęstość ładunku (masy)

● stacjonarne rozwiązania równania dyfuzji (s – źródło ciepła)

● Jedno z równań Naviera-Stokesa (stacjonarny przepływ cieczy lepkiej)

ΩΓ

ε1 ε2

to równaniem Poissona nie jest

4

Paraboliczne – równanie dyfuzji ciepła (k – wsp. przewodności cieplnej, S – źródło ciepła )

Hiperboliczne – równanie falowe

Opisują drgania mechaniczne np. membrany w 2D (f – wymuszenie, β - tłumienie )

lub rozchodzenie się fal elektromagnetycznych np. w światłowodzie

T1 T2

S4 zmienne niezależne - ale mamy tylko 3 pochodne 2 rzędu w równaniu

5

Eliptyczne RRCz na przykładzie równania Poissona

Aby rozwiązanie równania eliptycznego było jednoznaczne musi ono spełniać określone warunki na brzegu obszaru – rozwiązujemy tzw. problem brzegowy RRCz.

Typy warunków brzegowych (Г - brzeg):

1. Dirichleta

● jednorodne

● niejednorodne

2. Neumanna

3. mieszane (Robina)

6

Metoda różnic skończonych w 1D/2D

Wprowadzamy siatkę przestrzenną z równoodległymi węzłami

Rozwiązania u(x) poszukujemy w położeniach węzłowych.

Dyskretyzujemy rów. Poissona zastępując pochodne ciągłe ilorazami różnicowymi (np. 2 pochodna → iloraz trójpunktowy symetryczny)

1D

2D

7

Rozwiązywanie równania Poissona przy użyciu FFT (fast Poisson solver)

Przypomnienie → FFT w 1D:

- wartości potencjału w węzłach sieci prostej

-wartości potencjału w węzłach sieci odwrotnej (transformata)

8

Po wstawieniu transformat odwrotnych do zdyskretyzowanego równania Poissona:

dla otrzymujemy

korzystając z relacji

otrzymamy

→ rozwiązanie uzyskamy wykonując transformację odwrotną (poprzedni slajd)→ jest ono periodyczne

→ czy istnieje problem dla m=n=0? (zero w mianowniku) – nie ponieważ przyczynek od k

m=k

n=0 pochodzi od funkcji stałej,

którą możemy dodać do naszego rozwiązania (tak aby spełniało np. WB)

9

Warunki brzegowe:

→ jednorodne WB Dirichleta wówczas stosujemy transformację sinusową

Stosując zdyskretyzowaną postać rów. Poissona korzystamy z relacji

co prowadzi do wyrażenia

Po obliczeniu wszystkich dokonujemy transformacji odwrotnej potencjału

10

Warunki brzegowe cd.: → niejednorodne Dirichleta np. i jednorodne w pozostałejczęści brzegu

Rozwiązanie można zapisać w postaci (zasada superpozycji)

Z warunkami

11

Po wstawieniu u do zdyskretyzowanego r. Poissona dostaniemy

Wkład od ub pochodzi tylko od węzłów i=N-1 leżących na prawym brzegu

(zakładamy że poza brzegiem ub=0)

Czyli modyfikujemy tylko prawą stronę równania (gęstość) – dalej postępujemy jak w przypadku warunków jednorodnych Dirichleta.

12

Warunki brzegowe cd.:

→ warunki von Neumanna

→ dla jednorodnych warunków v.N. stosujemy transformację kosinusową, która automatycznie spełnia WB

13

→ niejednorodne WB. Neumana

np. na prawym brzegu

Znowu zakładamy postać rozwiązania na brzegu

z warunkami:

niezerowy wkład do wartości + znikanie pochodnej = jednorodne WB v. Neumanna= transformacja kosinusowa

Znika wartość na brzegu, ale daje wkład do pochodnej

14

Do równania różnicowego

wstawiamy dla l=N-1 (pozostałe wyrazy =0)

I otrzymujemy równanie ze zmodyfikowaną prawą stroną dla transformacji kosinusowej:

15

Zalety:

→ metoda szybka (jedynie FMG może być szybsza) i bezpośrednia (daje wynik po skończonej liczbie operacji)

→ dobrze działa na siatce prostokątnej → transformacje wykonywane na jednej tablicy potencjału (potrzebujemy jeszcze 2 tablicę dla prawej strony RRCz)

Wady:

→ zastosowanie tylko do obszarów o regularnych kształtach: prostopadłościan, sfera, cylinder → nie uwzględnia powierzchni brzegowej w środku np. elektrody włożone do obszaru, w którym szukamy potencjału

Biblioteki: Math Kernel Library (Fortran, C/C++) → Fast Poisson Solver (wykorzystuje pakiet FFTW)

16

Jeszcze o metodzie bezpośredniej rozwiązywania r. Poissona.

Skorzystajmy ze zdyskretyzowanej postaci równania w 1D

→ generuje ono jedno równanie dla ustalonej wartości l.

Zapisując je dla l=0,2,3,...,N-1 otrzymamy układ równań

przykład

→ Jak wprowadzić warunki brzegowe?

17

Uwzględniamy warunki brzegowe:

→ Dirichleta (3 kroki)

→ von Neumanna

np.: na prawym brzegu

18

Postać macierzowa operatora Laplace'a w 2D i 3D

2D

reindeksacja węzłów

5 przekątnych:

3D (analogicznie )

7 przekątnych:

19

Kiedy opłaca się rozwiązywać rów. Poissona znajdując rozwiązanie Ax=b?

→ tylko wtedy gdy używamy algorytmów dla macierzy rzadkich

→ w 1D UARL rozwiążemy przy użyciu LU dla macierzy trójdiagonalnych z nakładem ~O(n)

→ w 2D UARL też rozwiążemy stosując LU ale dla macierzy pięcioprzekatniowych

→ w 3D można stosować

i) LU jeśli liczba węzłów jest mała

ii) iLU jako preconditioner dla metod iteracyjnych (BiCGStab,GMRES, TFQMR itp.)

20

Metody iteracyjne

Punktem wyjścia jest układ równań (jeszcze w postaci macierzowej)

Który rozwiązywać będziemy iteracyjnie

M jest macierzą iteracji, która posiada wartości i wektory własne

Metoda iteracyjna jest zbieżna wtedy i tylko wtedy, gdy promień spektralny spełnia warunek

Co dają metody iteracyjne:

→ jeśli M jest macierzą rzadką to koszt jednej iteracji jest rzędu O(n), dla pełnej macierzy O(n2) → jeśli rozwiązanie startowe jest „bliskie” dokładnemu to ilość iteracji może być mała (rel. wielosiatkowe)

→ zazwyczaj prosta konstrukcja macierzy M, a w przypadku rów. Poissona nie trzeba jej nawet tworzyć (zysk w postaci ograniczenia zajętej pamięci)

→ jak w każdej procedurze iteracyjnej mogą jednak wystąpić problemy ze zbieżnością, zbieżność silnie zależy od postaci macierzy iterującej/schematu relaksacyjnego

21

Zbieżność metody iteracyjnej

Dla przepisu iteracyjnego mamy

Mamy dostępną bazę w postaci wektorów własnych M:

Założenia:

Metoda powinna być zbieżna, ale jaka będzie szybkość zbieżności do rozwiązania dokładnego? → zależy od postaci M

błąd w k-tej iteracji

22

Konstrukcja macierzy iterującej

Założenia: 1) 2) zbieżność:

3) tempo zbieżności

Metoda Jakobiego:

diagonala macierztrójkątna dolna

macierztrójkątna górna

23

Metoda Jakobiego cd. (warunki brzegowe Dirichleta → niejawne)

Przepis iteracyjny (macierzowy):

Przepis dla pojedynczego węzła siatki → to wzór relaksacyjny:

24

Otrzymaliśmy wzór relaksacyjny dla metody Jakobiego

→ nie musimy już konstruować macierzy (ta ma prostą konstrukcję, a jej współczynniki są zawarte w równaniu)

→ w obliczeniach musimy użyć dwóch tablic/wektorów, dla starego i nowego rozwiązania, metoda Jakobiego to relaksacja globalna

→ jaka jest zbieżność tej metody?

-1-0.8-0.6-0.4-0.2

00.20.40.60.8

1

0 2 4 6 8 10 12 14 16 18 20

l

i

nr

eigenvalues - Jakobi

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0 2 4 6 8 10 12 14 16 18 20

nodes

vec1

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0 2 4 6 8 10 12 14 16 18 20

nodes

vec10

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0 2 4 6 8 10 12 14 16 18 20

nodes

vec20

Przykład:

20 węzłów, i=1,2,...,20

zanika wolno

zanika wolno

zanika szybko

i) metoda Jakobiego jest zbieżnaii) są wartości własne o modułach bliskich 1 → metoda jest wolno zbieżna

25

Zbieżność metody Jakobiego

Tempo zbieżności (eliminacji błędu)

zależy od promienia spektralnego M

→ im więcej węzłów N tym bardziej promień spektralny zbliża się do 1

→ zagęszczanie siatki spowoduje spowolnienie działania metody Jakobiego

Algorytm

26

Metoda Gaussa-Seidla

Średnia arytmetyczna: sąsiada z prawej strony (k)oraz z lewej strony (k+1)

Dla laplasjanu (po wymnożeniu przez D-1) otrzymamy:

27

→ Ze względu na jednoprzekątniową postać L i U wzór działa jak podstawienie. Pozbywając się macierzy, dostaniemy wzór relaksacyjny.

→ wyliczając nową wartość w węźle i-tym korzystamy z wartości w węźle (i-1) już zmienionym w bieżącej Iteracji

→ metoda GS to relaksacja lokalna (rozwiązanie znajdziemy dysponując tylko jednym wektorem rozwiązań)

Wzór iteracyjny w metodzie GS

Przykład. Macierz iteracji w metodzie GS

Algorytm GS

Jakie ma wartości i wektory własne?

28

Wartości i wektory własne macierzy iteracji M w metodzie Guassa-Seidla (dla laplasjanu w 1D), n=20

00.10.20.30.40.50.60.70.80.9

1

0 2 4 6 8 10 12 14 16 18 20

| l

i |

nr

eigenvalues - GS-Jakobi

GSJakobi

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0 2 4 6 8 10 12 14 16 18 20

nodes

vec1

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0 2 4 6 8 10 12 14 16 18 20

nodes

vec2

-0.2

0

0.2

0.4

0.6

0.8

1

0 2 4 6 8 10 12 14 16 18 20

nodes

vec8

→ wartości własne są nieujemne

→ wektory własne odpowiadające najwyższym wartościom własnym są wolnozmienne (w m. Jakobiego wektory te były szybko- i wolno-zmienne)

→ m. Gaussa-Seidla ma własności wygładzające błąd (cechę tę wykorzystujemy w relaksacji wielosiatkowej)

→ promień spektralny M w metodzie GS jest nieznacznie mniejszy niż w m. Jakobiego, ale dla k=1000 .........

29

Co oznacza zwrot: „własności wygładzające” w praktyce?

Przykład. Porównanie szybkości tłumienia błędu w metodach GS i Jakobiego w przypadku równania Laplace'a (brak niejednorodności).Generujemy wektor szybko-zmienny (najmniejsza wartość własna macierzy iterującej Jakobiego), które stanowi rozwiązanie początkowe

-0.1

-0.08

-0.06

-0.04

-0.02

0

0.02

0.04

0.06

0.08

0.1

0 50 100 150 200

1-st iteration

JakobiGS

-0.1

-0.08

-0.06

-0.04

-0.02

0

0.02

0.04

0.06

0.08

0.1

0 50 100 150 200

2-nd iteration

JakobiGS

-0.1

-0.08

-0.06

-0.04

-0.02

0

0.02

0.04

0.06

0.08

0.1

0 50 100 150 200

10-th iteration

JakobiGS

→ widać że m. GS bardzo szybko tłumi wysokozmienny błąd

→ M Jakobiego tej własności nie posiada

30

Tempo zbieżności relaksacji GS możemy kontrolować dodając do równania

parametr zbieżności

Inaczej: mieszamy stare i nowe rozwiązanie

→ w<1 podrelaksacja (obniżamy tempo zbieżności)

→ w=1 zwykła relaksacja

→ w>1 nadrelaksacja (tu powinniśmy uzyskać przyśpieszenie obliczeń)

(dowód zbieżności metody GS dla pokazany na wykładzie z Metod Numerycznych dla układu równań liniowych)

Pytanie: kiedy zatrzymać relaksację?

31

Kiedy zatrzymać relaksację?

Jakość rozwiązania równania Poissona możemy sprawdzić na dwa sposoby:

1) badając normę euklidesową wektora reszt

2) licząc całkę działania dla pola elektrycznego

→ całka działania osiąga minimum dla rozwiązania dokładnego (zasada wariacyjna Rayleigha-Ritza)

Przykład. Rozwiązujemy metodą relaksacji (Jakobi,GS, nadrelaksacja) równanie Poissona w 1D

0

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

0.09

u(x)

x

u(it=0)=0

u(x)gest/15

32

0

0.5

1

1.5

2

2.5

3

3.5

0*10 0 1*10 4 2*10 4 3*10 4

||b-A

x||

2

iterations

u(it=0)=0

JakobiGS - w=1.0GS - w=1.5GS - w=1.9

1*10 -12

1*10 -10

1*10 -8

1*10 -6

1*10 -4

1*10 -2

1*10 0

1*10 2

0*10 0 1*10 4 2*10 4 3*10 4

||b-A

x||

2iterations

u(it=0)=0

JakobiGS - w=1.0GS - w=1.5GS - w=1.9

-8*10 -3

-7*10 -3

-6*10 -3

-5*10 -3

-4*10 -3

-3*10 -3

-2*10 -3

-1*10 -3

0*10 0

0*10 0 1*10 4 2*10 4 3*10 4

S

iterations

u(it=0)=0

JakobiGS - w=1.0GS - w=1.5GS - w=1.9

→ m. Jakobiego najwolniejsza

→ nadrelaksacja tym szybsza im większa wartość parametru zbieżności (ale nie jest to regułą – zależy często od WB)

→ co lepsze do warunku zakończenia?: ||r||2 czy całka działania?

Jeśli całka działania osiąga minimum to w kolejnych iteracjach już się nie zmieni

→ to wygodny warunek zatrzymania relaksacji.

Dla normy wektora reszt pojawia się problem, który jest wynikiem dokładności rozwiązania numerycznego i precyzji obliczeń → trudno określić warunek zakończenia relaksacji

33

Jak jeszcze można przyśpieszyć (zoptymalizować) proces relaksacji?Np. stosując:

1) metodę zagęszczania siatki

2) relaksację wielosiatkową

Zagęszczanie siatki – najprostsze.

1) Znajdujemy rozwiązanie na najrzadszej siatce (czerwone węzły, krok na siatce k=4)

stosując wzór relaksacyjny

oraz uśredniając gęstość w komórce otaczającej aktualny węzeł (żółty obszar)

34

2) Przechodzimy na siatkę o dwukrotnie mniejszym oczku siatki, wartości w nowych węzłach (niebieskie) interpolujemy liniowo wartościami z węzłów sąsiednich

Siatka rzadka: czerwone węzły Siatka gęsta: niebieskie węzły

węzeł środkowy:

35

3) na rzadszej siatce relaksujemy równanie

4) powtarzamy operacje (2) i (3) na kolejnych gęstszych siatkach

Przykład.

-0.1

-0.08

-0.06

-0.04

-0.02

0

0.02

0.04

0.06

1 10 100 1000

S

iteration

overrelaxation - multigrid

k=16k=8k=4k=2k=1

k=16

10 20 30 40 50 60 70 80 90100110120

x

102030405060708090

100110120

y

-0.2

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

k=8

0 20 40 60 80 100 120

x

0

20

40

60

80

100

120

y

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

k=4

0 20 40 60 80 100 120 140

x

0

20

40

60

80

100

120

140

y

-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.25

k=2

0 20 40 60 80 100 120 140

x

0

20

40

60

80

100

120

140

y

-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.25

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

1 10 100 1000 10000

S

iteration

Overrelaxation

w=1.1w=1.2w=1.3w=1.4w=1.5w=1.6w=1.7w=1.8w=1.9

gestosc

0 20 40 60 80 100 120 140

x

0

20

40

60

80

100

120

140

y

-80

-60

-40

-20

0

20

40

60

80

k=1

0 20 40 60 80 100 120 140

x

0

20

40

60

80

100

120

140

y

-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.25

36

schemat prostego zagęszczania siatki

start

koniec

na każdej siatce iteracja do pełnej zbieżności

ten czynnik spowalnia metodę

Zamiast jednokierunkowego zagęszczania siatki możemy użyć schematu wielosiatkowego (multigrid method)

np. najprostszego dwusiatkowego

tu szukamy rozwiązania

tu szacujemy błąd(wolnozmienny)

na każdej siatce wykonujemy tylkokilka iteracji

Relaksacja wielosiatkowa

37

Procedura iteracji dwusiatkowej dla równania

1. na siatce (Δx) wykonujemy n1 iteracji, dostajemy:

2. liczymy wektor reszt (Δx):

Uwaga: wektor błędu e(Δx) zawiera składowe wolnozmienne - znajdźmy go na siatce (2dx)

3. rzutujemy wektor reszt na rzadszą siatkę używając (macierzowego) operatora restrykcji

4. teraz znajdujemy przybliżone rozwiązanie dla e(2Δx) tj. eliminujemy wpływ błędu wolnozmiennego

- wykonujemy tylko n2 iteracji

5. Wektor błędu e(2Δx) rzutujemy na siatkę gęstszą używając (macierzowego) operatora prolongacji

6. poprawiamy przybliżone rozwiązanie na siatce (Δx)

Uwaga: wektory x(Δx) oraz e(Δx) stanowią tylko przybliżenia ich dokładnych odpowiedników dlatego procedurę (kroki 1-6) powtarzamy aż do uzyskania zbieżności np. funkcjonału dla pola elektrycznego

38

Operator restrykcji/prolongacji – jak je skonstruować?

Najpierw zobaczmy co chcemy uzyskać

restrykcja:

zostawiamy tylko węzły niebieskie

prolongacja:

generujemy węzły czerwone x3 , x

5 i x

7

(węzły brzegowe x1 i x

9 – bez zmian

np. ze względu na WB Dirichleta)

Przykład dla siatki 1D

39

W relaksacji wielosiatkowej możmy stosować różne schematy

4-siatkowa relaksacja typu V-cycle

Pełna relaksacja wielosiatkowa

- szukamy rozwiązania na siatce (Δx*k) [1]- rozwiązania rzutujemy je na siatkę (Δx*k/2) [2] i wykonujemy N(k/2) iteracji- szukamy błedu na siatce (Δx*k) [3]- poprawiamy rozwiązanie na siatce (Δx*k/2) [4]- rzutujemy rozwiązanie na siatkę (Δx*k/4) [5] i wykonujemy N(k/4) iteracji- szukamy błędu na siatce (Δx*k/2) [6] oraz (Δx*k) [7]- poprawiamy błąd na siatce (Δx*k/2) [8] oraz rozwiązanie na siatce (Δx*k/4) [9]- rzutujemy rozwiązanie na siatkę (Δx*k/8) [10] i relaksujemy je N(k/8) razy- wykonujemy jeden do kilku pełnych V-cykli