metody numeryczne - if.pw.edu.plagatka/numeryczne/wyklad_09.pdf · rozwa Ŝmy równanie struny...
TRANSCRIPT
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
0ε
ρϕ =∆
potencjał
gęstość
ładunku
Przykład:
Powierzchnia potencjału
przy losowo rozmieszczonej
gęstości ładunku