x - Wydział Chemii UJ

Transkrypt

x - Wydział Chemii UJ
I. MINIMALIZACJA FUNKCJI.
4.1 Ekstrema funkcji. Punkty siodłowe.
Funkcja f (x) jednej zmiennej ma w punkcie x0 minimum (maksimum) lokalne, jeśli istnieje
takie otoczenie punktu x0, Ŝe dla dowolnego punktu x z tego otoczenia zachodzi f(x) > f(x0)
(f(x) < f(x0) ). Minima i maksima lokalne to ogólnie ekstrema lokalne.
Minimum (maksimum) globalnym danej funkcji nazywamy najmniejszą (największą) wartość
przyjmowaną przez funkcję w całej dziedzinie.
Twierdzenie Fermata mówi, Ŝe w punkcie x0, w którym funkcja ma ekstremum lokalne znika
jej pierwsza pochodna: f’(x0) = 0. ZauwaŜmy, Ŝe zerowanie się pierwszej pochodnej to
warunek konieczny, ale niewystarczający istnienia ekstremum lokalnego.
Sprawdzenie istnienia bądź nie ekstremum oraz jego typu (minimum czy maksimum) funkcji
jednej zmiennej w danym punkcie moŜna oprzeć na badaniu zmian znaku pierwszej
pochodnej w otoczeniu tego punktu.
Skupmy się jednak na teście drugiej pochodnej:
Jeśli w punkcie x0 pierwsza pochodna funkcji przyjmuje wartość zero f’(x0) = 0 a druga
pochodna jest róŜna od zera f’’(x0) ≠ 0, to
jeśli f’’(x0) > 0
funkcja ma w x0 minimum lokalne
jeśli f’’(x0) < 0
funkcja ma w x0 maksimum lokalne
Jeśli natomiast f’’(x0) = 0, to musimy zbadać wyŜsze pochodne.
Uzasadnienie powyŜszego twierdzenia moŜna oprzeć na wzorze Taylora.
1
f ( x 0 + h) = f ( x0 ) + hf ' ( x0 ) + h 2 f ' ' ( x 0 ) + K
2
Jeśli h jest dostatecznie małe, to człony z pochodnymi wyŜszymi niŜ druga moŜemy
zaniedbać i mamy (uwzględniając, Ŝe f’(x0) = 0):
1
f ( x 0 + h) ≈ f ( x 0 ) + h 2 f ' ' ( x 0 )
2
Gdy f’’(x0) > 0, to dla dowolnego dostatecznie małego h mamy f(x0 + h) > f(x0) a to oznacza
istnienie w x0 minimum lokalnego. Analogicznie z faktu f’’(x0) < 0 wynika f(x0 + h) < f(x0),
czyli maksimum lokalne w x0. Gdy f’’(x0) = 0, musimy sięgnąć do dalszych członów we
wzorze Taylora.
Analogicznie do ekstremów funkcji jednej zmiennej określa się ekstrema funkcji n zmiennych
(zaleŜnej od wektora x = (x1, x2, ..., xn)).
Gdy f(x) > f(x0) dla kaŜdego x w pewnym otoczeniu x0, to funkcja ma w x0 minimum lokalne.
Gdy f(x) < f(x0) dla kaŜdego x w pewnym otoczeniu x0, to funkcja ma w x0 maksimum
lokalne.
Podobnie jak w przypadku jednej zmiennej, warunkiem koniecznym istnienia w punkcie x0
ekstremum lokalnego jest zerowanie się w nim wszystkich pierwszych pochodnych
cząstkowych:
∂f
∂f
∂f
=
=L=
= 0 , wszystkie pochodne liczone w punkcie x0
∂x1 ∂x 2
∂x n
Wektor o składowych równych pochodnym cząstkowym funkcji nazywamy gradientem
funkcji a operację tworzenia gradientu zaznaczamy przez operator ∇
 ∂f 


 ∂x1 
∇f =  M 
 ∂f 
 ∂x 
 n
Twierdzenie Fermata dla funkcji wielu zmiennych mówi więc, Ŝe w punkcie ekstremum
lokalnego gradient funkcji jest równy zero.
Gradient funkcji w danym punkcie określa kierunek najszybszego wzrostu funkcji.
Punkty, w których gradient się zeruje, to punkty krytyczne funkcji.
Macierz drugich pochodnych cząstkowych funkcji wielu zmiennych nazywamy hesjanem
 ∂2 f
∂2 f
∂2 f 
L


∂x1∂x n 
 ∂x12∂x1 ∂x12∂x 2
∂ f
∂2 f 
 ∂ f
L
H (x) =  ∂x ∂x ∂x ∂x
∂x 2 ∂x n  ,
2
2
 2 1

M
M
M 
 2M
∂2 f
∂2 f 
 ∂ f
L
 ∂x n ∂x1 ∂x n ∂x 2
