Метод стрельбы для краевой задачи: алгоритм и пример

Метод стрельбы для краевой задачи - это приём, который сводит двухточечную краевую задачу к серии задач Коши. Идея в названии: мы «стреляем» из левого конца отрезка с некоторым углом (недостающим начальным условием), смотрим, куда снаряд прилетел на правом конце, и корректируем прицел, пока траектория не попадёт в заданную мишень. Так задача с условиями на двух концах превращается в задачу с условиями только в одной точке плюс уравнение на пристрелочный параметр. Ниже разберём, как формализовать «прицел», как считать невязку, чем брать корень - секущими или методом Ньютона - и где метод стрельбы начинает буксовать.
Постановка краевой задачи
Рассмотрим обыкновенное дифференциальное уравнение второго порядка на отрезке :
В отличие от задачи Коши, где оба условия ( и ) заданы в одной точке, здесь по одному условию на каждом конце. Прямо интегрировать вперёд нельзя: в точке мы знаем , но не знаем . Именно недостающий наклон и становится тем параметром, которым мы «целимся». Двухточечные условия типичны для физических задач равновесия: прогиб балки, закреплённой на двух опорах, стационарное распределение температуры в стержне с заданными температурами на концах, форма провисающей нити.
Сведение к задаче Коши
Введём пристрелочный параметр - гипотетическое значение производной в левом конце: . Теперь у нас полный набор начальных данных в одной точке:
Это уже задача Коши, и её можно проинтегрировать любым одношаговым методом - Эйлера, Рунге-Кутты 4 порядка - от до . Уравнение второго порядка предварительно сводят к системе двух уравнений первого порядка заменой : получаем , . Результат интегрирования зависит от выбранного , поэтому значение на правом конце естественно записать как функцию параметра: . Цель метода стрельбы - подобрать такой , чтобы выполнилось второе краевое условие .
Tool: подбор пристрелочного параметра
Подбирать наклон вручную - это интегрировать задачу Коши заново при каждой пробной «стрельбе» и следить за невязкой: занятие точное, но утомительное. Опишите ниже своё уравнение и краевые условия, выберите метод подбора корня - и получите разбор: как свести к задаче Коши, как устроена функция невязки и как итерации сходятся к нужному .
Функция невязки и уравнение на параметр
Определим функцию невязки (residual) как отклонение полученного правого значения от целевого:
Краевая задача решена тогда и только тогда, когда . Тем самым метод стрельбы свёл двухточечную задачу к скалярному нелинейному уравнению на один параметр. Каждое вычисление - это один полный «выстрел»: одно численное интегрирование задачи Коши от до . Дальше задача чисто алгебраическая: найти корень . Чем меньше «выстрелов» потребует решатель корня, тем дешевле метод, ведь каждый вызов недёшев.
Думайте про $F(s)$ как про чёрный ящик «наклон на входе - промах на выходе». Внутренности (метод интегрирования, шаг $h$) на логику подбора корня не влияют - меняется только точность вычисления $F$.
Линейная задача: точное попадание за два выстрела
Если уравнение линейно, , то - линейная функция параметра , а значит и линейна. Через две точки прямая определяется однозначно, поэтому достаточно ровно двух пробных выстрелов и - а нужный корень получается линейной интерполяцией:
Третий выстрел с параметром попадёт в мишень с точностью самого метода интегрирования - никаких дальнейших итераций не нужно. Это резко отличает линейный случай от нелинейного: для линейной краевой задачи метод стрельбы конечен. Альтернатива для линейных задач - сразу строить разностную систему, не интегрируя; об этом подробно в статье про метод конечных разностей для уравнений.
Нелинейный случай: секущие и метод Ньютона
Если правая часть нелинейна по или , функция тоже нелинейна, и одной интерполяции мало - нужен итерационный поиск корня. Два рабочих варианта:
Метод секущих. Берём два стартовых наклона и обновляем параметр по формуле секущей, не вычисляя производную:
Каждая итерация стоит один выстрел (значение с прошлого шага переиспользуется). Сходимость сверхлинейная (порядок ) - обычно достаточно 4–6 итераций.
Метод Ньютона. Если уметь считать производную , шаг записывается как . Производную получают, интегрируя рядом с основной так называемую вариационную задачу - систему на чувствительность решения к . Это удваивает стоимость выстрела, зато даёт квадратичную сходимость. На практике метод секущих чаще выигрывает: вариационную систему выписывать не нужно, а лишняя итерация дешевле лишнего интегрирования.
Многократная стрельба для устойчивости
У простого (одиночного) метода стрельбы есть ахиллесова пята: если решение задачи Коši растёт экспоненциально (а у краевых задач с большими коэффициентами это норма), то малая ошибка в раздувается к правому концу. Невязка становится гигантской и численно неустойчивой - «снаряд» улетает в бесконечность задолго до мишени. Лекарство - многократная стрельба (multiple shooting): отрезок делят на подотрезки, на каждом стреляют независимо со своими параметрами, а на стыках добавляют условия непрерывности решения. Получается система уравнений на все пристрелочные параметры сразу, которую решают методом Ньютона. Экспоненциальный рост ограничен длиной короткого подотрезка, и устойчивость восстанавливается ценой большей системы.
Выбор стартовых параметров и шага
Качество стартовых определяет, сойдётся ли итерация и куда. Полезные ориентиры:
- Если ожидаемое решение примерно линейно, оцените наклон секущей между концами: .
- Возьмите заметно отличным от , чтобы знаки и по возможности различались - тогда корень заведомо между ними.
- Шаг интегрирования задавайте достаточно мелким: ошибка в не должна превышать требуемую точность по , иначе итерации «застрянут» на численном шуме.
Частые ошибки
- Путают пристрелочный параметр с самим решением. - это лишь , недостающее начальное условие, а не ответ. Ответ - вся траектория при найденном .
- Используют метод Ньютона/секущих для линейной задачи. Если уравнение линейно, корень находится точной интерполяцией за два выстрела; итерации тут - лишняя работа.
- Игнорируют экспоненциальную неустойчивость. На длинном отрезке с растущими решениями одиночная стрельба расходится. Признак - скачет на много порядков при малом изменении ; нужна многократная стрельба.
- Берут слишком грубый шаг интегрирования. Шум в из-за большого маскирует настоящий корень: итерации перестают сходиться к нужной точности.
- Стартуют с совпадающих в методе секущих. Знаменатель обнуляется - деление на ноль; стартовые наклоны обязаны различаться.
FAQ
Чем метод стрельбы отличается от метода конечных разностей? Стрельба сводит краевую задачу к задаче Коши и подбирает начальный наклон, интегрируя уравнение вперёд. Конечные разности сразу заменяют производные разностями на всей сетке и решают одну алгебраическую систему, не интегрируя. Стрельба проще в реализации, но менее устойчива на длинных отрезках.
Сколько выстрелов нужно? Для линейной задачи - ровно два пробных плюс один финальный: корень находится точной интерполяцией. Для нелинейной - обычно 4–6 итераций метода секущих до нужной точности.
Что делать, если метод стрельбы расходится? Чаще всего причина - экспоненциальный рост решения задачи Коши. Помогает многократная стрельба: разбить отрезок на части, стрелять на каждой и сшить решения условиями непрерывности, решая общую систему методом Ньютона.
Коротко
Метод стрельбы для краевой задачи превращает двухточечную задачу , , в задачу Коши с недостающим начальным наклоном . Невязка обращается в ноль при правильном прицеле; для линейной задачи корень находится точной интерполяцией за два выстрела, для нелинейной - методом секущих или Ньютона. На длинных отрезках с экспоненциально растущими решениями одиночная стрельба неустойчива, и её заменяет многократная стрельба со сшивкой решений на подотрезках. Это делает метод стрельбы наглядным и часто самым быстрым способом решить краевую задачу, если она не слишком жёсткая.
Читайте также

Вариационный метод Ритца: приближённое решение краевых задач
Вариационный метод Ритца: как свести краевую задачу к минимуму функционала, выбрать базисные функции, собрать систему Ритца и оценить погрешность приближённого решения.

Метод касательных Ньютона для корня уравнения
Метод касательных Ньютона для корня уравнения : вывод итерационной формулы, геометрический смысл касательной, условие и квадратичная скорость сходимости, выбор начального приближения и типичные ошибки.

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