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

6.6. Метод Адамса

При решении задачи Коши методами Рунге-Кутты необходимо вычислять правые части ОДУ в нескольких точках на каждом шаге. Количество точек Зависит от порядка используемого метода. После того как искомая интегральная кривая определена в нескольких точках можно применить алгоритмы интерполяции и сократить количество вычислений правых частей ОДУ для получения решения в очередной точке Подобные методы называют многоточечными, или многошаговыми. Известно несколько типов таких методов [6,58].

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

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

значения которой в рассматриваемых точках обозначим В окрестности узлов функцию приближенно заменим интерполяционным полиномом Ньютона (3.6)

где разделенные разности (3.10) - (3.12).

Представим искомое решение в точке в виде тейлоровского разложения около точки

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

Дифференцируя полином (6.26), получим выражения для производных

Последние соотношения при в случае равноотстоящих узлов после подстановки в них раделенных разностей (3.10)-(3.12) принимают вид

Подставляя производные (6.28) в разложение (6.27), получим экстраполяционную формулу Адамса [58]

имеющую пятый порядок локальной погрешности и четвертый - глобальной. Изменяя количество членов, учитываемых в ряде (6.27), можно получить

схемы Адамса различных порядков. Формула Адамса для переменного шага приведена в [1]. Остаточный член формулы (6.29) равен Значительная величина коэффициента в остаточном члене обусловлена тем, да точка лежит вне интервала расположения узлов по значениям функции которых построен интерполяционный полином. То есть мы дело с экстраполяцией, погрешность которой в соответствии с оценкой (3.15) всегда больше, чем при интерполяции.

С целью уменьшения погрешности способом, аналогичным получению формулы (6.29), по узлам строится интерполяционная формула Адамса

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

Таким образом, вычисления на каждом шаге интегрирования дифференциального уравнения осуществляются по схеме где этапы вычислительного процесса обозначены буквами прогноз; вычисление функции С - коррекция; количество итераций коррекции [19]. приводится эмпирическое правило, согласно которому погрешность решения убывает только до тех пор, пока где порядок используемого неявного метода. Следовательно, для метода четвертого порядка не следует выполнять более четырех итераций коррекции. С другой стороны, в [19] отмечается, что схема является более устойчивой в смысле накопления вычислительной погрешности по сравнению со схемой следовательно, наиболее выгодной будет схема При реализации последней схемы на каждом шаге интегрирования осуществляется только одна коррекция.

Формулы (6.29) и (6.30) без изменений переносятся на системы ОДУ первого порядка, записанные в форме Коши.

В основном блоке программы в строке 10 описаны массивы, используемые в подпрограммах. В диалоговом режиме задаются значения переменных, совпадающих по смыслу и обозначениям с исходными данными программы (строка 20). В строке 30 помещен оператор обращения к подпрограмме метода Адамса (строки 100-290).

Первая часть подпрограммы метода Адамса (строки 100-170) выполняется только один раз и предназначена для получения информации для первого применения экстраполяционной формулы (6.29). Коэффициент входящий в формулы Адамса, вычисляется с помощью арифметического оператора (переменная ). Значения правых частей ОДУ в начальной точке вычисляются непосредственным обращением к подпрограмме для конкретного уравнения и запоминаются в массиве Правые части ОДУ в следующих трех точках вычисляются в цикле по переменной К (строки 120-170). В теле последнего цикла осуществляется последовательное обращение к подпрограммам метода Рунге-Кутты четвертого порядка и вычисления правых частей ОДУ, значения которых в точках и запоминаются в двумерном массиве Правые части ОДУ в точке вычисляются вне цикла и используются в экстраполяционной формуле Адамса непосредственно из массива

Вторая часть подпрограммы метода Адамса (строки 180-290) выполняется для всех точек в интервале Формула прогноза (6.29) реализована в строках 180-200. После вычисления правых частей ОДУ в прогнозируемой точке (обращение к подпрограмме из строки 210) в цикле по переменной I (строки 220-240) наряду с коррекцией решения по формуле (6.30) осуществляется сдвиг узловых значений аппроксимируемой функции для подготовки к выполнению следующего шага. С помощью операторов в строке 250 осуществляется вывод строки таблицы результатов на дисплей и проверка условия окончания процесса интегрирования задачи Коши.

Подпрограмма метода Рунге-Кутты четвертого порядка расположена в строках 300-399. Правые части системы ОДУ, порожденной уравнением Бесселя, вычисляются в подпрограмме в строках 400-490.

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

В программе подпрограмма реализующая метод Адамса, имеет те же формальные параметры по смыслу и обозначениям, что и в программе на Фортране, за исключением параметров - имен подпрограмм. Последние являются глобальными для подпрограммы что снижает ее общность. Аналогичный факт обсуждался в п. 6.1.

В табл. 6.2 приведены данные, полученные разными методами четвертого порядка для системы ОДУ, порожденной уравнением Бесселя. Задача Коши

по каждой из программ решена на интервале [1, 10] с начальными условиями Результаты расчета по одному алгоритму по программам на разных языках могут отличаться в последнем разряде за счет различной реализации компиляторами арифметических операций с плавающей запятой. Данные, полученные по программе 6.5 при Заданной точности не зависят от шага, так как последний в методе Рунге-Кутты-Мерсона выбирается автоматически. Применяя первую формулу Рунге, можно оценить погрешность результатов

Таблица 6.2

(см. скан)

(см. скан)

(см. скан)

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