Метод Лакса–Вендроффа

Метод Лакса–Вендроффа , названный в честь Питера Лакса и Бертона Вендроффа , [1] — это численный метод решения гиперболических уравнений в частных производных , основанный на конечных разностях . Он имеет точность второго порядка как в пространстве, так и во времени. Этот метод является примером явного интегрирования по времени , где функция, определяющая основное уравнение, оценивается в текущий момент времени.

Определение

Предположим, что имеется уравнение следующего вида: где x и t — независимые переменные, а начальное состояние u ( x , 0) задано. ты ( х , т ) т + ф ( ты ( х , т ) ) х = 0 {\displaystyle {\frac {\partial u(x,t)}{\partial t}}+{\frac {\partial f(u(x,t))}{\partial x}}=0}

Линейный случай

В линейном случае, когда f ( u ) = Au , а A — константа, [2] Здесь относится к размерности, а относится к размерности. Эту линейную схему можно распространить на общий нелинейный случай разными способами. Один из них — позволить ты я н + 1 = ты я н Δ т 2 Δ х А [ ты я + 1 н ты я 1 н ] + Δ т 2 2 Δ х 2 А 2 [ ты я + 1 н 2 ты я н + ты я 1 н ] . {\displaystyle u_{i}^{n+1}=u_{i}^{n}-{\frac {\Delta t}{2\Delta x}}A\left[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].} н {\displaystyle n} т {\displaystyle т} я {\displaystyle я} х {\displaystyle x} А ( ты ) = ф ( ты ) = ф ты {\displaystyle A(u)=f'(u)={\frac {\partial f}{\partial u}}}

Нелинейный случай

Консервативная форма уравнения Лакса-Вендроффа для общего нелинейного уравнения имеет вид: где матрица Якоби оценивается при . ты я н + 1 = ты я н Δ т 2 Δ х [ ф ( ты я + 1 н ) ф ( ты я 1 н ) ] + Δ т 2 2 Δ х 2 [ А я + 1 / 2 ( ф ( ты я + 1 н ) ф ( ты я н ) ) А я 1 / 2 ( ф ( ты я н ) ф ( ты я 1 н ) ) ] . {\displaystyle u_{i}^{n+1}=u_{i}^{n}-{\frac {\Delta t}{2\Delta x}}\left[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].} А я ± 1 / 2 {\displaystyle A_{i\pm 1/2}} 1 2 ( ты я н + ты я ± 1 н ) {\textstyle {\frac {1}{2}}(u_{i}^{n}+u_{i\pm 1}^{n})}

Методы, свободные от Якобиана

Чтобы избежать оценки Якобиана, используйте двухэтапную процедуру.

Метод Рихтмайера

Далее следует двухшаговый метод Рихтмайера Лакса–Вендроффа. Первый шаг двухшагового метода Рихтмайера Лакса–Вендроффа вычисляет значения для f ( u ( x , t )) на половине временного шага, t n + 1/2 и половине точек сетки, x i + 1/2 . На втором шаге значения в t n + 1 вычисляются с использованием данных для t n и t n + 1/2 .

Первые (слабые) шаги: ты я + 1 / 2 н + 1 / 2 = 1 2 ( ты я + 1 н + ты я н ) Δ т 2 Δ х ( ф ( ты я + 1 н ) ф ( ты я н ) ) , {\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})),} ты я 1 / 2 н + 1 / 2 = 1 2 ( ты я н + ты я 1 н ) Δ т 2 Δ х ( ф ( ты я н ) ф ( ты я 1 н ) ) . {\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})).}

Второй шаг: ты я н + 1 = ты я н Δ т Δ х [ ф ( ты я + 1 / 2 н + 1 / 2 ) ф ( ты я 1 / 2 н + 1 / 2 ) ] . {\displaystyle u_{i}^{n+1}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}\left[f(u_{i+1/2}^{n+1/2})-f(u_{i-1/2}^{n+1/2})\right].}

Метод МакКормака

Другой метод этого же типа был предложен МакКормаком. Метод МакКормака использует сначала прямое дифференцирование, а затем обратное дифференцирование:

Первый шаг: Второй шаг: ты я = ты я н Δ т Δ х ( ф ( ты я + 1 н ) ф ( ты я н ) ) . {\displaystyle u_{i}^{*}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}(f(u_{i+1}^{n})-f(u_{i}^{n})).} ты я н + 1 = 1 2 ( ты я н + ты я ) Δ т 2 Δ х [ ф ( ты я ) ф ( ты я 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].}

Альтернативно, Первый шаг: Второй шаг: u i = u i n Δ t Δ x ( f ( u i n ) f ( u i 1 n ) ) . {\displaystyle u_{i}^{*}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}(f(u_{i}^{n})-f(u_{i-1}^{n})).} u i n + 1 = 1 2 ( u i n + u i ) Δ t 2 Δ x [ f ( u i + 1 ) f ( u i ) ] . {\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].}

Ссылки

  1. ^ PD Lax; B. Wendroff (1960). «Системы законов сохранения» (PDF) . Commun. Pure Appl. Math . 13 (2): 217–237. doi :10.1002/cpa.3160130205. Архивировано из оригинала 25 сентября 2017 г.
  2. ^ LeVeque, Randall J. (1992). Численные методы для законов сохранения (PDF) . Бостон: Birkhäuser. стр. 125. ISBN 0-8176-2723-5.
  • Майкл Дж. Томпсон, Введение в астрофизическую гидродинамику , Imperial College Press, Лондон, 2006.
  • Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). "Раздел 20.1. Flux Conservative Initial Value Problems". Numerical Recipes: The Art of Scientific Computing (3-е изд.). Нью-Йорк: Cambridge University Press. стр. 1040. ISBN 978-0-521-88068-8.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Lax–Wendroff_method&oldid=1131007243"