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 
 takiej, że
| (15.1) | 
Zazwyczaj  rozwiązania będą spełniały też  warunek początkowy  
, przy czym najczęściej będziemy zakładać dla prostoty prezentacji, że 
 jest stałą, a  
.
Pokażemy jak stosować te schematy dla równań nieliniowych i układów równań liniowych postaci:
| (15.2) | 
gdzie 
 - to stała  macierz 
 diagonalizowalna w jakiejś bazie (ponieważ jest to układ hiperboliczny).
W tym rozdziale zajmiemy się schematami różnicowymi dla równania skalarnego (15.1).
Zakładamy, że 
 spełnia dany warunek początkowy:
Rozpatrzmy siatkę równomierną na półpłaszczyźnie
 z krokiem przestrzennym 
 i czasowym 
:
dla
Możemy wtedy zdefiniować najprostszy otwarty schemat w sposób następujący:
lub
W tym rozdziale  zakładamy, że spełniony  jest warunek początkowy 
 dla  
.
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 
.
Schemat upwind definiujemy jako
| (15.3) | 
lub równoważnie biorąc 
:
| (15.4) | 
Jeśli wprost dyskretyzujemy pochodną po przestrzeni za pomocą różnicy centralnej, to otrzymujemy następujący schemat:
czyli
| (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
który aproksymuje, por. (7.3) i (7.4):
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 
 w niestabilnym schemacie   (15.5) zastępujemy średnią z 
 i 
i otrzymujemy:
| (15.6) | 
Kolejny schemat Laxa-Wendroffa wyprowadza się z rozwinięcia rozwiązania w momencie 
 w szereg Taylora:
Korzystamy następnie z równania:
i kolejnego równania otrzymanego z poprzedniego:
W tych równaniach zastępujemy pochodną po przestrzeni ilorazem różnicowym centralnym, por. (4.2):
a drugą pochodną po przestrzeni jej przybliżeniem różnicowym na trzech punktach, por. (7.3) i (7.4):
i w końcu otrzymujemy schemat Laxa-Wendroffa:
| (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:
| (15.8) | 
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:
gdzie 
 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:
gdzie 
 - to dana funkcja. 
  nazywamy strumieniem dla funkcji 
. Wtedy każdy schemat można zapisać
jako
przyjmując oznaczenie 
 z 
 numerycznym strumieniem wziętym z wyjściowego schematu. Zauważmy, że dla równania (15.1) zachodzi 
.
Również schematy te można  zastosować do układu (15.2). Wtedy widzimy, że dla  nieosobliwej macierzy 
:
gdzie 
 - to macierz diagonalna z wartościami własnymi 
 na diagonali (ponieważ jest to układ równań hiperbolicznych). Wtedy możemy zamienić zmienne:
zamiast szukać wartości rozwiązania 
 w punktach siatki,  szukamy
,  czyli stosujemy schematy do równoważnego równania (
):
Proszę zauważyć, że to równanie jest układem 
 niezależnych równań hiperbolicznych
(15.1), tzn.:
Zatem możemy zastosować np. schemat upwind lub inny - niezależnie do każdej składowej  - i otrzymać
przybliżone rozwiązanie  
.
Znając wartości 
 możemy wrócić do wyjściowych zmiennych i obliczyć 
 rozwiązując układ równań
czyli przybliżone rozwiązanie 
.
W praktyce - w pierwszym kroku przeprowadzamy obliczenia wstępne rozwiązując numerycznie zadanie
własne dla macierzy 
, tzn.  obliczając wartości i wektory własne 
, czyli 
 i  kolumny 
. Następnie stosujemy wybrany schemat  obliczając wartości
 dla  punktów siatki (w praktyce musimy ograniczyć zakres 
 i 
).
Na koniec rozwiązujemy układ równań z macierzą 
 dla odpowiednich 
 i 
 otrzymując
.
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
 i
załóżmy, że dwupoziomowy (względem czasu) schemat różnicowy możemy opisać jako
| (15.9) | 
lub w punkcie siatki ![]()
ze znanym warunkiem początkowym 
, tzn. 
.
Stabilność w pewnej normie 
 na odcinku czasu 
 oznacza, że istnieją stałe 
 takie, że dla czasów 
 jeśli 
:
Często stosowaną normą jest norma będąca  aproksymacją normy 
, czyli
Jeśli istnieją stałe 
 takie, że dla czasów 
 jeśli 
 zachodzi:
to
dla dowolnych 
 takich, że 
, co oznacza stabilność schematu w normie 
.
Z kolei zgodność schematu (aproksymacja schematem wyjściowego zadania; ang. consistency) oznacza, że schemat dyskretny aproksymuje wyjściowe równanie, tzn.
spełnia
dla 
 rozwiązania wyjściowego równania, dowolnego 
 i 
.
Tutaj 
 jest zdefiniowane dla tego schematu
jak 
 zastępując 
 przez 
.
Jeśli dla pewnej stałej 
 i 
 zachodzi oszacowanie:
to powiemy, że rząd aproksymacji schematu wynosi  
 po czasie i 
 po przestrzeni. A jeśli zachodzi  stała zależność 
 od 
 np. liniowa 
 dla stałej 
, to   mówimy, że rząd aproksymacji schematu wynosi 
, 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:
dla 
  wtedy i tylko wtedy, jeśli jest stabilny i zgodny.
Rozpatrzmy najprostszy schemat Laxa-Friedrichsa (15.6). Jeśli założymy, że
| (15.10) | 
to otrzymujemy:
![]()  | 
	  ||||
czyli, że schemat jest stabilny warunkowo przy założeniu 
.
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ść.
Wykazanie, że wszystkie wymienione schematy są zgodne i zbadanie jakie mają rzędy pozostawiamy jako zadanie.
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
gdzie 
 i 
 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 
, to oczywiście
schemat stabilny być nie może, a jeśli wszystkie takie rozwiązania dla dowolnych 
 muszą spełniać 
 - ewentualnie przy pewnych warunkach na 
 i 
 - to schemat ma szanse być stabilnym, czy - inaczej: jest stabilnym
w klasie rozwiązań tej postaci.
Podsumowując: wstawimy 
 do schematu i wyliczamy 
 jeśli
  dla dowolnego 
,
to schemat uważamy za stabilny w sensie opisanym powyżej.
Zbadaj przy pomocy metody Fouriera stabilność schematów:
Zaimplementuj w octave schemat  Laxa-Wendroffa dla równania 
 dla 
, przyjmując, że znamy rozwiązanie początkowe
na 
  i warunki brzegowe 
.  Zbadaj rząd metodą połowionych kroków, czyli dla 
 i 
 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.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
      Mechaniki UW, 2009-2010. 
 Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
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.