Краевые задачи: условия на обоих концах
До сих пор все наши задачи начинались в одной точке: дано состояние в момент t=a, и мы шагали вперёд. Но огромный класс физических задач устроен иначе — условия заданы на двух концах отрезка сразу. И это меняет всё.
Краевая задача (boundary value problem, BVP) — дифференциальное уравнение, для которого дополнительные условия заданы не в одной точке, а на обоих концах отрезка интегрирования: например y(a)=A и y(b)=B.
От задачи Коши — к задаче с двумя концами
Вспомним задачу Коши (начальную задачу). Для уравнения второго порядка y''=f(t,y,y') нам давали два условия в одной точке: значение функции y(a)=A и её производную y'(a)=A'. Этого ровно достаточно, чтобы запустить любой шаговый метод — Эйлера, Рунге—Кутты, — и аккуратно проинтегрировать вперёд до конца отрезка. Мы знали полное состояние системы в старте, и оставалось только катиться по времени.
Краевая задача формулируется хитрее. Возьмём то же уравнение второго порядка, но условия зададим по-другому:
y'' = f(t, y, y'), t из [a, b] y(a) = A (значение на левом конце) y(b) = B (значение на правом конце)
Заметьте: про производную y'(a) не сказано ни слова. Зато сказано про значение функции на другом конце отрезка. Условий по-прежнему два (для уравнения второго порядка их и должно быть два), но они «растащены» по разным точкам. И вот тут возникает фундаментальная проблема.
Почему нельзя просто шагать вперёд
Чтобы запустить шаговый метод от точки a, нам нужно полное состояние: и y(a), и y'(a). Значение y(a)=A у нас есть. А вот стартовый наклон y'(a) — неизвестен. Краевое условие y(b)=B относится к концу b, до которого мы ещё не дошли; использовать его в старте мы физически не можем.
Суть трудности. В задаче Коши мы знаем всё в старте и катимся вперёд. В краевой задаче часть информации спрятана на дальнем конце — и пока мы туда не доберёмся, мы не можем её учесть. Простой марш вперёд не работает: не из чего стартовать.
Это не техническая мелочь, а смена самой природы задачи. Решение краевой задачи — это уже не «прокрутить ленту времени», а «найти такую кривую, которая одновременно проходит через две закреплённые точки и подчиняется уравнению на всём промежутке между ними». Геометрически мы ищем не траекторию, выпущенную из старта, а «провисшую» кривую, прибитую гвоздями с двух краёв.
Откуда берутся краевые задачи: физика
Краевые задачи — это язык, на котором природа описывает равновесие и стационарные состояния. Несколько классических примеров.
Прогиб балки
Возьмём горизонтальную балку, лежащую на двух опорах, и нагрузим её. Балка прогнётся. Форму прогиба y(t) описывает дифференциальное уравнение, а условия закрепления естественным образом задаются на концах: на левой опоре прогиб равен нулю (y(0)=0), на правой опоре — тоже (y(L)=0). Балка не «летит из левого конца с каким-то наклоном» — она просто закреплена с двух сторон и провисает посередине. Это классическая краевая задача.
нагрузка нагрузка нагрузка
| | |
v v v
___________________________
\ / <- балка прогибается
\______ _________/
\_____/
^ ^
y(0)=0 y(L)=0
опора опораСтационарное распределение температуры
Возьмём металлический стержень. Левый конец держим в кипятке (100 градусов), правый — во льду (0 градусов). Через какое-то время температура вдоль стержня перестанет меняться и установится стационарный профиль T(x). Этот профиль описывается дифференциальным уравнением, а условия — снова на концах: T(0)=100, T(L)=0. Нам неизвестно, с каким «наклоном» температура падает у левого края; известны лишь значения на двух торцах. Опять краевая задача.
Два подхода: стрельба и конечные разности
Раз простой марш вперёд не работает, нужны специальные методы. Исторически и практически их два — и им посвящены следующие уроки.
Метод стрельбы (shooting method)
Идея почти наглая в своей простоте: раз нам не хватает стартового наклона y'(a) — давайте его угадаем. Возьмём пробное значение наклона s, превратим краевую задачу в задачу Коши (теперь у нас есть и y(a)=A, и y'(a)=s) и прострелим вперёд до конца b любым проверенным методом, например RK4. Посмотрим, куда попали: получили какое-то y(b). Если оно совпало с требуемым B — угадали. Если промахнулись — подкрутим наклон s и стрельнём заново. Это в точности как наводить пушку: меняем угол ствола, пока снаряд не ляжет в цель.
Конечно-разностный метод (finite differences)
Подход совершенно другой по духу. Вместо того чтобы решать уравнение «во времени», мы покрываем отрезок [a,b] сеткой узлов и в каждом узле заменяем производные на конечные разности — приближённые формулы через соседние узлы. В результате дифференциальное уравнение превращается в систему алгебраических уравнений относительно значений функции в узлах. Для линейных задач это система линейных уравнений (СЛАУ) с особой трёхдиагональной матрицей, которую очень быстро решает метод прогонки. Мы находим все узлы разом, а не «прокатываемся» через них.
Как работает под капотом
Глубинная причина всех сложностей — в том, что краевая задача глобальна. В задаче Коши решение в точке t зависит только от того, что было левее (от прошлого). В краевой задаче значение в любой внутренней точке зависит от условий на обоих концах одновременно: подвинули правую опору балки — изменился прогиб по всей длине, включая участки у левой опоры. Информация распространяется в обе стороны.
Отсюда и два философски разных метода. Стрельба пытается «обмануть» глобальность: сводит краевую задачу к серии локальных задач Коши и крутит недостающий параметр снаружи, в цикле. Конечные разности честно признают глобальность: связывают все узлы в одну систему уравнений и решают её целиком. Стрельба проще программируется и хороша, когда задача Коши устойчива; конечные разности надёжнее на «жёстких» и плохо обусловленных задачах, где стрельба расходится (малое изменение наклона на старте даёт огромный разброс на дальнем конце).
Частые ошибки
- Путать с задачей Коши. Увидев два условия, легко решить, что можно сразу шагать вперёд. Проверяйте, где заданы условия: если в одной точке — это Коши, если на разных концах — краевая, и наивный марш не сработает.
- Думать, что решение всегда единственно. У краевых задач (в отличие от линейной задачи Коши) решение может быть единственным, может не существовать, а может быть бесконечно много. Классический пример — y''=-y на [0, pi] с нулями на концах: решений бесконечно много.
- Считать число условий «на глаз». Для уравнения порядка n нужно ровно n краевых условий, иначе задача поставлена некорректно. Лишнее условие — переопределённость, недостающее — недоопределённость.
- Забывать о физическом смысле условий. Условие может задавать не значение y, а значение производной (например, теплоизолированный конец: y'(b)=0). Это меняет дискретизацию и формулы у границы.
Итоги
- Краевая задача задаёт условия на обоих концах отрезка, а не в одной точке, как задача Коши.
- Простой марш вперёд невозможен: стартовый наклон неизвестен, а условие на дальнем конце нельзя использовать в начале.
- Краевые задачи описывают равновесие и стационар: прогиб балки, распределение температуры в стержне.
- Решение глобально — зависит сразу от обоих концов; решений может быть одно, ни одного или бесконечно много.
- Два главных метода: стрельба (угадываем наклон и пристреливаемся задачей Коши) и конечные разности (сводим к СЛАУ и решаем целиком).