Метод стрельбы мы рассмотрим на примере граничной задачи для системы обыкновенных дифференциальных уравнений второго порядка
.
Необходимо найти решение этой системы уравнений на интервале [t0, tn], удовлетворяющее граничным условиям
j(t0, f1(t0), f2(t0))=0,
y(tn, f1(tn), f2(tn))=0.
Сущность метода стрельбы заключается в сведении решения граничной задачи к многократному решению задачи Коши для заданной системы дифференциальных уравнений.
Предположим, что
f1(t0)=V,
где V – произвольное число, которое можно задать, используя априорную информацию о характере решения f1(t). Подставим предполагаемое значение V в первое граничное условие
j(t0, V, f2(t0))=0.
Теперь последнее соотношение является уравнением относительно одного неизвестного f2(t). Для простых функций j удается записать аналитическое решение указанного уравнения. В общем случае решение этого уравнения находится одним из численных методов. В результате аналитического или численного решения получим
f2(t0, V)=b.
Таким образом, сформулирована задача Коши для исходной системы дифференциальных уравнений с начальными условиями f1(t0)=V и f2(t0, V)=b в точке t0. Решение задачи Коши можно провести одним из известных методов решения для подобных задач и получить с необходимой точностью значения функций f1(t) и f2(t) в точке t=tn: f1(tn, V) и f2(tn, V). Последние результаты поставим во второе граничное условие
y(tn, f1(tn, V), f2(tn, V))=0,
которое не будет выполняться, так как число V выбрано нами произвольным.
Последнее соотношение можно рассматривать как уравнение y(V)=0 относительно переменной V. Значение V=V*, являющееся корнем этого уравнения, удовлетворяет каждому граничному условию. Следовательно, решениями поставленной граничной задачи будут функции f1(t, V*) и f2(t, V*), определенные на интервале [t0, tn] для задачи Коши.
Решение уравнения y(V)=0 требует большого объема вычислений, так на каждой итерации необходимо осуществлять интегрирование задачи Коши для исходной системы уравнений. Каждая итерация порождает для функций f1(t, V) и f2(t, V) траектории, которые в зависимости от параметра V либо приводят, либо не приводят к цели – обращению левой части уравнения y=0 в нуль. Отсюда и происходит название метода стрельбы. Самым экономичным методом решения таких уравнений является метод Ньютона, но он требует на каждой итерации вычисления не только левой части y(V), но и ее производной по параметру V, что вызывает необходимость интегрирования лишней пары дифференциальных уравнений. Поэтому для решения уравнения y(tn, f1(tn, V), f2(tn, V))=0 чаще используют метод секущих, алгоритм которого в конкретном случае выглядит так:
Vi+1=Vi– y(Vi), где i – номер итерации.
Погрешность решения зависит от выбранного шага и метода интегрирования задачи Коши, а также от погрешности вычисления V* методом секущих. Первая из этих погрешностей определит и полосу шума для функции y(V), при попадании в которую вычисляемых значений y(Vi) итерационный процесс уточнения V приходится прекращать. Такую взаимосвязь погрешностей приходится учитывать, чтобы избежать лишних итераций метода секущих. Чтобы избежать рекурсивного обращения к подпрограмме метода секущих при решении уравнений j(f2(t))=0 и y(V)=0, соответствующий блок рекомендуется переписать дважды.
Алгоритм метода стрельбы существенно упрощается для линейных граничных задач, когда правые части системы ОДУ и граничные условия представляют собой линейную комбинацию функций f1(t) и f2(t):
=f2(t),
=r(t)–p(t)f2(t)–q(t)f1(t),
g1f1(t0)+g2f2(t0)=g3,
g4f1(tn)+g5f2(tn)=g6.
Начальные условия соответствующей задачи Коши принимают вид:
f1(t0)=V, f2(t0)=(g3–g1V)/g2.
Решения задачи Коши будут иметь линейную зависимость от V, поэтому и левая часть уравнения y(V)=0 будет линейной функцией аргумента V. Следовательно, значение V2, найденное по формуле секущих, при i=1 будет точным корнем уравнения. Таким образом, для линейной граничной задачи достаточно трижды решить задачу Коши.