Metody numeryczne - if.pw.edu.plagatka/numeryczne/wyklad_09.pdf · Rozwa Ŝmy równanie struny...

Preview:

Citation preview

Dr Piotr Fronczak

Metody numeryczne

Wykład nr 9

Równania róŜniczkowe zwyczajne - problemy brzegowe (BVP)

Dotychczas omawialiśmy problemy początkowe – rówania róŜniczkowe,

w których dane były wartości zmiennych zaleŜnych (lub ich pochodne)

dla pewnej szczególnej wartości zmiennej niezaleŜnej.

Teraz naszym zadaniem będzie wyznaczenie spośród funkcji spełniających

dane równanie róŜniczkowe zwyczajne, zdefiniowanych w rozwaŜanym obszarze,

tych, które spełniają dodatkowe warunki na brzegu tego obszaru. Warunki takie

nazywane są warunkami brzegowymi i są nałoŜone na wartości funkcji i jej

pochodnych w więcej niŜ jednym punkcie tego obszaru.

BVP są zwykle szczególnym przypadkiem równań róŜniczkowych cząstkowych,

których rozwiązaniem są funkcje czasu i połoŜenia, np. pole elektryczne,

rozkład temperatury, prędkość przepływu itp.

2

2

x

y

t

y

∂=

∂równanie dyfuzji

2

2

2

2

x

y

t

y

∂=

∂równanie falowe

Jeśli y = y(x) (nie zaleŜy od czasu – stany ustalone, równowagi), to otrzymujemy