∂x n ∂x n 
pochodne są tu liczone w punkcie x.
Z wykorzystaniem tych wielkości moŜemy zapisać wzór Taylora do członu z drugą pochodną
f(x0 + h) = f(x0) + hT· ∇f (x0)+ 12 hTH(x0)h + ...
PoniewaŜ w punkcie krytycznym ∇f (x0)= 0, więc drugi człon po prawej stronie wzoru znika
i charakter punktu krytycznego zaleŜy od znaku formy kwadratowej hTH(x0)h. Jeśli macierz
H(x0) jest dodatnio określona, to dla dowolnego dostatecznie małego h mamy f(x0 + h) >
f(x0), czyli w x0 jest minimum lokalne funkcji f. Analogicznie, jeśli H(x0) jest określona
ujemnie, to w x0 mamy maksimum lokalne f.
Określoność macierzy H moŜemy zbadać sprowadzając ją do postaci diagonalnej. Istotnie,
przy diagonalnej macierzy mamy
hTHh =
n
∑ λ (h )
i
' 2
i
,
i
gdzie λi to wartości własne H. Znakiem ’ zaznaczyliśmy, Ŝe po diagonalizacji macierzy
mamy nowe składowe h określone jako kombinacje starych wartości przy pomocy macierzy
wektorów własnych. PoniewaŜ przy badaniu ekstremum h ma być dowolne, ta transformacja
nie ma znaczenia dla dalszych rozwaŜań.
Widzimy zatem, Ŝe jeśli wszystkie wartości własne macierzy hesjanu są dodatnie, to macierz
ta jest dodatnio określona i f ma w x0 minimum lokalne. Jeśli wszystkie wartości własne
hesjanu są ujemne, to jest on ujemnie określony i w x0 jest maksimum lokalne. Jeśli część
wartości własnych hesjanu jest dodatnia a część ujemna, to w x0 jest punkt siodłowy.
W szczególności, jeśli jedna wartość własna jest ujemna a pozostałe są dodatnie, to w x0 jest
punkt siodłowy pierwszego rzędu.
Dla funkcji dwu zmiennych jedna wartość dodatnia i jedna ujemna hesjanu oznacza istnienie
siodła. MoŜna zauwaŜyć, Ŝe w zaleŜności od wyboru wektora h przy zbliŜaniu się do punktu
siodłowego w jednym kierunku funkcja rośnie (podchodzimy do przełęczy po zboczu) a w
innym maleje (schodzimy ku przełęczy po grani).
Znajdowanie minimów lub maksimów funkcji jest przedmiotem optymalizacji. W fizyce
zwykle interesują nas minima ze względu na dąŜenie przez układ do minimum energii
potencjalnej i róŜne zasady oparte na minimalizacji pewnej wielkości.
PoniewaŜ znajdowanie maksimów funkcji f jest równowaŜne znajdowaniu minimów funkcji
–f, zajmujemy się jedynie sposobami wyznaczania minimum funkcji.
4.2 Znajdowanie minimum funkcji jednej zmiennej.
ZałóŜmy, Ŝe mamy dane trzy punkty a, b i c uporządkowane tak, Ŝe
a<c<b
(czyli c znajduje się wewnątrz przedziału (a, b)).
Jeśli
f(a) > f(c),
f(c) < f(b),
to w przedziale (a, b) znajduje się punkt, w którym funkcja f ma minimum lokalne. MoŜemy
teraz obliczyć wartość funkcji f(d) w kolejnym punkcie d wewnątrz przedziału i po
porównaniu wartości wybrać nowy, krótszy przedział (w zaleŜności od wartości funkcji
odrzucając punkt a lub b) zawierający minimum. Powtarzając tę procedurę moŜemy coraz
bardziej zawęŜać przedział znajdując coraz lepsze ograniczenie dla minimum.
Metoda ta jest podobna to znajdowaniu miejsca zerowego funkcji metodą połowienia
przedziału, z tą róŜnicą, Ŝe do określenia przedziału zawierającego miejsce zerowe wystarcza
znajomość funkcji w dwu punktach, do wyznaczenia przedziału z minimum musimy zaś
wyznaczyć f w trzech punktach.
Jeśli wstępnie wyznaczymy przedział, w którym znajduje się tylko jedno minimum, to dzieląc
przedział na mniejsze będziemy w stanie znaleźć połoŜenie tego ekstremum.
Stosowana zwykle metoda wyboru kolejnego punktu w przedziale opiera się na złotym
podziale odcinka. Przy złotym podziale stosunek części, na które podzielono odcinek jest taki
sam jak stosunek dłuŜszej części do całości. Rozwiązując odpowiednią proporcję łatwo
stwierdzić, Ŝe stosunek ten jest równy
5 −1
ϕ=
2
Stosując metodę złotego podziału odcinka w pierwszym kroku wyznaczamy w przedziale
(a, b) dwa punkty c, d takie, Ŝe
c = a + ϕ(b – a)
d = b – ϕ(b – a)
Po obliczeniu wartości funkcji odrzucamy ten z końców odcinka (a, b), w którym funkcja
przyjmuje większą wartość i znajdujemy punkt dzielący w złotym stosunku dłuŜszy z
pozostałych dwu przedziałów. Kroki te następnie powtarzamy.
Metodą tą moŜemy takŜe znaleźć punkt, w którym na zadanej prostej funkcja wielu
zmiennych przyjmuje wartość minimalną.
Jeśli znajdujemy się w punkcie x0 dostatecznie blisko minimum funkcji, moŜemy spróbować
przybliŜyć funkcję formą kwadratową
f(x) = f(x0) – b(x – x0) + 12 A (x – x0)2 ,
gdzie b = –f’(x0) a A = f’’(x0); zaleŜność ta wynika oczywiście z wzoru Taylora.
RóŜniczkując tę zaleŜność stronami dostajemy
df ( x)
= −b + A( x − x0 )
dx
W punkcie xm, w którym funkcja ma minimum jej pierwsza pochodna się zeruje, czyli
–b + A(xm – x0) = 0
skąd znajdujemy przybliŜenie połoŜenia minimum
b
x m = x0 +
A
W znalezionym punkcie moŜemy operacje powtórzyć dostając kolejne, lepsze przybliŜenie.
4.3 Minima funkcji wielu zmiennych – metody gradientowe.
Wiele metod wyznaczania połoŜenia minimum funkcji wielu zmiennych wykorzystuje
informacje o gradiencie badanej funkcji.
Po pierwsze, zauwaŜmy, Ŝe gradient ∇f w danym punkcie wyznacza kierunek najszybszego
wzrostu funkcji. Oznacza to, Ŝe w kierunku przeciwnym − ∇f mamy do czynienia z
najszybszym spadkiem. MoŜemy zatem przesunąć się w tym kierunku o odległość zaleŜną od
wartości gradientu, albo poszukać punktu na prostej wyznaczonej przez gradient, w którym
funkcja ma najmniejszą wartość. W ten sposób znajdziemy się w nowym punkcie, w którym
znowu wyznaczamy gradient funkcji i podąŜamy w kierunku przeciwnym do niego. PoniewaŜ
z kaŜdego punktu przesuwamy się w kierunku − ∇f , czyli największego spadku funkcji
metoda ta nazywa się metodą najszybszego spadku.
Jak się okazuje, metoda najszybszego spadku powoduje zygzakowanie przy zbliŜaniu się do
minimum. Związane jest to z faktem, iŜ przy wyborze nowego kierunku zatracamy informację
zdobytą wcześniej.
Metodą o lepszej zbieŜności do połoŜenia minimum jest metoda kierunków sprzęŜonych o
gradientu funkcji.
Kierunek p sprzęŜony do danego kierunku q względem macierzy A zadany jest warunkiem
pTAq = 0
Przy minimalizacji metodą kierunków sprzęŜonych do gradientu wyznacza się kierunki
sprzęŜone względem macierzy hesjanu, posuwając się kolejno wzdłuŜ kierunku sprzęŜonego
do gradientu w danym punkcie a potem kierunków sprzęŜonych do niego.
Kolejna grupa metod opiera się na przybliŜeniu funkcji formą kwadratową i poszukiwaniu
rozwiązania sposobem podobnym do opisanego w 4.2.
f(x) = f(x0) + (x – x0) ∇f (x0)+ 12 (x – x0)H(x0) (x –x0)
RóŜniczkując stronami i przyrównując pochodną do zera znajdziemy
0 = ∇f (x0)+ H (xm – x0)
a stąd
xm = x0 – H-1· ∇f (x0)
Istnieją metody, w których nie oblicza się hesjanu, natomiast przybliŜony hesjan tworzy się
iteracyjnie. Są to np. metody Davidona-Fletchera-Powella lub Broydena-Fletchera-Shanno.
ZauwaŜmy jeszcze, Ŝe gradient funkcji zeruje się nie tylko w punkcie, w którym funkcja
osiąga minimum, ale teŜ w punktach siodłowych i w maksimach. Zatem jeśli metoda bazująca
na gradientach przypadkiem trafi w któryś z tych punktów, to w nim pozostanie.
4.4 Metoda sympleksów
Jako przykład metody, która nie wykorzystuje informacji o gradiencie a jedynie obliczanie
wartości funkcji w róŜnych punktach, naszkicujemy metodę sympleksów (Nelder-Meada).
Sympleksem w przestrzeni n wymiarowej nazywamy układ n + 1 punktów (wierzchołków
sympleksu). Na płaszczyźnie sympleksami są trójkąty.
W metodzie sympleksów oblicza się wartości minimalizowanej funkcji w wierzchołkach
sympleksu a następnie wykonuje na sympleksie jedną z operacji (pokazanych na przykładzie
sympleksów w przestrzeni dwuwymiarowej, stary sympleks rysowany jest linią pogrubioną):
odbicie
rozciągnięcie
spłaszczenie
kontrakcja
W przypadku pierwszych trzech operacji (odbicie, rozciągnięcie, spłaszczenie) zmienia się
jedynie połoŜenie tego wierzchołka sympleksu, w którym funkcja przyjmowała największą
wartość (przemieszcza się on wzdłuŜ prostej wyznaczonej przezeń oraz środek cięŜkości
pozostałych wierzchołków). Przy kontrakcji przemieszczają się wszystkie punkty z wyjątkiem
tego, w którym funkcja przyjmuje wartość najmniejszą.
Algorytm Nelder-Meada określa (w zaleŜności od wartości funkcji w wierzchołkach
sympleksu), którą operację i z jakim współczynnikiem naleŜy wykonać.
Procedurę przerywa się kiedy róŜnica najmniejszej i największej wartości funkcji w
wierzchołkach sympleksu stanie się dostatecznie mała i połoŜenie wierzchołka z najmniejszą
wartością określa lokalizację minimum funkcji.
4.5 Minimalizacja funkcji a chemia kwantowa.
Minimalizacja odgrywa istotną rolę w badaniu struktury cząsteczek metodami chemii
kwantowej. Znajdując optymalną geometrię cząsteczki minimalizujemy energię potencjalną
(jako funkcję połoŜenia atomów) obliczaną którąś z metod kwantowochemicznych.
Wykorzystuje się w tym celu metody gradientowe, poszukując punktu stacjonarnego, tzn.
takiego, którym gradient energii potencjalnej jest równy zero. Pomocna jest w tym dostępność
w uŜywanym programie analitycznych wyraŜeń na gradienty energii dla danej metody
kwantowochemicznej. Jeśli ich nie ma, gradienty muszą być obliczane numerycznie, co
wydłuŜa czas obliczeń przy jednoczesnym zmniejszeniu dokładności.
Zwróćmy jednak uwagę, Ŝe metoda gradientowa moŜe przypadkiem doprowadzić nas nie do
minimum, ale do punktu siodłowego. Dlatego chcąc się upewnić, Ŝe znaleziona geometria
odpowiada minimum energii powinniśmy zbadać wartości własne macierzy hesjanu w
badanym punkcie (przydatna jest tu dostępność analitycznych wyraŜeń na hesjan, by uniknąć
numerycznego róŜniczkowania gradientu). W praktyce wyznacza się wartości własne hesjanu
waŜonego przez masy atomów, co daje nam częstości drgań normalnych cząsteczki
(wyznaczone wartości własne są kwadratami częstości drgań normalnych). Chcąc zatem
potwierdzić charakter znalezionego punktu stacjonarnego, wyznaczamy drgania normalne
cząsteczki. Jeśli wszystkie wartości własne hesjanu (waŜonego masami) są dodatnie, to
znaleźliśmy geometrię odpowiadającą minimum energii potencjalnej (a pierwiastki z tych
wartości to częstości drgań). Jeśli oprócz dodatnich wartości własnych występują takŜe
ujemne (co formalnie odpowiada urojonym częstościom drgań), to znaleziono geometrię
punktu siodłowego.
Standardowe metody minimalizacji prowadzą do punktu siodłowego jedynie przypadkiem.
Istnieją jednak przypadki, kiedy zaleŜy nam nie na wyznaczeniu geometrii odpowiadającej
minimum energii potencjalnej a właśnie na punkcie siodłowym. OtóŜ punkt siodłowy
pierwszego rzędu odpowiada stanowi przejściowemu reakcji – na mapie energii potencjalnej
dolina produktów jest oddzielona przełęczą (punktem siodłowym) od doliny substratów.
Badając zatem przebieg reakcji wzdłuŜ pewnej współrzędnej poszukujemy punktu
siodłowego. Do takich potrzeb stworzono specjalne algorytmy optymalizacji przystosowane
do poszukiwania punktów siodłowych.
ZauwaŜmy jeszcze, Ŝe większość algorytmów minimalizacji prowadzi nas do wyznaczenia
minimum lokalnego. Tymczasem chemika interesują nie tylko róŜne konformacje cząsteczki
odpowiadające minimom lokalnym, ale teŜ znalezienie konformacji najniŜej energetycznej –
minimum globalnego. Liczba minimów lokalnych energii potencjalnej dla interesujących
cząsteczek moŜe łatwo przekraczać dziesiątki i setki tysięcy, znajdowanie minimum
globalnego jest zatem bardzo trudnym i wciąŜ intensywnie badanym zadaniem. Pomocne są w
tym algorytmy takie, jak symulowane wyŜarzanie czy algorytmy genetyczne. Ich wspólną
cechą jest to, iŜ przy poszukiwaniu minimum z pewnym prawdopodobieństwem akceptują
przejściowo gorsze rozwiązania (posuwają się w stronę większych wartości funkcji) – czasem
bowiem jedyna droga z jednej kotliny do innej, głębszej, wiedzie przez przełęcz, czyli pod
górę.
II. RÓWNANIA RÓśNICZKOWE ZWYCZAJNE.
4.6 Terminologia. Istnienie rozwiązań.
Równanie róŜniczkowe zawiera pochodne nieznanej funkcji. Jeśli szukana funkcja zaleŜy
tylko od jednej zmiennej (w równaniu nie występują pochodne cząstkowe), to równanie
nazywamy równaniem róŜniczkowym zwyczajnym.
Rzędem równania róŜniczkowego nazywamy rząd najwyŜszej występującej w nim pochodnej.
Stopniem równania róŜniczkowego to potęga, w jakiej występuje najwyŜsza pochodna
szukanej funkcji, jeśli równanie da się zapisać w postaci wielomianu od występujących w nim
pochodnych. Np. równanie róŜniczkowe 1-szego rzędu i 1-szego stopnia da się zapisać jako
dy
= f ( x, y )
dx
Funkcja y(x) jest rozwiązaniem równania róŜniczkowego, jeśli w pewnym przedziale
zmiennej x spełnia to równanie toŜsamościowo po podstawieniu doń funkcji y i jej
pochodnych.
Podręczniki matematyki traktujące o równaniach róŜniczkowych zajmują się znajdowaniem
funkcji będących rozwiązaniami dla róŜnych typów równań. W praktyce numerycznej
musimy zadowolić się wyznaczeniem tabeli wartości poszukiwanej funkcji y dla róŜnych
wartości x (później moŜemy ewentualnie uŜyć tej tabeli w interpolacji).
Teoria równań róŜniczkowych pozwala nam stwierdzić, Ŝe ze względu na stałe całkowania
dla znalezienia jednoznacznego rozwiązania musimy podać jeszcze dodatkowe informacje o
szukanej funkcji y, np. wartość funkcji i jej pochodnych (w zaleŜności od rzędu równania) w
zadanym punkcie: y(x0), y’(x0) .... Są to tzw. warunki początkowe. Znalezienie rozwiązania
równania róŜniczkowego zwyczajnego z zadanymi warunkami początkowymi w metodach
numerycznych zwane jest rozwiązaniem zagadnienia początkowego. Będziemy się nim
zajmować i dalszej części tego wykładu. (Alternatywnie zamiast wartości funkcji i jej
pochodnych w jednym punkcie moŜna zadać wartości funkcji w róŜnych punktach – są to
warunki brzegowe.)
O jednoznaczności rozwiązania zagadnienia początkowego mówi nam twierdzenie.
Jeśli f(x,y) i ∂f / ∂y są funkcjami rzeczywistymi, ograniczonymi, jednowartościowymi i
ciągłymi w pewnym otoczeniu punktu (x0, y0), to w przedziale [x0 – h, x0 + h] wewnątrz tego
otoczenia istnieje dokładnie jedno rozwiązanie równania pierwszego rzędu
dy
= f ( x, y )
dx
z warunkiem początkowym y(x0) = y0.
Szukając numerycznie rozwiązania zagadnienia początkowego, czyli wartości funkcji y w
interesującym nas punkcie x wyznaczamy krok po kroku wartości funkcji y w punktach
pośrednich między x0 (warunki początkowe) a x. W kaŜdym takim kroku popełniamy pewien
błąd wynikający z przyjętych przybliŜeń oraz zaokrągleń. Jest to błąd lokalny. Błędy lokalne
kumulują się w błąd globalny – róŜnicę między obliczoną przez nas wartością szukanej
funkcji w interesującym nas punkcie a dokładnym rozwiązaniem równania w tym punkcie.
Oczywiście zaleŜny nam na metodach dających jak najmniejsze błędy.
4.7 Układy równań róŜniczkowych rzędu pierwszego. Równania wyŜszych rzędów.
W zastosowaniach praktycznych w naukach ścisłych często pojawiają się układy równań
róŜniczkowych pierwszego rzędu. Układ taki ma postać
y i' = f i ( x, y1 , y 2 ,K , y n )
i = 1, ..., n
Niewiadomymi są tu funkcje yi zaleŜne od argumentu x. Dodatkowo potrzebne są warunki
początkowe yi(x0) określające wartości poszczególnych funkcji w punkcie x0.
Układ taki moŜna wyrazić w notacji wektorowej. Niech y będzie wektorem kolumnowym o
składowych yi a f wektorem kolumnowym o składowych fi. Wtedy układ da się zapisać jako
y’ = f(x, y)
y(x0) = y0
Przy takim zapisie znaczna część metod rozwiązywania jednego równania pierwszego rzędu
przenosi się na rozwiązywanie układu, zatem dalej będziemy zajmować się rozwiązywaniem
pojedynczego równania.
Równanie róŜniczkowe rzędu wyŜszego niŜ pierwszy
y(n) = f(x, y, y’, y’’, ... y(n-1))
moŜna przekształcić na układ równań rzędu pierwszego wprowadzając nowe zmienne równe
kolejnym pochodnym funkcji y.
Oznaczając bowiem:
η1 = y
η 2 = η1' = y '
L
η n = η n' −1 = y ( n −1)
dostajemy z wyjściowego równania układ równań rzędu pierwszego:
η1' = η 2
η 2' = η 3
L
η
'
n −1
= ηn
η = f ( x,η1 ,η 2 ,K,η n )
'
n
Podobnie moŜna przekształcić układ równań rzędu wyŜszego niŜ 1.
PoniewaŜ równania róŜniczkowe rzędu wyŜszego niŜ 1 da się sprowadzić do układu równań
rzędu pierwszego, ograniczymy się do rozwiązywania równań rzędu 1.
Czasem powyŜszy układ równań zapisuje się w postaci, w której zmienna x nie występuje
jawnie – jest to układ autonomiczny. Osiągamy to zastępując zmienną x dodatkową zmienną
η 0 i dokładając do układu równanie η 0' = 1 .
4.8 Zastosowanie wzoru Taylora. Metoda Eulera.
Rozwiązanie równania
y’ = f(x,y)
moŜemy oprzeć na wzorze Taylora
1
1
y ( x + h) = y ( x) + hy ' ( x) + h 2 y ' ' ( x) + h 3 y ( 3) ( x) + K
2
3!
Zatrzymujemy składniki do pewnego rzędu. Potrzebne pochodne funkcji y obliczamy
róŜniczkując względem x obie strony wyjściowego równania:
y’’ = f’(x,y)
y(3) = f’’(x,y)
...
Mając warunek początkowy y(x0) obliczamy korzystając z powyŜszego wzoru wartość funkcji
y(x + h) w punkcie x + h, następnie wartość funkcji w x + 2h, itd.
Rząd metody określa rząd zachowanej w rozwinięciu pochodnej.
Najprostszą metodą jest metoda rzędu pierwszego, w której zachowaliśmy tylko pierwszą
pochodną. Jest to metoda Eulera, opisana wzorem
y(x + h) ≈ y(x) + hf(x, y)
Unikamy w niej obliczania pochodnej funkcji f(x,y), ale musimy stosować mały krok h.
4.9 Metody Rungego-Kutty.
Metody Rungego-Kutty pozwalają na podstawie znajomości szukanej funkcji w pewnym
punkcie yn = y(xn) znaleźć jej przybliŜenie w punkcie odległym o h: yn+1 = y(xn + h). W tym
celu obliczamy wartości funkcji f w specjalnie dobranych punktach i tworzymy kombinacje
tych wartości, aby uzyskać jak najlepsze przybliŜenie funkcji w xn+1.
Metoda Rungego-Kutty rzędu drugiego (zwana metodą Heuna) opisana jest wzorami
F1 = hf ( x n , y n )
F2 = hf ( x n + h, y n + F1 )
y n +1 = y n + 12 ( F1 + F2 )
Najbardziej znana jest metoda Rungego-Kutty rzędu czwartego, której wzory są bardziej
skomplikowane, ale łatwe do zaprogramowania:
F1 = hf ( x n , y n )
F2 = hf ( x n + 12 h, y n + 12 F1 )
F3 = hf ( x n + 12 h, y n + 12 F2 )
F4 = hf ( x n + h, y n + F3 )
y n +1 = y n + 16 ( F1 + 2 F2 + 2 F3 + F4 )
Podobnie jak w metodzie Eulera, nie musimy obliczać wartości pochodnych funkcji f.
Metoda Eulera jak i metody Rungego-Kutty pozwalają na wykorzystanie ekstrapolacji
Richardsona do poprawienia dokładności wyniku.
4.10 Metody wielokrokowe. Metody ekstrapolacyjno-interpolacyjne.
Metody Eulera i Rungego-Kutty są jednokrokowe: aby znaleźć rozwiązanie y(x + h) w
punkcie x + h musimy znać rozwiązanie y(x) tylko w jednym punkcie. W metodach
wielokrokowych uŜywamy do tego wartości w kilku punktach. Ogólna metoda
wyprowadzania takich rozwiązań jest następująca.
Szukamy rozwiązania zagadnienia początkowego
y’ = f(x, y), y(x0) = y0
w punktach x1, x2, ... . Przez scałkowanie obu stron powyŜszego równania róŜniczkowego
otrzymujemy
y ( x n +1 ) = y ( x n ) +
x n +1
∫ f ( x, y( x))dx
xn
Do obliczenia całki moŜemy wykorzystać kwadraturę z węzłami xi.
W ten sposób moŜemy otrzymać wzory Adamsa-Bashforta
yn+1 = yn + afn + bfn-1 + cfn-2 + ...
(*)
Oznaczyliśmy fi = f(xi,yi), gdzie yi jest przybliŜoną wartością rozwiązania w punkcie xi.
Na przykład, przy równo rozmieszczonych punktach xi = x0 + ih, uŜywając pięciu węzłów dla
wyznaczenia współczynników kwadratury otrzymać moŜemy wzór
1
y n +1 = y n + 720
h(1901 f n − 2774 f n −1 + 2616 f n − 2 − 1274 f n −3 + 251 f n − 4 )
Wyprowadzając wzory kwadratury w metodzie wielokrokowej moŜemy teŜ załoŜyć, Ŝe
wartość całki po prawej stronie zaleŜy teŜ od yn+1. Dostajemy wtedy wzory Adamsa-Moultona
yn+1 = yn + afn+1 + bfn + cfn-1 + ...
(**)
np. dla punktów rozmieszczonych jak w przykładzie wyŜej, wzór
1
y n +1 = y n + 720
h(251 f n +1 + 646 f n − 264 f n −1 + 106 f n −2 − 19 f n −3 ).
ZauwaŜmy, Ŝe szukane yn+1 występuje takŜe po prawej stronie powyŜszych wzorów – musimy
je uŜyć do obliczenia fn+1. Jest to przykład metody niejawnej.
Równanie (**) moŜna rozwiązywać iteracyjnie podstawiając uzyskane yn+1 do prawej strony
wzoru. Wstępne przybliŜenie moŜna otrzymać uŜywając wzoru Adamsa-Bashforta (*) do
obliczenia przybliŜonej wartości yn+1 (wzór wstępny) a następnie podstawiając ją do prawej
strony wzoru Adamsa-Moultona (**) (wzór korekcyjny). Jest to metoda ekstrapolacyjnointerpolacyjna (ang.: predictor-corrector). Iterację przerywa się, jeśli obliczone wartości
róŜnią się dostatecznie mało, albo po wykonaniu określonej liczby kroków.
ZauwaŜmy jeszcze, Ŝe stosując metody wielokrokowe musimy na początku obliczeń (gdy
znamy tylko y0 = y(x0) ) wyznaczyć y1, y2, ... . MoŜemy do tego uŜyć np. metody typu
Rungego-Kutty.
III. RÓWNANIA RÓśNICZKOWE CZĄSTKOWE.
4.11 Definicje i klasyfikacja.
W równaniach róŜniczkowych cząstkowych występują pochodne cząstkowe szukanej funkcji
u po zmiennych przestrzennych (x, y, z) i czasie t.
Równania róŜniczkowe cząstkowe opisują wiele waŜnych procesów fizycznych:
przewodnictwo ciepła, dyfuzję, rozkłady potencjałów, ruch drgający; do równań
róŜniczkowych cząstkowych naleŜy teŜ równanie Schrödingera.
Znalezienie jednoznacznego rozwiązania wymaga zadania warunków granicznych. Oprócz
warunków początkowych potrzebujemy warunków brzegowych. Mogą nimi być:
- warunki brzegowe Dirichleta: zadana jest wartość funkcji na brzegu badanego obszaru
- warunki brzegowe von Neumanna: na brzegu badanego obszaru zadana jest wartość
pochodnej normalnej szukanej funkcji
- warunki brzegowe Cauchy’ego: w t = 0 podana jest wartość funkcji i jej pochodnej
normalnej.
Równania róŜniczkowe cząstkowe klasyfikuje się ze względu na współczynniki przy drugich
pochodnych.
Dla równania
∂ 2u
∂ 2u
∂ 2u
a 2 +b
+ c 2 + d = 0,
dx∂y
∂x
∂y
gdzie d nie zaleŜy od drugich pochodnych obliczamy wartość b2 – 4ac.
Równanie nazywamy:
hiperbolicznym,
gdy b2 – 4ac > 0
parabolicznym,
gdy b2 – 4ac = 0
eliptycznym,
gdy b2 – 4ac < 0.
W podręcznikach matematyki omawia się typowe sposoby rozwiązywania równań
róŜniczkowych cząstkowych: metodę rozdzielenia zmiennych i transformaty całkowe (np.
szeregi Fouriera). W następnych punktach przedstawimy jeden ze sposobów numerycznego
podejścia (metodę róŜnic skończonych) do dwu typowych zagadnień.
4.12 Równanie przepływu ciepła w jednym wymiarze.
Równanie przewodnictwa cieplnego ma postać
 ∂ 2T ∂ 2T ∂ 2T  ∂T
