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=u⁢t,x takiej, że

ut+a⁢t,x⁢ux=b⁢t,x, (15.1)

Zazwyczaj rozwiązania będą spełniały też warunek początkowy u⁢0,x=u0⁢x, 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:

u→t+A⁢u→x=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:

u⁢0,x=u0⁢x⁢⁢x∈R.

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

tn,xk⁢⁢n∈N⁢⁢k∈Z

dla

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

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

τ-1⁢ukn+1-ukn+h-1⁢a⁢ukn-uk-1n=0,

lub

τ-1⁢ukn+1-ukn+h-1⁢a⁢uk+1n-ukn=0.

W tym rozdziale zakładamy, że spełniony jest warunek początkowy uk0=u0⁢xk dla k∈Z.

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⁢⁢τ-1⁢ukn+1-unk=⁡-h-1⁢a⁢uk+1n-ukn⁢a<0-h-1⁢a⁢ukn-uk-1n⁢a>0⁢ (15.3)

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

Upwind⁢⁢ukn+1-unk+a⁢λ2⁢uk+1n-uk-1n=0.5⁢λ⁢a⁢uk+1n-2⁢ukn+uk-1n (15.4)

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

τ-1⁢ukn+1-unk+a⁢uk+1n-uk+1n2⁢h=0

czyli

ukn+1=ukn-a⁢λ2⁢uk+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⁢λ⁢a⁢uk+1n-2⁢ukn+uk-1n=τ⁢h⁢0.5⁢a⁢uk+1n-2⁢ukn+uk-1nh2,

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

τ⁢h⁢0.5⁢a⁢∂2⁡u∂⁡x2,

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-Friedrichs⁢⁢ukn+1=0.5⁢uk+1n+uk-1n-a⁢λ2⁢uk+1n-uk+1n. (15.6)

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

u⁢tn+τ,xk=u⁢tn,xk+τ⁢∂⁡u∂⁡t⁢tn,xk+0.5⁢τ2⁢∂2⁡u∂⁡t2⁢tn,xk+O⁢τ3.

Korzystamy następnie z równania:

∂⁡u∂⁡t=-a⁢∂⁡u∂⁡x

i kolejnego równania otrzymanego z poprzedniego:

∂2⁡u∂⁡t2=a2⁢∂2⁡u∂⁡x2.

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

∂⁡u∂⁡x⁢t,x≈0.5⁢h-1⁢u⁢t,x+h-u⁢t,x-h,

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

∂2⁡u∂⁡x2⁢t,x≈0.5⁢h-2⁢u⁢t,x-h-2⁢u⁢t,x+u⁢t,x+h

i w końcu otrzymujemy schemat Laxa-Wendroffa:

Lax-Wendroff⁢⁢ukn+1=ukn-a⁢ 0.5⁢λ⁢uk+1n-uk-1n+0.5⁢a2⁢λ2⁢uk+1n-2⁢ukn+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-frog⁢⁢ukn+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=H⁢ukn,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+∂⁡F⁢u∂⁡x=0

gdzie F - to dana funkcja. F⁢u 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=H⁢F⁢ukn,F⁢ukn+1 z H numerycznym strumieniem wziętym z wyjściowego schematu. Zauważmy, że dla równania (15.1) zachodzi F⁢u=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=u→⁢tn,xk w punktach siatki, szukamy Wkn=C⁢Ukn, czyli stosujemy schematy do równoważnego równania (w→=C⁢u→):

w→t+Λ⁢w→x=0.

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

wjt+λj⁢wjx=0⁢⁢j=1,…,m.

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

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

C⁢Ukn=Wkn,

czyli przybliżone rozwiązanie u→⁢tn,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=uknk∈Z i załóżmy, że dwupoziomowy (względem czasu) schemat różnicowy możemy opisać jako

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

lub w punkcie siatki xk

ukn=Aτ⁢un-1;k⁢⁢n>0.

ze znanym warunkiem początkowym u0, tzn. uk0=u0⁢xk. 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:

unh≤CT⁢u0h⁢⁢n>0.

Często stosowaną normą jest norma będąca aproksymacją normy L1⁢R, czyli

unh=∑k∈Zh⁢ukn.

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

Aτ⁢uh≤1+β⁢τ⁢uh⁢⁢∀u,

to

unh≤1+β⁢τn⁢u0h≤exp⁡β⁢T⁢u0h⁢⁢n>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:=τ-1⁢u⁢t+τ,xk-Aτ⁢u⁢t;k

spełnia

limτ→0⁡Eτ⁢th=0

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

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

Eτ⁢th≤C⁢⁢τ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=min⁡q1,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:

max0≤n≤T/τ∥u(tn,⋅)-un∥h→0

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=h⁢∑kujn+1≤h2⁢1-λ⁢a⁢∑juj+1n+1+λ⁢a⁢∑juj-1n
=12⁢1-λ⁢a⁢unh+1+λ⁢a⁢unh=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=γn⁢exp⁡i⁢α⁢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=γn⁢ei⁢α⁢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 a⁢ux=ut dla a=1,-1,100,-100, przyjmując, że znamy rozwiązanie początkowe na -1,1 i warunki brzegowe u⁢t,-1=u⁢t,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.