ogólną postać BVP (drugiego rzędu):

),(2

2

dx

dyyf

dx

yd=Dane jest równanie

w dziedzinie bxa ≤≤

oraz określone są w pewien sposób warunki brzegowe.

Typowe formy warunków brzegowych

Warunki brzegowe Dirichleta

Dwie wartości y(x) są dane – jedna dla x = a, druga dla x = b.

y(a) = Ya oraz y(b) = Yb

Warunki brzegowe Neumanna

Dwie wartości dy/dx są dane – jedna dla x = a, druga dla x = b.

a

ax

Ddx

dy=

=

b

bx

Ddx

dy=

=

oraz

Mieszane warunki brzegowe Robina

a

ax

Caycdx

dyc =+

=

)(21 b

bx

Cbycdx

dyc =+

=

)(43oraz

4321 ,,, cccc - stałe

Metoda strzałów

bxaxFyxkdx

yd≤≤=+ );()(

2

2

Rozpatrzmy ogólne równanie

W celu jego zdyskretyzowania przyjmijmy

Nabh /)( −=

gdzie N jest liczbą punktów, na które dzielimy przedział [a,b].

Dyskretyzując drugą pochodną

)(2 2

2

11''hO

h

yyyy iii

i ++−

= −+

iiiiii Fyk

h

yyy=+

+− −+2

11 2

otrzymujemy równanie

iiiiii Fyk

h

yyy=+

+− −+2

11 2

Chcemy scałkować to równanie od x0 = a do xN = b, więc przedstawmy je w postaci

iiiiii Fhykhyyy22

11 2 +−+−= −+

1

2

11

2

102 2 Fhykhyyy +−+−=Czyli dla i = 1

Mamy dane y0 = y(a) = 0, ale y1 jest nieznane.

Znajomość y1 jest równoznaczna ze znajomością y’ dla x = 0:

h

yyy ii

i

−≈ +1'

001 yhyy ′+≈

RozwaŜmy równanie struny zaczepionej na obu końcach.

Jedyną siłą działającą na element struny jest siła

napręŜeń T. Jej wartość w kierunku pionowym

( ))sin()sin()sin()sin( 1 iiTTTF θθθθθ −=−∆+= +

Zakładając, Ŝe kąty θ są małe

x

yytg ii

ii∆

−=≈ +

++1

11 )()sin( θθ

oraz, Ŝe przyśpieszenie elementu struny jest proporcjonalne do wychylenia

ya2ω−=

dostajemy

+−≈−⋅∆= −+

x

yyyTyxma iii 112 2

)( ωρ

0)(

2 2

2

11 =+

+− −+ yx

yyyT iii ρω

Dla 0→∆x 0'' 2 =+ yTy ρω

0'' =+ yy λT

2ρωλ = 2

2

2

2

x

y

t

y

∂=

∂λ

2

2

dt

yda =

Zakładając

Ŝe

otrzymalibyśmy

0)(,0)0(0'' ===+ Lyyyy λ

Gdy λ > 0, to istnieje rozwiązanie postaci

)sin()cos( xBxAy αα +=

Uwzględniając warunki brzegowe otrzymujemy nieskończenie wiele rozwiązań

...,3,2,1,sin)( =

= n

L

xnxyn

π

Gdy λ = 0BAxy +=

Uwzględniając warunki brzegowe otrzymujemy rozwiązanie trywialne y = 0.

z wartościami własnymi...,3,2,1,

2

22

== nL

nn

πλ

PoniewaŜ problem fizyczny nie ma ujemnych wartości własnych,

nie musimy analizować przypadku λ < 0.

Zatem mamy rozwiązanie

...,3,2,1,sin)( =

= n

L

xnxyn

π

równania

0)(,0)0(0''2

22

===+ LyyyL

ny

π

Wybierzmy n = 4 i L = 1.

( ) 0)1(,0)0(,4sin)( === yyxxy π

( )xxy ππ 4cos4)(' =Pochodna wynosi

=0

=0

)162(4 22

2 ππ hhy −=

iiiiii Fhykhyyy22

11 2 +−+−= −+

Oraz dalsze kroki zgodnie ze wzorem ze slajdu nr 6

)4cos(4 001 xhyy ππ+=

1

2

11

2

102 2 Fhykhyyy +−+−=

A kolejne kroki rozwiązania

x yteor ynum

0 0.0000 0.0000

0.1 0.9511 1.2566

0.2 0.5878 0.5289

0.3 -0.5878 -1.0341

0.4 -0.9511 -0.9641

0.5 0.0000 0.6283

0.6 0.9511 1.2285

0.7 0.5878 -0.1113

0.8 -0.5878 -1.2753

0.9 -0.9511 -0.4255

1 0.0000 1.0963

Podzielmy obszar rozwiązań [0,1] na 10 równych części (h = 0.1)

x yteor ynum

0 0.0000 0.0000

0.05 0.5878 0.6283

0.1 0.9511 1.0086

0.15 0.9511 0.9907

0.2 0.5878 0.5817

0.25 0.0000 -0.0570

0.3 -0.5878 -0.6731

0.35 -0.9511 -1.0235

0.4 -0.9511 -0.9699

0.45 -0.5878 -0.5333

0.5 0.0000 0.1138

0.55 0.5878 0.7160

0.6 0.9511 1.0355

0.65 0.9511 0.9462

0.7 0.5878 0.4834

0.75 0.0000 -0.1703

0.8 -0.5878 -0.7567

0.85 -0.9511 -1.0444

0.9 -0.9511 -0.9198

0.95 -0.5878 -0.4321

1 0.0000 0.2262

-1.5000

-1.0000

-0.5000

0.0000

0.5000

1.0000

1.5000

0 0.2 0.4 0.6 0.8 1 1.2

yteor

ynum

-1.5000

-1.0000

-0.5000

0.0000

0.5000

1.0000

1.5000

0 0.2 0.4 0.6 0.8 1 1.2

yteor

ynum

Podzielmy obszar rozwiązań [0,1] na 20 równych części (h = 0.05)

Zwykle nie znamy wartości i wektorów własnych układu. Trzeba je zgadnąć.

Przekształćmy ogólny problem brzegowy drugiego rzędu

badx

dyYbyYaybxayxf

dx

yd==≤≤= )(,)(),,(

2

2

zdla

w układ dwóch równań pierwszego rzędu:

aYaywdx

dy== )( pocz. war. z

),,( wyxfdx

dw= BEZ WARUNKU POCZĄTKOWEGO

Musimy znaleźć warunek początkowy

α===axdx

dyaw )(

Innymi słowy – musimy znaleźć nachylenie αOK

krzywej y w punkcie a.

Ya

Yb

x=a x=bα2 < αOK < α1

0)(,0)0(016'' 2 ===+ Lyyyy π

Wróćmy do naszego przykładu (dla n=4, L=1)

Przepiszmy to równanie w postaci układu dwóch równań pierwszego rzędu:

=−=

==

α)0(16

0)0(

2wyπw'

ywy'

α - parametr układu.

Musimy znaleźć miejsce zerowe funkcji błędu

0)1()1()( =−= yyEα

αZwykle powyŜszy układ równań będziemy rozwiązywać jedną z metod podanychna poprzednim wykładzie (np. Rungego-Kutty), ale na razie, korzystając z metod analitycznych, zauwaŜmy Ŝe

Problem początkowy!

π

π

4

)4sin()(

xCxy =

A zatem nie znajdziemy stałej C z warunku

y(1) = 0.

0.2 0.4 0.6 0.8 1.0

-1.0

-0.5

0.5

1.0

Wybierzmy zatem na potrzeby dydaktyki inny warunek brzegowy:

587.0)7.0( =yMetoda bisekcji.

100

100

1

0

=

−=

α

α

-100 -50 50 100

-6

-4

-2

2

4

0)(2

110 =+= ααα śr

śrśrEE αααα =⇒<⋅ 10 0)()(

50)(2

110 −=+= ααα śr

śrśrEE αααα =⇒>⋅ 00 0)()(

…-10.5 -10.0 -9.5 -9.0

-0.06

-0.04

-0.02

0.02

0.04

2.10−=śrα

Sprawdźmy:

17.10)7.04cos(4)'7.04sin( −== πππ