,
α 2  2 + 2 + 2  =
∂
t
∂
x
∂
y
∂
z


gdzie α2 jest współczynnikiem przewodności cieplnej. Dla przypadku jednowymiarowego
(np. przewodzenie ciepła wzdłuŜ jednorodnego pręta) przyjmuje ono postać
2
∂T
2 ∂ T
α
=
.
2
∂t
∂x
Dla uproszczenia dalszych zapisów wprowadźmy oznaczenia uxx i ut na odpowiednie
pochodne cząstkowe i przyjmijmy, Ŝe uŜywamy jednostek, w których α2 = 1. Niech pręt ma
końce w punktach x = 0 i x = 1. Mamy wtedy
uxx = ut
Równanie jest drugiego rzędu po współrzędnej przestrzennej i pierwszego rzędu ze względu
na pochodną po czasie. Potrzebujemy zatem jednego warunku początkowego i dwu warunków
brzegowych. MoŜemy przyjąć, Ŝe znamy początkowy rozkład temperatury wzdłuŜ pręta a
takŜe, Ŝe znamy temperaturę na końcach pręta w kaŜdej chwili czasu. Nasze równanie z
warunkami początkowymi i brzegowymi moŜemy zatem zapisać jako
uxx = ut
u(x, 0) = g(x)
u(0, t) = a(t)
u(1, t) = b(t)
Mamy dwie zmienne x i t, rozwiązania szukamy na siatce punktów (xi, tj):
tj = jk , j = 0, 1, ...
xi = ih, i = 0, 1, ..., n+1;
h = 1/(n + 1)
Długości kroku k i h dla czasu i zmiennej przestrzennej mogą być róŜne.
Pochodne występujące w równaniu zastępujemy wyraŜeniami przybliŜonymi:
1
f ' ( x ) ≈ [ f ( x + h) − f ( x ) ]
h
1
f ' ' ( x ) ≈ 2 [ f ( x + h) − 2 f ( x ) + f ( x − h) ]
h
UŜywając ich w naszym równaniu dostajemy
1
[u ( x + h, t ) − 2u ( x, t ) + u ( x − h, t )] = 1 [u ( x, t + k ) − u ( x, t )]
(*)
2
k
h
Co dla punków siatki moŜemy zapisać
1
1
(u i +1, j − 2u ij + u i −1, j ) = (u i , j +1 − u ij ) ,
2
k
h
gdzie uij = u(xi, tj). Przeprowadziliśmy w ten sposób dyskretyzację rozwiązania.
Równość (*) przekształcamy do postaci
k
u i , j +1 = 2 (u i +1, j − 2u ij + u i −1, j ) + u ij ,
h
czyli
k
gdzie s = 2
u i , j +1 = su i −1, j + (1 − 2s)u ij + su i +1, j ,
h
Znając rozwiązanie w trzech punktach ui-1,j, uij oraz ui+1,j siatki moŜemy je wyznaczyć w
punkcie ui,j+1:
t
ui,j+1
ui-1,j
uij
ui+1,j
x
PoniewaŜ znamy wartości na osi x (warunek początkowy) oraz na lewym i prawym brzegu
siatki (warunki brzegowe) nie mamy z tym kłopotu i zaczynając od wartości dla j = 0
obliczamy ui1 a potem dla coraz większych czasów. PoniewaŜ nowa wartość ui,j+1 wyraŜa się
przez wartości juŜ znane, jest to metoda jawna.
ZauwaŜmy, Ŝe oznaczając Uj = (u1j, ..., unj) wektor wartości rozwiązania dla czasu t = jk mamy
Uj+1 = AUj
gdzie A jest macierzą stopnia n
s
0
L
0 
1 − 2 s
 s
