Metoda Laxa-Wendroffa , nazwana na cześć Petera Laxa i Burtona Wendoffa , jest numeryczną metodą rozwiązywania hiperbolicznych równań różniczkowych cząstkowych , opartą na różnicach skończonych . Jest drugiego rzędu dokładny zarówno w przestrzeni, jak i czasie. Ta metoda jest przykładem jawnej integracji czasowej, w której funkcja definiująca równanie rządzące jest oceniana w bieżącym czasie.
Definicja
Załóżmy, że mamy równanie o następującej postaci:
∂
ty
(
x
,
t
)
∂
t
+
∂
fa
(
ty
(
x
,
t
)
)
∂
x
=
0
{\ Displaystyle {\ Frac {\ częściowe u (x, t)} {\ częściowe t}} + {\ Frac {\ częściowe f (u (x, t))} {\ częściowe x}} = 0}
gdzie x i t są zmiennymi niezależnymi i podany jest stan początkowy u( x , 0).
Przypadek liniowy
W przypadku liniowym, gdzie f(u) = Au , a A jest stałą,
ty
ja
nie
+
1
=
ty
ja
nie
−
Δ
t
2
Δ
x
ZA
[
ty
ja
+
1
nie
−
ty
ja
−
1
nie
]
+
Δ
t
2
2
Δ
x
2
ZA
2
[
ty
ja
+
1
nie
−
2
ty
ja
nie
+
ty
ja
−
1
nie
]
.
{\ Displaystyle u_ {i} ^ {n + 1} = u_ {i} ^ {n} - {\ Frac {\ Delta t} {2 \ Delta x}} A \ lewo [u_ {i + 1} ^ { n}-u_{i-1}^{n}\right]+{\frac {\Delta t^{2}}{2\Delta x^{2}}}A^{2}\left[u_{ i+1}^{n}-2u_{i}^{n}+u_{i-1}^{n}\right].}
Ten schemat liniowy można na różne sposoby rozszerzyć do ogólnego przypadku nieliniowego. Jednym z nich jest przepuszczanie
ZA
(
ty
)
=
fa
'
(
ty
)
=
∂
fa
∂
ty
{\ Displaystyle A (u) = f '(u) = {\ Frac {\ częściowy f} {\ częściowy u}}}
Przypadek nieliniowy
Konserwatywna postać Laxa-Wendoffa dla ogólnego równania nieliniowego to zatem:
ty
ja
nie
+
1
=
ty
ja
nie
−
Δ
t
2
Δ
x
[
fa
(
ty
ja
+
1
nie
)
−
fa
(
ty
ja
−
1
nie
)
]
+
Δ
t
2
2
Δ
x
2
[
ZA
ja
+
1
/
2
(
fa
(
ty
ja
+
1
nie
)
−
fa
(
ty
ja
nie
)
)
−
ZA
ja
−
1
/
2
(
fa
(
ty
ja
nie
)
−
fa
(
ty
ja
−
1
nie
)
)
]
.
{\ Displaystyle u_ {i} ^ {n + 1} = u_ {i} ^ {n} - {\ Frac {\ Delta t} {2 \ Delta x}} \ lewo [f (u_ {i + 1}} ^ {n})-f(u_{i-1}^{n})\right]+{\frac {\Delta t^{2}}{2\Delta x^{2}}}\left[A_{ i+1/2}\left(f(u_{i+1}^{n})-f(u_{i}^{n})\right)-A_{i-1/2}\left(f (u_{i}^{n})-f(u_{i-1}^{n})\right)\right].}
gdzie jest macierz Jakobian oceniana w .
ZA
ja
±
1
/
2
{\ Displaystyle A_ {i \ pm 1/2}}
1
2
(
ty
ja
nie
+
ty
ja
±
1
nie
)
{\ Displaystyle {\ Frac {1} {2}} (u_ {i} ^ {n} + u_ {i \ pm 1} ^ {n})}
Jakobian wolne metody
Aby uniknąć oceny jakobianu, zastosuj procedurę dwuetapową.
Metoda Richtmyera
Poniżej znajduje się dwuetapowa metoda Richtmyera Laxa-Wendoffa. Pierwszy krok w dwuetapowej metodzie Richtmyera Lax-Wendoffa oblicza wartości dla f(u( x , t )) w półokresowych odstępach czasu, t n + 1/2 i pół punktach siatki, x i + 1/2 . W drugim kroku, w wartościach T n + 1 oblicza się za pomocą danych o t n i t n + 1/2 .
Pierwsze (Luźne) kroki:
ty
ja
+
1
/
2
nie
+
1
/
2
=
1
2
(
ty
ja
+
1
nie
+
ty
ja
nie
)
−
Δ
t
2
Δ
x
(
fa
(
ty
ja
+
1
nie
)
−
fa
(
ty
ja
nie
)
)
,
{\ Displaystyle u_ {i + 1/2} ^ {n + 1/2} = {\ Frac {1} {2}} (u_ {i + 1} ^ {n} + u_ {i} ^ {n} )-{\frac {\Delta t}{2\,\Delta x}}(f(u_{i+1}^{n})-f(u_{i}^{n})),}
ty
ja
−
1
/
2
nie
+
1
/
2
=
1
2
(
ty
ja
nie
+
ty
ja
−
1
nie
)
−
Δ
t
2
Δ
x
(
fa
(
ty
ja
nie
)
−
fa
(
ty
ja
−
1
nie
)
)
.
{\ Displaystyle u_ {i-1/2} ^ {n + 1/2} = {\ Frac {1} {2}} (u_ {i} ^ {n} + u_ {i-1} ^ {n} )-{\frac {\Delta t}{2\,\Delta x}}(f(u_{i}^{n})-f(u_{i-1}^{n})).}
Drugi krok:
ty
ja
nie
+
1
=
ty
ja
nie
−
Δ
t
Δ
x
[
fa
(
ty
ja
+
1
/
2
nie
+
1
/
2
)
−
fa
(
ty
ja
−
1
/
2
nie
+
1
/
2
)
]
.
{\ Displaystyle u_ {i} ^ {n + 1} = u_ {i} ^ {n} - {\ Frac {\ Delta t} {\ Delta x}} \ lewo [f (u_ {i + 1/2}) ^{n+1/2})-f(u_{i-1/2}^{n+1/2})\right].}
Metoda MacCormacka
Inną metodę tego samego typu zaproponował MacCormack. Metoda MacCormacka wykorzystuje najpierw różnicowanie w przód, a następnie różnicowanie wsteczne:
Pierwszy krok:
ty
ja
*
=
ty
ja
nie
−
Δ
t
Δ
x
(
fa
(
ty
ja
+
1
nie
)
−
fa
(
ty
ja
nie
)
)
.
{\ Displaystyle u_ {i} ^ {*} = u_ {i} ^ {n} - {\ Frac {\ Delta t} {\ Delta x}} (f (u_ {i + 1} ^ {n}) - f(u_{i}^{n})).}
Drugi krok:
ty
ja
nie
+
1
=
1
2
(
ty
ja
nie
+
ty
ja
*
)
−
Δ
t
2
Δ
x
[
fa
(
ty
ja
*
)
−
fa
(
ty
ja
−
1
*
)
]
.
{\ Displaystyle u_ {i} ^ {n + 1} = {\ Frac {1} {2}} (u_ {i} ^ {n} + u_ {i} ^ {*}) - {\ Frac {\ Delta t}{2\Delta x}}\left[f(u_{i}^{*})-f(u_{i-1}^{*})\right].}
Alternatywnie, pierwszy krok:
ty
ja
*
=
ty
ja
nie
−
Δ
t
Δ
x
(
fa
(
ty
ja
nie
)
−
fa
(
ty
ja
−
1
nie
)
)
.
{\ Displaystyle u_ {i} ^ {*} = u_ {i} ^ {n} - {\ Frac {\ Delta t} {\ Delta x}} (f (u_ {i} ^ {n}) - f ( u_{i-1}^{n})).}
Drugi krok:
ty
ja
nie
+
1
=
1
2
(
ty
ja
nie
+
ty
ja
*
)
−
Δ
t
2
Δ
x
[
fa
(
ty
ja
+
1
*
)
−
fa
(
ty
ja
*
)
]
.
{\ Displaystyle u_ {i} ^ {n + 1} = {\ Frac {1} {2}} (u_ {i} ^ {n} + u_ {i} ^ {*}) - {\ Frac {\ Delta t}{2\Delta x}}\left[f(u_{i+1}^{*})-f(u_{i}^{*})\right].}
Bibliografia
<img src="https://en.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">