Алгоритм стрельбы
Для решения краевых задач в Mathcad реализован наиболее популярный алгоритм, называемый методом стрельбы или пристрелки (shooting method). Он, по сути, сводит решение краевой задачи к решению серии задач Коши с различными начальными условиями. Рассмотрим здесь его основной принцип на примере модели (рис. 12.1), а встроенные функции, реализующие этот алгоритм, приведем в следующем разделе.
Суть метода стрельбы заключается в пробном задании недостающих граничных условий на левой границе интервала и решении затем полученной задачи Коши хорошо известными методами (см. гл. 11). В нашем примере не хватает начального условия для Y1(0), поэтому сначала зададим ему произвольное значение, например Y1(0)=10. Конечно, такой выбор не совсем случаен, поскольку из физических соображений ясно, что, во-первых, интенсивность излучения – величина заведомо положительная, и, во-вторых, отраженное излучение должно быть намного меньше падающего. Решение задачи Коши с помощью функции rkfixed приведено в листинге 12.1.
Листинг 12.1. Решение пробной задачи Коши для модели (12.1, 1):
График полученных решений показан на рис. 12.2 (слева). Из него видно, что взятое наугад второе начальное условие не обеспечило выполнение граничного условия при х=1. И понятно, что для лучшего выполнения этого граничного условия следует взять большее значение y1(0). Возьмем, например, у1(0)=15, и вновь решим задачу Коши. Результат показан на том же рис. 12.2 (в центре). Граничное условие выполняется с лучшей точностью, но опять-таки оказалось недостаточным. Для еще одного значения у1(0)=20 получается решение, показанное на рис. 12.2 (справа). Из сравнения двух правых графиков легко заключить, что недостающее начальное условие больше 15, но меньше 20. Продолжая подобным образом "пристрелку" по недостающему начальному условию, возможно отыскать правильное решение краевой задачи.
В этом и состоит принцип алгоритма стрельбы. Выбирая пробные начальные условия (проводя пристрелку) и решая соответствующую серию задач Коши, можно найти то решение системы ОДУ, которое (с заданной точностью) удовлетворит граничному условию (или, в общем случае, условиям) на другой границе расчетного интервала.
Рис. 12.2. Иллюстрация метода стрельбы (листинг 12.1)
Конечно, описанный алгоритм несложно запрограммировать самому, оформив его как решение системы заданных алгоритмически уравнений, выражающих граничные условия на второй границе, относительно неизвестных пристрелочных начальных условий. Но делать этого нет необходимости, поскольку он оформлен в Mathcad в виде встроенных функций.