1 − 2s
s
L
0 

A= 0
s
1 − 2s L
0 


M
M
M
M 
 M
 0
0
0
L 1 − 2s 
MoŜna pokazać, Ŝe metoda ta jest stabilna, gdy k/h2 ≤ 1/2. Oznacza to konieczność
stosowania bardzo małego kroku czasowego k.
UŜywając innego wzoru na pierwszą pochodną:
1
f ' ( x ) ≈ [ f ( x ) − f ( x − h)]
h
Dostajemy dla naszego zagadnienia zaleŜność
1
[u ( x + h, t ) − 2u ( x, t ) + u ( x − h, t )] = 1 [u ( x, t ) − u ( x, t − k )] ,
2
k
h
czyli na punktach siatki
1
1
(u i +1, j − 2u ij + u i −1, j ) = (u ij − u i , j −1 )
2
k
h
Tym razem równanie wiąŜe jedną znaną wartość dla j-1 z trzema nieznanymi dla j (jest to
więc metoda niejawna), zatem jeśli znamy wszystkie ui,j-1 to znalezienie wszystkich uij
wymaga rozwiązania układu równań. Po przekształceniu do postaci
− su i −1, j + (1 + 2s )u ij − su i +1, j = u i , j −1
dostajemy
AUj = Uj-1
gdzie
0
L
0 
1 + 2s − s
 − s 1 + 2s − s L
0 

A= 0
− s 1 + 2s L
0 .


M
M
M
M 
 M
 0
0
0
L 1 + 2s 
Jak widać, macierz A jest trójdiagonalna, więc rozwiązując powyŜszy układ równań
korzystamy z procedury dostosowanej do układu równań liniowych z macierzą
trójprzekątniową.
Jakkolwiek metoda niejawna wymaga większego nakładu pracy, jej zaletą jest lepsza
stabilność w porównaniu z metodą jawną.
4.13 Równanie Laplace’a w dwu wymiarach.
Równanie Laplace’a jest przykładem równania róŜniczkowego cząstkowego, w którym czas
nie występuje. Dla dwu wymiarów ma ono postać
∂ 2u ∂ 2u
+
=0
∂x 2 ∂y 2
Typowy warunek brzegowy to warunek Dirichleta – na brzegu obszaru zadane są wartości
funkcji u.
RozwaŜmy to zagadnienie w kwadracie 0 < x < 1, 0 < y < 1
Mamy
uxx + uyy = 0
u(x, y) = g(x, y) na brzegu kwadratu
Podobnie jak poprzednio dyskretyzujemy zadanie na siatce (xi, yi) pokrywającej kwadrat
równomiernie
(xi, yi) = (ih, jh),
i = 0, ..., n+1; j = 0, ..., n+1;
h = 1/(n+1)
Stosując wzór róŜnicowy
1
f ' ' ( x ) ≈ 2 [ f ( x + h) − 2 f ( x ) + f ( x − h) ]
h
dostajemy
1
1
(u i −1, j − 2u ij + u i +1, j ) + 2 (u i , j −1 − 2u ij + u i , j +1 ) = 0
2
h
h
czyli
4u ij − u i −1, j − u i +1, j − u i , j −1 − u i , j +1 = 0
Wartości uij znamy na brzegach kwadratu, natomiast w punktach wewnętrznych
(zaznaczonych kółeczkami) musimy je wyznaczyć rozwiązując układ n2 równań liniowych.
y
x
ZauwaŜmy, Ŝe kaŜde równanie wiąŜe ze sobą pięć współczynników. Oznacza to, Ŝe w
kaŜdym wierszu macierzy układu równań jedynie kilka elementów jest róŜnych od zera.
Macierz takiej postaci to macierz rzadka i do rozwiązywania układu równań stosuje się w tym
przypadku specjalne metody.