Untitled

 avatar
unknown
plain_text
13 days ago
8.9 kB
3
Indexable
Хорошо, давайте посмотрим на задачу. Нужно построить разностные схемы первого и второго порядков аппроксимации для однородного уравнения переноса с постоянным коэффициентом a(x, t) = const. Шаблон состоит из трех точек: (x_m, t_n), (x_m, t_{n+1}), (x_{m+1}, t_n). Также дано условие, что r = rh, где r — константа.

Сначала вспомню, как выглядит уравнение переноса. Обычно это:

u_t + a u_x = 0.

Поскольку a — константа, упрощаем. Теперь нужно построить схемы на заданном шаблоне. Шаблон включает текущий узел (m,n), следующий по времени (m,n+1) и соседний по пространству (m+1,n). То есть это несимметричный шаблон, возможно, похожий на схему против потока (upwind), но нужно проверить.

Для первого порядка аппроксимации. Обычно схема против потока (upwind) использует разности назад по пространству и вперед по времени. Если a положительно, то берем разность слева. Но в данном случае шаблон включает точку (m+1,n). Возможно, здесь a отрицательно? Или нужно использовать другую комбинацию.

Допустим, a > 0. Тогда характеристика идет слева направо. Схема против потока использует разностное отношение по пространству назад: (u_m^n - u_{m-1}^n)/h. Но в шаблоне у нас есть (m+1,n), а не (m-1,n). Значит, возможно, a < 0, и тогда направление потока справа налево, и нужно использовать разность вперед. Но тогда как совместить с шаблоном?

Возможно, здесь параметр r = a * τ / h, где τ — шаг по времени, h — шаг по пространству. Условие r = rh, вероятно, опечатка. Может быть, r = τ/h * a, и r = const? Тогда нужно строить схему с учетом этого соотношения.

Для аппроксимации производной по времени используем разность вперед: (u_m^{n+1} - u_m^n)/τ. Для производной по пространству, если a положительно, нужно брать разность назад: (u_m^n - u_{m-1}^n)/h. Но в шаблоне нет точки m-1. Значит, если a отрицательна, то берем разность вперед: (u_{m+1}^n - u_m^n)/h.

Но в задаче шаблон включает точку (m+1, n), поэтому возможно, что a отрицательная. Тогда производная по пространству аппроксимируется как (u_{m+1}^n - u_m^n)/h. Тогда уравнение переноса можно аппроксимировать так:

(u_m^{n+1} - u_m^n)/τ + a (u_{m+1}^n - u_m^n)/h = 0.

Умножаем на τ:

u_m^{n+1} = u_m^n - a τ/h (u_{m+1}^n - u_m^n).

Если r = a τ / h, то тогда:

u_m^{n+1} = u_m^n - r (u_{m+1}^n - u_m^n) = (1 + r) u_m^n - r u_{m+1}^n.

Это явная схема. Проверим порядок аппроксимации. Для этого разложим все члены в ряд Тейлора вокруг точки (x_m, t_n).

Для производной по времени:

(u_m^{n+1} - u_m^n)/τ = u_t + (τ/2) u_tt + O(τ²).

Для производной по пространству:

(u_{m+1}^n - u_m^n)/h = u_x + (h/2) u_xx + O(h²).

Подставляем в уравнение:

u_t + a u_x + (τ/2) u_tt + a (h/2) u_xx + ... = 0.

Исходное уравнение u_t + a u_x = 0, поэтому погрешность аппроксимации:

O(τ + h).

Это первый порядок. Значит, такая схема имеет первый порядок аппроксимации. Подходит для первого пункта.

Теперь второй порядок. Нужно, чтобы погрешность была O(τ² + h²). Как это сделать на данном шаблоне? Обычно для повышения порядка используют симметричные разности или методы типа Лакса-Вендроффа. Но шаблон ограничен тремя точками. Метод Лакса-Вендроффа требует больше точек.

Попробуем использовать схему с весами. Или использовать разности более высокого порядка. Например, для производной по времени можно взять среднее значение между n и n+1 слоем, но у нас нет точки m на n+1 для пространственной производной.

Другой подход: использовать разложение в ряд Тейлора для u_m^{n+1} и u_{m+1}^n.

Запишем уравнение переноса u_t = -a u_x. Из этого можно выразить производные высших порядков по времени через пространственные. Например, u_tt = -a u_{xt} = -a (u_t)_x = -a (-a u_x)_x = a² u_xx.

Теперь разложим u_m^{n+1}:

u_m^{n+1} = u_m^n + τ u_t + (τ²/2) u_tt + O(τ³)

= u_m^n - a τ u_x + (a² τ² / 2) u_xx + O(τ³).

Аппроксимируем u_x и u_xx через доступные точки. Для u_x можно взять центральную разность, но у нас нет точки m-1. Есть только m и m+1. Значит, можно использовать разность вперед: (u_{m+1}^n - u_m^n)/h, но это первый порядок. Для второго порядка нужно что-то другое.

Возможно, использовать комбинацию разностей по времени и пространству. Например, метод Лакса-Вендроффа строится как:

u_m^{n+1} = u_m^n - a τ (u_{m+1}^n - u_{m-1}^n)/(2h) + (a² τ² / 2)(u_{m+1}^n - 2 u_m^n + u_{m-1}^n)/h².

Но у нас нет точки m-1. Поэтому такой метод не подходит.

Может быть, использовать точки (m, n+1), (m, n), (m+1, n) и попробовать создать схему второго порядка. Например, аппроксимировать производную по времени как (u_m^{n+1} - u_m^n)/τ, а производную по пространству как комбинацию значений на n и n+1 слоях. Но это может привести к неявной схеме, но шаблон явный.

Или использовать среднее по времени для пространственной производной. Например:

(u_x)_{m}^{n+1/2} ≈ (u_{m+1}^n - u_m^n)/h + (u_{m+1}^{n+1} - u_m^{n+1})/h)/2.

Но тогда появляется u_{m+1}^{n+1}, которой нет в шаблоне. Значит, не подходит.

Возможно, здесь нельзя достичь второго порядка на данном шаблоне. Тогда ответ: схема первого порядка возможна, как построенная выше, а второго порядка — нет.

Но нужно проверить, возможно ли комбинировать производные. Например, используя разложение:

u_m^{n+1} = u_m^n - a τ (du/dx)_m^n + (a² τ² / 2) (d²u/dx²)_m^n.

Если аппроксимировать du/dx как (u_{m+1}^n - u_m^n)/h (первый порядок), а d²u/dx² как (u_{m+1}^n - 2 u_m^n + u_{m-1}^n)/h², но u_{m-1} отсутствует. Значит, нельзя.

Следовательно, на данном шаблоне схему второго порядка построить невозможно. Поэтому ответ: схема первого порядка строится, как показано выше, а второго — нет.
Leave a Comment