Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

7.2. Метод стрельбы для граничных задач

Метод стрельбы рассмотрим на примере граничной задачи для системы обыкновенных дифференциальных уравнений второго порядка

Необходимо найти решение системы уравнений (7.14) на интервале удовлетворяющие граничным условиям

Сущность метода стрельбы заключается в сведении решения граничной задачи к многократному решению задачи Коши для заданной системы дифференциальных уравнений.

Предположим, что

где X - произвольное число, которое можно задать, используя априорную информацию о характере решения Подставим предполагаемое значение X в первое граничное условие (7.15)

Теперь последнее соотношение является уравнением относительно одного неизвестного Для простых функций удается записать аналитическое решение указанного уравнения. В общем случае решение уравнения (7.17) находится одним из численных методов, используя алгоритм и программы гл. 1. В результате аналитического или численного решения уравнения (7.17) получим

Таким образом, сформулирована задача Коши для системы дифференциальных уравнений (7.14) с начальными условиями (7.16) и (7.18) в точке Решение задачи Коши можно провести одним из методов, изложенных в предыдущей главе, и получить с необходимой точностью значения функций в точке Последние результаты подставим во второе граничное условие (7.15)

которое не будет выполняться, так как число X выбрано нами произвольным.

Соотношение (7.19) можно рассматривать как уравнение относительно переменной X. Значение являющееся корнем этого уравнения, удовлетворяет каждому граничному условию (7.15). Следовательно, решениями поставленной граничной задачи будут функции определенные на интервале для задачи Коши.

Решение уравнения (7.19) требует большого объема вычислений, так на каждой итерации необходимо осуществлять интегрирование задачи Коши

для системы уравнений (7.14). Каждая итерация порождает для функций и траектории, которые в зависимости от параметра либо приводят либо не приводят к цели - обращению левой части уравнения (7.19) в нуль. Отсюда и происходит название метода стрельбы. Самым экономичным методом решения уравнений вида (7.19) является метод Ньютона Однако этот метод требует на каждой итерации вычисления не только левой части уравнения но и ее производной по параметру , что вызывает необходимость интегрирования лишней пары дифференциальных уравнений [1]. По этой причине для решения уравнения (7.19) наиболее часто используется метод секущих алгоритм которого в конкретном случае запишется в виде

где номер итерации.

Рис. 7.2. Блок-схема программы решения нелинейной граничной задачи методом стрельбы

Рис. 7.3. Детализация блока 2 блок-схемы рис. 7.2

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

Чтобы избежать рекурсивного обращения к подпрограмме метода секущих при решении уравнений (7.17) и (7.19), соответствующий блок рекомендуется переписать дважды (рис. 7.2, 7.3).

Алгоритм метода стрельбы существенно упрощается в случае линейных граничных задач, для которых правые части системы ОДУ и граничные условия представляют собой линейную комбинацию функций

Начальные условия соответствующей задачи Коши принимают вид

Решения задачи Коши (7.21), (7.23) будут иметь линейную зависимость от параметра X, поэтому и левая часть уравнения будет линейной функцией аргумента X. Следовательно, значение найденное по формуле секущих (7.20) при будет точным корнем уравнения (7.19). Таким образом, для решения линейной граничной задачи достаточно трижды решить задачу Коши [1].

В программах 7.2 метод стрельбы реализован для линейной граничной задачи (7.21), (7.22). В основном блоке программы по сравнению с соответствующим блоком программы в диалоговом режиме дополнительно задаются переменные и являющиеся начальными приближениями к параметру X. Кроме того, чтобы избежать перекрытия в обозначениях переменных, количество шагов на интервале обозначено индентификатором а порядок системы - N.

В подпрограмме метода стрельбы (строки 100-190) введена переменная которая принимается равной нулю, когда задача Коши решается с

пробными значениями параметра когда значения параметра удовлетворяют граничным условиям. Формула (7.20) реализована с помощью арифметического оператора в строке где переменные для функции

В подпрограмме вычисления функции устанавливаются начальные условия задачи Коши по формулам (7.23) (строка 200). В теле цикла по переменнной (строки 210-240) выводится на дисплей строка таблицы результатов при осуществляется обращение к подпрограмме одношагового интегратора типа Рунге-Кутты. Вне цикла при в соответствии со вторым граничным условием (7.22) вычисляется функция (переменная в строке 250).

В качестве одношагового интегратора использован метод Рунге-Кутты второго порядка из программы записанный здесь в строках 300-390.

Правые части системы ОДУ (7.21), соответствующей уравнению (7.2), вычисляются в подпрограмме, размещенной в строках 400-490. В качестве конкретного уравнения вновь взято уравнение Бесселя (6.12), коэффициенты которого вычисляются в отдельной подпрограмме (строки 500-590).

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

Вычисление правых частей системы ОДУ осуществляется с помощью подпрограмм и

Имена процедур и функций, формальные параметры и их семантика в программе совпадают с соответствующими объектами программы

Тестирование программ 7.2 можно провести, используя пример п. 7.1.

(см. скан)

(см. скан)

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление