Zagadnienia

15. Metody numeryczne rozwiązywania równań hiperbolicznych pierwszego rzędu

W tym rozdziale zajmiemy się metodami rozwiązywania równań hiperbolicznych pierwszego rzędu (por. rozdział 2.2.2). Przedstawimy konstrukcję kilku otwartych schematów różnicowych oraz podamy ideę zbieżności schematów za [26].

Konstrukcję schematów różnicowych przedstawimy dla modelowych równań, tzn. równań liniowych skalarnych, czyli będziemy szukali przybliżeń funkcji u=ut,x takiej, że

ut+at,xux=bt,x, (15.1)

Zazwyczaj rozwiązania będą spełniały też warunek początkowy u0,x=u0x, przy czym najczęściej będziemy zakładać dla prostoty prezentacji, że a jest stałą, a b=0.

Pokażemy jak stosować te schematy dla równań nieliniowych i układów równań liniowych postaci:

ut+Aux=0, (15.2)

gdzie A - to stała macierz m×m diagonalizowalna w jakiejś bazie (ponieważ jest to układ hiperboliczny).

15.1. Schematy różnicowe dla równania skalarnego

W tym rozdziale zajmiemy się schematami różnicowymi dla równania skalarnego (15.1). Zakładamy, że u spełnia dany warunek początkowy:

u0,x=u0xxR.

Rozpatrzmy siatkę równomierną na półpłaszczyźnie 0,×R z krokiem przestrzennym h>0 i czasowym τ>0:

tn,xknNkZ

dla

tn=n*τ,xk=k*h.

Możemy wtedy zdefiniować najprostszy otwarty schemat w sposób następujący:

τ-1ukn+1-ukn+h-1aukn-uk-1n=0,

lub

τ-1ukn+1-ukn+h-1auk+1n-ukn=0.

W tym rozdziale zakładamy, że spełniony jest warunek początkowy uk0=u0xk dla kZ.

Oba schematy są otwarte. Można postawić pytanie: który ma lepsze własności? Okazuje się, że stabilność tych schematów zależy od znaku parametru a.

Schemat upwind definiujemy jako

Upwindτ-1ukn+1-unk=-h-1auk+1n-ukna<0-h-1aukn-uk-1na>0 (15.3)

lub równoważnie biorąc λ=τh:

Upwindukn+1-unk+aλ2uk+1n-uk-1n=0.5λauk+1n-2ukn+uk-1n (15.4)

Jeśli wprost dyskretyzujemy pochodną po przestrzeni za pomocą różnicy centralnej, to otrzymujemy następujący schemat:

τ-1ukn+1-unk+auk+1n-uk+1n2h=0

czyli

ukn+1=ukn-aλ2uk+1n-uk+1n. (15.5)

Schemat ten niestety okazuje się być niestabilnym (wg definicji, która pojawi się później). Różni się on od poprzedniego schematu upwind (15.3) brakiem dodatkowego członu

0.5λauk+1n-2ukn+uk-1n=τh0.5auk+1n-2ukn+uk-1nh2,

który aproksymuje, por. (7.3) i (7.4):

τh0.5a2ux2,

Ten człon można traktować jako sztuczną numeryczną lepkość (ang. numerical dissipation or artificial viscosity) dodaną do niestabilnego schematu (15.5), dzięki której schemat upwind (15.3) jest stabilny.

Wyprowadzimy teraz kilka kolejnych otwartych schematów.

Rozważmy teraz schemat Laxa-Friedrichsa, w którym ukn w niestabilnym schemacie (15.5) zastępujemy średnią z uk+1n i uk-1n i otrzymujemy:

Lax-Friedrichsukn+1=0.5uk+1n+uk-1n-aλ2uk+1n-uk+1n. (15.6)

Kolejny schemat Laxa-Wendroffa wyprowadza się z rozwinięcia rozwiązania w momencie t=tn w szereg Taylora:

utn+τ,xk=utn,xk+τuttn,xk+0.5τ22ut2tn,xk+Oτ3.

Korzystamy następnie z równania:

ut=-aux

i kolejnego równania otrzymanego z poprzedniego:

2ut2=a22ux2.

W tych równaniach zastępujemy pochodną po przestrzeni ilorazem różnicowym centralnym, por. (4.2):

uxt,x0.5h-1ut,x+h-ut,x-h,

a drugą pochodną po przestrzeni jej przybliżeniem różnicowym na trzech punktach, por. (7.3) i (7.4):

2ux2t,x0.5h-2ut,x-h-2ut,x+ut,x+h

i w końcu otrzymujemy schemat Laxa-Wendroffa:

Lax-Wendroffukn+1=ukn-a 0.5λuk+1n-uk-1n+0.5a2λ2uk+1n-2ukn+uk-1n. (15.7)

Można też rozważać schematy wielopoziomowe ze względu na czas, np. schemat skoku żaby (leap-frog), w którym pochodną po czasie dyskretyzujemy przez pochodną centralną tak samo, jak pochodną po przestrzeni. Otrzymujemy wówczas schemat trzypoziomowy:

Leap-frogukn+1=ukn-1-aλuk+1n-uk+1n. (15.8)

15.2. Schematy dla równań nieliniowych lub układów równań

Zauważmy, że wszystkie dotąd rozważane dwupoziomowe schematy dla równań skalarnych, tzn. (15.7), (15.3), (15.5), można zapisać w zunifikowany sposób jako:

ukn+1=ukn-λHk+1/2n-Hk-1/2n

gdzie Hk+1/2n=Hukn,uk+1n jest określana jako numeryczny strumień (ang. numerical flux).

W ten sposób możemy schematy dla równania (15.1) łatwo przenieść na przypadek nieliniowych równań hiperbolicznych postaci:

ut+Fux=0

gdzie F - to dana funkcja. Fu nazywamy strumieniem dla funkcji u. Wtedy każdy schemat można zapisać jako

ukn+1=ukn-λFk+1/2n-Fk-1/2n

przyjmując oznaczenie Fk+1/2n=HFukn,Fukn+1 z H numerycznym strumieniem wziętym z wyjściowego schematu. Zauważmy, że dla równania (15.1) zachodzi Fu=a*u.

Również schematy te można zastosować do układu (15.2). Wtedy widzimy, że dla nieosobliwej macierzy C:

A=CΛCT,

gdzie Λ=diagλ1,,λm - to macierz diagonalna z wartościami własnymi A na diagonali (ponieważ jest to układ równań hiperbolicznych). Wtedy możemy zamienić zmienne: zamiast szukać wartości rozwiązania Ukn=utn,xk w punktach siatki, szukamy Wkn=CUkn, czyli stosujemy schematy do równoważnego równania (w=Cu):

wt+Λwx=0.

Proszę zauważyć, że to równanie jest układem m niezależnych równań hiperbolicznych (15.1), tzn.:

wjt+λjwjx=0j=1,,m.

Zatem możemy zastosować np. schemat upwind lub inny - niezależnie do każdej składowej - i otrzymać przybliżone rozwiązanie wjtn,xk.

Znając wartości Wkn możemy wrócić do wyjściowych zmiennych i obliczyć Ukn rozwiązując układ równań

CUkn=Wkn,

czyli przybliżone rozwiązanie utn,xk.

W praktyce - w pierwszym kroku przeprowadzamy obliczenia wstępne rozwiązując numerycznie zadanie własne dla macierzy A, tzn. obliczając wartości i wektory własne A, czyli λj i kolumny C. Następnie stosujemy wybrany schemat obliczając wartości Wkn dla punktów siatki (w praktyce musimy ograniczyć zakres k i n). Na koniec rozwiązujemy układ równań z macierzą C dla odpowiednich k i n otrzymując Ukn.

15.3. Stabilność, zgodność i zbieżność schematów

Do schematów różnicowych dla równań hiperbolicznych stosuje się ogólną teorię zbieżności Laxa-Richmyera schematów różnicowych, analogiczną do teorii zbieżności z rozdziału 8.1, por. rozdział 14.2 w [26]. Aby uzyskać oszacowanie błędu w pewnej normie dyskretnej, należy wykazać odpowiedni rząd aproksymacji schematu i stabilność w tej normie.

Przy przyjętych powyżej oznaczeniach przyjmijmy, że un=uknkZ i załóżmy, że dwupoziomowy (względem czasu) schemat różnicowy możemy opisać jako

un=Aτun-1n>0, (15.9)

lub w punkcie siatki xk

ukn=Aτun-1;kn>0.

ze znanym warunkiem początkowym u0, tzn. uk0=u0xk. Stabilność w pewnej normie h na odcinku czasu 0,T oznacza, że istnieją stałe τ0,C>0 takie, że dla czasów tn=n*τ<T jeśli 0<h,τ<τ0:

unhCTu0hn>0.

Często stosowaną normą jest norma będąca aproksymacją normy L1R, czyli

unh=kZhukn.

Jeśli istnieją stałe τ0,β>0 takie, że dla czasów tn=n*τ<T jeśli 0<h,τ<τ0 zachodzi:

Aτuh1+βτuhu,

to

unh1+βτnu0hexpβTu0hn>0

dla dowolnych n takich, że tn=n*τ<T, co oznacza stabilność schematu w normie h.

Z kolei zgodność schematu (aproksymacja schematem wyjściowego zadania; ang. consistency) oznacza, że schemat dyskretny aproksymuje wyjściowe równanie, tzn.

Eτtk:=τ-1ut+τ,xk-Aτut;k

spełnia

limτ0Eτth=0

dla u rozwiązania wyjściowego równania, dowolnego 0<hτ0 i t>0. Tutaj Aτut;k jest zdefiniowane dla tego schematu jak Aτun;k zastępując ukn przez ut,xk.

Jeśli dla pewnej stałej C>0 i 0<h,ττ0 zachodzi oszacowanie:

EτthCτq1+hq2

to powiemy, że rząd aproksymacji schematu wynosi q1 po czasie i q2 po przestrzeni. A jeśli zachodzi stała zależność τ od h np. liniowa τ=κ*h dla stałej κ, to mówimy, że rząd aproksymacji schematu wynosi q=minq1,q2, co jest zgodne z definicją z rozdziału 8.1.

Jak już wiemy, teoria Laxa mówi, że stabilność i aproksymacja (zgodność) dają zbieżność. Tak jest też w tym przypadku, tzn. teoria Laxa-Richmyera (por. [27]) mówi, że schemat jest zbieżny:

max0nT/τu(tn,)-unh0

dla h,τ0 wtedy i tylko wtedy, jeśli jest stabilny i zgodny.

Przykład 15.1

Rozpatrzmy najprostszy schemat Laxa-Friedrichsa (15.6). Jeśli założymy, że

aλ1 (15.10)

to otrzymujemy:

un+1h=hkujn+1h21-λajuj+1n+1+λajuj-1n
=121-λaunh+1+λaunh=unh.

czyli, że schemat jest stabilny warunkowo przy założeniu aλ1.

Analogicznie można pokazać, że przy założeniu, że spełniony jest warunek (15.10), schemat Laxa-Wendroffa (15.7) i schemat upwind (15.3) są stabilne. Widzimy, że schemat leap-frog (15.8) jest stabilny (w sensie analogicznej definicji odpowiedniej dla schematów trzypoziomowych) przy założeniu, że w warunku (15.10) zachodzi ostra nierówność.

Natomiast schemat (15.5) przy założeniach typu (15.10) nie jest stabilny.

Wykazanie, że wszystkie wymienione schematy są zgodne i zbadanie jakie mają rzędy pozostawiamy jako zadanie.

15.4. Metoda Fouriera badania stabilności

Metoda opisana w tym rozdziale służy badaniu stabilności schematów, choć - de facto - może tylko sprawdzić stabilność w sensie negatywnym. Tzn. metoda pozwala wykazać, że jakiś schemat nie jest stabilny.

Zakładamy, że rozpatrujemy schemat dwupoziomowy lub trzypoziomowy, np. dający się zapisać jako (15.9), i że szukamy jego rozwiązań w postaci

ukn=γnexpiαk,

gdzie γC i αR są stałymi.

Metoda polega na wyznaczeniu warunków na te stałe w zależności od konkretnej postaci schematu. Jeśli się okaże, że istnieje rozwiązanie tej postaci z γ>1, to oczywiście schemat stabilny być nie może, a jeśli wszystkie takie rozwiązania dla dowolnych α muszą spełniać γ<1 - ewentualnie przy pewnych warunkach na τ i h - to schemat ma szanse być stabilnym, czy - inaczej: jest stabilnym w klasie rozwiązań tej postaci.

Podsumowując: wstawimy ukn=γneiαk do schematu i wyliczamy γα jeśli γα<1 dla dowolnego α, to schemat uważamy za stabilny w sensie opisanym powyżej.

Zbadanie stabilności schematów (15.7), (15.3), (15.8), (15.5) przy pomocy tej metody pozostawiamy jako zadanie.

15.5. Zadania

Ćwiczenie 15.1

Zbadaj przy pomocy metody Fouriera stabilność schematów:

  • Laxa Wendroffa (15.7),

  • schematu upwind (15.3),

  • schematu Leap-frog (15.8),

  • schematu opartego na różnicy centralnej (15.5)

Ćwiczenie 15.2 (Laboratoryjne)

Zaimplementuj w octave schemat Laxa-Wendroffa dla równania aux=ut dla a=1,-1,100,-100, przyjmując, że znamy rozwiązanie początkowe na -1,1 i warunki brzegowe ut,-1=ut,1=0. Zbadaj rząd metodą połowionych kroków, czyli dla h i h/2 policz błędy w ustalonym punkcie i ich stosunek.

Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.

Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.