Обыкновенное дифференциальное уравнение (ОДУ) — это уравнение, которое содержит производные неизвестной функции по одной независимой переменной.
Общий вид ОДУ:
\[ F(x, y, y', y'', ..., y^{(n)}) = 0 \]
где:
Порядок ОДУ — это порядок наивысшей производной, входящей в уравнение.
Задача Коши — это задача для дифференциального уравнения, при которой уравнение сопровождается начальными условиями, заданными в одной точке.
Для обыкновенного дифференциального уравнения первого порядка:
\[ \frac{dy}{dx} = f(x, y), \quad y(x_0) = y_0 \]
Решение задачи Коши — это функция \(y(x)\), которая удовлетворяет как дифференциальному уравнению, так и начальному условию при \(x = x_0\).
В общем виде (для систем и уравнений высших порядков):
\[ \begin{cases} \frac{d^n y}{dx^n} = F\left(x, y, y', \dots, y^{(n-1)}\right), \\ y(x_0) = y_0, \\ y'(x_0) = y_1, \\ \vdots \\ y^{(n-1)}(x_0) = y_{n-1} \end{cases} \]
Краевая задача — это задача, в которой значения решения или его производных задаются не в одной точке (как в задаче Коши), а на границах отрезка \([a, b]\).
Пример для ОДУ второго порядка:
\[ \frac{d^2y}{dx^2} = f(x, y, y'), \quad x \in [a, b] \]
Краевая задача сопровождается граничными условиями, которые могут быть следующих типов:
Условия Дирихле (I рода):
Задаются значения функции на границах:
\[ y(a) = \alpha, \quad y(b) = \beta \]
Условия Неймана (II рода):
Задаются значения производной функции на границах:
\[ y'(a) = \alpha, \quad y'(b) = \beta \]
Условия Робина (III рода, смешанные):
Линейная комбинация функции и её производной:
\[ a_1 y(a) + b_1 y'(a) = \alpha, \quad a_2 y(b) + b_2 y'(b) = \beta \]
Метод Эйлера — это численный метод приближённого решения задачи Коши для обыкновенного дифференциального уравнения.
Пусть дана задача Коши:
\[ \begin{cases} \frac{dy}{dx} = f(x, y), \\ y(x_0) = y_0 \end{cases} \]
Хотим найти приближённое значение функции \(y(x)\) на отрезке \([x_0, x_n]\).
Разбиваем отрезок \([x_0, x_n]\) на \(n\) равных частей с шагом \(h\):
\[ h = \frac{x_n - x_0}{n} \]
Строим последовательность приближённых значений:
\[ x_k = x_0 + kh, \quad k = 0, 1, 2, \dots, n \]
Итерационная формула метода Эйлера:
\[ y_{k+1} = y_k + h \cdot f(x_k, y_k) \]
где \(y_k\) — приближённое значение \(y(x_k)\).
Шаг 0: Инициализация:
Шаг 1: Для \(k = 0\) до \(n-1\):
Вычислить \(f(x_k, y_k)\)
Посчитать:
\[ y_{k+1} = y_k + h \cdot f(x_k, y_k) \]
Перейти к следующему \(x_{k+1} = x_k + h\)
Метод Эйлера — метод первого порядка точности, и его глобальная погрешность порядка \(O(h)\), поэтому для точности нужно брать маленький шаг \(h\).
Методы Адамса — это многократные шаговые методы численного решения задачи Коши. Они бывают явные (Адамса–Башфорта) и неявные (Адамса–Мултона).
Здесь мы рассмотрим неявную формулу Адамса второго порядка точности, которая относится к методам Адамса–Мултона.
\[ \frac{dy}{dx} = f(x, y), \quad y(x_0) = y_0 \]
Формула имеет вид:
\[ y_{n+1} = y_n + \frac{h}{2} \left[f(x_{n+1}, y_{n+1}) + f(x_n, y_n)\right] \]
Обладает вторым порядком точности: погрешность \(O(h^2)\).
Метод Эйлера с пересчётом — это численный метод решения задачи Коши, который улучшает точность обычного метода Эйлера за счёт уточнения значения производной на шаге. Этот метод также называют:
\[ \begin{cases} \frac{dy}{dx} = f(x, y), \\ y(x_0) = y_0 \end{cases} \]
Для шага \(h\) и текущей точки \((x_n, y_n)\):
Предсказание (простой шаг Эйлера):
\[ y_{n+1}^{(0)} = y_n + h \cdot f(x_n, y_n) \]
Коррекция (среднее значение производной):
\[ y_{n+1} = y_n + \frac{h}{2} \left[f(x_n, y_n) + f(x_{n+1}, y_{n+1}^{(0)})\right] \]
Порядок точности: второй (\(O(h^2)\)), в отличие от обычного метода Эйлера (\(O(h)\)).
Если нужно — могу привести код на Python или сравнение с другими методами.
Задача Коши
\[ y' = f(x, y), \quad y(x_0) = y_0 \]
Основная идея заключается в аппроксимации решения на каждом шаге за счёт взвешенного среднего нескольких оценок правой части уравнения \(f(x, y)\).
Общий вид метода Рунге-Кутта порядка \(s\) записывается как:
\[ y_{n+1} = y_n + h \sum_{i=1}^s b_i k_i \]
где промежуточные значения \(k_i\) (называемые стадиями) определяются по формулам:
\[ k_i = f\left(x_n + c_i h, y_n + h \sum_{j=1}^{s} a_{ij} k_j\right), \quad i = 1, 2, \dots, s \]
Коэффициенты \(a_{ij}\), \(b_i\), \(c_i\) задают конкретный метод Рунге-Кутта и обычно представляются в виде таблицы Бутчера:
$$ \[\begin{array}{c|cccc} c_1 & a_{11} & a_{12} & \cdots & a_{1s} \\ c_2 & a_{21} & a_{22} & \cdots & a_{2s} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ c_s & a_{s1} & a_{s2} & \cdots & a_{ss} \\ \hline & b_1 & b_2 & \cdots & b_s \end{array}\]$$
Методы Рунге-Кутта строятся таким образом, чтобы приближение \(y_{n+1}\) обладало определённым порядком точности \(p\). Для этого коэффициенты \(a_{ij}\), \(b_i\), \(c_i\) подбираются так, чтобы удовлетворялись условия согласования, выведенные из разложения решения в ряд Тейлора.
Примеры:
Методы Рунге-Кутта удобны тем, что не требуют вычисления производных \(f\) и обеспечивают высокую точность при умеренной вычислительной сложности.
Метод Рунге-Кутта третьего порядка используется для численного решения задачи Коши:
\[ y' = f(x, y), \quad y(x_0) = y_0 \]
Его общая формула имеет вид:
\[ y_{n+1} = y_n + h (b_1 k_1 + b_2 k_2 + b_3 k_3) \]
где стадии вычисляются по формулам:
\[ \begin{aligned} k_1 &= f(x_n, y_n) \\ k_2 &= f(x_n + a_2 h, y_n + h p*{21} k*1) \\ k_3 &= f(x_n + a_3 h, y_n + h (p*{31} k*1 + p*{32} k_2)) \end{aligned} \]
Одним из классических вариантов коэффициентов для метода третьего порядка является:
\[ \begin{aligned} a*2 &= \frac{1}{2}, &\quad p*{21} &= \frac{1}{2} \\ a*3 &= 1, &\quad p*{31} &= -1,\quad p_{32} = 2 \\ b_1 &= \frac{1}{6},\quad b_2 = \frac{2}{3},\quad b_3 = \frac{1}{6} \end{aligned} \]
Итоговая схема:
\[ \begin{aligned} k*1 &= f(x_n, y_n) \\ k_2 &= f\left(x_n + \frac{h}{2}, y_n + \frac{h}{2} k_1\right) \\ k_3 &= f(x_n + h, y_n - h k_1 + 2h k_2) \\ u_{n+1} &= y_n + \frac{h}{6}(k_1 + 4k_2 + k_3) \end{aligned} \]
Это обеспечивает аппроксимацию решения с порядком точности \(O(h^4)\) для локальной погрешности и \(O(h^3)\) для глобальной.
Таблица Бутчера для этого метода:
\[ \begin{array}{c|ccc} 0 & & & \\ \frac{1}{2} & \frac{1}{2} & & \\ 1 & -1 & 2 & \\ \hline & \frac{1}{6} & \frac{2}{3} & \frac{1}{6} \end{array} \]
\[ y' = f(x, y), \quad y(x_0) = y_0 \]
Общий вид схемы:
\[ \begin{aligned} k*1 &= f(x_n, y_n) \\ k_2 &= f\left(x_n + \frac{h}{2}, y_n + \frac{h}{2}k_1\right) \\ k_3 &= f\left(x_n + \frac{h}{2}, y_n + \frac{h}{2}k_2\right) \\ k_4 &= f(x_n + h, y_n + h k_3) \\ u_{n+1} &= y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4) \end{aligned} \]
Этот метод обеспечивает локальную погрешность порядка \(O(h^5)\) и глобальную погрешность порядка \(O(h^4)\).
Коэффициенты метода:
\[ \begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0 \\ \frac{1}{2} & 0 & \frac{1}{2} & 0 & 0 \\ 1 & 0 & 0 & 1 & 0 \\ \hline & \frac{1}{6} & \frac{1}{3} & \frac{1}{3} & \frac{1}{6} \end{array} \]
Преимущества RK4:
Недостатки:
Методы Рунге-Кутта характеризуются двумя основными видами точности:
Если метод Рунге-Кутта имеет порядок \(p\), то:
Сеткой (или разбиением) на отрезке \([a, b]\) называется конечное множество точек:
\[ \omega = \{x_0, x_1, \dots, x_N\}, \quad a = x_0 < x_1 < \dots < x_N = b \]
Шаг сетки:
\[ h*i = x*{i+1} - x_i, \quad h = \max h_i \]
Точки \(x_i \in \omega\) называются узлами сетки.
Сеточной функцией называется функция, заданная только в узлах сетки:
\[ y_i = y(x_i), \quad i = 0, 1, \dots, N \]
То есть сеточная функция — это набор значений функции в узлах:
\[ y^\omega = \{y_0, y_1, \dots, y_N\} \]
Для оценки величины и ошибки сеточной функции используются сеточные нормы.
Наиболее часто применяются:
\[ \|y^\omega\|_{C} = \max_{0 \le i \le N} |y_i| \]
\[ \|y^\omega\|_{L_2} = \left( \sum_{i=0}^{N} |y_i|^2 h_i \right)^{1/2} \]
(при равномерной сетке \(h_i = h\)):
\[ \|y^\omega\|_{L_2} = \left( h \sum_{i=0}^{N} |y_i|^2 \right)^{1/2} \]
Сеточные нормы позволяют количественно оценивать приближения численных методов и проводить сравнение между численным и точным решением.
Разностная аппроксимация — это замена производных в дифференциальных уравнениях разностными выражениями, то есть приближениями с использованием значений функции в узлах сетки.
Цель — построить численный метод решения дифференциального уравнения путём его аппроксимации конечными разностями.
Примеры разностных аппроксимаций для первой производной:
\[ y'(x_i) \approx \frac{y_{i+1} - y_i}{h} \quad \text{(порядок точности } O(h)) \]
\[ y'(x_i) \approx \frac{y_i - y_{i-1}}{h} \quad \text{(порядок точности } O(h)) \]
\[ y'(x_i) \approx \frac{u_{i+1} - y_{i-1}}{2h} \quad \text{(порядок точности } O(h^2)) \]
\[ y''(x_i) \approx \frac{y_{i+1} - 2y_i + y_{i-1}}{h^2} \quad \text{(порядок точности } O(h^2)) \]
Шаблон — это графическая или табличная схема, показывающая, какие узлы и значения сеточной функции используются для вычисления разностного приближения.
Погрешность разностной аппроксимации — это разность между истинным значением производной и её приближённым значением, полученным с помощью разностной формулы.
Обозначим:
\[ \tau(x_i) = \left| \frac{d^k y}{dx^k}(x_i) - D_h^k y(x_i) \right| \]
где:
Порядок точности \(p\) разностной аппроксимации определяется как:
\[ \tau(x_i) = O(h^p) \]
где \(h\) — шаг сетки.
Это означает, что при уменьшении \(h\) в два раза, погрешность аппроксимации уменьшается примерно в \(2^p\) раз.
\[ y'(x*i) \approx \frac{u_{i+1} - y_i}{h}, \quad \tau = O(h) \]
\[ y'(x*i) \approx \frac{y_{i+1} - y_{i-1}}{2h}, \quad \tau = O(h^2) \]
\[ y''(x*i) \approx \frac{y_{i+1} - 2y_i + y_{i-1}}{h^2}, \quad \tau = O(h^2) \]
Глобальная погрешность численного метода зависит от локальной погрешности аппроксимации и от устойчивости метода. При устойчивости схема с локальной погрешностью \(O(h^p)\) даёт глобальную погрешность того же порядка: \(O(h^p)\).
Разностная схема — это система алгебраических уравнений, полученная заменой производных в дифференциальном уравнении их разностными аппроксимациями.
Цель: численно решить задачу Коши или краевую задачу.
Пример:
Пусть задано уравнение:
\[ y'(x) = f(x), \quad y(x_0) = y_0 \]
Разностная схема (метод Эйлера):
\[ \frac{y_{i+1} - y_i}{h} = f(x_i), \quad y_0 = y(x_0) \]
Или:
\[ y_{i+1} = y_i + h f(x_i) \]
Схема определяет, как переходить от одного узла к другому.
Порядок аппроксимации разностной схемы — это степень точности, с которой разностная схема аппроксимирует исходное дифференциальное уравнение.
Пусть \(\tau_i\) — локальная (т.е. на одном шаге) погрешность аппроксимации. Тогда схема имеет порядок \(p\), если:
\[ \tau_i = O(h^p) \]
Порядок аппроксимации можно определить с помощью разложения в ряд Тейлора точного решения и сравнения с разностной формулой. Если разности совпадают до членов \(O(h^p)\), то порядок схемы равен \(p\).
Метод Эйлера:
\[ y_{i+1} = y_i + h f(x_i) \]
Разложим точное решение в ряд Тейлора:
\[ y(x_{i+1}) = y(x_i) + h y'(x_i) + \frac{h^2}{2} y''(x_i) + \dots \]
Сравнивая с формулой метода Эйлера, получаем:
\[ \tau_i = \frac{h^2}{2} y''(x_i) + O(h^3) \Rightarrow \tau_i = O(h^2) \]
Значит, метод Эйлера имеет первый порядок аппроксимации.
Устойчивость — это свойство разностной схемы, при котором малые изменения входных данных (начальных условий, правых частей, округлений) не приводят к существенным отклонениям в решении.
Иначе говоря, устойчивость обеспечивает ограниченность возмущённого решения:
\[ \text{если } \|\delta f\| \to 0, \text{ то } \|\delta y^\omega\| \to 0 \]
Схема называется устойчивой, если существует такая постоянная \(C\), не зависящая от шага \(h\), что для любых двух решений \(y^\omega\) и \(\tilde{y}^\omega\) справедливо:
\[ \|y^\omega - \tilde{y}^\omega\| \le C \|f - \tilde{f}\| \]
Для линейных схем часто применяют спектральный анализ (например, метод фон Неймана), где устойчивость определяется по модулю характеристических чисел (например, необходимо \(|q| \le 1\)).
Разностная схема называется корректной, если она:
Связь между этими понятиями устанавливает теорема Лакса:
Если разностная схема линейна, аппроксимирует дифференциальное уравнение и устойчива, то она сходится к точному решению.
Погрешность разностной схемы — это разность между точным решением задачи, взятым в узлах сетки, и численным решением, полученным с помощью схемы.
Обозначим:
Тогда погрешность в узле \(x_i\):
\[ e_i = y(x_i) - y_i \]
Разностная схема называется сходящейся (конвергентной), если при уменьшении шага сетки \(h \to 0\) погрешность стремится к нулю во всех узлах:
\[ \| e^\omega \| = \max_i |e_i| \to 0, \quad h \to 0 \]
то согласно теореме Лакса схема сходится с тем же порядком \(p\):
\[ \|e^\omega\| = O(h^p) \]
Для надёжного численного решения задачи необходимо:
\[ \boxed{ \text{Аппроксимация} + \text{Устойчивость} \implies \text{Сходимость} } \]
Пусть дана сетка \(\omega = \{x_0, x_1, \dots, x_N\}\) с шагом \(h = x_{i+1} - x_i\) и значения функции \(y_i = y(x_i)\).
\[ y'(x_i) \approx \frac{y_{i+1} - y_i}{h} \]
\[ y'(x_i) \approx \frac{y_i - y_{i-1}}{h} \]
\[ y'(x_i) \approx \frac{y_{i+1} - y_{i-1}}{2h} \]
\[ y''(x_i) \approx \frac{y_{i+1} - 2 y_i + y_{i-1}}{h^2} \]
Рассмотрим линейное дифференциальное уравнение второго порядка на отрезке \([a, b]\):
\[ -(p(x) y'(x))' + q(x) y(x) = f(x), \quad x \in [a, b] \]
где функции \(p(x)\), \(q(x)\), \(f(x)\) — заданные, и \(p(x) > 0\) на \([a,b]\).
Для постановки краевой задачи необходимо задать условия на границах \(x=a\) и \(x=b\). Обычно используются:
\[ y(a) = \alpha, \quad y(b) = \beta \]
\[ y'(a) = \gamma, \quad y'(b) = \delta \]
\[ \begin{cases} \alpha_1 y(a) + \beta_1 y'(a) = \gamma_1 \\ \alpha_2 y(b) + \beta_2 y'(b) = \gamma_2 \end{cases} \]
Нужно найти функцию \(y(x)\), удовлетворяющую уравнению и краевым условиям:
\[ \begin{cases} -(p(x) y'(x))' + q(x) y(x) = f(x), & x \in (a,b) \\ \text{краевые условия, например } y(a)=\alpha, \quad y(b)=\beta \end{cases} \]
\[ \begin{cases} -y''(x) + q(x) y(x) = f(x), \quad x \in [a,b] \\ y(a) = \alpha, \quad y(b) = \beta \end{cases} \]
Рассмотрим краевую задачу:
\[ \begin{cases} -(p(x) y'(x))' + q(x) y(x) = f(x), \quad x \in [a,b], \\ y(a) = \alpha, \quad y(b) = \beta, \end{cases} \]
где \(p(x) > 0\), функции \(p, q, f\) заданы и достаточно гладкие.
Разобьём отрезок \([a,b]\) на равномерную сетку с шагом \(h = \frac{b - a}{N}\):
\[ x_i = a + i h, \quad i = 0,1,\ldots,N, \]
обозначим приближенное значение решения в узле \(x_i\) как \(y_i \approx y(x_i)\).
Для приближения производной используем центральные разности:
\[ y'(x_i) \approx \frac{y_{i+1} - y_{i-1}}{2h}, \]
а для второго производного оператора применим аппроксимацию
\[ (p(x) y'(x))' \approx \frac{1}{h} \left[ p_{i+1/2} \frac{y_{i+1} - y_i}{h} - p_{i-1/2} \frac{y_i - y_{i-1}}{h} \right], \]
где
\[ p_{i+1/2} = p\left(x_i + \frac{h}{2}\right), \quad p_{i-1/2} = p\left(x_i - \frac{h}{2}\right). \]
Подставляя аппроксимации, получаем для внутреннего узла \(i = 1, \ldots, N-1\):
\[ -\frac{1}{h^2} \left[ p_{i+1/2} (y_{i+1} - y_i) - p_{i-1/2} (y_i - y_{i-1}) \right] + q_i y_i = f_i, \]
где
\[ q_i = q(x_i), \quad f_i = f(x_i). \]
Аппроксимируем краевые условия непосредственно:
\[ y_0 = \alpha, \quad y_N = \beta. \]
Получается система линейных уравнений для \(\{y_i\}_{i=1}^{N-1}\):
\[ -a_i y_{i-1} + b_i y_i - c_i y_{i+1} = f_i, \quad i=1,\ldots,N-1, \]
где коэффициенты
\[ a_i = \frac{p_{i-1/2}}{h^2}, \quad c*i = \frac{p_{i+1/2}}{h^2}, \quad b_i = a_i + c_i + q_i. \]
С учётом граничных условий система замкнута.
\[ \frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2}, \quad x \in (a,b), \quad t > 0, \]
где \(\alpha > 0\) — коэффициент теплопроводности.
\[ u(x,0) = \varphi(x), \quad a \leq x \leq b. \]
Краевые условия:
\[ u(a,t) = \mu_1(t), \quad u(b,t) = \mu_2(t). \]
\[ \frac{\partial u}{\partial x}(a,t) = \nu_1(t), \quad \frac{\partial u}{\partial x}(b,t) = \nu_2(t). \]
\[ \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2}, \quad x \in (a,b), \quad t > 0, \]
где \(c\) — скорость волны.
\[ u(x,0) = \varphi(x), \quad \frac{\partial u}{\partial t}(x,0) = \psi(x). \]
Краевые условия:
\[ u(a,t) = \mu_1(t), \quad u(b,t) = \mu_2(t). \]
\[ \frac{\partial u}{\partial x}(a,t) = \nu_1(t), \quad \frac{\partial u}{\partial x}(b,t) = \nu_2(t). \]
\[ \Delta u = \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} = 0, \]
в области \(\Omega \subset \mathbb{R}^2\).
\[ u|_{\partial \Omega} = g(x,y). \]
\[ \frac{\partial u}{\partial n}\bigg|_{\partial \Omega} = h(x,y), \]
где \(\frac{\partial}{\partial n}\) — производная по нормали к границе.
\[ \Delta u = f(x,y), \quad (x,y) \in \Omega, \]
с краевыми условиями, аналогичными уравнению Лапласа.
| Уравнение | Тип | Начальные условия | Краевые условия |
|---|---|---|---|
| Уравнение теплопроводности | Парадоксальное, первая производная по времени | \(u(x,0) = \varphi(x)\) | Дирихле или Нейман на границе |
| Волновое уравнение | Гиперболическое | \(u(x,0) = \varphi(x), \quad u_t(x,0) = \psi(x)\) | Дирихле или Нейман |
| Уравнение Лапласа | Эллиптическое | — | Дирихле или Нейман |
| Уравнение Пуассона | Эллиптическое | — | Дирихле или Нейман |
Рассмотрим уравнение теплопроводности:
\[ \frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2}, \quad x \in [a,b], \quad t > 0, \]
с начальными и краевыми условиями.
Обозначим сетку:
Обозначим приближение решения \(u_i^n \approx u(x_i, t^n)\).
Схема:
\[ \frac{u_i^{n+1} - u_i^n}{\tau} = \alpha \frac{u_{i+1}^n - 2 u_i^n + u_{i-1}^n}{h^2}, \quad i=1,\ldots,N-1. \]
Переобозначим:
\[ u_i^{n+1} = u_i^n + \lambda (u_{i+1}^n - 2 u_i^n + u_{i-1}^n), \quad \text{где } \lambda = \frac{\alpha \tau}{h^2}. \]
Используя разложение в ряд Тейлора, локальная погрешность аппроксимации равна
\[ \tau = O(\tau) + O(h^2), \]
то есть первый порядок по времени и второй по пространству.
Схема:
\[ \frac{u_i^{n+1} - u_i^n}{\tau} = \alpha \frac{u_{i+1}^{n+1} - 2 u_i^{n+1} + u_{i-1}^{n+1}}{h^2}, \quad i=1,\ldots,N-1. \]
Или в виде:
\[ - \lambda u_{i-1}^{n+1} + (1 + 2 \lambda) u_i^{n+1} - \lambda u_{i+1}^{n+1} = u_i^n, \]
где \(\lambda = \frac{\alpha \tau}{h^2}\).
Локальная погрешность аппроксимации также
\[ \tau = O(\tau) + O(h^2). \]
| Схема | Порядок по времени | Порядок по пространству | Устойчивость |
|---|---|---|---|
| Явная (явный Эйлер) | 1 | 2 | Устойчива при \(\lambda \le \frac{1}{2}\) (условие Куранта) |
| Неявная (неявный Эйлер) | 1 | 2 | Неограниченно устойчива |
Разностная схема аппроксимирует дифференциальное уравнение, если при $ h, $ (размерах сетки) она приближённо воспроизводит исходное уравнение.
Локальная погрешность аппроксимации:
\[ \tau_i^n = \left| \text{Дифференциальный оператор} - \text{Разностный оператор} \right| = O(h^p + \tau^q) \]
где \(p\), \(q\) — порядки аппроксимации по пространству и времени.
Схема аппроксимирует уравнение условно, если сходимость имеет место только при выполнении определённых условий, например:
То есть аппроксимация «работает» только при определённом соотношении шагов.
Схема имеет абсолютную аппроксимацию, если порядок аппроксимации сохраняется при любых допустимых \(h, \tau\), без дополнительных ограничений.
Это означает, что приближение к дифференциальному уравнению устойчиво по отношению к произвольному выбору мелких шагов.
Устойчивость — это свойство схемы, при котором малые возмущения (начальных условий, правых частей, округлений) не вызывают резкого роста ошибки.
Формально: существует постоянная \(C\), не зависящая от шага, такая что:
\[ \| \delta u^n \| \le C \| \delta f \| \]
Если линейная разностная схема аппроксимирует дифференциальное уравнение и является устойчивой, то она сходится, и её порядок сходимости равен порядку аппроксимации.
| Понятие | Смысл |
|---|---|
| Аппроксимация | Насколько точно схема приближает дифф. уравнение |
| Условная аппроксимация | Приближение работает только при определённых соотношениях шагов |
| Абсолютная аппроксимация | Приближение корректно при любых допустимых шагах |
| Устойчивость | Ошибки не усиливаются при вычислениях |
\[ \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2}, \quad x \in [a,b],\; t > 0 \]
Сетка: \(x_i = a + ih\), \(t^n = n\tau\), \(u_i^n \approx u(x_i, t^n)\)
\[ \frac{u_i^{n+1} - 2u_i^n + u_i^{n-1}}{\tau^2} = c^2 \frac{u_{i+1}^n - 2u_i^n + u_{i-1}^n}{h^2} \]
Порядок аппроксимации:
\[ O(\tau^2 + h^2) \]
Устойчивость:
Условная устойчивость:
\[ \frac{c \tau}{h} \le 1 \quad \text{(условие Куранта)} \]
\[ \frac{u_i^{n+1} - 2u_i^n + u_i^{n-1}}{\tau^2} = c^2 \frac{u_{i+1}^{n+1} - 2u_i^{n+1} + u_{i-1}^{n+1}}{h^2} \]
Порядок:
\[ O(\tau^2 + h^2) \]
Устойчивость:
Абсолютно устойчива (не требует ограничений на \(\tau, h\)).
\[ \frac{\partial u}{\partial t} = \alpha \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right) \]
\[ u_{i,j}^{n+1} = u_{i,j}^n + \lambda \left( u_{i+1,j}^n + u_{i-1,j}^n + u_{i,j+1}^n + u_{i,j-1}^n - 4u_{i,j}^n \right) \]
где \(\lambda = \frac{\alpha \tau}{h^2}\)
Порядок аппроксимации:
\[ O(\tau + h^2) \]
Устойчивость:
Условная:
\[ \lambda \le \frac{1}{4} \]
\[ \frac{u_{i,j}^{n+1} - u_{i,j}^n}{\tau} = \alpha \left( \frac{u_{i+1,j}^{n+1} - 2u_{i,j}^{n+1} + u_{i-1,j}^{n+1}}{h^2} + \frac{u_{i,j+1}^{n+1} - 2u_{i,j}^{n+1} + u_{i,j-1}^{n+1}}{h^2} \right) \]
Порядок:
\[ O(\tau + h^2) \]
Устойчивость:
Абсолютная (не требует ограничений на \(\tau,
h\)).
\[ \Delta u = \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} = 0 \]
Для узла \((i,j)\):
\[ \frac{u_{i+1,j} + u_{i-1,j} + u_{i,j+1} + u_{i,j-1} - 4u_{i,j}}{h^2} = 0 \]
Порядок аппроксимации:
\[ O(h^2) \]
Метод установления (или метод простых итераций по времени):
Представим Лапласово уравнение как псевдоуравнение теплопроводности:
\[ \frac{\partial u}{\partial t} = \Delta u \]
Запускаем вычисления по «времени» до установления стационарного состояния:
\[ u^{n+1}_{i,j} = u^n_{i,j} + \lambda \left( u^n*{i+1,j} + u^n*{i-1,j} + u^n*{i,j+1} + u^n*{i,j-1} - 4u^n_{i,j} \right) \]
Решение линейной системы, возникающей из разностной схемы:
Метод простых итераций (Якоби)
Быстро реализуется, но медленно сходится.
Метод Гаусса-Зейделя
Быстрее сходится, использует новые значения по ходу итерации.
Метод сопряжённых градиентов (CG)
Применим к симметричным положительно определённым системам.
Метод прогонки (в случае одномерных уравнений)
| Уравнение | Схема | Порядок аппрокс. | Устойчивость |
|---|---|---|---|
| Волновое (1D) | Явная | \(O(\tau^2 + h^2)\) | Условная (\(c\tau/h \le 1\)) |
| Волновое (1D) | Неявная | \(O(\tau^2 + h^2)\) | Абсолютная |
| Теплопроводность (2D) | Явная | \(O(\tau + h^2)\) | \(\lambda \le 1/4\) |
| Теплопроводность (2D) | Неявная | \(O(\tau + h^2)\) | Абсолютная |
| Лаплас (2D) | 5-точечная | \(O(h^2)\) | Метод установления + итерации |