Metoda siecznych.

11

1 0

+−

−=

ii

i

ii

ii EEE

αααα

i

ii

iiii E

EE −

−−=

−+

1

11

)( αααα

E=0

α

E

Ei-1

Ei

αi-1 αi

369.6100

194.5100 11

−==

=−= −−

ii

ii

E

E

α

α

16.10)369.6(369.6194.5

)100100(1001 −=−

+

−−−=+iα

17.10)7.04cos(4)'7.04sin( −== πππPrzypomnienie:

Wniosek: szybka zbieŜność juŜ po pierwszej iteracji.

Metoda róŜnic skończonych

W metodzie tej, pochodne w równaniu róŜniczkowym zastępujemy róŜnicami

skończonymi.

Dziedzinę rozwiązań [a,b] dzielimy na N przedziałów o długości h = (b-a) / N.

Mamy N+1 punktów. Dla kaŜdego z nich zapisujemy równanie róŜnicowe – czyli

równanie algebraiczne.

Mamy zatem układ równań algebraicznych, który rozwiązujemy jedną z metod

omówionych na wykładzie nr 3.

x =a1xi xi+1xi-1

x =bN+1

h

x

y

Przykład:

0)1(,0)0(,12

2

=== yydx

yd

Drugą pochodną moŜna przybliŜyć za pomocą trójpunktowych róŜnic centralnych

(zwykle, choć niekoniecznie). Mamy zatem

Rozwiązanie analityczne:22

)(2

xxxy −=

By otrzymać rozwiązanie numeryczne najpierw dyskretyzujemy równanie dla punktów

[x0, x1, …, xN], gdzie x0 = 0, xN = 1, xi = ih.

Wybierzmy h = 0.2 (N = 5).

4,3,2,1,12

2

11 ==+− +− i

h

yyy iii dla

Zwróćmy uwagę, Ŝe są to równania tylko dla punktów wewnętrznych.

Układ nasz ma 4 niewiadome i 4 równania:

. h y y- y

, h y y- y

, h y y-y

, h y y -y

2543

2432

2321

2210

2

2

2

2

=+

=+

=+

=+

Macierz powyŜsza jest przykładem macierzy trójdiagonalnej.

Choć powyŜszy układ moŜna rozwiązać jedną z metod omówionych na

wykładzie 3 (np. metodą Gaussa), to szczególna postać tej macierzy pozwala

zredukować liczbę obliczeń z n3 do n.

=

5

2

2

2

0

2

4

3

2

1

21

121

121

12

yh

h

h

yh

y

y

y

y

=

04.0

04.0

04.0

04.0

.y y

, yy y

, y yy

, yy

1004

43

1004

432

1004

321

1004

21

2

2

2

2

=−

=+−

=+−

=+−

. y y

, yy y

, y y

, yy

1004

43

1004

432

1006

3223

1002

221

1

2

2

=−

=+−

=+−

−=−

. y y

, yy

, y y

, yy

1004

43

1008

4334

1004

332

2

1002

221

1

2 =−

=+−

−=−

−=−

. y

, yy

, yy

, yy

101

445

1006

443

3

1004

332

2

1002

221

1

=−

−=−

−=−

−=−

.)(

)(

)(

1008

10012

21

1002

1

10012

10012

32

1004

2

10012

1008

43

1006

3

1008

4

−=−+−=

−=−+−=

−=−+−=

−=

y

, y

, y

,y

0.0 0.2 0.4 0.6 0.8 1.0-0.14

-0.12

-0.10

-0.08

-0.06

-0.04

-0.02

0.00

y

x

Algorytm Thomasa dla układów z macierzą trójdiagonalną

Dany jest układ równań:

niYycbya iiiiii ...,,2,111 ==++ +− dla

=

nnnn

n

Y

Y

Y

y

y

y

ba

c

cba

cba

cb

.

.

.

.

0......0

...............

0...0

0...0

0......0

2

1

2

1

1

333

222

11

lub w postaci macierzowej 0,01 == nca

Algorytm składa się z dwóch faz:

�Faza eliminacji wprzód – wykonując dla równań od i = 1 do n eliminację

niewiadomych uzyskujemy ostatnie równanie (i = n) z jedną tylko niewiadomą,

którą moŜemy wyznaczyć.

�Faza eliminacji wstecz – korzystając z wyznaczonej w równaniu i+1 niewiadomej yi+1

wyznaczamy z równania i niewiadomą yi, aŜ do otrzymania wartości y1.

(∗)(∗)(∗)(∗)

A zatem szukamy schematu postaci:

iiii yy βγ +=−1

Podstawiając ten schemat do równania (∗) otrzymujemy:

( ) iiiiiiiii Yycybya =+++ +1βγ

Wyznaczając yi

iii

iiii

iii

ii

ba

aYy

ba

cy

+

−+

+

−= + γ

β

γ 1

Porównując z otrzymujemy

iii

iiii

iii

ii

ba

aY

ba

c

+

−=

+

−= ++ γ

ββ

γγ 11 ,

Otrzymaliśmy równanie rekurencyjne na poszukiwane współczynniki γ i β.

Współczynniki początkowe γ1 i β1 nie mają znaczenia, bo mnoŜone są przez a1=0.

Musimy jeszcze znać yn, by móc rozpocząć iteracyjne obliczanie niewiadomych.

Podstawiając pierwsze równanie schematu

do równania (∗) otrzymujemy:

nnnn yy βγ +=−1

( ) nnnnnnn Yybya =++ βγ

Czyli

nnn

nnnn

ba

aYy

+

−=

γ

β

iii

iiii

ba

aY

+

−=+ γ

ββ 1

Warto zauwaŜyć, Ŝe skoro to wystarczy przyjąć

(∗∗)

01 =+ny

(∗∗∗)

, by móc bezpośrednio skorzystać ze wzoru (∗∗).

Podsumowując:

iii1-i

1n

iii

iii1i

iii

i1i

11

xy

1..2ni for

0;y

ba

aY,

ba

c

1..ni for

przykład //na0;

βγ

γ

ββ

γγ

βγ

+=

+=

=

+

−=

+

−=

=

==

+

++

Algorytm Thomasa jest niezawodny, gdy macierz jest diagonalnie dominująca

nicab iii ...,,1=+≥

Przykład: radiator prętowy

Równanie opisujące rozkład temperatury wzdłuŜ długości pręta:

TA

TB

TS

L

x

LxTTkA

Ph

dx

TdS

C

C ≤≤=−− 0,0)(2

2

hc – współczynnik wnikania ciepła

P – obwód pręta

k – współczynnik przewodzenia ciepła

Ac – pole poprzecznego przekroju prętaK293T

K293T(L)

K473T(0)

m0.1L

m101.6A

W/m/K 240k

m 0.016 P

/KW/m40h

S

25

c

2

c

=

=

=

=

×=

=

=

=

0)(2

2

=−− STTdx

Tdβ 0)(

22

11 =−−+− +−

Siiii TT

h

TTTβ

Siii ThTThT ββ 2

1

2

1 )2( −=++− +−

Podzielmy domenę rozwiązań na 5 części (h = L / 5 = 2 cm)

SThTThTi ββ 2

32

2

1 )2(2 −=++−=

)()2( 1

2

32

2TThTTh S +−=++− ββczyli

SThTThTi ββ 2

43

2

2 )2(3 −=++−=

SThTThTi ββ 2

54

2

3 )2(4 −=++−=

SThTThTi ββ 2

65

2

4 )2(5 −=++−=

)()2( 6

2

45

2TThTTh S +−=++− ββczyli

+−

+−

=

+−

+−

+−

+−

)(

)(

)2(100

1)2(10

01)2(1

001)2(

6

2

2

2

1

2

5

4

3

2

2

2

2

2

TTh

Th

Th

TTh

T

T

T

T

h

h

h

h

S

S

S

S

β

β

β

β

β

β

β

β

Mamy zatem układ 4 równań z czterema niewiadomymi.

0.00 0.02 0.04 0.06 0.08 0.10

300

350

400

450

500

Rozwiązując ten układ

za pomocą algorytmu Thomasa

otrzymujemy:

Metoda róŜnic skończonych dla nieliniowych równań róŜniczkowych

Najciekawsze problemy współczesnej fizyki są nieliniowe.

Nieliniowe problemy brzegowe dyskretyzujemy w podobny sposób.

Wynikiem jest jednak układ nieliniowych równań algebraicznych.

Metody rozwiązywania takich równań nieliniowych omówiliśmy na wykładzie nr 2.

Najbardziej wydajne obliczeniowo są w tym przypadku metody iteracyjne.

Istnieje jednak potencjalny problem związany ze zbieŜnością schematu iteracyjnego.

Metoda punktu stałego

Układ równań nieliniowych moŜna zapisać w postaci

][][]][[ bya =Φ+

[a] – macierz współczynników

[Φ] – wektor nieliniowych wyrazów będących funkcją niewiadomych yi

[b] - wektor znanych wielkości stałych

Spośród wielu sposobów konstruowania procedury iteracyjnej wybierzmy najprostszy

][][]][[ bya =Φ+

kkbya ][][]][[ 1 Φ−=+

obliczone na podstawie

wcześniejszego kroku k

Jeśli liczba punktów jest mała moŜemy macierz [a] odwrócić. Jeśli nie, moŜemy

skorzystać z metody eliminacji Gaussa albo Thomasa (dla macierzy trójdiagonalnej)

( )kkbay ][][][][ 11 Φ−= −+

Przykład: radiator prętowy

Gdy uwzględnimy wyraz odpowiedzialny na wypromieniowywanie ciepła,

równanie opisujące rozkład temperatury wzdłuŜ długości pręta uzyska postać:

LxTTkA

PTT

kA

Ph

dx

TdS

C

S

C

C ≤≤=−−−− 0,0)()( 44

2

2 εσ

ε - względna zdolność emisyjna

σ - stała Stefana-Boltzmanna

0)()(2 44

2

11 =−−−−+− +−

SiBSiAiii TTTT

h

TTTββ

Równanie zdyskretyzowane:

)()2( 42

1

422

1 SBSAiiBiAi TThTThThT ββββ +−=+−+− +−

=

+

+−

+−

+−

+−

)(

)(

)(

)(

)2(100

1)2(10

01)2(1

001)2(

4

5

2

4

4

2

4

3

2

4

2

2

5

4

3

2

2

2

2

2

Th

Th

Th

Th

T

T

T

T

h

h

h

h

B

B

B

B

A

A

A

A

β

β

β

β

β

β

β

β

−+−

+−

+−

−+−

=

6

42

42

42

1

42

)(

)(

)(

)(

TTTh

TTh

TTh

TTTh

SBSA

SBSA

SBSA

SBSA

ββ

ββ

ββ

ββ

( )kkbaT ][][][][ 11 Φ−= −+

Teraz stosujemy procedurę iteracyjną:

0.00 0.02 0.04 0.06 0.08 0.10

280

320

360

400

440

480

T [K

]

x [m]

krok 0

krok 1

krok 2

krok 3

0 0.02 0.04 0.06 0.08 0.1

krok 0 473 400 400 400 400 293

krok 1 473 423.2293 382.8297 349.1078 319.8155 293

krok 2 473 423.3492 383.3225 349.8507 320.4519 293

krok 3 473 423.344 383.3132 349.8409 320.4456 293

• Zakładamy hx = hy = h [siatka kwadratowa]

• u(xi,yj) = ui,j

• u(xi+h, yj+h) = ui+1,j+1,

xi xi+1xi-1

yj

yj-1

yj+1

( ) [ ]jijijixji uuuh

yxu ,1,,122

1,'' +− +−≈

02

2

2

2

=∂

∂+

y

u

x

uui,j

hx

hy

Dwuwymiarowe zagadnienie brzegowe

Równanie Laplace’a

( ) [ ]1,,1,22

1,'' +− +−≈ jijijiyji uuu

hyxu

( ) ( )

{ } { }[ ]

[ ] 041

221

,'',''

1,,1,1,,12

1,,1,,1,,12

=++−+

=+−++−

≈+

++−−

+−+−

jijijijiji

jijijijijiji

yjixji

uuuuuh

uuuuuuh

yxuyxu

Sumując wyrazy wyznaczamy ui,j: { }1,,11,,1,4

1++−− +++= jijijijiji uuuuu

Przyjmujemy początkowe przybliŜenie

1 2

3 4

u = 0

u = 0 u = 0

u = 1

Przykład: siatka 3x3

)10(

)01(

)00(

)00(

32411

4

41411

3

14411

2

32411

1

mmm

mmm

mmm

mmm

uuu

uuu

uuu

uuu

+++=

+++=

+++=

+++=

+

+

+

+

01

4

1

3

1

2

1

1 ==== uuuu

Korzystamy z metody iteracyjnej Jacobiego (lub Gaussa-Seidla – szybsza zbieŜność)

12

34

S1

S2

S3

S4

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Korzystając z metod dokładnych (np. dekompozycja LU) musimy ułoŜyć macierz

o rozmiarze liniowym n x n.

Wniosek: Musimy wprowadzić indeksowanie równań odpowiadających punktom

dwuwymiarowej siatki n x n:2...,,2,1 nP =

(na przykład wierszami)

),(2

2

2

2

yxfy

u

x

u−=

∂+

∂Przykład: równanie Poissona

[ ]jijijijijiji fuuuuu

h,1,,1,1,,12

41

=−−+−− ++−−

Pkj →),(

jnkP +⋅−= )1(

[ ] PnPPPnPP fuuuuuh

=−−+−− ++−− 1124

1

ρϕ =∆

potencjał

gęstość

ładunku

Przykład:

Powierzchnia potencjału

przy losowo rozmieszczonej

gęstości ładunku

Recommended