Линейная краевая задача#
Формулировка#
Пусть имеем следующую ОДУ 1-го порядка:
где \(x \in[0, X], \; \mathbf{y}, \mathbf{f}-n\)-мерные векторы, \(\; \hat{\mathbf{A}}(x) \in \mathbb{R}^{n \times n}\)
Для существования единственного решения необходимо также задать \(n\) граничных условий:
По сути, здесь просто записано \(n\) уравнений на граничные точки в хитром виде. Как правило, условия пишутся гораздо проще.
Пример. Сведём следующее ДУ к виду выше
Для того чтобы свести дифференциальное уравнение к матричному виду, мы можем использовать следующее представление:
Тогда исходное уравнение можно записать в виде
Видим, что у нас есть два краевых условия. Т.е. задача корректно поставлена.
Отметим, что иногда бывает удобно не приводить к виду системы и решать линейное ДУ непосредственно.
Обусловленность краевых условий#
C точки зрения вычислений также важно, чтобы матрица была хорошо обусловленной. Рассмотрим случай, когда матрица \(\hat{\mathbf{A}}(x)\) имеет \(n\) действительных собственных значений, из них:
\(n_1\) очень больших положительных: \(\max \lambda_i \cdot L \gg 1\);
\(n_2\) очень больших отрицательных: \(\min \lambda_i \cdot L \ll -1\);
Все остальные умеренной величины \(\left|\lambda_i\right| \cdot L \simeq 1\).
Это означает, что точное решение представляется в виде \(n_1\) сильно затухающих экспонент и \(n_2\) сильно возрастающих экспонент.
Для корректности разрешения системы уравнений краевых условий необходимо, чтобы не менее \(n_1\) условий были поставлены слева и не менее \(n_2\) условий справа. Это обусловлено тем, что наши методы, как правило, неустойчивы для быстровозрастающих экспонент, но если их начальные условия заданы «справа», то идя влево они как бы убывают.
Для слабо возрастающих или слабо убывающих компонент краевые условия могут быть поставлены на любом из концов отрезка.
Методы решения линейной краевой задачи#
Фундаментальная система решений 🥇#
Т.к. задача линейная
То общее решение является суммой частного неоднородного и общего однородного (ФСР):
Здесь \(\mathbf{y}^k(x)\) есть полная фундаментальная система решений однородной задачи с заданными нами начальными данными, например:
Т.е. для их нахождения нужно решить \(n\) задач Коши, которые мы уже умеем решать. Например, Рунге-Куттой.
Выберем также такое частное решение, что оно удовлетворяет задаче Коши с нулевыми начальными условиями:
Осталось лишь подобрать коэффициенты \(\alpha_k\), чтобы полученное нами общее решение удовлетворяло краевым условиям. Просто подставим наше общее решение в уравнение на краевые условия:
Для однозначной разрешимости этого уравнения при произвольных краевых условиях, достаточно линейной независимости векторов при варьируемых \(\alpha_k\):
Здесь каждый вектор в строке необходимо дополнительно транспонировать, чтобы получилась матрица.
Это условие не обязано всегда выполняться, то есть даже в линейном случае могут встретиться такие постановки задачи, что решение либо не существует, либо не единственное, если матрица СЛАУ для коэффициентов вырожденная.
Более того, если в спектре матрицы \(\hat{\mathbf{A}}(x)\) есть большие положительные собственные числа, мы не сможем решить задачу Коши из-за неустойчивости. Поэтому вполне себе можно находить общие решения однородного решая краевую задачу для них каким-нибудь другим способом (см. ниже).
Таким образом, метод ФСР прост и хорош, но есть нюансы.
Метод дифференциальной прогонки 🥇#
Проиллюстрируем этот метод на конкретном примере. Все выкладки легко перенести на произвольный линейный случай, но почему-то в литературе никто этого не сделал ;\
Имеем уравнение из примера:
Перепишем это уравнение в виде следующей системы (естественно, это можно сделать не единственным способом)
И будем искать решение в виде т.н. прогоночного соотношения:
где \(\alpha(x)\) и \(\beta(x)\) - пока неизвестные функции (прогоночные коэффициенты), для которых необходимо получить дифференциальные уравнения.
Тогда, решение можно найти, решив следующие 3 задачи Коши в соответствующем порядке:
Метод очень хорош для нежестких задач.
Доказательство
Продифференцируем это соотношение
и подставим в него уравнения системы
В результате получим, что \(a v+b=\alpha^{\prime} v+\alpha(c y+g)+\beta^{\prime}\). Подставим в полученное равенство прогоночное соотношение \(y=\alpha v+\beta\).
Тогда
После приведения подобных членов имеем равенство
Приравнивая к нулю коэффициенты при \(v\) и единице, получим два дифференциальных уравнения для прогоночных коэффициентов:
Дополним их начальными условиями.
Условия слева
Левое краевое условие вида \(y(0)=Y_0\) запишем в виде прогоночного соотношения \(y(0)=\alpha(0) v(0)+\beta(0)\), полагая \(\alpha(0)=0, \quad \beta(0)=Y_0\).
Таким образом, получаем начальные данные для двух задач Коши для \(\alpha(x)\) и \(\beta(x)\), которые могут быть решены численно.
Условия справа
Их просто подгоним из равенства граничных условий справа.
Далее воспользуемся уравнением \(v^{\prime}=c y+g\), подставим в него прогоночное соотношение \(y=\alpha v+\beta\), получим дифференциальное уравнение для \(v:\)
Метод линейной интерполяции*#
Рассмотрим смешанную краевую задачу для уравнения
Граничные условия возьмем в смешанном виде
Выберем любые два значения \(\lambda=\lambda_{1}, \;\lambda=\lambda_{2}\) и решим две задачи Коши с начальными условиями:
Полученные решения обозначим как \(y=y_{1}(x)\) и \(y=y_{2}(x)\). Найдем соответствующие значения левых частей в граничном условии.
Теперь значение недостающего начального условия \(y^{\prime}(0)=\lambda\) можно найти с помощью линейной интерполяции:
Полученное значение \(\lambda\) и будет являться недостающим начальным условием. Объясняется это линейностью задачи. Как известно, дифференциальное уравнение имеет общее решение
где \(u_{1}(x)\) и \(u_{2}(x)\) - линейно-независимые решения однородного уравнения (при \(f(x) \equiv 0)\), а \(y_{n}(x)\) - какое-либо решение неоднородного уравнения (частное решение неоднородного уравнения). Удовлетворяя левому граничному условию, в общем решении останется одна неизвестная постоянная, которая входит в выражение для \(y(x)\) линейным образом. Проведя в плоскости \((\lambda, b)\) прямую, проходящую через две точки \(\left(\lambda_{1}, b_{1}\right)\) и \(\left(\lambda_{2}, b_{2}\right)\) при заданном значении \(b\) мы однозначно найдем точное значение \(\lambda\).
Теперь таблицу значений функции \(y(x)\) (и ее производной) можно найти интерполяцией \(y(x)=y_{1}(x)+\left[y_{1}(x)-y_{1}(x)\right] \cdot \frac{\lambda-\lambda_{1}}{\lambda_{2}-\lambda_{1}}\).
Однако на практике, жертвуя машинным временем, обычно проводят третий расчет задачи Коши с условиями
Замечание.
На практике обычно выбирают простейшие значения \(\lambda\), например \(\lambda_{1}=1\) и \(\lambda_{2}=0\). При этом, если само уравнение является однородным, т.е. \(f(x) \equiv 0\), и граничное условие так же однородное, \(y(0)=0\), то решение имеет вид \(y_{2}(x) \equiv 0, b_{2}=0\). Тогда второй расчет (при \(\lambda_{2}=0\) ) нет необходимости производить и формула даст ответ в виде
Поэтому, если предложено решить однородное уравнение, то следует посмотреть, есть ли однородное граничное условие и если оно есть, то начинать расчет следует от этой границы! Эта рекомендация остается в силе и для других методов решения краевых задач.
Жесткость в краевых задачах#
Рассмотрим краевую задачу:
с граничными условиями в следующем виде:
Определение 1. Краевая задача является жесткой, если спектр собственных значений матрицы \(\hat{\mathbf{A}}(x)\) можно разделить на три части:
Левый жесткий спектр, для которого выполняется \(\operatorname{Re} \Lambda_i^1 \leq-\Lambda_0\), \(\left|\operatorname{Im} \Lambda_i^1\right|<\Lambda_0, \Lambda_0(b-a) \gg 1, \Lambda_0 \gg 1, \quad i=1, \ldots, N_1\)
Правый жесткий спектр, для которого \(\operatorname{Re} \Lambda_i^2 \geq \Lambda_0, \quad\left|\operatorname{Im} \Lambda_i^2\right|<\Lambda_0\), \(i=N_1+1, \ldots, N_2\)
Мягкий спектр \(\left|\lambda_i\right| \leq \lambda_0, \quad \lambda_0(b-a) \simeq O(1), i=N_2+1, \ldots, N\).
Отношение \(\Lambda_0 / \lambda_0 \sim 1\) называется параметром, характеризующим жесткость системы.
Общее решение жесткой линейной системы ОДУ с постоянными коэффициентами имеет вид
где \(\boldsymbol{\Omega}_i^1, \boldsymbol{\Omega}_i^2, \boldsymbol{\omega}_i-\) собственные векторы матрицы \(\mathbf{A}\), соответствующие трем частям спектра.
Понятна качественная структура этого решения, содержащего и левый, и правый пограничные слои. Для решений жестких линейных краевых задач должно быть выполнено неравенство \(\|\mathbf{y}\| \leq \mathrm{C}(\|\mathbf{f}\|+\|\mathbf{g}\|)\), \(\|\mathbf{f}\|\) и \(\|\mathbf{g}\|\) - нормы правых частей в системе ОДУ и краевых условиях соответственно.
Правильно работать только в классе вычислительно корректных задач, для которых \(C=O(1)\ll\exp \left(\Lambda_0(b-a)\right)\).
Для вычислительной корректности (почти) достаточно, чтобы число краевых условий на левом конце отрезка интегрирования не было меньше быстро убывающих вправо решений, на правом конце - не меньше числа быстро убывающих решений влево.
В противном случае краевая задача оказывается вычислительно некорректной, так как \(C=O\left(\exp \left(\Lambda_0(b-a)\right)\right)\).