Текст
                    О.Б.Арушанян, С.Ф. Залёткин
ЧИСЛЕННОЕ
РЕШЕНИЕ
ОБЫКНОВЕННЫХ
ДИФФЕРЕНЦИАЛЬНЫХ
УРАВНЕНИЙ
НА ФОРТРАНЕ

Издательство
Московского университета
1990


У Д К 681.3.06 + 519.622 Арушанян О. Б., Залеткнн С. Ф. Численное решение обыкновенных диффе­ на Фортране. М.: Изд-по МГУ, 1990—336 с . — ISBN ренциальных уравнений 5— 211 00957-6. А^оиографня посвящена процессам организации вычисления на Э В М реше­ ний обыкновенных дифференциальных уравнении. Рассматриваются способы ре­ шения задачи Коши для уравнений первого и второго порядг.оз конечно раз­ ностными методами, позволяющие оценивать погрешность вычислений и произ­ вольно изменять шаг интегрирования, эффективные матричные методы решения линейных систем с постоянными коэффициентами, методы решении жестких за­ дач. Приводятся тексты программ на языке Фортран, реализующих различные численные алгоритмы и составляющих функциональное наполнение пакета про­ грамм для решения обыкновенных дифференциальных уравнений, разработанно­ го в Н И В Ц М Г У . Д ля инженеров н научных работников, чья работа связана с решением диф­ ференциальных уравнений. Библногр.: 45 назв. Рецензенты: член-корреспондент А Н С С С Р И. С. Бахвалов, профессор В. А. Морозов Печатается по постановлению Редакционно-издательского совета Московского университета Научное издание Арушанян Олег Богратович Залеткин Сергей Федорович ЧИ СЛЕН Н ОЕ РЕШ ЕНИЕ ОБЫКНОВЕННЫ Х ДИФФЕРЕНЦИАЛЬНЫ Х УРАВН ЕН ИИ НА ФОРТРАНЕ Зав. редакцией Н. М Тлазкова. Редактор £. Д Егорушкина. Художественный редактор Ю М. Добрянская. Технические редакторы В. В. Макарова, Г. Д. Колоскова. Коррек­ торы М. И. Эльмус, Н. В. Иванова. И Б № 3669 Сдано в набор 13.12.89. Подписано и печать 21.05.90. Л - 10989 Формат 60X90/1G Бумага офс. Аз I Гарнитура литературная. Высокая печать. Уел. печ. л. 21.0 Уч.-изд. л. 20,89 Тираж 9225 экз. Заказ 217. Изд. Л« 809 Цена 2 руб. Ордена «Знак Почета» издательство Московского университета. 103009, Москва, ул. Герцена, 5/7. Типография ордена «Знак Почета* изд ва М Г У . 119899, Москва, Ленинские горы А 1G02120000— 071 07 7(02)— 90 72— 90 ISBN 5— 211— 00957— 6 © Арушанян О. Б., Залеткин С. Ф., 1990 г.
ОГЛАВЛЕНИЕ llfu- У с л о в и е ............................................................................................................. б I nilIII 1 М АШ ИННАЯ АРИ Ф М Е ТИ К А И П РО СТЕЙ Ш И Е ВЫ ЧИ СЛЕН И Я . . 6 1 Машинные системы с ч и с л е н и й ..................................................................... 9 Параметры машинной а р и ф м е т и к и ...................................................................... 10 л Ошибки о к р у г л е н и я ................................................................................................. 12 -1 Представление чисел на Э В М ..............................................................................16 ) 1. Представление вещественных и целых чисел на Э В М БЭСМ -6 . 16 12. Представление вещественных и целых чисел на ЕС Э В М . . 20 1.3. Представление вещественных и целых чисел на СМ-4 . . . 21 1.1. Представление вещественных и целых чисел на М В К Э Л Ь Б Р У С 22 !> Выполнение арифметических операций и округление, результатов на : - > В М ............................................................................................................................. 23 <> Вычисление параметров машинной а р и ф м е т и к и ............................................26 (».!. Вычисление основания системы счисления машины . . . . 27 (>.2. Вычисление количества разрядов t м а н т и с с ы .......................................... 31 (>.3. Вычисление значения машинного э п с и л о н ................................................. 32 0.1. Вычисление некоторых других параметров машинной арифметики 32 /. Контроль ошибок о к р у г л е н и я ..............................................................................34 7.1. Аппаратные с р е д с т в а ...................................................................................... 34 7.2. Программные с р е д с т в а ....................................................................................35 7.3. «Грам отное> п р о г р а м м и р о в а н и е .................................................................. 35 к Практический критерий контроля точности вычислений . . . . 37 ч Программная реализация простейших в ы ч и с л е н и й .......................................... 39 9.1. Решение квадратных у р а в н е н и й ................................................................. 39 9.2. Вычисление экспоненциальной ф у н к ц и и ................................................... 40 9.3. Вычисление корней п о л и н о м о в ......................................................................42 9.4. Решение систем линейных алгебраических уравнений . . . . 44 9 5. Решение разностных у р а в н е н и й ................................................................ 44 10 Другие примеры, иллюстрирующие влияние ошибок округлений . . 46 Ю.!. Пример неустойчивого а л г о р и т м а .............................................................. 46 10.2. Всегда ли 10x0.1 = 1 ? ................................................................................... 47 10.3. Распространение ошибок в начальных данных при решении обык­ новенных дифференциальных у р а в н е н и й ..................................................48 10.4. Ж есткие обыкновенные дифференциальные уравнения . . . 50 10.5. Как лучш е складывать ч и с л а ? ................................................................. 51 Г иша 2 <>Д1 Ю Ш А Г О В Ы Е М Е Т О Д Ы Р Е Ш Е Н И Я О Б Ы К Н О В Е Н Н Ы Х Д И Ф Ф Е JЧ Т 1Ц И А Л Ь Н Ы Х У Р А В Н Е Н И Й ............................................................................... 55 I. Общее представление одношаговых м е т о д о в .................................................. 55 2 М етод рядов Т е й л о р а ............................................................................................ 56 3
3. Явные методы типа Рун ге— К у т т а ..............................................................56 3.1. Одночленная ф о р м у л а ...........................................................................57 3.2. Двухчленные ф о р м у л ы ..........................................................................58 3.3. Трехчленные ф о р м у л ы .......................................................................... 61 3.4. Четырехчленные ф о р м у л ы ....................................................................62 3.5. Формулы порядка выше ч е т в е р т о г о ............................................... 63 4. Сходимость явных одношаговых м е т о д о в ........................................................ 64 4.1. Классификация п о г р е ш н о с т е й .............................................................64 4.2. Мажорантная оценка полной п о г р е ш н о с т и .................................. 67 4.3. Асимптотическая оценка погрешности м е т о д а ................................ 69 4.4. Реальная область а с и м п т о т и к и ...........................................................70 5. Практические способы оценки погрешности приближенного решения 71 5.1. Апостериорная оценка глобальной погрешности метода . . . 71 5.2. Апостериорные оценки локальной погрешности метода . . . 73 5.2.1. Оценка погрешности по правилу Р у н г е ............................... 73 5.2.2. Оценка погрешности на основе комбинации ф ормул разных порядков т о ч н о с т и .................................................................... 76 5.2.2.1. Комбинация независимых ф о р м у л ..........................76 5.2.2.2. Комбинация специально подобранных формул . . 77 5.2.2.3. Контрольные члены для методов Рун ге— Кутта. Оценка погрешности в методах Мерсона, Ингленда, Ф е л ь б е р г а ....................................................................... 78 5.2.3. Оценка погрешности с помощью нелинейного контрольного ч л е н а ..............................................................................................81 6. Интегрирование с переменным шагом. Автоматический выбор шага и н т е г р и р о в а н и я ......................................................................................................... 82 6.1. Алгоритм выбора с помощью удвоения и деления шага пополам 82 6.2. Выбор максимальной для заданной точности длины шага . . 85 6.3. Использование различных характеристик точности . . . . 86 7. Чего не могут явные методы Рун ге К у т т а .......................................... 90 Глава 3 М Н О ГО Ш АГО В Ы Е М ЕТО ДЫ РЕШ ЕН И Я О БЫ КН О ВЕН Н Ы Х Д И Ф Ф Е ­ Р Е Н Ц И А Л Ь Н Ы Х У Р А В Н Е Н И Й .............................................................................. 94 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И. 12. 13. 4 Общ ее представление многошаговых м е т о д о в ................................................. 94 Построение разностных схем методом неопределенных коэффициентов 95 Устойчивость многошаговых м е т о д о в ................................................................99 Некоторые явные конечно-разностные ф о р м у л ы ..........................................102 4 1. Экстраполяционная формула А д а м с а ....................................................... ЮЗ 4.2. Экстраполяционная формула Н и с т р ё м а ................................................. 108 4.3. Ф орм улы М и л н а .................................................................................... 109 4.4. Схема « 1 / 2 * ...........................................................................................109 Часто используемые неявные разностные ф о р м у л ы .................................ПО 5.1. Интерполяционная формула А д а м с а ..............................................ПО 5.2. Неявные формулы М и л н а ..................................................................П 2 Особенности поведения многошаговых методов на больш их интервалах и н т е г р и р о в а н и я ........................................................................................................ П 2 Реализация неявных разностных с х е м ............................................................. П 7 Построение начальных з н а ч е н и й ...................................................................... 121 Сходимость многошаговых м е т о д о в ................................................................... 124 9.1. Классификация п о г р е ш н о с т е й ..................................................................... 124 9.2. Мажорантная оценка полной п о г р е ш н о с т и ...............................................125 Вычисление решения меж ду узлами с е т к и ......................................................126 Практические способы оценки погрешности приближенного решения 128 Автоматический выбор шага и н т е г р и р о в а н и я ................................................ 130 12.1. Удвоение и деление шага п о п о л а м ........................................................ 130 12.2. Переход к произвольному ш а г у .............................................................. 132 Конечно-разностные методы решения дифференциальных уравнений второго п о р я д к а ......................................................................................................136 13.1. Экстраполяционные ф о р м у л ы ....................................................................137
13.2. 13.3. 13.4. 13.5. 13.5. 13.7. 13.8. 141 144 146 149 154 155 157 Интерполяционные ф о р м у л ы .................................... Видоизменение формы записи разностных уравнений Реализация неявных разностных ф ормул Построение начальных з н а ч е н и й ............................. Вычисление решения меж ду узлам и сетки Практические способы оценки погрешности Изменение шага и н т е г р и р о в а н и я ............................. / иша 4 ЧИ СЛЕН Н Ы Е М ЕТО Д Ы РЕШ ЕН И Я Ж ЕСТКИ Х СИСТЕМ . 159 I Жесткие системы. Простейшие неявные м е т о д ы .................................... V Методы дифференцирования н а з а д .............................................................. Л Реализация неявных методов ........................................................................ 1. Метод Т и р а ......................................................................................................... 1.1. Вывод ф ормул численного и н т е г р и р о в а н и я ..................................... ■1.2. Оценка погрешности. Автоматический выбор шага и порядка Экспоненциальный м е т о д ............................................................................... 5.1. Интегрирование линейных однородных систем с постоянными ко­ эффициентами ............................................................................................ 5.2. Интегрирование линейных однородны х систем с переменными к о­ эффициентами .............................................................................. ...... 5.3. Интегрирование линейных неоднородных систем со специальной правой ч а с т ь ю ........................................................................................... С Неявные методы Рун ге— К у т т а ..................................................................... 159 164 168 172 172 181 186 . . . 187 190 192 196 / иша 5 1>1»1ЦЕЕ О П И С А Н И Е П О Д П Р О Г Р А М М Р Е Ш Е Н И Я О Б Ы К Н О В Е Н Н Ы Х Д И Ф Ф Е РЕ Н Ц И АЛЬН Ы Х УРАВ Н ЕН И И БИ БЛИ О ТЕКИ ЧИ С ЛЕН Н О ГО А Н А Л И З А Н И В Ц М Г У ......................................................................................... 206 I V Л •1 Г». (>, / 8 Предметная к л а с с и ф и к а ц и я .................................................................................. 206 Состав р а з д е л а ........................................................................................................206 Общие характеристики подпрограмм решения задачи Коши . . . 208 Решение нежесткой задачи Коши д ля уравнений и систем уравнений первого п о р я д к а ....................................................................................................... 210 Решение задачи Коши д ля уравнений и систем уравнений второго по­ рядка ............................................................................................................................211 Решение жесткой задачи Коши д ля уравнений и систем уравнений первого п о р я д к а ....................................................................................................... 213 Автоматизация доступа к подпрограммам Библиотеки . . . . 215 Описание параметров обращений к п о д п р о г р а м м а м .................................. 215 8.1. Описание параметров д ля подпрограмм решения задачи Коши без контроля точности .................................................................................... 217 8.2. Описание параметров для подпрограмм решения задачи Коши с контролем точности ................................................................................ 219 8.3. Описание параметров д ля подпрограмм решения задачи Коши для систем уравнений второго порядка ................................................. 227 8.4. Описание параметров д ля подпрограмм решения задачи Коши для жесткой системы у р а в н е н и й .......................................................................231 8.5. Сводная информация об обращ ениях к подпрограммам решения задачи К о ш и .....................................................................................................234 П р и л о ж е н и е ................................................................................................................237 Л и т е р а т у р а ................................................................................................................. 335
ПРЕДИСЛОВИЕ Эффективность применения вычислительных машин в науке и технике в значительной мере определяется уровнем развития библиотек и па­ кетов прикладных программ, а также их доступностью для широких кругов пользователей. Предлагаемая читателю книга посвящена данной проблематике в той ее части, которая связана с одним из классических разделов вычисли­ тельной математики —- численным решением на Э ВМ задачи Коши для обык­ новенных дифференциальных уравнений. По содержанию книгу можно разделить на три части. Первая носит ввод­ ный характер и посвящена особенностям машинной арифметики и их влиянию на способы реализации численных алгоритмов. Выделены и подробно обсуж де­ ны основные параметры машинной арифметики с точки зрения их воздействия на ход выполнения вычислительных процессов. Приведены фрагменты программ на языке Фортран, которые позволяют вычислить эти параметры на любой вы­ числительной машине. Особое внимание уделено ошибкам округлений и анали­ з у одной из фундаментальных проблем численного анализа — проблеме конт­ роля распространения ошибок в процессах вычислений, состоящих из большого числа арифметических операций. Приведены практические приемы программи­ рования, которые позволяют уменьшать влияние ошибок. Р яд примеров «гр а ­ м отного» программирования простейших вычислений, лежащих в основе реаль­ ных численных алгоритмов, делает данный материал полезным для учебных целей. Вторая часть книги посвящена собственно изложению численных методов решения задачи Коши. Дается подробный анализ одношаговых и многошаговых разностных методов. Важное место занимает рассмотрение погрешностей при численном интегрировании различных классов уравнений и возникающих при этом ошибок. Приведены практические способы оценки погрешности прибли­ женного решения и автоматического выбора шага интегрирования. Выделен класс многошаговых методов решения систем уравнений второго порядка, пра­ вые части которых зависят или не зависят от производной решения. Отдельно рассмотрены методы решения жестких систем. Излагается весьма эффективный на практике экспоненциальный метод решения линейных однородных систем с матрицами, имеющими постоянные и переменные коэффициенты. Д л я решения неоднородных линейных систем предложен неявный метод Рунге— Кутта шестого порядка точности. Д л я нелинейных систем приведен многозначный метод Гира переменного порядка. 6
Следует подчеркнуть, что излагаемый материал базируется на обширном комплексе программ на языке Фортран, который образует тематический раз/нм библиотеки решения типовых задач численного анализа, разработанной в ПИ НЦ М Г У и получившей распространение в учебных и научных организа­ циях страны. Это обстоятельство и обусловило содержание третьей части книIII В ней содержится общее описание значительной части подпрограмм разде■1.1 Основное внимание уделено практическим рекомендациям по использова­ нию подпрограмм, которые выработаны с учетом многолетнего их применения л л я решения больш ого числа реальных прикладных задач. Приведены подроб1П4<* описания формальных параметров подпрограмм и их версий. В приложе­ нии помещены тексты этих подпрограмм, что, на наш взгляд, повышает пракi иясскую полезность книги для всех категорий пользователей ЭВМ . Данная книга подводит итог работы авторов по созданию программных средств решения задачи Коши для обыкновенных дифференциальных уравнений, in Iполненной в рамках общ его проекта по созданию Библиотеки численного ана.111 «а. разработка которого проводится с 1976 г. под руководством В. В. Воево thnia и В. А. Морозова в отделе численного анализа Н И В Ц М Г У . При состав.11 ипн приведенных здесь программ использованы инструментальные средства, •к уществляющие программную поддержку специальной технологии конструирои.жия и жизнеобеспечения обширных библиотек программ для классов ЭВМ , p;i фаботанкой и практически примененной в процессе реализации упомянутого проекта. Это обстоятельство позволило без значительных накладных расходов •-делать программы решения задачи Коши и всю Библиотеку в целом доступ­ ными для четырех типов ЭВМ : БЭСМ-6, ЕС ЭВМ , С М Э В М и М В К Эльбрус. И пой части своей работы авторы пользовались помощью ряда сотрудников •идола численного анализа Н И В Ц М Г У . С особой благодарностью хотелось бы •и метить участие Я . И. Волченсковой и О. Г. Симонс.
Глава I МАШИННАЯ АРИФМЕТИКА И ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ При выполнении расчетов на ЭВМ постоянно при­ ходится иметь дело с ошибками, возникновение которых в процес­ се вычислений обусловлено тремя причинами: во-первых, ошибка­ ми в исходных данных ( неустранимая погрешность); во-вторых, замена бесконечных процессов конечными ( погрешность числен­ ного метода), например в результате отбрасывания остаточного члена формулы; в-третьих, конечной точностью, с которой числа могут быть представлены в машине (ошибки округления). Каж­ дый из этих типов ошибок неизбежен в вычислениях. Поэтому проблема контроля ошибок состоит не в том, чтобы предупредить их появление, а в том, чтобы контролировать их величину для достижения максимально точного окончательного результата. Эта проблема связана с исследованием распространения ошибок в процессе вычислений. Например, при выполнении какой-либо арифметической операции над двумя приближенно заданными числами следует стремиться, чтобы ошибка результата остава­ лась в приемлемых границах. Однако, кроме того, следует дер­ жать под контролем и ее распространение в последующих вычис­ лениях. При разработке численного метода предполагают, что все вы­ числения выполняются в системе вещественных чисел. Однако программная реализация метода должна учитывать то обстоя­ тельство, что реальные операции выполняются не над всей сово­ купностью вещественных чисел, а только над числами, представи­ мыми в машине. В действительности система вещественных чисел «бесконечна» в двух отношениях. Во-первых, она содержит про­ извольно большие как положительные, так и отрицательные чис­ ла. Во-вторых, она является бесконечно плотной, т. е. между дву­ мя любыми вещественными числами содержится бесконечно много других вещественных чисел. В противоположность этому систему представимых в машине чисел образует конечное число рацио­ нальных чисел, содержащихся в конечном интервале. Эти два различия и определяют сущность машинной арифметики, которая обладает другими свойствами по сравнению с идеальной, или точной, арифметикой. 8
1. Машинные системы счислений. В памяти вычислительной машины каждое число размещается в машинном слове со своим таком и с фиксированным количеством цифр (разрядов). Суще• шуют два способа использования этих цифр для представления чисел. 11срвый из них состоит в том, что под дробную часть числа «иводится строго определенное количество цифр. Это представле­ ние чисел с фиксированной точкой (запятой). Оно характеризуI н и гремя параметрами: |1 — основание системы счисления машины; / — количество цифр, отведенных для представления числа и машинном слове; / — количество цифр (разрядов), отведенных для представ­ лении дробной части числа. Обозначим Р (0 , ty f) систему представления чисел с фиксиро­ ванной точкой. Рассмотрим в качестве примера систему /' (10, 4, 1). В ней содержится 19 999 чисел, причем все соседние мш-ла равноудалены друг от друга: — 999.9, — 999.8,..., 999.8, •149.9. Любое вещественное число из интервала (— 1000, 1000) может быть представлено в данной системе элементом f i x ( x ) s • /*{10,4,1) с абсолютной ошибкой, не превосходящей 0.05 по посолютной величине. Например, если х = 865.54, то его представи пне fix(jc) в системе Р ( 10,4,1) равно 865.5, а абсолютная ошиб­ ка *того представления равна 0.04. Рассмотрим теперь поведение ••уноситель ной ошибки (х— fix ( * ) ) / * (х=^-0) на двух примерах. Оти<панельная ошибка представления числа 865.54 равна <и) 1/865.54 «*0.00005 (или 0.005%). С другой стороны, если х ~ 0.86554, то fix (х) =000.9 и относительная ошибка составит уже ■!%. Это означает, что хотя числа системы Я (10,4,1) и образуют равномерную сетку на интервале (— 1000, 1000), но относителен ппч плотность этой сетки не является равномерной. Данный недоI i . i i d k присущ всем системам представления чисел с фиксирован* INHI точкой. 1юльшинство вычислительных машин используют системы / (0, /, L, V ) представления чисел с плавающей точкой (запя/|>//), которые характеризуются четырьмя параметрами: р — основание системы счисления машины; I — количество цифр (разрядов), отведенных под представле­ ние мантиссы (дробной части) числа, т. е. точность представле­ ния чисел; L, U — пределы изменения значений показателей степеней чисел. Любое ненулевое число x e f имеет вид х= ± (d ilfi + d2ff >2+ ... + d tlp ) X 0е н записывается как х* ± ,d\d2... dt X 0е, 9
где цифры мантиссы d u d2........dt по основанию 0 удовлетворяют условиям а показатель степени е является целым числом, удовлетворяющим условию L^e^U. Число 0 также принадлежит F и представляется в виде О= -Ь 00...0 X pL. (1) Если для любого x ^ F , хФО, значение dt равно 1 (как это и име­ ет место во введенной нами системе F ), то такая система назы­ вается нормализованной. Числа с плавающей точкой, принадлежащие любой системе F, образуют неравномерную сетку, относительная плотность ко­ торой является равномерной. В качестве примера рассмотрим систему /7(10,4, — 2,3). В ней число 865.54 имеет вид .8655 Х103, а число 0.86554— .8655X10°. В обоих случаях относительные ошибки одинаковы и равны 0.005%. Р (2,4,2) F (2,3,-1,2) — f LL4JLI1 4 1 1 Н * *J 1 1 »1 ; *>« | * 1 * | 1 8 * -J| -3 - 2 - 1 0 1 2 3 -ii -5$ -3 -2 -1-j 0 \ l 2 J| 3 3j Рис. 1 На рис. 1 приведены две системы Р (2,4,2) и F ( 2,3, — 1,2), пер­ вая из которых состоит из 31 числа, а вторая — из 33 чисел. Очевидно, что множество чисел, образующих плавающую сис­ тему F, не является бесконечным. В нем содержится 2 (0 — 1)Р#“ , (17— L + l ) + l чисел. Еще раз подчеркнем (и это видно на рис. 1), что эти чис­ ла расположены неравномерно. Поскольку F — конечное множе­ ство рациональных чисел, то с его помощью невозможно отобра­ зить все множество вещественных чисел. 2. Параметры машинкой арифметики. Далее рассматриваются свойства машинной арифметики, базирующейся на плавающих системах ^(0, t, L , V ) . Помимо введенных ранее четырех пара­ метров р, /, L и U, однозначно определяющих систему F , на прак­ тике широко используются еще три параметра а, К и е, которые выражаются через эти основные четыре параметра. Д ля иллюстрации выполним анализ системы F ( 2,3, — 1,1). 10
Она содержит нуль и все числа, двоичное представление кото |>Ыч имеет вид X = ± 0 . l c l 2d3X 2 et и** l ^ e ^ l , а каждая из цифр d2 и d$ равна либо 0, либо К I я mi м образом, для любого ненулевого x ^ F имеются две возми /кмости в представлении знака ( + или — ), три возможности fi.'iя значений показателя степени ( — 1, 0 или 4-1) и четыре — и представлении дробной части (двоичные дробные части могут имен, вид 0.100,0.101, 0.110 и 0.111). Множество чисел, образую­ щих систему F, состоит из 2 - 1 -4-3-т 1= 2 5 чисел с плавающей Mi'l коп. Преобразование дробных частей этих чисел в десятичное (|1 Ю) представление позволяет легче воспринимать их числен­ ные значения. В десятичном представлении четыре возможные лриОпые части равны 1/2, 5/8, 3/4 и 7/8. Например, двоичная лриОь 0.101 представляет собой дробь 1х 2 ~ 1+ 0 х 2 - 2+ 1Х 2 3= IЛ? I-1/8 —5/8. Таким образом, в рассматриваемой системе F наименьшее представимое в системе положительное число с плам.мощей точкой — o = 1/2х 2 _, = 1/4, а наибольшее — Я=7/8х21= //1 (см. рис. 2, на котором изображены положительные числа ми-гемы F ) . 6 а -т 1 0 1 2 1 1 1 3 4 7 с 1 1 • 4 Ги, 2 Расстояние е между 1 и следующим (большим 1) числом сисЦ‘мы F представления чисел с плавающей точкой на вычислительион машине называется машинным эпсилон. Это число — наибои г полезный параметр, характеризующий данную систему, по­ скольку машинное эпсилон дает меру «дискретности» системыг которая имеет место для всего интервала ненулевых машинных •шгол. Из сказанного вытекает важное утверждение для систем <* плавающей точкой: расстояние между числом x ^ F и соседним числом системы не меньше е|х|/р и не больше e|x| (если только х не соседствует с нулем). Расстояния е/р слева от 1 и е справа от I являются важны­ ми характеристиками при измерении расстояний между последонательными числами, принадлежащими системе F. Параметры о, X и е следующим образом выражаются через четыре основных параметра р, /, L и V . определяющих систему F : а = pL_1, Я = ^ ( 1 — р - ') , е = р'-'. 11
Дополнительные замечания относительно значения е изложены в п. 3 и 5. Случай, приведенный на рис. 2, обладает тем недостатком, что па нем е = а. Более того, данный рисунок не подчеркивает уникальный характер расстояния между нулем и ближайшим к нему числом системы F. Рассмотрим систему с плавающей точкой с параметрами |3= 10, t —б и L — — 100, которая даст го­ раздо лучшее ощущение реальной системы такого типа. В этом случае е = 1 0 -5 и а=П0~~101. Кроме того, между О н а нет ни одного числа, принадлежащего системе, в го время как между а и 10а лежат 899 999 чисел системы. Система F обладает рядом интересных свойств, часть которых рассмотрена в последующих пунктах. Эти свойства необходимо учитывать в программных реализациях численных алгоритмов для достижения их максимальной эффективности. Из рис. 2 видно, что вблизи о расстояния между соседними числами системы F меньше самого значения а. Отсюда следует, что эти числа не могут быть получены друг из друга при помощи операции сложения; их можно получить только в результате вы­ числения арифметических выражений. Перечислим несколько других свойств системы F. Если L ^ e < < ( J , то между числами ре_1 и (3* находятся (0— 1){3*_1-Ы чисел •] шагом |3e-f = то разность х — у вычисляется в системе F точно, т. е. эта разность также принадлежит F, если вычитание осуществляется с запасными циф­ рами. Расстояние между двумя числами из F, имеющими порядок е, равно ре_,е. Арифметические операции над числами из F коммутативны, если имеет место правильное округление (см. п. 3), однако для них не выполняются законы ассоциативности и дистрибутивности. Если разделить (умножить) число из F на р, то расстояние от этого числа до следующего соседнего к нему числа из F умень­ шится (увеличится) точно на множитель р. Если х и х + 1 — со­ седние числа из F и число х умножается на у/дс, y ^ F t то между у и у + 1 содержится около \х/у\ чисел из F. 3. Ошибки округления. Рассмотрим теперь различия между выполнением вычислений в системе F и в системе вещественных чисел. Существо этих различий состоит в том, что арифметические операции, выполненные над двумя числами, принадлежащими системе F, вовсе не обязательно имеют своим результатом число из системы F. Следовательно, для того чтобы оставаться в рам­ ках системы F, мы должны заменить «истинный» результат опе­ рации на число из F, а это означает, что вносится ошибка. Существуют два случая, когда результат арифметической опе­ рации не принадлежит системе F. В первом случае показатель степени результата е не удовлетворяет неравенствам При этом если e < L , то \ х \ < о (антипереполнение), а если e > U t то |х|>А (переполнение). 12
Во втором случае дробная часть (мантисса) результата содер­ жит больше t цифр. Я а пример, пусть в системе F (2,3, — 1,2) выполняется операция сложения .110x2°+.! И Х2° = .1101 Х21 (3/4+7/8=13/8). Гогда ее результат не принадлежит системе Z7, поскольку для точного представления его дробной части требуются четыре дво­ ичные цифры. Точно так же произведение .111Х2°Х.110X2°= .10101X2° (7/8X3/4 = 21/32) не принадлежит системе F. Заметим, что если рассмотренная си­ лиция не всегда имеет место для сложения, то для умножения она практически неизбежна. Д ля того чтобы сделать результат операции принадлежащим системе F, необходимо выбрать число из F , находящееся поблнюсти от него, т. е. осуществить операцию округления. Это можно выполнить следующими способами. Предположим, что фактичес­ кий результат операции имеет вид did2. . . dtd t+ i . . . dnX pe, U. Тогда первый способ округления состоит в простом отбра( ывании всех цифр dt+\... dn после цифры dt. Второй способ ок­ ругления, называемый правильным, состоит в том, что в дробной части результата берутся t первых цифр суммы d\d2 . -. dtdt+\ + 0/2. Например, числу . 1101 X 2 1 в системе F (2,3, — 1,2) ставится в со­ ответствие число .110Х21 при отбрасывании и число Л 1 1 Х 2 1 при правильном округлении. Числу .10101x2° соответствует число 101X2° при обоих способах округления. Рассмотренные способы округления порождают ошибки, кото­ рые называются ошибками округления. Более точно ошибка ок­ ругления представляет собой разность !1(дс)— х, где х — вещест­ венное число, показатель степени которого принадлежит отрезку |L, U\, а !1(х) — его машинное представление. Д л я хФО вводит­ ся понятие относительной ошибки округления б ( * ) в числе И ( * ) : 8 ( х ) = (fl ( х ) — х)/х, которая удовлетворяет следующим неравенствам: l6 (x )l< E P S = р1 { = е для отбрасывания; (2) р1 #|2=е/2 для правильного округления. Действительно, пусть е — такое целое число, L < e < U , что 0 * - '< л : < р * . На отрезке [ре-1, 0е] в системе с плавающей точкой числа рас­ пределены равномерно с интервалом 0е-*. В случае отбрасывания младших разрядов число f l ( x ) отстоит от х не дальше, чем на 13
расстоянии р*7-', а в случае правильного округления — не дальше чем на расстоянии ре-*/2, т. е. . * х И (•) Так как ^ 1 ур для отбрасывания; * /2 для правильного округления. то КС—I | j = р НИХ) -х| = |6(JC)[< I* I Ве-*/2 j н ^ —Р для отбрасывания; j /2 для правильного округления. Из изложенного выше следует, что отбрасывание выполняется быстрее, однако относительная ошибка округления здесь в два раза больше, чем при правильном округлении. Кроме того, при отбрасывании ошибка округления всегда имеет один и тот же знак, противоположный знаку округляемого числа, а это при больших вычислениях может привести к быстрому накоплению ошибок. Поэтому, хотя правильное округление обладает тем недо­ статком, что оно вызывает замедление работы арифметического устройства из-за выполнения операции сложения, его использова­ ние предпочтительнее. Наиболее важное различие между этими двумя способами ок­ ругления состоит не в том, что при отбрасывании граница ошибки в два раза больше, чем при правильном округлении, а в том, что при отбрасывании ошибки округления связаны со знаками округ­ ляемых чисел. При выполнении операций сложения большого числа п положительных чисел (например, при суммировании ря­ да с общим членом (1 /я)Хгс) в режиме отбрасывания младших разрядов ошибка после п шагов может быть очень большой, так как погрешность отбрасывания имеет в этом случае один и тот же знак, что и дает систематическую ошибку. В случае суммирования с правильным округлением встреча­ ются как положительные, так и отрицательные ошибки, а это при­ водит к взаимному уничтожению ошибок разного знака, вслед­ ствие чего обычно получается значительно меньшая суммарная ошибка, чем при сложениях в режиме отбрасывания. Действи­ тельно, пусть все ошибки округления имеют одинаковую величи­ ну, их знаки независимы и среди них одинаково часто встречают­ ся + и — . Тогда из предельной теоремы теории вероятностей следует, что вероятная ошибка суммы п положительных членов при отбрасывании приблизительно в у я раз больше суммы, полу­ ченной в режиме правильного округления. Д ля иллюстрации соотношения (2) рассмотрим систему F (Н)> 4, — 50, 50). Тогда числу х = 12.467 при отбрасывании младших разрядов соответствует в системе F число f l ( x ) — = .1246Х102 с относительной ошибкой округления б ( * ) = 0.007/12.467 « 0.00056 < Е PS = 10^3= 0.001. 14
Гели же применяется правильное округление, И)2 и то f 1(л:) = . 1247 X 6 (х ) = 0.003/12.467 я 0.00024 < Е Р S = 10“ 3/2 = 0.0005. Параметр E P S характеризует относительную точность систе­ мы F и его значение зависит от применяемого способа округлеIIнм. Этот парахметр может быть определен как наименьшее поло­ жительное число, которое, будучи прибавленным в системе F к 1, 1лст в результате число, принадлежащее F и большее 1, т. е. fl (1 + E P S ) > 1. Например, в системе F (10,4 — 50,50) при отбрасывании младших разрядов E P S = 10 "3= 0.001, поскольку И (1.+ 0.001) = П (.1001 Х101) =. 1001 X 101> 1, и невозможно найти другое, меньшее EPS, число, которое обла­ чает таким свойством. Если мы применяем в системе F правиль­ ное округление, то E P S = 0.0005, поскольку И (1 —0X005) = И (0.10005 X 10,) = . 1 0 0 1 Х Ю 1> 1 . Так, определенный параметр EPS называют также машинным ♦нейлон, как и введенный ранее параметр s, и используют при оп­ ределении максимально достижимой точности при расчетах на Таким образом, конкретное значение машинного эпсилон .швисит от применяемого на ЭВхМ способа округления. Оно равно если при округлении младшие разряды отбрасываются, и р1'V2, если осуществляется правильное округление. Последнее означает, что хотя расстояние от 1 до следующего (большего 1) числа системы F равно е = р1-#, достаточно прибавить в режиме правильного округления к 1 число (+-//2, чтобы получить это сле­ дующее число. Рассмотренные два значения машинного эпсилон отличаются множителем, равным 2, и поэтому практически не так пажно, какое из них использовать для оценки максимально дос­ тижимой точности. Выше при описании правильного округления мы выбрали ва­ риант, когда в качестве результата берется число И (х ), принад­ лежащее плавающей системе, которое по абсолютной величине больше округляемого числа х , если оно лежит точно посередине между двумя соседними числами системы Х\* и Х2 *, т. е. если \х— X i * j = p - “72 (или, что то же самое, \х— х2*I — Р~*/2), то 11(л ) = s i g n ( * ) •max(|*i*|, |лг2*|). Возможен вариант правильного округления, когда в рассматриваемом случае в качестве fl(jt) берется s ig n (x ) *min(|;ici*|, |x2*|). Кроме того, разумна комбина­ ция этих вариантов, когда из двух возможных значений f l ( x ) выбирается то, которое является четным, что увеличивает равно­ вероятность появления знаков « + » и « — » в ошибках округления. Однако такая комбинация сложнее в аппаратной реализации и увеличивает накладные расходы. 15
Реальные режимы округлений, используемые при выполнении арифметических операций на ЭВМ, рассматриваются в п. 5. 4. Представление чисел на ЭВМ. 4.1. Представление вещест­ венных и целых чисел на Э В М БЭСМ-6. На Э ВМ БЭСМ-6 приме­ няется плавающая система F (2,40, — 64,63). Каждое веществен­ ное число с одинарной точностью представляется в машинном слове, состоящем из 48 разрядов, следующим образом: 42 48 порядок 41 знак числа 1 40 мантисса В этом представлении под порядок числа е ( — 6 4 ^ 6 ^ 6 3 ) отве­ дены семь разрядов с номерами от 42 по 48, знак числа опреде­ ляется 41-м разрядом (знаку « + » соответствует 0 в 41-м разряде, знаку « — » соответствует 1 в 41-м разряде), под мантиссу (т. е. дробную часть числа) отведены сорок разрядов с номерами от 1 до 40. Машинное представление порядка вещественного числа зада­ ется со смещением так, чтобы число «н у л ь», которое в любой системе F имеет представление (1), в машинном слове изобража­ лось нулями во всех 48 разрядах. Таким образом, машинный по­ рядок ем, реально размещаемый в разрядах 48+42, удовлетворя­ ет равенству ем = е у 64, откуда следует, что 0=^ем^127. Нулевому порядку числа е соот­ ветствует машинный порядок ем — 64 с двоичным представлением (1 000000)г. Максимальному порядку числа е = 63 соответствует машинный порядок ем = 63 + 64 = 127= (1 111 111)2, а минимально­ му порядку числа е = — 64 соответствует ем = — 64 + 64 = 0 = = (0 000 000) 2. Машинный порядок ем можно интерпретировать иначе. Счи­ таем, что 48-й разряд служит для представления знака порядка (знак « + » изображается цифрой 1, а знак « — » — цифрой 0), а шесть разрядов 4 7 + 4 2 — для представления \е\, причем в них размещается е, если е ^ 0 , и 64— |е|, если е < 0 . Мантиссы представляются в разрядах 40-+1; 41-й разряд явля­ ется знаковым. Д л я представления положительных мантисс ис­ пользуется прямой код: в 41-м разряде ставится знак « + » (циф­ ра 0), а в разрядах 40+1 непосредственно изображается цифро­ вая часть мантиссы. Все арифметические операции над веществен­ ными числами осуществляются в режиме нормализации. Д л я по­ ложительных чисел признаком нормализованности служит наличие цифры 1 в 40-м разряде. Это означает, что мантисса пг положи­ тельного числа удовлетворяет неравенствам l/ 2 ^ m < 1. Применение нормализованной формы представления чисел обусловлено стремлением обеспечить максимально возможную точность с тем, чтобы не тратить позиции машинного слова на 16
it «обнажение незначащих нулей в старших разрядах. Если резульI.UOM операции оказалось ненормализованное число, то выполни* Hi ll процедура нормализации, состоящая в сдвиге мантиссы вле­ пи иа такое число разрядов, чтобы в 40-м разряде появилась I, и и вычитании из машинного порядка ем единицы столько раз,, «сколько выполнялся такой сдвиг мантиссы. Например, число 1 ил ВЭСМ-6 в нормализованном виде имеет вид Приведем один из примеров ненормализованного представле киVi числа 1: 48 42 40 41 1 000 011 39 38 37 0 0 10 Иногда описанную процедуру нормализации называют нормаиг.ищией влево. Отрицательные мантиссы представляются дополнительным hmioM: В 41-м разряде изображается знак « — » (цифра 1), а в рп«рядах 40-М представляется значение Ь— |т|. В отличие от положительных чисел признаком нормализованности отрицатель­ н о го числа является наличие цифры 0 в 40-м разряде. Таким об­ ритом, мантисса нормализованного отрицательного числа, запн* «имного в дополнительном коде, удовлетворяет неравенствам 1 / 2< | т| ^ 1. По-другому представление отрицательной мантиссы и дополнительном коде можно описать следующим образом: it 11-м разряде необходимо поставить 1, а в представлении аб­ солютной величины мантиссы надо все 1 заменить на 0, 0 — на 1 и к результату прибавить 1 в младший разряд; если в 40-м раз­ ряде полученного представления отрицательной мантиссы ока(Кстся 1, то при нормализации ее следует заменить на 0 с одноиремеиным уменьшением порядка на 1. Например, число + 1 в нормализованном виде представляется 1.1к: 48 1 42 000 001 41 о 40 1 о 1 000 Для представления числа — 1 в дополнительном коде заменим и l l -м разряде 0 на 1, а в разрядах 40-г-1 заменим 1 на 0, а 0 — на I. Тогда получим 48 1 42 000 001 41 40 0 11 1 1 17
П о с л е прибавления 1 в младший разряд получим представление — 1 в дополнительном коде без нормализации: 48 42 1 000 001 41 40 1 1 10 0 • а • 0 ли за ц и и им еем 48 1 000 42 41 000 1 1 40 0 0 • • 0 • т. е. получаем окончательное представление — 1 на Э В М БЭСМ-6 в том виде, в каком — 1 обычно используется в численных расче­ тах. Напомним, что число 0 представляется всеми нулями во всех 48 разрядах. Приведем другие примеры представления нормализованных чисел: х = 3/4: 48 1 42 000 000 41 0 40 ПО 1 • • 0 • х = — 3/4: 42 48 1 jc- 000 000 41 1 1 40 0 1 0 • • • 0 1/ 16: 48 0 42 111 101 41 0 1 40 1 0 0 • а » 0 х— 42 48 0 111 101 41 1 1 40 0 0 • • # 0 Диапазон представимых на БЭСМ-6 положительных вещест­ венных чисел с одинарной точностью задается приблизительно интервалом ( — 10“ 1Э, 1019). Целое число на Э В М БЭСМ-6 также представляется в одном машинном слове, т. е. под него отводятся все 48 разрядов машин­ ного слова. Однако количество разрядов, отводимых непосредст18
iiM-mm под цифры целого числа, меньше 48, поскольку операции h i I целыми числами выполняются, как над вещественными неипцмализованными числами. Это означает, что двоичные цифры мантиссы целого числа сдвинуты в младшие разряды слова (норми. шзация вправо), а не в старшие, как у вещественных чиселI In :ому величина двоичного порядка е, который размещается и семи разрядах слова 48ч-42, для всех чисел равна 40|О= 5 0 8. Как и для вещественных чисел, машинный порядок ем целых чисел задается со смещением 64ю= 1 0 0 8, т. е. ем = е + 6 4 ю = 4 0 ю + i (> 1 ю = 104ю= 15 0 8 : 48 42 1 101 000 41 40 знак числа 1 цифры целого числа (мантисса) Для положительного целого числа в знаковом 41-м разряде панится 0, а в разрядах 40ч-1, начиная с первого, записывается амппчиое представление этого числа. Отрицательные целые числа представляются в дополнительном коде, т. е. в знаковых разрядах приставляется 1, а все двоичные цифры числа меняются на об­ ритые (т. е. 0—►1, 1-^0) с последующим прибавлением к получен­ ному двоичному числу единицы самого младшего разряда. Примеры. \ 1: 48 41 42 1 101 40 0 000 1 0 0 9 9 0 1 9 А 48 1 X 101 41 000 1 40 1 1 1 • • 1 • 100: 48 1 * 42 - 101 42 41 000 0 40 0 0 1 . . . 01 100 100 100: 48 1 101 42 41 40 000 1 1 1 . . . 1 ПО 011 100 Диапазон величин целых чисел iV, представимых на БЭСМ-6, оп­ ределяется неравенствами — 240< jV ^ 2 40— 1. 19
Д ля представления вещественных чисел с удвоенной точ­ ностью отводятся два машинных слова (96 разрядов). Под пред­ ставление порядка отводятся 14 разрядов, один разряд — под знак числа и 80 — под мантиссу: 48 Q 47 42 младшие разряды порядка (ех) 48 41 знак числа 42 старшие разряды порядка (е2) 1 40 старшие разряды мантиссы 40 41 0 1 младшие разряды мантиссы 48-й разряд первого слова Q задает знак порядка, причем Q = 1 для положительного порядка и Q = 0 для отрицательного порядка. Значение порядка е определяется формулой e = Q -2,3+ ei 4-^2* 26— 213, где е2 представляется в прямом коде при Q = 1 и в обратном коде при Q = 0 (обратный код означает замену значений двоичных раз­ рядов на обратные, т. е. 0-*-1 и 1-^0). Диапазон представимых на БЭСМ-6 положительных вещест­ венных чисел с удвоенной точностью составляет приблизительно интервал (10~1232, 101232). 4.2. Представление вещественных и целых чисел на ЕС ЭВМ. Общая длина машинного слова, отводимого под представление вещественного числа с одинарной точностью, равна 32 разрядам: семь разрядов отводятся под представление порядка, один раз­ ряд — под знак числа и 24 разряда — под мантиссу: 32 31 знак числа 25 порядок 24 1 мантисса Машинный порядок задается со смещением, т. е. ем = е + 64}оДля выполнения арифметических операций с одинарной точ­ ностью с плавающей точкой на ЕС ЭВМ используется плавающая система F (16, 6, — 64, 63). Это означает, что основание системы счисления для представления мантиссы равно 16, для изображе­ ния каждой шестнадцатиричной цифры мантиссы отводятся четы­ ре разряда. Диапазон представимых положительных веществен­ ных чисел с одинарной точностью составляет приблизительно ин­ тервал (10~75, 1075). Общая длина слова, отводимого под представление целого чис­ ла, равна 32 разрядам: 32-й разряд отведен под знак числа, а разряды 31 1 отведены для двоичных цифр числа: 32 знак числа 20 31 1 цифры числа
Отрицательные числа представляются в дополнительном коде. Диапазон целых чисел составляет интервал ( — (231— 1), 231— 1). Д л я выполнения арифметических операций с удвоенной точ­ ностью на ЕС ЭВМ используется плавающая система F (16, 14, 64, 63), т. е. в отличие от БЭСМ-6 на ЕС ЭВМ для удвоенной точности увеличивается количество разрядов, отведенных под манМ1ссы чисел, но диапазон изменения порядков остается тем же, что и для одинарной точности. Д л я представления вещественного числа с удвоенной точностью отводятся два слова по 32 разряда (двойное машинное слово): семь разрядов — под представление порядка, один разряд — под знак числа и 56 разрядов — под мантиссу: 32 31 знак числа 25 24 порядок 1 старшие разряды мантиссы 32 1 младшие разряды мантиссы 11орядок здесь задается с тем же смещением, что и для чисел одинарной точности. 4.3. Представление вещественных и целых чисел на СМ~4. Д л я выполнения арифметических операций с плавающей точ­ кой с одинарной точностью на СМ-4 используется система F (2, 21, — 128, 127). Общая длина слова, отводимого под представление вещественного числа с одинарной точностью, равна 32 разрядам (двойное с л о в о ) : восемь разрядов отводятся под порядок, один разряд — под знак числа и 24 разряда — под мантиссу: 32 31 знак числа 24 порядок 23 1 мантисса Фактически в машинном слове мантисса занимает 23 разряда, а старшин 24 разряд только подразумевается. Этот разряд не хранится в слове, поскольку учитывается то обстоятельство, что все вычисления выполняются только над нормализованными чис­ лами, для которых старший разряд всегда равен единице. П о ­ рядок задается со смещением, равным 128ю=2008. Диапазон представимых положительных вещественных чисел с одинарной точностью составляет приблизительно интервал (10-38, 1038). Общая длина слова, отводимого под представление целого числа, равна 32 разрядам. Однако непосредственно под цифры целого числа отводятся только 15 разрядов, один разряд — под т а к числа, остальные 16 разрядов не используются: 32 31 17 16 1 знак числа цифры числа не используются 21
Для отрицательных целых чисел используется дополнительный код. Диапазон представимых целых чисел составляет интервал ( — 215, 215 — 1). Используются также форматы коротких целых чисел без знака (восемь разрядов), коротких целых чисел со знаком (один разряд — под знак числа, семь разрядов — под цифры числа), целых чисел без знака (16 разрядов) и длинных целых чисел со знаком (один разряд — под знак числа, 31 раз­ ряд — под цифры числа). Для представления вещественного числа с удвоенной точ­ ностью отводятся два двойных слова по 32 разряда (учетверенное слов о): восемь разрядов — под порядок, один разряд — под знак числа и 56 разрядов — под мантиссу: 32 знак числа 31 24 порядок 23 1 старшие разряды мантиссы 32 1 младшие разряды мантиссы Таким образом, для выполнения операций с удвоенной точ­ ностью используется плавающая система F (2,56, — 128, 127). Заметим, что фактически в учетверенном машинном слове ман­ тисса занимает 55 разрядов. Порядок задается со смещением* равным 128 ю = 200 8, т . е. с тем же, что и для чисел одинарной точности. 4.4. Представление вещественных и целых чисел на М В К Э Л Ь Б Р У С . Для выполнения арифметических операций с одинар­ ной точностью используется плавающая система F (16, 14, — 64* 63). Это означает, что основание системы счисления для представ­ ления мантиссы равно 16, при этом для изображения каждой шестнадцатиричной цифры мантиссы отводятся четыре разряда. Общая длина машинного слова для представления вещественного числа с одинарной точностью равна 64 разрядам: семь разрядов отводятся под порядок, один •— под знак числа и 56 разрядов — под мантиссу: 64 знак числа 63 57 порядок 56 1 мантисса Диапазон представимых положительных вещественных чисел с одинарной точностью составляет приблизительно интервал (10~75, 1075). Машинный порядок задается со смещением, т. е. е м — е + 64 ю . 22
Общая длина слова, отводимого под представление целого числа, равна 64 разрядам: один разряд отводится под знак числа и 63 — под двоичные цифры числа. 64 63 знак числа 1 цифры числа Диапазон представимых целых чисел составляет интервал ( - (263— 1), 263— 1). Д л я представления вещественного числа с удвоенной точ­ ностью отводятся два слова по 64 разряда: 15 разрядов — под порядок, один — под знак числа и 112 — под мантиссу: 64 63 знак 1. | числз ] 57 56 старшие разряды мантиссы младшие разряды порядка 64 57 старшие разряды порядка 1 56 1 младшие разряды мантиссы Таким образом, для выполнения арифметических операций с удвоенной точностью на М В К Э Л Ь Б Р У С используется плава­ ющая система F (16, 28, — 16384, 16383). Диапазон представимых положительных вещественных чисел с удвоенной точностью сос­ тавляет приблизительно интервал (16~16384, 16163S3X (1 — 16~28) ) . 5. Выполнение арифметических операций и округление резуль­ татов на ЭВМ. Д л я повышения точности арифметические опера­ ции над вещественными аргументами выполняются на ЭВМ г большим количеством разрядов, чем то, которое отводится под представление мантиссы. Это означает, что при выполнении ариф­ метических операций используются запасные цифры. Так, напри­ мер, на ЭВМ БЭСМ-6 имеется регистр младших разрядов ( Р М Р ) , состоящий из 48 разрядов, который служит продолже­ нием сумматора (так называется регистр арифметического уст­ ройства машины, предназначенный для формирования результа­ тов операций). Р М Р используется при выравнивании порядков при сложении и вычитании чисел и для хранения результатов арифметических операций (старше 40 разрядов мантиссы резуль­ тата располагаются в сумматоре, а младшие 40 разрядов — в Р М Р в разрядах 40ч-1). Перед выполнением каждой следующей операции Р М Р гасится (во все его разряды записывается 6). Рассмотрим общие принципы реализации арифметических опе­ раций на ЭВМ, знание которых полезно для понимания свойств машинной арифметики. Предполагаем, что числа х и у (лг=т==0, ч Ф С) представлены в некоторой плавающей системе с основанием I*», т. е. х = тХ‘ $р и у — ту■ 23
При сложении чисел х и у, представленных в форме с плава­ ющей точкой ( плавающее сложение), в общем случае нельзя не­ посредственно складывать их мантиссы тх и ту. Это объясняется тем, что если р Ф я , т. е. слагаемые имеют разные порядки, то фактическое положение точки, отделяющей целую часть числа от его дробной части, в этих числах различно, а это означает, что разряды мантисс с одинаковыми номерами на самом деле изоб­ ражают разные разряды чисел. Здесь уместно привести аналогию с хорошо всем знакомой де­ сятичной системой счисления. Пусть, например, необходимо сло­ жить числа * = 1 8 4 и у = 41. Если их представить в нормализован­ ной форме с плавающей точкой (напомним, что тогда первый разряд после десятичной точки должен быть отличен от нуля), то имеем * = 0.184-103 и г/= 0.41* 102. Очевидно, что в этой форме первый разряд мантиссы числа * представляет число сотен, а первый разряд мантиссы числа у — число десятков. Д л я того чтобы выполнить операции сложения, необходимо уравнять по­ рядки слагаемых, т. е. число «/, имеющее меньший порядок, надо предварительно преобразовать к виду //= 0.041 - 2О3, после чего можно производить сложение мантисс. Эта процедура носит на­ звание выравнивание порядков. Точно так же и в случае двоич­ ной системы счисления выравнивание порядков состоит в сдвиге мантиссы числа с меньшим порядком вправо на число разрядов, равное модулю разности порядков слагаемых, что эквивалентно делению этой мантиссы на соответствующую степень двойки. Ана­ логично выполняется операция вычитания. Таким образом, сложение чисел * и у с плавающей точкой выполняется по формулам (mx ± mu р (р Q)) .рр, если р > qy z=x^zy= dh my) •ра, если q. Здесь умножение мантиссы числа, имеющего меньший порядок, на множитель или p-fa-p) означает выравнивание порядков аргументов. За мантиссу результата принимаются значения вы­ ражений, взятые в скобки, а в качестве его порядка — значение max (р, q). В качестве примера рассмотрим, как выполняется сложение на ЭВМ БЭСМ-6 чисел 1 и 2-39, имеющих следующее машинное представление: 1 : 2 - 39: 1 о о о порядок 001 мантисса 0 10 . . . . . . 0 0 011 010 0 10 . . . . . . 0 После выравнивания порядков слагаемые имеют вид 24 а 1 000 001 0 • 2“ 39: 1 000 001 0 10 . . . . . . • : о о 1 0 . . . 01
Результатом сложения является число 1 + 2-39: 1 000 001 0 10 01 Легко видеть, что мантисса результата может оказаться боль­ ше единицы, но всегда меньше двух. В этом случае мантисса нормализуется вправо, т. е. сдвигается на один разряд вправо <■ одновременным увеличением порядка результата на единицу. При вычитании близких чисел в старших разрядах результата могут получиться нули. Тогда осуществляется нормализация плево. Операции умножения и деления выполняются по следующим формулам: * = *•*/ = ( тх -т у) •0'5Ч z ~ х / у = ( т х/ т у ) Как правило, для операций сложения (вычитания) и умноже­ ния аргументы могут быть ненормализованными числами, тогда как для операции деления делитель обязательно должен быть нормализованным числом. На многих машинах режим нормали|.'щин устанавливается или блокируется специальными коман­ дами. При выполнении арифметических операций на Э В М могут ис­ пользоваться режимы округлений, отличные от правильного ок­ ругления. Так, например, на ЭВМ БЭСМ-6 после операции деле­ нии округление результата никогда не производится, т. е. млад­ шие разряды частного всегда отбрасываются. Д л я остальных i| нфметических операций округление производится записью цифры 1 в младший разряд мантиссы в следующих случаях: а) если нормализация результата не нужна, а, начиная с 40 разряда, в регистре младших разрядов есть хотя бы одна единица; б) после нормализации вправо, если, начиная с 40 разряда регистра младших разрядов есть хотя бы одна единица; в) после нормализации влево, если при этом из регистра младших разрядов в сумматор не перешла ни одна едини­ ца, но после нормализации в этом регистре осталась хотя бы одна единица. Режим округления, состоящий в отбрасывании младших раз­ рядов (см. п. 3), обычно называют режимом блокировки округлани.*/. Часто системы команд ЭВМ содержат специальные коман­ ды, которые устанавливают или блокируют округление результа­ н т арифметических операций. Поэтому результаты работы одной и гой же программы могут быть различными в зависимости от mm, какой режим округления был установлен в процессе ее работы. При программировании на языке ассемблера можно непосред«’ iHeiiiio использовать команды установки или блокировки округ­ ления и тем самым выбирать то или иное значение машинного 25
эпсилон. Однако при использовании алгоритмических языков (на­ пример, Фортрана) способ округления устанавливается трансля­ тором и программист практически не имеет возможности изменить этот способ. Часто транслятор задает режим отбрасывания, т. е. блокировки округления, а это означает, что результаты операций всегда берутся с недостатком. Этот факт необходимо иметь в виду при оценках влияния ошибок округления на промежуточ­ ные и конечные результаты. Д л я тс го чтобы узнать, какой режим округления используется в скомпилированных программах, достаточно вычислить значение машинного эпсилон по следующему простому алгоритму: РЛ - 1.0 10 E P S = P i R1 = R l /ВЕТЛ RP1 = 1.0-hRl I F ( R P 1 .GT. 1.0) GO TO 10 Если E P S = f},-/, то машина работает в режиме отбрасывания младших разрядов (установлен режим блокировки округления). Если EPS = jJ'~72, то машина работает в режиме округления, причем, вероятнее всего, в режиме правильного округления. Если E P S = a (здесь о — наименьшее положительное представимое число), то машина работает в режиме округления, отличном от правильного, суть которого состоит в том, что результаты опера­ ций чаще всего берутся с избытком. На ЭВМ БЭСМ-6 трансляторы с Фортрана устанавливают ре­ жим отбрасывания; округление реализовано таким образом, что E P S = a. На ЕС Э В М трансляторы с Фортрана устанавливают режим отбрасывания. На ЭВМ типа СМ-4 транслятор с Форт­ рана устанавливает режим, при котором E P S = {5, - */2. На М В К Э Л Ь Б Р У С трансляторы с Фортрана и с ЭЛЬ-76 устанавливают режим округления, при котором E P S = a. Указанные различия между этими машинами необходимо иметь в виду при сравнении результатов просчетов по одним и тем же программам. Таким образом, выполнение арифметических операций 4-, — , X , / на Э В М осуществляется так, что ( х обозначен точный ре­ зультат операции): а) если с г^|*]^А., то результат операции округляется; б) если |а' 1 < ( т, то в качестве результата берется нуль; дан­ ная ситуация называется образованием машинного нуля ( антипереполнением или потерей значимости) ; в) если |*|>Л, то вычисления прерываются по переполнению арифметического устройства. 6. Вычисление параметров машинной арифметики. Значения параметров арифметики, используемой на какой-либо машине, могут быть вычислены непосредственно на этой машине прог­ раммными средствами. Ниже приведены фрагменты программ на 26
т ы к е Фортран, предназначенные для вычисления некоторых нз них параметров. 6.1. Вычисление основания системы счисления машины. А л г о ­ ритм вычисления основания р системы счисления машины осноii.nr на использовании свойств распределения представимых на •той машине чисел вещественной оси. Прежде всего напомним, что число р' ( t — количество разря­ дов, отведенных под мантиссу в машинном слове) по основанию | (т. е. в р-ичном виде) представляется как 10 . . . 0. Поэтому рг, “ 7“ инляющееся целым числом, может быть представлено как нор­ мализованное число с плавающей точкой так, чтобы ее дробная часть состояла из единицы в старшем разряде, т. е. р* = р'+ , х0.1. Целые числа, меньшие р', в р-ичном виде содержат t или мень­ ше цифр, поэтому они могут быть представлены как нормализо­ ванные числа с плавающей точкой так, чтобы их дробные части обстояли из t или меньше цифр. Например, целое число р'— 1 в р-ичном представлении имеет виц d d ... d с t цифрами d, d — Р— 1, а будучи представленным с плавающей точкой, имеет пмд р' х .dd .. . d. Действительно, учитывая представление р* t плавающей точкой, правила машинного вычитания и нормалип.ции результата, получим | ( ' - 1 = р ' - ; 1 X 0 . 10 . . . 0 — 1= р'+| X 0.10 . . . 0 — р х 0 .10 . . . 0 = = р'+1 х 0.10 ... О— р'+| хО.О ... 01 = = р'~‘ х 0.0 d -- . . . d d = р' X O.d . . . d. , Целые числа, большие pf, но меньшие р/_и, в р-ичном виде требуют для своего представления уже t + \ цифру, причем <I ! 1) -я цифра должна быть всегда равна 0, поскольку мантисса «-одержит только t разрядов. Поэтому такие числа, если их предft свить с плавающей точкой, имеют дробные части, состоящие из / пли меньше цифр. Следующим за р' числом, которое может <нлть представлено в машине, является целое число, равное |»'11Х 0 .1 0 ... 01 (с t— 2 нулями) = 10 . .. 010, т. е. рг-гр. Вслед за ним идут числа р'* ' х 0.10 . . . 02......... р ' " х 0.10 . . . d . Р'-1’ 1 х 0.1 Г- 1 х 0.10 . . . 0d0, . . . , т. е. р' + 2р, . . . , p' + dp, р '+ Р2......... t Р' + dP2........ 27
где l ^ d < p — 1. Аналогичными рассуждениями можно показать, что следующими за р*+1 числами являются Р ' " + Р 2, р'+, + 2р2.........P'+' + dP2, Р 'м + Р3........... Необходимо подчеркнуть, что все числа системы F (р, t, L, U ), которые больше или равны pf_I, являются только целыми числа­ ми; другими словами, все числа системы F (р, /, L, U ) , которые больше или равны р*_|, хотя и представлены в форме с плаваю­ щей точкой, в действительности не содержат дробных частей. Таким образом, положительные целые числа, которые могут быть представлены с плавающей точкой на какой-либо машине с системой F (р, /, L, U ) y образуют следующую последовательность (здесь 1 ^ ^ < р — 1): U 2 .... р '- ‘ , p ' - ' + l , Р‘- ' + 2 .......... p '-' + d. р '- ' + Р, Р* 1+ Р + 1. • • • . Р* 1+ dP, . . . Р* 1+ Р2, . . . , Р*— 1, Р*, Р* + р, Р' + 2Р.........p' + dp, Р' + Р2...........P' + dp2...........Р ' - ' - Р , Р'+|, Р ':1+ Р 2, Р'+ ‘ + 2р2.........P '^ '+ d p 2, P, f l + P 3- ••• . PU( 1 - P “ '). Обратим внимание в выписанной последовательности на то обсто­ ятельство, что впервые расстояние между двумя соседними чис­ лами становится больше единицы при переходе от р* к следую­ щему, большему его числу и это расстояние равно искомому ос­ нованию р системы счисления, реализованной на исследуемой ма­ шине. Именно на данном обстоятельстве основан записанный на Фортране алгоритм вычисления р: INTEGER BETA А = 1.0 10 А = 2.0 * А IF ((А + 1.0) — A.EQ. 1.0) GO ТО 10 В = 1.0 20 В = 2.0 * В IF (А + B.EQ.A) GO ТО 20 BETA = (А + В) — А Значение переменной Л удваивается до тех пор, пока оно не достигнет той области представимых на машине чисел, в которой расстояния между последовательными числами с плавающей точ­ кой превосходят единицу. После этого вычисляется следующее большее А число, из которого затем вычитается А для получения значения р. Заметим, что значение А не обязательно должно быть равно р', хотя оно равно р', например, при р = 2 независимо от того, применяется правильное округление или округление путем отбра­ сывания младших разрядов. 28
Рассмотрим в качестве примера десятичную систему, в которой ■Фифметические операции выполняются с тремя знаками, т. е. • иг гему /\ в которой (3=10 и t = 3. Выписанная выше последова■гльность представимых в ней положительных целых чисел имеет ни д 1, 2, . . . . 999, 1000, 1010, 1020, 1030, 10000, 10 100.......... И /гой системе десятая итерация цикла, содержащего оператор • меткой 10 в фортранном фрагменте вычисления значения {3, дает значение А, равное 1020 (а не 1024, как это должно быть п идеальной арифметике или десятичной арифметике с количестним цифр, большим 3), после чего оператор 1F уже не передает \правление на метку 10, поскольку при А =1020 значение выра­ жения ( А Н-1.0)— А равно 0, а не 1. При В = 2 и В = 4 значение А -ЬВ =1020, но при В —8 значение Л I В = 1030, если применяется правильное округление. После м о ю оператор В Е Т А = ( А 4 - В ) — А = 1030— 1020=10 и даст иско­ мое значение (3. Если применяется округление, основанное на отбрасывании младших разрядов, т. е. при округлении числа бе­ рутся с недостатком, то и при В = 8 значение А + В = 1 0 2 0 , но при И 16 значение А + В = 1 0 3 0 и последний оператор фрагмента опять дает нам значение (3, равное 10. Отметим также, что в операторе BE TA = ( А + В ) — А »» левой части стоит целая переменная, а справа — вещественное иыражение, т. е. имеет место несоответствие фортранных типов и операторе присваивания. Такая запись допустима на практике, поскольку фортранные компиляторы выполняют необходимые преобразования типов значений. Однако в полном соответствии I- правилами стандарта языка Фортран этот оператор должен иметь вид BETA = I N T ( ( А + В ) — А ) Рассмотрим теперь другой пример реальной системы с плава­ ющей точкой F, используемой на ЭВМ БЭСМ-6, в которой [3= 2 и / 40. Последовательность представимых в ней положительных целых чисел имеет вид 1, 2, . . . , 239, 239+ 1, 239-F2, , 240— 1, 240,240+ 2, 240+ 4, . . . . 241— 2, 241, 2414-4, 241 В этом случае оператор I F ( ( А 4-1.0)— A.EQ.1) GO ТО 10 передает управление на оператор А = 2.0*А до тех пор, пока зна­ чение А не станет равным 240. Д алее результат вычисления вы­ ражения (А-н 1.0)— А зависит от способа округления. Если ариф­ метические операции выполняются в режиме отбрасывания млад29
т и х разрядов (режим блокировки округления), значение этого выражения равно ьулю: (240 + то при А = 210 1.0) — 240 = (241 X 0.10 .. . 0 {-2 X 0.10 . . . 0) — 240 = 40 40 = ( 2 « х о л о . . . о + 2 41 х о.о . . . o n — г ^ ^ г * 1 х о . ю . . . o i — 2* ° = — 40 *- -* 41 41 = (после округления) = 241 х 0.10 . .. 0 — 241 х 0.10 .. . 0 = 0. — у > 40 II ^ 40 Если включен режим округления, то при А = 240 значение выражения равно двум: этого (240-f* 1.0) — 240= 241 х 0.10 .. . 01— 240= 2 41 X 0.10 . . . 01 — ^ ^ 41 - 40 — 241 X 0.10 . . . 0 = 241 х 0.0 . . . 01 = 22 X 0.10 . .. 0 = 2. * ■» 40 ~~ ~ ■ ■< 40 ■« У. * 40 Таким образом, в любом случае при А = 240 управление не пере­ дается на оператор с меткой 10 и следующим выполняемым опе­ ратором станет В =1.0. При В = 2 значение А + В = 240+ 2 и управ­ ление не передается на оператор с меткой 20. Д алее вычисляется В Е Т А = ( А + В ) — А = (240+ 2) — 240= 2. Подчеркнем важность четкого указания порядка выполнения арифметических операций (поскольку в машинной арифметике нарушаются законы ассоциативности и дистрибутивности) на при­ мере вычисления выражения ( А + 1.0)— А при А = 240. Оказыва­ ется, что в рассматриваемой системе для этого значения А вы­ полняется неравенство ( А + 1 . 0 ) — А ^ А + (1.0— А ) . Действительно, как мы видели выше, выражение (240+ 1 ) — 240 равно либо 0, либо 2 в зависимости от способа округления. Если же скобки расставлены вторым способом, то 240-b (1 •0— 240) = 240-{- (2 х 0.10 . . . 0— 241 х 0.10 . . . 0) = 40 40 = 240+ (241 X 0.0 . . . 01 — 241 х 0.10 . . . 0) = 210— 241 х 0.01 . . . 1= 41 40 41 = 240— 240 X 0.1 . . . 1= 241 X ОЛО . . . 0 — 241 х 0.01 . . . 1= 40 40 41 = 2 х 0.1 = 1.0. Поэтому если в приведенном выше фортранном фрагменте опе­ ратор 30
IF ((A - f 1.0)— A.EQ. 1.0) GO TO 10 •имспить на оператор IF ( Л + (1.0— A) .EQ.1.0) GO TO 10 i'» вычисленное значение А равно 24!. Вследствие этого значение Л 1 В ^ А уже при В = 4, а не при В = 2, как это было для первого ■писоба расстановки скобок, т. е. значение р оказывается равным 1, а не 2. 6.2. Вычисление количества разрядов t мантиссы. Алгоритм иычпсления количества разрядов t, отведенных под мантиссу и машинном слове, может быть представлен следующим прог­ раммным фрагментом на языке Фортран (здесь B E T A — осном.шие системы счисления машины): INTEGER Т Т = 0 А = 1.0 10 Т = Т + 1 А = А * BETA IF ( ( А + Г.0) — А.Е Q.1.0) GO ТО 10 В качестве примера рассмотрим результат работы данного фрагмента для З В М Б ЭСМ -S, у которой /= 40 и р = 2. В момент первого исполнения оператора IF Т = 1 и А = 2. Тогда [Л 1-1.0)— Л = (22 X ОЛО . . . 0 + 21 X ОЛО . . . 0)— 22 X ОЛО . . . 0 = t i — (22 х ОЛО ... 0 + 22 х 0.010 .. . 0)— 22 х ОЛО .. . 0= = 22 х ОЛЮ . . . 0 — 22 х ОЛО . . . 0 = 22 X 0.010 . . . 0 = = 2* X ОЛО .. . 0 = 1 . 0 . В результате управление передастся на оператор с меткой 10, после чего значение Т станет равным 2. а значение А — равным ‘Лч Управление оператору с меткой 10 будет передаваться до тех пир, пока значение Т не станет равным 40, а значение А — рав­ ным 240. В этом случае (.1 ]-1.0)— А = ( 2 41 х ОЛО . . . 0Л-21 х 0.10 . . . 0) — 241 х ОЛО . . . 0 = - —- ----- • ’---«. t ^ t t = (241 х 0.10 . . . 0 + 241 х 0.0 . . . 01) — 2“ х 0.10 . . . 0 = > S, - ■ ^ - i+ i < I = 241 х 0.10 . . . 01 — 211 х 0.10 . . . 0. /+1 t 3i!
Если установлен режим блокировки округления, то 241 х 0.10 . . . 0 — 241 х 0.10 . . . 0 = 0. - * - ^ t / Если же установлен режим округления, то 241 х 0.10 . . . 01— 241 х ОЛО .. . 0 = 241 х 0.0 .. . 01 = t t t = 22 X ОЛО . . . 0 = 2 . - Таким образом, при обоих режимах вычислений значение t для Э ВМ БЭСМ-6 в результате работы данного программного фраг­ мента оказывается равным 40. 6.3. Вычисление значения машинного эпсилон. Понятие ма­ шинного эпсилон введено в п. 3 и подробно рассмотрено в п. 5, где приведен также программный фрагмент вычисления его зна­ чения. 6.4. Вычисление некоторых других параметров машинной ариф­ метики. Алгоритм вычисления параметров L, U (пределов изме­ нения значений показателей степеней чисел с плавающей точкой), I E X P (количества разрядов, отведенных под показатель степени числа с плавающей точкой), а (наименьшего положительного представимого на машине числа с плавающей точкой) и К (на­ ибольшего представимого числа) достаточно сложен. Ограничим­ ся тем, что приведем здесь программный фрагмент вычисления этих параметров на языке Фортран с отдельными комментари­ ями: С С С С С С 100 INTEGER U REAL LAM BD A ВЫЧИСЛЕНИЕ IEXP, L, SIGMA I = 0 К = 1 Z = 1.0/FLOAT ( B E T A ) НАЧАЛО ЦИ КЛА ВЫ ЧИСЛЕНИЯ НАИБОЛЬШ ИХ ЗНАЧЕНИИ I и К = 2**1, П Р И К О Т О Р Ы Х В Ы Ч И С Л Е Н И Е ЗНАЧЕНИЯ В Ы Р А Ж Е Н И Я ( 1 / В Е Т А ) * * ( 2 * * ( 1 ) ) НЕ П Р И В О Д И Т К О БРАЗО ВАН И Ю М А Ш И Н Н О Г О НУЛЯ- Ц И К Л ЗАКАНЧИВАЕТСЯ, ЕСЛИ ПРОИЗОШ ЛО ОБРАЗОВАНИЕ МАШ ИННОГО НУЛЯ У = Z Z = Y*Y А — Z*1 0 I F ( ( ( A + A ).E Q . 0,0).OR. ( A B S ( Z ) I = 1+1 32 .GE. Y ) ) GO TO 110
Iш <; 120 <: 130 <; 110 К = 2* к GO ТО 100 IE X P = 1+ 1 MX = 2* К Н А Ч А Л О Ц И К Л А В Ы Ч И С Л Е Н И Я L И SIG M A S IG M A = Y Y = Y/FLOAT ( B E T A ) A = Y* 1.0 В Ы Х О Д ИЗ Ц И К Л А , Е С Л И И М Е Е Т М ЕСТО ОБРАЗОВАНИЕ М АШ ИННОГО Н УЛЯ I F ( ( (А + A ).E Q . 0.0) . O R . ( A B S ( Y ) .GE. S I G M A ) ) 130 К = К+1 GO ТО 120 L = —К ВЫ ЧИСЛЕНИЕ и И LAMBDA IF (M X GT К + К — 3) GO ТО НО M X = 2 *М Х IE X P = IE X P + 1 U = MX + L L A M B D A = B E T A * * U * (1 0— B E T A * * ( — T ) ) GO Т О Приведенным программный фрагмент не учитывает особенносген машин с десятичным основанием системы счисления. Кроме Iого, вычисление X не по формуле >. = ( + ( 1— (J- *) является доволь­ но сложным и требует учитывания таких особенностей некоторых машин, как неявный первый разряд в представлении нормализо­ ванных чисел (например, в машинах серии С М Э В М ). Рассмотренные программные фрагменты не всегда применимы для правильного вычисления машинных параметров. Например, для машин PDP-11/70, работающих под управлением операцион­ ной системы ЮН И КС, программный фрагмент для вычисления значения t даст /= 5б, а не /= 24. Это происходит потому, что выражение ( А + 1.0) — А вычисляется на регистрах удвоенной точ­ ности и значение t получается для представления чисел с удвоен­ ной точностью. Если оператор IF ( ( А + 1.0)— A.EQ.1.0) GO ТО 10 заменить на операторы A P I = А+1.0 IF ( A P I — A.EQ.1.0) GO TO 10 io значение А + 1 . 0 приводится к одинарной точности при засылке в память и t — 24 определяется правильно. Однако такая уловка может быть «исправлена» оптимизиру­ ющим транслятором. Поэтому наиболее надежный способ состоит в применении оператора I F ( C O P Y ( A + 1.0)— A.EQ.1.0) GO ТО 10 2 Зак. 217 33
где подпрограмма-функция C O P Y имеет вид F U N C T I O N C O P Y (X ) COPY = X RETURN END 7. Контроль ошибок округления. Д о сих пор мы рассматри­ вали ошибку округления, связанную с выполнением на машине единственной арифметической операции, хотя в реальных вычис­ лениях выполняется большое количество таких операций. Теперь необходимо рассмотреть вопрос о том, как эти ошибки распрост­ раняются в процессе вычислений и как они влияют на оконча­ тельный результат. Такой «анализ ошибок округлений» образует специальный раздел численного анализа и должен выполняться при разработке и исследовании свойств численных методов, что представляет собой в большинстве случаев трудную задачу, тре­ бующую выполнения кропотливых и утомительных выкладок. Здесь же мы будем придерживаться более прагматического и простого подхода, состоящего в том, чтобы пытаться минимизи­ ровать ошибку в каждой операции, поскольку тогда в процессе дальнейших вычислений будет распространяться ошибка меньшей величины, а это создаст предпосылки для получения более точных результатов. Существует несколько способов минимизации ошибок округле­ ния в некоторой последовательности операций пли в одной опе­ рации. Эти способы можно разбить на три категории: с приме­ нением аппаратных средств, заложенных в архитектуре вычисли­ тельной машины; с применением программных средств, встроен­ ных в компиляторы с алгоритмических языков, и разнообразные приемы «грамотного» программирования. Рассмотрим теперь по одному примеру, иллюстрирующему каждую категорию, взяв за основу гипотетическую плавающую систему F (10,4 — 50, 50), в которой округление осуществляется отбрасыванием младших раз­ рядов. 7.1. Аппаратные средства. Предположим, что необходимо вы­ честь число 0.5678 из числа 12.34. Прежде чем непосредственно выполнить операцию вычитания, нужно выровнять порядки ма­ шинных представлений этих чисел. При этом младшие значащие цифры меньшего числа теряются. Поэтому в арифметических устройствах машин предусмотрена одна или несколько запасных цифр (выше мы уже сталкивались с такой конструктивной осо­ бенностью машин, когда рассматривали регистр младших разря­ дов сумматора), для того чтобы предотвратить ненужную потерю точности в таких ситуациях. Например, без запасной цифры имеем 0.1234 X 102— 0.0056 X 102= 0.1178 X 102. Если же запасная цифра предусмотрена, то 0.12340 X 102— 0.00567 X 102= 0.11773Х 102. 34
lotмолний результат ближе к точному, который равен 11.7722. I |о псркивание цифры 3 означает, что она отбрасывается при он hi.'Iкс результата вычитания в память. ‘ первого взгляда может показаться, что излишне придавать ьо.и.шое значение различию полученных двух результатов в посн Iнон цифре. Однако в больших вычислениях, состоящих из миллионов операций, всегда существует потенциальная возможi k i . i i , значительного накопления ошибок округления. Поэтому и.|/ино быть уверенным, что результат каждой отдельной опера­ ции получен как можно более точным. По этой причине наличие i.'iIKirnых цифр в арифметических устройствах рассматривается и важная архитектурная характеристика машин, предназначен­ ии \ для научно-технических расчетов. / '2. Программные средства. В научно-технических расчетах •i.u-io встречается выражение вида I а + Ьс. *и*мачно эту комбинацию называют «операция с плавающей точ­ ит , пли флоп ( о т английского flop — floating-point operation). 1>n:i является типичной, например, для задач линейной алгебры. Iinвчале выполняется операция умножения, результат которой фм|1мпруется с удвоенной точностью, т. е. имеет либо 21— 1, либо 7 1чгфр. Перед выполнением операции сложения этот результат "i.|i\ I ляется до t цифр. <)днако может быть достигнута большая точность, если выпол­ ни и . сложение до округления. Например, пусть a = 0.1462, Ь = 123.4, с = 0.5678 и имеется одна запасная цифра в сумматоре. 1<н in в случае предварительного округления результата умно^гппи Ьс-Ь д = 0.70060 X 102-г 0.00146 X 102= 0.70206 X Ю2. I г.!и же округления не производить, то Ьс-\~а = 0.7006652 X 102+ 0.00146 X 102= 0.70212 X 102. Нискольку рассмотренная операция встречается весьма часто на практике, то многие компиляторы выделяют ее при анализе .•рпфметических выражений и генерируют соответствующие ма­ шинные команды, которые осуществляют сложение с использова­ нием неокругленного результата умножения. Такого рода особейIIIu I I компиляторов П О М О Г Э Ю Т умеНЬШЭТЬ влияние ошибок округII III. я па точность конечных результатов. / 7. «Грамотное» программирование. Ошибки округления, ко|"|ч.1с сами по себе кажутся незначительными, могут оказать су­ ш и iвенное влияние на конечный результат, если для его полу­ чении выполняется большое количество арифметических операций. II" лому следует стараться минимизировать ошибки в каждой •тгрнцни или в последовательности операций, уменьшая тем са­ мим нх распространение и воздействие на конечный результат. Г 35
Рассмотрим, как можно это сделать в случае выполнения простой операции вычисления среднего арифметического (а + 6)/2 двух чисел а и 6, т. е. операции вычисления очередного приближения метода половинного деления при нахождении корня нелинейного уравнения на отрезке [а, 6]. Возможны два способа выполнения этой операции: * — Я. с = а - \ I-----— /л\ (4) Очевидно, что формула (3) требует на одну операцию сложения меньше, чем формула (4), но с точки зрения точности не всегда лучше. Действительно, пусть вычисления выполняются в деся­ тичной арифметике с тремя цифрами и с округлением для а = = 0.596 и 6= 0.600. Тогда с = (0.596 0.600)/2= 1.20/2=0.600, хотя правильное значение с равно 0.598. Если же проводить вы­ числения по формуле (4), то с = 0 . 5 9 6 +- (0.600— 0.596)/2= 0 . 5 9 6 -j- 0.004/2 = 0.598. Отметим, что в данном примере, для которого формула (4) пред­ почтительнее, числа а и 6 имеют одинаковые знаки. Рассмотрим другой пример для десятичной четырехзначной арифметики, где вместо операции округления применяется отбра­ сывание лишних разрядов. Пусть а = — 3.483, 6= 8.765. Тогда по формуле (3) с = ( — 3.483 + что представляет собой формуле (4) дают 8.765)/2=5.282/2=2.641, точный результат. Вычисления же по с = — 3.483-f (8.765 + 3.483) /2 = - 3.483+ 12.24/2 = — — 3.483 + 6.120 = 2.637. Даже если здесь выполнить округление, то все равно результат, вычисленный по формуле (4), отличался бы от точного, поскольку значение с равнялось бы 2.642. Следовательно, в этом примере, где числа а и 6 имеют разные знаки, формула (3) оказалась предпочтительнее. Отсюда можно сделать вывод, что для достижения наивысшей точности надо применять формулы (3), (4) в зависимости от зна­ ков а и 6. Поэтому наилучшую «ф орм улу» для вычисления сред­ него арифметического а и 6 можно представить следующим обра­ зом: 36
«тли (sing(a)^sing(b)), то c = ( a + b ) / 2, иначе с = а + ( b— а)/ 2. Рассмотренный пример показывает, какие меры предосторож>•<>« mi следует применять при реализации простейших операций и «щ. иыбор правильных формул может улучшить точность прот­ ри я мм. Игрнемея к методу половинного деления. Для него предпочти*# и нее применение формулы (4), поскольку в конечном счете 1 \пает такой момент, когда знаки приближений ак и Ь к к кор­ им» сIзнобятся одинаковыми вплоть до окончания итерационного прщисса (исключением является случай, когда искомый корень н•ии'н пулю). До этого момента, когда точность формулы (3) имIнс, нет необходимости минимизировать ошибки округления, •нк кильку их влияние незначительно по сравнению с общей ошиб­ ки! к текущих приближениях к корню. Рассмотренный способ уточнения вычислений средних арифмеmi 'icckiix чисел, по крайней мере для метода половинного деления, м*т показаться надуманным, поскольку, как правило, вовсе не му кна столь высокая точность, а данный метод является само•-п| авляющимся (т. е. отдельная ошибка в вычислениях не вли• на результат, если она не выводит за пределы отрезка |н. 1>| и точность не слишком высока, потому что ошибочное •ii.i'irime можно считать за новое приближение; возможно возрас<■ I .минь количество итераций). <>дмако это не так. Формулу (4) следует применять в прогI*птах, которые могут быть потенциально использованы для нинпслення корней с максимально возможной точностью. Кроме mm, па машинах, в которых вместо округления осуществляется щорасыванне лишних разрядов, формула (3) может вывести за и|и- ц‘Лы текущего подотрезка (например, в десятичной трехзнач||"н арифметике для д = 0.982 и Ь — 0.987 имеем с = ( а - \ Ь )/2 = 1(1982+0.987)/2= 1.96/2 = 0.980). II наконец, лучше придержии.иия общего правила, согласно которому новое приближение . и*ауст вычислять прибавлением полученной поправки к текуще­ му приближению. N. Практический критерий контроля точности вычислений. !• inтросу о выборе практических критериев контроля точности m i.г при проведении простейших вычислений следует подходить ■ трожностью. В качестве примера рассмотрим задачу вычиси-иия корня нелинейного уравнения /(•*) = о •«•porno известным методом половинного деления отрезка, на кони.|\ которого функция f ( х) имеет разные знаки. В качестве крите­ рия окончания счета выберем комбинированный критерий, объеди­ няющий контроль по абсолютной ел и относительной е о иогрешн.м I я м : |Хп-\-\ Хп | + Ко JХп |, 37
где х п+\ и Хп — два последовательных приближения к искомому корню. В пользу этого критерия можно высказать следующие со­ ображения. Если задана только допустимая абсолютная погрешность гл (т. е. ео = 0), то тем самым фиксируется разряд приближенного значения корня, соответствующий требуемой самой младшей вер­ ной цифре этого значения. Однако если задать абсолютную по­ грешность без учета величины порядка искомого корня и длины разрядной сетки машины, то контроль точности вычислений по абсолютной погрешности может оказаться невозможным. Напри­ мер, если вычисления проводятся с семью десятичными разря­ дами и искомый корень равен 55555.55, то задание абсолютной погрешности, равной 10~4, является бессмысленным и приведет к зацикливанию итерационного процесса. Поэтому если мы хотим, чтобы четвертый разряд приближенного значения корня соответ­ ствовал самой младшей верной цифре, то в данном примере мы должны положить абсолютную погрешность равной 10. Это без учета величины порядка искомого корня и количества разрядов, с которыми проводятся вычисления, может показаться по крайней мере нелепым, поскольку обычно абсолютная погрешность исполь­ зуется для задания количества верных цифр после точки, отделя­ ющей целую часть от дробной. Таким образом, чтобы разумно задать абсолютную погрешность, нужно предварительно знать величину порядка искомого решения задачи (а это, конечно, не всегда возможно) и учитывать величину начального приближения. Если задана только относительная погрешность г о (г. е. г\ = = 0), то тем самым фиксируется общее требуемое количество верных цифр приближенного значения корня. Однако если иско­ мый корень мал и значение х п становится слишком близким к нулю, то даже при разумном задании го приведенное выше неравенство может никогда не выполняться или при вычислении го\хп\ может произойти образование машинного нуля (потеря значимости). Поясним, почему это неравенство может никогда не выполняться, даже если в машинном представлении произве­ дение ео|*я| не равно нулю и итерационный процесс гарантиро­ ванно сходится (как это имеет место в методе половинного де­ ления). Напомним фундаментальное свойство систем представления на машинах чисел с плавающей точкой: расстояние между числом х и соседним по отношению к нему числом не меньше macheps- |л:|/р и не больше macheps-|лг|, если само число х или соседнее число не равны пулю. Здесь р — основание системы счисления машины, а машинно-зависимый параметр macheps, на­ зываемый машинным эпсилон, характеризует относительную точ­ ность арифметики для чисел с плавающей точкой. Таким образом, если ео\хп\ окажется меньше macheps- \хп\/р, то неравенство для \Xn+i— х п\ при ед = 0 никогда не выполнится, а основанный на нем итерационный процесс никогда не завершится. 38
I ели мы хотим, чтобы лгп+i и стали максимально близкими щ.\! другу (соседними числами), то критерий контроля точности к* I/кон быть таким: \х п+\— х п |^m acheps Хп •max (|х п+ [ |, |х п |). 1«..ik 'iiio, данный критерий неприменим для небольшой окрестносII) нуля, в которой происходит образование машинного нуля при иммислении правой части. Отметим, что расстояние от нуля до нр.того (левого) соседнего числа не связано с параметром •luclicps и представляет собой самостоятельный машиино-зависиЧ1.Н1 параметр а. Глким образом, применение исследуемого неравенства позво­ лил избегать тех тупиковых ситуаций, которые могут возникнуть, I*..1 и задавать только абсолютную или только относительную погI«inпости, и дает возможность задавать требуемое количество •и рных знаков в приближенном решении, не заботясь о величине ип порядка. н. Программная реализация простейших вычислений. Выше мы р.и смотрели способы уменьшения влияния ошибок округления, нмирме могут возникнуть на любом зтапе вычислений. Однако .Iк11о способы недостаточны, для того чтобы гарантировать точН'.с.ь окончательных результатов. Ниже приведены примеры, илIкм*11шругощие необходимость «грамотных» программных реали|.им:Г:, казалось бы, самых простейших вычислений. Р е ш е н и е к в а д р а т н ы х у р а в н е н и й . Рассмотрим квадратное \ ршиенне а х 1 -\ -Ь х - \ - с ~ 0 (ц^=0). I'c.piiii этого уравнения определяются формулами — Ь 4- У Ь2 — 4а с — Ь — 1/ Ь2 — 4ас Предположим, что вычиcлeшiя выполняются в системе F (10, 4, 50) с одной запасной цифрой и с отбрасыванием младших р. iIрядов. Пусть далее а — 1, Ь — — 320, с=16. Для изображения 'инч’л из F удобно использовать обычный фортранный формат £, I с. ± . d } d 2d zd ^ E e t где d i — цифры числа из F, а е — его поряс. к. Например, число — 320 = — .320ОХ Ю 3^/7 в формате Е имеет иид .3200E3. Вычисления по формулам дадут следующие значе­ ния для X] и х 2: . 3200£3 + ] / ‘ -1024£6 — .6400£2 . 320O E3 -Ь .3 1 9 8 £ 3 .2000ЕI .2000Е1 6398£3 2000ЁГ = .3199£3 = 319.9, 39
X* = 3200Я З — . 20О0Е0 _3198E 3 .2000Е1 .2003Е 1 = .1000Я0=0.1. Подчеркиванием выделены первые неверные цифры, полученные вследствие ошибок округления. Правильные значения корней Xi и х2 с шестью значащими цифрами равны ^ = 319.950 и *2= 0.0500078. Следовательно, непосредственные вычисления по формулам дали хороший результат для х х и плохой для х2, поскольку относитель­ ная ошибка в *2 оказалась равной 100%. Легко понять, почему это произошло. В числителе дроби для *2 вычитаются два б л и з к и х числа 320.0 и 319.8. Поэтому при вы­ читании старшие значащие цифры взаимно уничтожаются, а зна­ чение результата определяют последние цифры этих чисел. Одна­ ко последняя цифра числа 319.8 содержит ошибку округления. Вследствие этого результат операции вычитания бесполезен, по­ скольку его первая значащая цифра содержит ошибку. Рассмот­ ренная ситуация носит название к а т а с т р о ф и ч е с к о й п о т е р и т о ч н о с ­ ти, или к а т а с т р о ф и ч е с к о й п о т е р и з н а ч а щ и х ц и ф р . Она имеет мес­ то в тех случаях, когда вычитаются числа, имеющие одинаковые знаки и приблизительно равные по абсолютной величине, что при­ водит к увеличению уровня ошибок в вычислениях. Конечно, можно избежать катастрофической потери значащих цифр, если правильно организовать вычисления. В случае квад­ ратного уравнения вместо непосредственных вычислений по при­ веденным формулам следует применить следующие формулы: *1 = — b — sign ( b ) у ' Ь- — 4 ас Х2 2а — ахх , где sin g ( b ) означает знак числа Ь. В нашем примере имеем (при прежнем значении Xi) X1_ _ 1160С£г_ _ 5002Е— 1=0.05002. .3199E3 — - Очевидно, что, организовав «грамотно» вычисления, мы избежали вычитания чисел с одинаковыми знаками, что позволяет избежать значительного возрастания уровня ошибок округления. 9.2. В ы ч и с л е н и е э к с п о н е н ц и а л ь н о й ф у н к ц и и . Пусть требуется построить алгоритм вычисления значений экспоненциальной функ­ ции е х при любом х. Поскольку данная функция часто встречает­ ся в вычислениях, важно уметь вычислять ее максимально точно. Предположим, что с этой целью мы решили использовать разло­ жение ех в ряд ех= \ + х + 40 21 3! + — *
.ni|u,in сходится для любых вещественных или комплексных х. I « пттненно, что в реальных расчетах требуется обрезать ряд на §*ы!м-либо его члене, а затем уже вычислять сумму полученного >.ц||«*|||1ого ряда. Нужное количество членов ряда зависит от ве/|и* 1н11ы х и требуемой точности. Предположим, что требуется вычислить значение е~ъъ в сисм*мг с плавающей точкой F ( 10, 5, — 50, 50). Имеем е—5'5= 1.0000 — 5.5000 + 15.125 — 27.730 + 38.129 — 41.942 + 38.446 — 30.208 + 20.768 — 12.692 + 6.9803 — 3.4902 + 1.5997 + 0.0026363. I *ил был обрезан на 25-м члене, поскольку последующие члены in влияют на его сумму в системе F. Следовательно, мы получили максимально точный результат в системе +, основываясь иа |Пм.‘Н)жении в ряд функции ех. Однако точный результат равен 1ММПН677. Мы опять имеем катастрофическую потерю значащих цифр. ' мцество дела видно из анализа значений членов ряда: младИ1.1И значащая цифра каждого из членов, больших 10 по абсолюг..... величине, влияет на старшую значащую цифру результата. Нискольку члены ряда вычислены приближенно, то это и объяс... I ошибку в результате. Чтобы избежать данной ситуации, мычнслснпя можно выполнять с запасной цифрой. Однако лучший .п.чмО состоит в вычислении о55 с последующим вычислением •«• • нб(>атного значения: е~5->= 1/е5Ъ= 1/ (1 + 5.5 + 15Л 25 + . . . ) =0.0040865. Данный пример носит чисто иллюстративный характер. Ско...... в сходимости ряда очень мала, вследствие чего необходимо йрам. большое количество его членов для достижения приемлемой ""пин ги. На практике используются для вычисления ех гораздо г*., 1. г дефективные алгоритмы. 41
Рассмотренные выше два примера показывают, в какой степе­ ни численный метод может иногда зависеть от небольших измене­ ний в начальных данных задачи. Например, пусть в квадратном уравнении коэффициент b = — 320.0 изменен на — 320.1. Тогда ис­ ходная формула для х2 даст значение 0.05. Следовательно, изме­ нение только на 0,03% одного коэффициента дает изменение на 200% вычисленного результата. (Заметим, что точное значение корня изменится на 0.03% и станет равным 0.0499922.) Эта фор­ мула чувствительна только для коэффициентов, удовлетворяющих неравенствам Ь < 0 и Ь2^$>4ас; в других же случаях она вполне приемлема. Следовательно, численный метод может быть в одних случаях чувствителен к небольшим изменениям в исходных дан­ ных задачи, а в других — нет. Поскольку ошибки округления могут рассматриваться как небольшие изменения в исходных дан­ ных, то очень опасно применять метод в тех случаях, когда он чувствителен к такого рода изменениям. Следовательно, в этих ситуациях необходимо искать альтернативные методы. 9.3. Вычисление корней полиномов. Предыдущие примеры по­ казывают, что численный метод может быть очень чувствителен к небольшим изменениям (возмущениям) в исходных данных за­ дачи. Теперь покажем, что существуют задачи, которые сами по себе чувствительны к такого рода возмущениям. Классическим примером является вычисление корней полинома р ( х ) = ( х — 1) ( х — 2) . . . ( х — 20) = х 20— 210х 19+ . .. с хорошо отделенными корнями 1, 2, . . . , 20. Предположим, что коэффициент при х 19 слегка возмущен и равен — ( 2 I 0+ 2-23). Но^ вый полином незначительно отличается от полинома р ( х ) , но его корни уже существенно отличаются от корней полинома р ( х ), Приведем их значения с пятью знаками после десятичной точки: 1.00000, 2.00000, 3.00000, 4.00000, 5.00000, 6.00001, 6.99970, 8.00727, 8.91725, 10.09527 ±0.64350 /, 11.79363 ±1.65232/, 13.99236 ±2.51883/, 16.73074 ±2.81262/, 19.50244 ±1.94033/, 20.84691. Очевидно, что очень небольшое возмущение данного полинома р ( х ) привело к значительному изменению корней, некоторые из которых стали даже комплексными, чего не было для полинома из п. 9.1. Подчеркнем существенное различие между этими двумя полиномами. В первом случае метод вычисления корней квадрат* ного уравнения оказался весьма чувствительным к небольшим возмущениям в коэффициентах и требовалось только переходить к альтернативному методу, когда это было необходимо. В случае же полинома р ( х ) чувствительна сама задача. По­ этому независимо от метода поиска корней ошибки округления 42
M)iun имыю внесут возмущения, которые непременно приведут к Н1.1МЦuvimium изменениям в корнях. Когда задача чувствитель­ на щ нряд ли можно сделать что-нибудь другое, кроме попытки н«м иIифпцировать ее чувствительность и пересмотреть решаемую н|н.п ц - м у в целом, чтобы избежать решения чувствительных за414 I М|1<>рят, что полином плохо обусловлен, если небольшие изме•••*1111vi к его коэффициентах приводят к большим изменениям в • •■. корнях. р ( х ) служит примером плохо обусловленных полином >и однако не все его корни сильно изменились. Первые несколь♦ ....»pueii у р { х ) не так чувствительны к возмущениям в коэффи...... .. и изменения в них столь малы, что их невозможно за•"•iiiii,, если выписывать значения с пятью цифрами. Нискольку корни различны в поведении, то обычно говорят об * ••!/■ чшленности каждого корня в отдельности, а не всего полим>*« I п целом. Обозначим г/ простой корень какого-либо полинон,| А*( д ) степени п. Тогда число обусловленности cond(/*y) корня • миределяется так: п У l(2i + l)a„_Ir;.| 1= 1 cond (г j) \П* (г/) | 4 i, im:ui видно, что число обусловленности корня г, будет боль...... если R ' ( r j ) мало, т. е. когда полином # ( х ) имеет несколько • »||нн>ii, близких к г /. Следовательно, обусловленность корня заип. in от того, насколько он хорошо отделен от других корней, •■■п'лко полином р ( х ) = (х— 1) ( х — 2) . . . ( х — 20) имеет хорошо разп iniiihie корни, хотя мы знаем, что его корни, большие по абсо..... ими величине, плохо обусловлены (например, сопс1( г и ) « * l 1Г>х1015). ‘ /другой стороны, полином q ( x ) = (x — 2 !) ( х — 2 2) . . . (х —2 20) ни. ч I корни, которые трудно назвать хорошо разделенными, од­ ин км числа обусловленности всех этих корней не превосходят WM |()\ Поэтому при анализе чувствительности корней полнно•*-" « и-дует говорить не об абсолютной, а об относительной их г • 1««• к* ипости. Меру относительной разделепности корней можно ир- и‘.-шть, например, следующим образом: 19 I — ri I H'mI m.n-iiiiie значения s указывают на «п л ох ую » относительную ре чг.имшость корней. Д л я полиномов р ( х ) и q (х ) имеем соотн.»•. Iit4 *iIпо s « 8 . 2 x l 0 _18 и s = l . Поэтому, хотя корни полинома 43
q (x) близки по абсолютной величине, они хорошо разделены в относительном смысле, и наоборот для полинома р ( х ) . 9.4. Решение систем линейных алгебраических уравнений. Другим примером чувствительной задачи служит система линей­ ных алгебраических уравнений: 11х1 + 1 0 х 2+ \2х1+ 14*х+ 4xs= l , 11х2— 1 3 *з= 1» 13*2— 66* 3= 1. Точным решением системы являются * i = l , х 2—— 1, *з = 0. Пусть элементы вектора правой части системы возмущены следующим образом: (1.001, 0.999, 1.001). Тогда решение системы, выписан­ ное с тремя цифрами, имеет вид х х= — 0.683, *2= 0.843, х 3= 0.006. Таким образом, возмущение правой части системы на 0.1% вызвало возмущение в 175% в наибольших по абсолютной величине элементах вектора решения. 9.5. Решение разностных уравнений. Рассмотрим пример, ил­ люстрирующий явление, которое носит название неустойчивости. Пусть требуется решать линейные разностные уравнения, т. е. вы­ числять последовательности чисел ип, 0, 1, . . . , N, связанных линейными соотношениями, которые определяют значение ип че­ рез предыдущие члены последовательности с меньшими номера­ ми. Важное приложение разностных уравнений — численное ре­ шение обыкновенных дифференциальных уравнений. Пусть даны два разностных уравнения: Un —4Un—\ ЗМ/г— 2 0.2, un= - j ( 3 u n- i — ц„_2+ 0.1), (5) (6) Если известны начальные значения ио и щ, то каждое из приве­ денных уравнений определяет формулу, по которой легко вычис­ ляются значения и2, м3 и т. д. Отметим, что эти уравнения представляют собой возможные способы вычисления численного решения в точках x n—nl 10, я== 0, 1, . . . , N, обыкновенного дифференциального уравнения У '= 1, */(0)=0, аналитическим решением которого является функция у(х) =х. Численное решение обыкновенного дифференциального уравне­ ния определяется как последовательность точек (*„, « „ ) , « = 0, 1,...,iV, где каждое ип является приближением к точному значе­ нию у п - у ( Х п ) решения в точке х п. В данном случае разностные уравнения (5) и ( 6) должны давать последовательности ип^ У п ~ -=х„ = 0. 1п. 44
I гли взять точные начальные значения и0= у 0—0 и « i = * / i = 0. 1, каждое из этих разностных уравнений дает точные значения uni цдовательности. Пусть, однако, начальное значение и х слегка 'иимущено: « =0.1001. Тогда вычисления по разностным уравне­ нии м дают результаты, приведенные в таблице. mi п 0 1 2 3 4 5 6 7 8 9 10 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 ип по (5) ип по (6) 0.0 0.1001 0.2004 0.3013 0.4040 0.5121 0.6364 0.8039 1.128 1.884 3.952 0.0 0.1001 0.20015 0.300175 0.4001875 0.50019375 1.0002 *»ии>да видно, что для первого разностного уравнения результа­ нт неудовлетворительны, тогда как результаты, вычисленные по и11>|м)му разностному уравнению, вполне приемлемы. I ’посмотренными выше источниками ошибок нельзя объяснить и и>\не результаты в первом случае, поскольку вычисления выпол­ ни inch точно, так что не было ни ошибок округлений, ни потери •■мчащих цифр. Поэтому следует предположить, что рост ошибок HMi i место целиком из-за распространения начальной ошибки п П(Н)| в значении « ь 11очему же тогда уравнение (5) увеличивает ошибки, а урав­ нение ( 6) нет? Д л я того чтобы ответить на этот вопрос, рассмот­ рим общее решение ип разностного уравнения (5): ип= 0.\п + с 1+ с2-3п, (7) • и постоянные с х и с2 однозначно определяются начальными значгпмими «о и щ. При «о = 0 и «1 = 1.0001 имеем следующую систем\ v i я определения с х и с2: С| + с2= 0.0, с 1Н- Зс2— 0.0001. 1и пода получим с х—— с2= — 0.00005. 11 ) соответствует точному значению Первый член 0.1« в формуле у ( х п). Поэтому два других •.м аемых образуют ошибку еп в «„ : еп= Ип— Уп = Ci + с2•3'1= 0.00005 (Зл— 1). (Мсюда видно, что быстрое распространение начальной ошибки происходит из-за множителя Зп. 45
Д л я уравнения ( 6) общее решение имеет вид tin = 0.1 tl Ci “h £*2•0.5rt. Здесь — c2=0.0002 при ы0= 0.0 и «1 = 1.0001. Однако в данном случае, хотя ошибка и содержит экспоненциальный множитель, значение этого множителя стремится к нулю с увеличением п. Поэтому ошибка еп в ип приближается с увеличением п к констан­ те С\. Данный пример демонстрирует различие между неустойчивой разностной формулой (5) и устойчивой разностной формулой ( 6). В первом случае ошибки растут в процессе вычислений, во вто­ ром случае они подавляются. 10. Другие примеры, иллюстрирующие влияние ошибок ок­ руглений. Рассмотрим еще несколько примеров, которые демон­ стрируют, как могут распространяться ошибки округлений при выполнении достаточно простых вычислений. 10.1. Пример неустойчивого алгоритма. Пусть требуется вычис­ лить интегралы Е п = J xnex~ ldx1 п = о 1, 2, . . . . Имеет место рекуррентное соотношение 1 E n= x nex~ l j i — \ nxn- lex~ ]d x = 1— пЕп_ ь о E^lfe. 2, 3, . . . , Если выполнить вычисления по этому соотношению при р=10 и f = 6, то для л = 1, 2, . . . , 9 имеем Я, = 0.367879, Я 6== 0.127120, Я, = 0.264242, Я, = 0.110160, Яа Я 8= 0.118720, 0.207274, Я , = 0.170904, Я , ==— 0.0684800. Я 5= 0.145480, Единственная ошибка округления, допущенная при вычислении £ i = l/e, привела к тому, что значение Е 9 оказалось отрицатель­ ным, хотя на интервале ( 0, 1) функция А'9^*-1 положительна и » 0.0916. Других ошибок в процессе вычислений по рекуррентно­ му соотношению не было внесено. Причиной такого катастрофического накопления ошибок явля­ ется то, что первоначальная ошибка в Е |, равная приблизительно 4.412Х10-7, при вычислении Е п умножается на \п\\. В частности, при л = 9 ошибка в £ 9 примерно равна 4.412Х 10~7Х 9 ! » 0 . 1601 и оказывается почти равной истинному значению Е 9- Таким сбра46
■.м, выбранный алгоритм оказался неустойчивым, ....... им сто шаге ошибки увеличиваются. I iviii переписать этот алгоритм в неявном виде £ „ - 1=- ! — поскольку на 3, 2, им ко видеть, что ыа п-м шаге ошибка не увеличивается, а пинается в п раз, т. е. данный алгоритм является устойчи• - и Очевидный его недостаток состоит в том, что нам неизвест•г.» начальное приближение. Однако как бы грубо мы ни выбра'*• начальное приближение при п^> 1, начальная и промежуточ­ но» ошибки округлений будут быстро уменьшаться на каждом ищи- Приемлемая оценка для начального приближения может Ьим. получена следующим образом: s х пех~ Ч х < S' X nd X = хп" п 1 l _ 0 1 n -j- 1 i hi положить, например, E 2o ~ 0, то начальная ошибка не пре... 1/21. При вычислении Е она уже умножится на 1/20 и I la пет равной примерно 0.0024. Когда мы дойдем до £is, на|| и.пая ошибка станет меньше 4 Х Ю ~8 (т. е. меньше единствен||»и1 ошибки округления) и окажется совершенно подавленной в ■и iy устойчивости алгоритма. Начиная с £15 значения Е п верны и I т ех шести знаках с точностью до возможной ошибки округле­ ния п последнем знаке. If).2 Всегда ли 10x0.1 = 1? Этот пример имеет особую цен­ но» in, поскольку число 0.1 часто берется в качестве шага инте||н||юмапия при решении дифференциальных уравнений или пара­ ми-ipa во многих численных алгоритмах. Если машина использует лгопичную систему счисления, т. е. р=10, то равенство 10X0.1 = 1 г»»- (условно выполняется. Если же р = 2, то это не так, поскольку и I пс имеет конечного разложения по степеням 2_|. Действитель­ но, н двоичной системе 0.1 имеет вид (0.1)10= (0.0001100110011 . . . ) 2. Па ЭВМ БЭСМ- 6, у которой р = 2 и /= 40, число 0.1 представ­ им Iс я компилятором с языка Фортран следующим образом (для и1»«и*готы порядок записан здесь без смещения): ( 0. i )10= 2 3 х 0. 11001Ю0 11 . . . оопоо; и .... 40 разрядов Hi пой записи видно, что компилятор представил 0.1 с недо• I.и ком, поскольку 41-й разряд равен 1. Заметим, что согласно |||1.1пплу правильного округления 40-й разряд должен равняться I. I пс 0. Если на машине умножить это представление на 10 и мычесть результат из 1, то получим 2- 40=^0. Если 0.1 мы предста­ 4*2
вим как I/10 и выполним эту операцию деления, то получим уже другое представление для 0.1: ( ) . ] ) „ , = 2_3 х 0.1100110011 . . . 001101. 40 разрядов В этом случае 10Х(1/10) = 1. Теперь посмотрим, соблюдается ли равенство 2 0 .1 = 0 .1 0 .1 -j- 0 . 1 ... 4 - 0 .1 — 1. 10 раз Поскольку 0.1 не имеет конечного разложения по степеням 2-1, то ответ, конечно, отрицательный. На Э В М Б Э С М -6 разность между 1 и 20.1 оказывается равной 2_ 39+ 2 _4(). Тот же результат имеет место, если вычислять ту же сумму, когда слагаемые рав­ ны 1/10, т. е. получены в результате деления, а не перевода из десятичной системы в двоичную. 10.3. Распространение ошибок в начальных данных при реше­ нии обыкновенных дифференциальных уравнений. Рассмотрим простой пример численного решения задачи Коши для обыкно­ венного дифференциального уравнения У' = Ъу, */(0) ~УоУ решением которой является функция у ( х ) = Уое*ху для анализа распространения ошибок при использовании метода Эйлера с постоянным шагом h. С учетом вида правой части выписанного уравнения приближенное решение ип+\ в точке х п+\ выражается следующим образом через приближенное начальное значение По в точке * = 0: uni-\= i ип -\~hf (хп, ип) — (1 - f АХ) ип — = (1 + / Л ) 2и „ _ , = .. . = (1 и0. Приближенное начальное значение и0 отличается от точного начального значения у0 либо из-за погрешностей в задании на­ чальных данных, либо из-за ошибок округлений в представлении значения у0 в машине, либо по обеим причинам сразу. Пусть значение уо непредставимо точно в виде машинного числа. Поэто­ му в реальном начальном значении ио содержится ошибка ео = —у0— и0. Отметим также, что применение метода Эйлера в дан­ ном случае эквивалентно использованию выражения l+/iA, для аппроксимации функции ehX. Выпишем теперь выражение для определения глобальной ошибки £■«+, на ( п-\- 1)-м шаге интегрирования. Так как ы„+1 = (1 + ПХ)" ' и0= ( 1 + Н К ) " ' = y ee (n + W — -(i|_ 1 0/о— е0). то Е п+, = у пЛЛ — ип+, — hk)n+1(</„— + ( l + h X f + 'e 48 (
I Imi м образом, глобальная ошибка состоит из двух компонент I!• |>11;t>■ компонента представляет собой ошибку, вытекающую из ■итроксимации значения е,1к выражением 1 +ЛЯ, вторая компоNMii.i отражает распространение ошибки ео в начальном условии. I . in 1 | + Л Л | > 1, то вторая компонента растет при увеличении п и и конечном счете станет доминирующей частью глобальной .... . Е п+\. Если К О , то, для того чтобы ограничить распрост­ ранение ошибки <?о» необходимо обеспечить выполнение условия. |1 + hX \< 1 или Л < 2/| Х\. .Чанное условие на величину шага интегрирования h называ­ ли t/словием устойчивости, поскольку в случае его нарушения приближенное решение будет носить неустойчивый характер. Т а »пн образом, условие устойчивости накладывает ограничение на ими имальную величину шага интегрирования hmах, значение кои»|н.|<| зависит как от параметров задачи (в рассматриваемом примере — от параметра X), так и от применяемого численного Mi-1ода. Условие устойчивости h < 2/|Х| получено из конкретной аппроксимации 1-{-ЛЯ, выбранной для еИк. Однако для одной из формул Рунге — Кутта 4-го порядка ап­ проксимацией для ehk является выражение ^ , +ЛХ+^ > 1 + 21 ^ 1 + Ж 31 4! щнорое накладывает уже другие ограничения на h. В этом слу•*лс трудно выписать в явном виде условие устойчивости, однако можно сказать, что устойчивость имеет место для тех значений h, i. ih которых значение этого полинома по абсолютной величине m i -i i i . i i i c 1. Если же Я > 0 , то неравенство 1 + Л Я > 1 выполняется для любоm //>0, т. е. на каждом шаге процесса интегрирования наблю1.11*1си увеличение локальных ошибок. Однако на этот раз неусннежность не столь очевидна, поскольку доминирующей являет■ч первая компонента глобальной ошибки Е п+1: каким бы малым мм ни выбирали шаг Л, разность £(«+»>**— ( 1 + Л Я )п+1 при достаlo-iiio большом п всегда будет превосходить ( 1 + Л Я ) л+1. Такого l"u.i задачи называют плохо обусловленными. Если аналогичным образом провести анализ распространения •■шибок на общий случай y' = f ( x , у ), то тогда имеют место слемющпе утверждения: .1) если d f/d y< 0, то влияние локальных ошибок уменьшается при значениях Л, удовлетворяющих условиям устойчивости; б) если д Ц д у > 0, то влияние локальных ошибок увеличивает­ ся независимо от того, насколько малым выбран шаг h. Ио многих задачах знак df/dy меняется на интервале интегри­ рования, т. е. в процессе интегрирования локальные ошибки то vи* тчнваются, то уменьшаются. Имеет смысл выполнять инте(рмроваиие так, чтобы на каждом шаге знать знак д[/ду и тем 49
самым по крайней мере контролировать ситуацию. В простейшем случае у' = Ку, Х > 0, лучше интегрировать в направлении умень­ шения х, т. е. с отрицательным шагом. Конечно, каждое конкрет­ ное уравнение требует своего подхода. Д л я систем из п дифференциальных уравнений контроль у с - 1 тойчивостн связан с анализом якобиана системы dfi(x, y) l dyh } 1<£, j c n . При этом плохая обусловленность системы может иметь место в тех случаях, когда какое-либо из собственных зна-1 меняй якобиана имеет положительную вещественную часть. Отсю- , да следует, что контроль плохой обусловленности системы требу-I ет значительных накладных расходов, поскольку необходимо каж- I дый раз вычислять собственные значения якобиана системы. 10.4. Жесткие обыкновенные дифференциальные уравнения. Обыкновенное дифференциальное уравнение называют жестким, если величину шага интегрирования h необходимо выбирать очень малой, для того чтобы обеспечить выполнение условия устойчн- 1 вости, которое гарантирует ограниченность распространения л о ­ кальных ошибок. Рассмотрим в качестве примера уравнение у '=* = — 1000#. Если применяется метод Эйлера, то из п. 10.3 следует, что шаг h не должен превосходить 0.002. Это означает, что нуж­ но выполнить очень большой объем вычислительной работы при интегрировании уравнения от х = 0 до, скажем, х = \ . Можно сказать, конечно, что точное решение у {х) = уое~т0х будет близко нулю на большей части интервала ( 0, 1) и поэтому нет необходимости долго выполнять численное интегрирование. Однако в случае системы уравнений дело уже не будет обстоять так просто: некоторые компоненты вектора решения могут быть близки к нулю, другие — нет, а интегрирование должно продол­ жаться достаточно долго, чтобы последние стали доминирую­ щими. Остановимся на следующем примере системы: ' /У\ \ { I 998#2 — 1°o°f/3 Компоненты точного решения системы у х(x) = e - 2x + e~l000xt У 2 (х) = е ~ т 0 х Слагаемое е-1000* убывает очень быстро, а слагаемое е~2х — мед­ леннее. При численном решении такой системы необходимо неко­ торое время выполнять вычисления, пока не будет выделена ком­ понента у\ ( х ) . Однако трудность здесь состоит в том, что усло­ вие устойчивости определяется второй компонентой У2 ( х ) . Даже когда она становится очень близкой к нулю, малость шага h должна соблюдаться, иначе условие устойчивости нарушится и будет иметь место все увеличивающийся рост локальных ошибок. 50
t иуют способы, ПОЗВОЛЯЮЩИе обходить эту трудность, НО' «I». mix мы не будем здесь останавливаться. ///.;>. Как лучше складывать числа? Пусть имеются два приin: к. пня х и у к числам х и у, причем абсолютные ошибки в х U -i раины А ж и Ду соответственно. Тогда абсолютная ошибка в о ч ч е .v f у определяется равенством ■, iner ■V•г У = х + А* Ч" У + ~ (•* "Ь У) + (Л* 4* &у) = (х + У) Н- А* -ьу <м иосительная ошибка бх+у в сумме х-\-у определяется равен• I ItuM * АдНу АдН-Д«/ X АX , У Ох+и— — --- —— —-----ГГ--= —--- 35-—=---г ■=---~ ■ ~ -X+ У X+ у Х-\г у X х-{- у у Х-\гУ X -Ь у . «♦ б* и бу — относительные ошибки в х и $ соответственно. I |усть теперь известны точные значения чисел х и у. Тогда, • пк л о указано в п. 3, для представлений И (х ) и И (у ) этих чи•• i и системе с плавающей точкой Е((3, t, L , U ) выполняются рап» in I ка П (х) = х (1 +<$!>, fl ( у ) = у ( \ + б 2), |«« б[ и 62 — ошибки округления, которые не превосходят \у Ч'2, если в системе F осуществляется правильное округление, и р1 \ если в системе F округление осуществляется отбрасывани­ ем младших разрядов (округление блокировано). Рассмотрим далее два числа х и у, которые уже представле­ ны и системе F. Тогда эти числа можно записать в виде (см. и :.) х = тх - (У7 и y = my ’ [ ^f где гпх и m y (1 / р < т ж, т у< 1) — манМ1м и , а р и q ( L < p , q<~U ) — порядки чисел х и у. Д л я опредем имости предположим, что p > q . При сложении чисел х и у из • нмсмы F в общем случае появляется ошибка округления, кото* i».iи содержит конечное количество ненулевых разрядов. Покажем, ■им количество этих разрядов определяется величиной слагаемых. Действительно, * + * / = ( тл+ т У’ ^ - р ) Число z = m x-\-my^ y -y имеет не более t + p — q разрядов после 4/i и и гон и не более одного ненулевого разряда перед запятой, при■м этот разряд появляется только тогда, когда | z | > l . После нормализации мантисса суммы х + y имеет не более t + p — q + 1 •ипулевых разрядов после запятой. Если складываются числа • • т о г о порядка с разными знаками, то мантисса результата мм.; г не более t знаков и ошибка округления равна нулю. Разу•4- 401, сказанное верно и для операции вычитания. Ми видим , что ошибка округления операции сложения (вычи•и11и>i) обладает особенностью, которая отличает эту операцию 51
ют всех других операций. В операциях деления и извлечения квад­ ратного корня, например, ошибка округления имеет, как правило, бесконечное число разрядов, а в операции умножения — порядки t разрядов. Если складываются два числа х и у из F, то сначала вычисля­ ется точное значение суммы х + у, которое затем округляется. Имеет место равенство t t ( x + y) = (х + у) (14-6), :где 6 — ошибка округления, | б | < р 1_* или | 6 ]< {3 ,_72 в зависи­ мости от способа округления. Выполним теперь прямой анализ распространения ошибок округления при сложении четырех чисел х ь х 2, *з и х4, имеющих один знак: П (хг + х 2-гл'3 х4) = И ((хА4-х2) (1 г бА) 4- х34-^4) = ^ (((М + Х3) ( 1 + 6 2) + Х4) = х2) (1 Н~^з)4* Х2)(1 -Ь б , ) + (1 + 6 (((X , + = (*i 4" * 2) (1 -г ^i) (1 “Г 62) (1 4-бз) + * з О 4~ 62) (1 + 63) + х 4 (1 4- 63) ^ (1 4-е)3 [~х2{\ 4-е)34 -* 3(1 4-е)24 *1 С точностью до 0{ f i ~2t) это неравенство можно (1 -he). переписать так: fl (хА4- х2 -hх 34~* 4) ^ x l (1 4- Зг) 4~х 2 (1 4~ Зе) 4 "х 3 О 4~2е) — (х 14* х 2-р х34" Xj) 4 (Зх. 4“ Зх2 4~*4 (1 4-е)=* 2х 34~* 4) •е • Второй член в правой части неравенства и представляет собой требуемую оценку ошибок округления. Из этой оценки следует, что максимальный вклад вносят первые слагаемые и минималь­ ный — последние. Отсюда ясно, что абсолютная ошибка вычис­ ленной суммы будет наименьшей, если суммирование чисел вы­ полнять в порядке возрастания их абсолютных значений. Таким образом, в системе F сумма меняется при перемене мест слагаемых или при их перегруппировке, т. е. операция сло­ жения на Э В М не является в общем случае ассоциативной (сло­ жение коммутативно на ЭВМ, если имеет место правильное ок­ ругление). Отметим, что для всех арифметических операций на Э В М свойства ассоциативности и дистрибутивности нарушаются. Д л я сложения п чисел, не содержащих первоначально ошибок, общая формула для абсолютной ошибки Д вычисленной суммы имеет вид |Д|^| ( п— 1) Xi 4- ( п— 1) х 24- ( п— 2 ) х з 4 ... 4- 2x u_ i 4 x „ |-е. Отсюда видно, что, хотя каждое слагаемое при суммировании ис­ пользуется только один раз, в образовании ошибок оно участву­ ет столько раз, сколько раз суммируются частичные суммы, зави­ сящие от этого слагаемого. Посмотрим, как изменится абсолютная ошибка Д суммы, если при суммировании применить алгоритм попарного суммирования. 52
и. I л иовимся опять на сложении четырех кмоющих один знак: N (хл+ *2+ *з Ч- х4) = ^ чисел х и х2, х3 и х4, ((*1 + * 2) (1 + ^1) 4* (*з “Г * 4) (1 + ((х, -h * 2) ( l + ^i) *+■ (*3 + *4)(1 Н~^e) ) (1 Ч*63) = ( х 1-г х 2) &г))“ ~^i) (1 т Ч т i (*з "Г * 4) О + $2) О "Ь<У ^ ( * 1 + * 2) ^ (■*! + х 2-Ь *з + * 4) (1 “Ь е)2■+- (*3+ х4) (1 -f- е)2^ ( 2x l + 2х 2+ 2х3-I- 2х4) •е. Мри таком порядке суммирования оценка ошибки 1 \' 111с |2Х|Н-2а'2+ 2хз + 2х 4|€, а при обычном— |А<2;|| I ‘. ?хз+х4| -е. Если суммируются почти равные числа, I I, 2, 3, 4, то с точностью до величин, по порядку имеет вид |З-^i -!- 3-\г2-гт. е. jc, « x о* меньших е, II МГОМ |А<1, 1<8|*„1*. |Д( 2) | < 9 | х 0|е. f Ипода видно, что второй способ дает несколько меньший верхими предел для ошибки! Если имеется п2 почти равных чисел одного знака, то общая •«шибка округления уменьшается, если суммирование выполнять «руинами по п чисел с последующим сложением п частичных <\мм. При этом для больших п верхний предел ошибки округле­ нии примерно в п раз меньше, чем при обычном суммировании. В общем случае алгоритм попарного суммирования п чисел ••мюго знака позволяет добиться уменьшения верхнего предела I in ошибки приблизительно в /z/log2n раз. Естественно задать вопрос, так ли важно обращать внимание и.» последовательность действий при суммировании чисел. Ответ ьг «условно утвердительный для тех вычислительных процессов, |.<»ш|)ые требуют выполнения больших объемов арифметических миграций. В этих условиях даже такая небольшая ошибка, которчи является ошибка округления, может быть сильно увеличена имел ед у ющи ми в ычисл е ния ми. В качестве примера вычислим сумму ю» У2 п2~ 106л 2 1-^1 и.I Э В М Б Э С М -6 в режиме отбрасывания младших разрядов при ■и руглении. Ошибкой округления при записи л 2 в машинное слово мы пренебрежем и рассмотрим распространение только ошибок •нхругления, возникающих при сложении. Гели выполнять почленное суммирование, то абсолютная Minпока оказывается равной примерно 3.98, а относительная — примерно 4-10^7, т. е. влияние ошибок округления таково, что мы потеряли почти пять значащих цифр! Заметим, что • • hi почленное суммирование выполнять с округлением, которое 53
на БЭСМ-6 отлично от правильного, то относительная ошибка уменьшится, но ненамного, и будет примерно равна 3*10~7. Если суммирование выполнять группами по «=1000 чисел с последующим сложением п частичных сумм, то абсолютная ошиб­ ка оказывается равной примерно 8.62-10—3, а относительная — примерно 8.7* 10-10, т. е. ошибка уменьшилась приблизительно в п = 103 раз! Если же применить алгоритм попарного суммирования, то результат получится с относительной точностью, приблизительно равной 6* 10-12. Эта точность превосходит теоретическую оценку уменьшения верхнего предела для ошибки, поскольку суммиро­ вались равные числа. Другим примером накопления ошибок округления служит вы­ числение суммы N У I-I (1/0(. При N = 10° на ЭВМ БЭСМ-6 в режиме отбрасывания младших разрядов абсолютная ошибка суммы равна примерно 0.287, а от­ носительная — примерно 2,9* 10~6. Если вычисления производить в режиме округления, то результат оказывается почти точным. Еще раз подчеркнем здесь тот факт, что вычитание близких чисел может дать большую относительную ошибку, как это по­ казано в примере из п. 9.1. Часто вычитания такого рода можно избежать преобразованием формул. В заключение приведем список литературы, рекомендуемой к гл. 1: [1, 2, 7, 10, 22, 24, 27, 28, 33, 36, 37].
Глава 2 ОДНОШАГОВЫЕ МЕТОДЫ РЕШЕНИЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИИ В различных предметных областях часто встречаtii Ioi в качестве математических моделей изучаемых процессов и1»им( 0венные дифференциальные уравнения. Во многих случаях I .<кtit' уравнения не интегрируются в явном виде. Поэтому необчцимо использовать методы, позволяющие получать приближен<11м* решение задачи. С примером таких методов знакомятся уже м ибщей теории обыкновенных дифференциальных уравнений, м.|да при доказательстве существования решения дифференци­ ального уравнения * ' - / ( * . У). (1) \ шилетворяющего начальному условию У(хо)~Уо, (2) in пользуется метод последовательных приближений Пикара. Решение (1 ), (2) получается как предел последовательности Уо{х), У\(Х), Уа( х) , , I их y n ( x ) = y 0+ \ j f ( l , g ) ) dl, £/оМ = г/о- (3) JC0 Функцию Уп{х) с достаточно большим номером п можно принять i.i приближенное решение задачи (1), (2). Однако, если правая •I.H*11» f (х, у) уравнения (1) — сложная функция, то применение и о г о метода наталкивается на большие трудности, поскольку ннм трал в (3) не берется в квадратурах и решение нельзя получить и аналитическом виде, M f , i будем применять численные методы, которые позволяют получать приближенное решение задачи в виде таблицы чисел. I. Общее представление одношаговых методов. Пусть требует«II найти решение задачи (1), (2) на отрезке [хо, Xq+ Х]. Возьмем p i пшенке отрезка точками Xq<с х j <d х% < . . . х$— Xq"I- X . 55
Этот набор точек называется сеткой, а точки хп — узлами сетки. Рассмотрим одношаговые численные методы, т. е. такие, которые последовательно дают приближения уп к значениям точного ре­ шения у{ х п) в каждом узле хп сетки на основе известного прибли­ жения уп-\ к решению в предыдущем узле хп-\. В общем виде их можно представить так: ynvi = F (h xn~i, Хп\ yn .r i , уп). (4) Мы займемся только явными одношаговыми методами, для кото­ рых функция F не зависит от уп+1. Обозначая h = x n+i— Xn, явные одношаговые методы будем записывать также в виде y „ n ~ F (/*. Л, уп). (5) 2. Метод рядов Тейлора. Предположим, что правая часть f (лг, у) дифференциального уравнения (1) имеет непрерывные частные производные до порядка 5. Тогда искомое решение у ( х ) имеет непрерывные производные до ( s + l ) - r o порядка включительно. Точное значение решения в узле Х\ запишем по формуле Тейлора: у ( *i) = у0-\■Ьу'о+ уо + • * * + “ г № + (Д ~ М; ^(S+1* ©• y (6> где У{ок) = (х0), У (к) h = x l — х0, х0< | < х 1. Может оказаться, что для получения решения с нужной точностью не требуется использовать все члены формулы (6). Производные, входящие в правую часть формулы (6), могут быть фактически найдены: % = / ( * о. Уо). У о = { Г Л Пу) „ {Г„+ 2//;„+ У о ' — • • Р Г УУ + ( К + П у ) Г у )о ■ • С увеличением порядка выражения для производных становятся все более громоздкими, что требует большого объема вычислений. Это является существенным недостатком данного метода. 3. Явные методы типа Рунге— Кутта. Рунге предложил следу­ ющую идею, основанную на вычислении приближенного решения у 1 в узле Xq h в виде линейной комбинации с постоянными коэф­ фициентами: У\'== Уо~\~ Pq\^± (fi) Л~ Pqbfez (h) “р • • • Чг Pqq^q 56 (7)
I лл* 6,(Л) = Л/(х0. //„), k„(h) = hf (х„ + а 2Л, y0+ P Mfe,(ft)), ■ в Л « » • » • « kq ( h ) = h f (х0Н-а^, f/o4-P<,A (А) 4- - • . + (А)). Числа а/, Рг/ и р^,- вЕябнраются так, чтобы разложение выражения (7) по степеням Л совпадало с разложением (б) до максимально иишожной степени при произвольной правой части f ( х, у) и прои тольном шаге h. Это эквивалентно следующему. Если ввести вспомогательную функцию Q % ( Ь ) = У(Хо + н) — У<>— У1 РткЛ Ь ). I м! (8) н> ее разложение по степеням /г должно начинаться с максималь­ но возможной степени: ^ < А> = Г 5Г77Т<'>JiH > (0) + o ( A ^ ' ) . О) 1-сли можно определить эти постоянные так, чтобы разложение <1,/(//) имело вид (9), то говорят, что формула (7) с выбранными коэффициентами имеет порядок точности s. Величина Pi =|Ф?(А) = y { x o + l i ) — у х называется погрешностью метода на шаге или локальной погреш­ ностью метода, а первое слагаемое в (9) ———— фА**1* (0) (я -f I)! 9 (10) на зывается главным членом локальной погрешности метода. Доказано, что если <7=1, 2, 3, 4, то всегда можно выбрать ко•ффициенты а/, р«/, pqi так, чтобы получить метод типа Рунге— Куттэ порядка точности q. При <7= 5 невозможно построить метод мша Рунге— Кутта (7) пятого порядка точности, необходимо орать в комбинации (7) более пяти членов. 3.1. Одночленная формула. Будем рассматривать такую фор­ мулу, когда приближенное решение в точке A‘i=;to + A ищется в виде У\х Уо + Pi\k\ (А), I jо М Л ) =А/(*о, Уо). I. шнственный коэффициент р {[ мы подбираем так, чтобы в раз­ несении по степеням h функции (8), в данном случае равной <Pi (A) = y ( x 0+ h ) — уо— PnAi (А), 57
максимальное количество членов обратилось в нуль. Этому тре бованию удовлетворяет единственное значение Рп = 1» для которого разложение (9) имеет вид <р, < * > = - £ (/ ; + / / > + о ( л г>. а Таким образом, мы получили формулу первого порядка точ­ ности yi = yo + h f ( x 0, уо). Это известная формула Эйлера. Итак, метод типа Рунге— Кутта при 4 = 1 есть метод Эйлера. Геометрический смысл метода заключается в том, что инте­ гральная кривая у ( х ) приближается ломаной Эйлера (рис. 1). у(х) уд(г ) Рис. 2. Рис. 1. Г еометрическая метода Эйлера Геометрическая метода Хойна интерпретация интерпретация На [*о, -V;] интегральная кривая заменяется отрезком касательной АВ, проведенной к интегральной кривой у ( х ) в точке А. На [*|, х2] интегральная кривая заменяется отрезком касательной В С , про­ веденной в точке В к интегральной кривой у\{х), проходящей через точку В. Б качестве численного решения берутся ординаты вершин построенной ломаной A B C D . Таким образом, после вы- I полпенни каждого шага метода Эйлера приближенное решение переходит с одной интегральной кривой на другую. 3.2. Двухчленные формулы. Строим формулу следующего вида: I У\—УЭ-Г P2\k\ { h ) где -f Р22^2 ( ^ ) » kx(/i) =/i/(x0, Уо), &2(Л) —ftf (Xo + Cl2^, УоА- ^21^1 V1) ) • В выписанной формуле четыре неизвестных параметра: аг, Р21» Р21. р 22- Чтобы их найти, опять строим вспомогательную функцию (8), равную Ф2 ( h ) 58 = y (X0+ h ) — y0— p 2 lki (/1) — р 22^2 (Л) , I
ii подбираем коэффициенты так, чтобы в разложении этой функ­ ции мо степеням h максимальное количество членов обратилось в и\.'ii». Чтобы обратить в нуль первые две производные <f'2(0) - ( I — Р 21— f e ) / ( * 0 , У о ) , <р" (0) = {(1 — 2а ,рг2)/; + ( I — 2§,,Д,2) / О х-*., У=-Уо и. обходимо, чтобы искомые коэффициенты удовлетворяли системе уравнений 1-- Р 2 1 ---Р'22 — 1— 2а.ор22~ 0» (11) 1-- 2р21р22 = 0. Рида разложение (9) имеет вид <р2( Л ) = - ^ ф - " ( 0 ) + О(Л°). (12) |<!iк бы мы ни выбирали параметры, третью производную ср-"(0) = { ( 1 - 3&lp2,) f"xx4 - 2 ( 1 - За^ы Рм) ff (13) + ( 1 - т ,а *) р г „ + ( / ; + / о / > - » . у--у о ••fipUTIITb в нуль для произвольной функции [ (х, у) нельзя. Из по- •лсдиих двух уравнений в ( I I ) следует, что а2=т^0, p2i¥=0, Принимая <12 за свободный параметр, имеем «2= ^20 I 2а* а _ _ 1 р2 —-а 2, р 22---- » 2<х.2 Таким образом, мы получили однопараметрическое семейство формул типа Рунге— Кутта второго порядка точности. Следует выбирать такие коэффициенты, которые дают удобные для вычис 1шя формулы. Например, их можно выбирать так, чтобы павный член погрешности был простейшим или наименьшим. Рассмотрим несколько примеров. I. Пусть G2= l . Тогда 01=И> + + А»), k i = h j ( x о, y0) t (14) k 2 = hf {xo+h, yo-\-k\). Погрешность формулы ■чI ч (14), как следует из (12) и (13), имеет P i = f - { — r V „ + W t, + r r j + < r , + f W . \ х=х+ 0^ - <15) У=Уо 59
Геометрический смысл формулы (14) понятен из рис. 2. Через точку А проводится не касательная к интегральной кривой у ( х ) , а прямая с угловым коэффициентом, равным среднему арифме­ тическому угловых коэффициентов касательных А В и ВС, кото­ рые строятся в методе Эйлера, и в качестве решения берется ор­ дината точки В' пересечения этой прямой с прямой х —х х. Д ан ­ ный метод называется методом Хойна. Если правая часть уравнения (1) не зависит от у , то формула (14) переходит в квадратурную формулу трапеций. 2. Пусть сх2= 1/2. Тогда У\=Уо+к2, k [ = h f ( x 0, уо), кг= Погрешность формулы вид ( V = •т (■т (16) fhх ( 0+ -^-Л, №>+ (16), как следует + г о + (/ ;+ о из (12) fti ) . и (13), имеет п | , ,+ «< *•> • и-и• п 7) Геометрический смысл формулы (16) заключается в том, что через точку А (рис. 3) проводится прямая, угловой коэффициент которой равен угловому коэффициенту касательной В С к инте­ гральной кривой у в ( х ) , проходящей через промежуточную точку В, построенную по методу Эйлера с шагом Л/2. В качестве отве­ та берется ордината точки D пересечения этой прямой с прямой Х = Х\. Если правая часть дифференциального уравнения (1) не зави­ сит от у, то формула (16) переходит в квадратурную формулу средних прямоугольников. 3. Пусть а2= 2/3. Тогда ' / ) = ' / 4т« ( * и - з * 8), £,=/!/(.Го, *«= А / (*о + - , + ~ А ,). Погрешность формулы (18), как следует из (12) вид и (13), имеет р! = - £ - « / ; + / / ; > <л9). о y-.Vo В данном случае прямая v4D (рис. 4) имеет угловой коэффи­ циент, равный не среднему арифметическому угловых коэффици­ ентов касательных А В и ВС, как в методе Хойна, а взвешенному 60
• |i> т е м у их значений. При этом касательная В С проведена к ин­ ом |>.ки.нон кривой £/в(х), проходящей через промежуточную точИ, построенную по методу Эйлера с шагом 2 — Л. 3 l i t трех формул ( Н ) , (16), (18) нельзя выбрать одну наилуч•IIvи» (например, с точки зрения малости величины главного члена ii.ii реишости) для всех уравнений. Д л я одних уравнений пред..... птельнее один метод, для других— другой. Ув(х) х0 х 0+ h}2 х, Рис. 3. Рис. 4. I гометрическая интерпретация метода второго порядка с <!■>.— Геометрическая интерпретация метода второго порядка с « = = 2/3 2 1/2 II;пример, в случае интегрирования уравнения У' = У\ г/(0) > О, при д > I главный член погрешности формулы (14) оказывается и. пипе главных членов погрешностей формул (16) и (18), а при ; I главный член погрешности формулы (16) меньше главных ч ипов погрешностей формул (14) и (18) (в этом легко убедиться, |ранннвая (15), (17) и (19) для f ( x , у ) = у >). В случае интегрнрон.пшя уравнения </=/(*> y ) ^ g ( x ) (20) и- ['ное слагаемое в локальной погрешности метода (18), как вид­ им из (19), вообще равно нулю, поэтому метод (18) имеет для miiiinro класса уравнений более высокий порядок точности по • равнению с методами (14) и (16). >.■). Трехчленные формулы. Строим формулу следующего вида: У, = Уо + РаА 00 + РаА (Т) + Р а :А (Л), I И* kl ( h ) = h f ( x 0, (/„), k2{h) = hf (x + a 2li, -г p21fe, (й)), k3( h ) = h f (x„ + a ji, y0 + $3lk1(h) + (i33k., (In). П'цч'мь неизвестных параметров выбираются так, чтобы разложе­ нии (9) функции (8) начиналось с максимально возможной сте1Н*||||. 61
% Д л я отыскания этих восьми параметров получается система из аиести уравнений а 2— Р21» <Х3 = = Р з 1 Рз2 > Рз1 + Рз2+ РзЗ= 1* 2 (0С0Р32Ч- ^зРзз) == 1> 3(а|р32+ а|Рзз)=1, б0С2Рз2Рзз= 1• 'Она имеет два семейства решений: двухпараметрическое со сво­ бодными параметрами а2 и аз, причем ао¥=аз и а2=И=2/3, и однопа­ раметрическое со свободным параметром (З32 (при а2= аз = 2/3). Д л я таким образом найденных параметров разложение (9) имеет вид ф3 (щ = а р ZA: ф >4>( 0 ) + о (Л4). Пример. Пусть а2=1/2, аз=1. Тогда Pi= Po ~7г (&i4~ 4^2 + kP), 6 hf {хо, t/o)> ( 21 ) k2= hf (^х0-f- — ^3 — Ы ( x o ~\~h, h , y0 + — kxj , Po— ^ 1 + 2 ^ ) • Д л я уравнения (20) формула (21) превращается в квадратурную формулу Симпсона, которая, как известно, имеет порядок точности О (Л5) . Следовательно, в этом частном случае порядок точности формулы (21) повышается. ЗА. Четырехчленные формулы. Существует семейство формул типа Рунге— Кутта (7) четвертого порядка точности, для которых q = s = A . В качестве примера приведем формулу классического ме­ тода Рунге— Кутта Pi — Уо "г —г~ (&i 4- 2&о + 2/г34- ^4) * о k1= hf (лг0, у0), k2= hf ( Ч 4r-yh, У о + \ К \ , k3~ h f (х 04- \ h , Уо + yk.^j, = hf (х04-h , Ро + ^з)€2 ( 22 )
Погрешность формулы (22), как и всех формул Рунге— Кутта чет­ вертого порядка точности, представляется следующим образом: Р1== - ^ - ф | 5) (0) + о (Я5) , где ф4 ( К ) = у ( х 0 -\- /г) — Уо — Р а К (/г) — р42&2 ( h ) — pr3k3 ( h ) — p4A (h ). Геометрическая интерпретация классического метода Р у н г е — Кутта (22) дана на рис. 5. Прямая AG, проходящая через точку (лго, У о ) , имеет угловой коэффициент, равный взвешенному сред­ нему угловых коэффициентов касательных в точках А, В, D и F, проведенных к проходящим через эти точки интегральным кри­ вым у ( х ) , у в ( х ) , у о ( х ) , yF( x ) . Р и с . 5. Р и с . 6. Геом етрическая интерпретац ия классического метода Р у н ге — Кутта Полная погреш ность реш ения уп в точке п р и б л и ж е н н о го хп 3.5. Формулы порядка выше четвертого. Чтобы построить ме­ тод типа Рунге— Кутта (7) порядка выше четвертого, для которо­ го погрешность на шаге имеет порядок выше пятого для произ­ вольного дифференциального уравнения (1) с достаточно гладкой правой частью f ( x , у), необходимо, чтобы в формуле (7) число слагаемых ki( h) было больше пяти: q i > 5. Примеры таких формул приводятся в п. 5.2.2.3. Здесь существенно то, что значения правой части k i( h) диф­ ференциального уравнения входят в формулу (7) в виде линейной комбинации. Может быть построен явный одношаговый метод пя­ того порядка точности У\ = уо + Ау, использующий пять вычисле­ ний правой части, но не имеющий вида (7), так как значения k i( h) будут входить в А у нелинейным образом. Общим для всех рассмотренных методов численного интегри­ рования является то обстоятельство, что после выполнения оче­ редного шага точка, изображающая полученное приближенное ре­ шение на плоскости (х, у ) , переходит с одной интегральной кри­ вой на другую. 63 ;.
Методы Рунге— Кутта без труда переносятся на системы обык­ новенных дифференциальных уравнений где У= (23) у ' —Н х . у) (У1,У2. . ум) т, / = ( / * ( * . у '........ум). f M(x, у1, . . . . ум) ) т. Формулы Рунге— Кутта записываются в векторном виде Уу= Уо 4- PqA №) + р Д 2 (Л) + . . . 4- Pqqbq (h) , (24) где kl {h) = h j ( x 0l у0), k 2 ( h ) = h ] (Xu + clJ i kq (^) =/l/ (Ху — &qh, Уо~^~ , у q+ PzA W ) , (^) 4~ * * * T —\kq—1(^))» Всюду в дальнейшем черточка над обозначением векторов ни ставится. 4. Сходимость явных одношаговых методов. 4.1. Классифика­ ция погрешностей. Прежде чем перейти к классификации погреш­ ностей, вернемся еще раз к обсуждению исходной задачи (1), (2). Предположим, что требуется найти функцию у { х ) , которая является решением дифференциального уравнения (1) У' (X) = f ( x , У { Х) ) , Хо<ХСХо+Я, и принимает в точке х0 некоторое определенное значение (2) У( х о) = По­ может оказаться, что начальное условие у{ х о) известно не­ точно, а определяется в результате эксперимента, например, с по­ мощью измерений или в результате решения какой-либо другой задачи. В этом случае вместо точного начального условия t/(x0) приходится использовать его приближенное значение уо, а вместо задачи Кошн (1), (2) решать задачу У'о{х) = / (х, у о (х)), У о { х 0) = У о (25) (26) с измененным начальным условием Уо— Уо —ЯоФО. (27] Решение задачи (25), (26) зависит от у0 и не совпадает с нско мым решением у ( х ) задачи (1), (2). Разность (28; 1п = у { х п) ~ У о { х п) называется неустранимой погрешностью решения Уо{х). 64
Разность между значением решения уо(хп) задачи (25), (26) к его приближенным значением уп, полученным по формуле (5), (29) гп = Уо(хп) —Уп называется погрешностью метода, или глобальной погрешностью метода. В действительности же вследствие ошибок округления и при­ ближенного вычисления правой части f ( x , у) дифференциального уравнения вычисления значений уп+\ по формуле (5) выполняют­ ся, как правило, неточно. Фактически найденные значения уп удовлетворяют не соотношению (5), а условию h, Хп-и уп- \ ) — у п= Ьп. (30) Невязка 6Л называется погрешностью округления на п-м шаге. Разность между точным решением у ( х п) задачи (1), ( 2) и приближенным фактически найденным значением уп Кпх У{Хп)— Уп (31) называется полной погрешностью приближенного личина Цп = уп— Уп решения. Ве­ (32) называется вычислительной погрешностью. Из соотношений (28), (29), (31) и (32) следует, что Rn — -Ь ел Н- tin, (33) I. е. полная погрешность приближенного решения равна сумме неустранимой погрешности, погрешности метода и вычислительной погрешности. Рассмотрим поведение полной погрешности. Представим R n в следующем виде (рис. 6): Rn = y ( x n) — y n = ( y ( X n) — y n_ t (Х „ )) + С</„_1 ( Х п ) — ~Уп) = = (У (Хп) — У„-2 ( * „ ) ) + (</„_, (Хп) — уя_ , (х„)) + (Уп- , (*п) — Уп (х„)) = п ( 34) = (y(Xn) — y<,(x„)) ) - Y i (у , ~ 1 (Хп)— У/ (х,,))*десь у , ( х ) — интегральная (л/, у ,). Разность Ш/ кривая, проходящая через точку ( х ) = У 1 - Л х ) — У/(х двух решений уравнения ( 1) удовлетворяет линейному дифферен­ циальному уравнению (У1 -1 (*) — 1 За к. 217 У/(х) У= Г„( х, У/) ( (х)), 65
где у,{ х ) заключено между tjj-i (х ) и у} ( х ) . Из этого находим х уравнения (*)=J//_i ( * ) — У/ (.*)= »/ Точно так же с учетом (27) хп У ^ (Х„) — уо (хп) = R0e*‘ Значение <■>/(*/) = У !-\ ( x i ) — У! ( x l ) представляет собой сумму локальной погрешности р/ метода и погрешности округления б/ на шаге лг/— */-ь u>j{Xj) =р/ + б/. (37) Подставляя представления (35) и (36) с учетом (37) в выра­ жение (34) для R n, получаем хп п J (P, + S/) ev/ хп J * (38) /= i Из (38) следует, что полная погрешность приближенного решения задачи ( 1), ( 2) в точке хп равна сумме локальных погрешностей па каждом шаге, взятых с коэффициентами хп } -яг-<й‘ 5»«5 ь е I х. Из соотношения (38) следует, что характер отклонения при­ ближенного решения от точного, т. е. эволюция полной погреш­ ности, зависит от поведения интегральных кривых уравнения ( 1). Если f y = 0, а это бывает в том случае, когда правая часть урав­ нения не зависит от у ( 20), полная погрешность равна сумме л о ­ кальных погрешностей: Rn — п п ~г 5^ (Xj) = R0 + ^ /=1 /=1 (р/ + бу). Если / / > 0 , т. е. интегральные кривые расходятся, влияние л о ­ кальных погрешностей, полученных на предыдущих шагах, воз­ растает и полная погрешность больше суммы локальных погреш­ ностей. Если fy' < 0, т. е. интегральные кривые сближаются, влия­ ние локальных погрешностей ослабевает и глобальная ошибка как правило меньше суммы локальных ошибок. 66 (х/
Такое поведение характерно как для полной погрешности, так и для отдельных частей, из которых складывается полная погреш­ ность: неустранимой погрешности, погрешности метода и вычис­ лительной погрешности. Рис. 7 и 8 иллюстрируют влияние мцп на характер эволюции глобальной погрешности ме- тда. Г и с. 7. Рис. 8. Интегральные кривые расходятся. I лобальная погрешность метода б о л ь ­ ше суммы локальны х погрешностей: Интегральные кривые сближаются. Глобальн ая погрешность метода меньше суммы локальны х погрешно­ стей: У ( Х ь) --- / / t > P l + f>2 + Р З + Р 4 */(**)—tfi<f>I + p2+p3 + P4 4.2. Мажорантная оценка полной погрешности. Опираясь на Г>8), можно получить мажорантную оценку полной погрешности приближенного решения задачи Коши (1), (2 ): п ik. i + £ ( ip /I + |8/I)). (39) Z,=sup' — ! < о о . I °у ! Учитывая оценку для локальной погрешности метода s-ro поряд­ ки |р/| = 0 ( ^ 1) < С | х /- х /_ ,| ^ 1, имеем I/?„| < ( I /?01 + CXh*- f лб), i че 6= max |б/1, h = max \x, — (40)
В случае системы уравнений (23) для метода (24) имеет место мажорантная оценка \\Rn \\< *MLX (II ЯоII + C X h * + /гб), Рунге— Кутта (41) где ||/?„||= шах |/?ДI, 6 = max ||6/1|. 1</<л 1< 1<М Из соотношений (40), (41) следует, что приближенное решение задачи Коши, полученное по методу Рунге— Кутта порядка s, сводится к точному решению задачи при h-*- 0, если пб —►0, |Яв|-*0 (|| Ro ||-^0). (42) Рассмотрим смысл каждого из трех слагаемых в (40), (41) и условия (42). Присутствие в (40), (41) слагаемого 1/?о1(1! &olf) означает, что погрешность от начального значения распространит­ ся на все узлы сетки. Часть полной погрешности приближенного решения, зависящая от ошибки в начальных условиях и называе­ мая неустранимой погрешностью, не превосходит l # 0leLX (ll# oilx X eMLX). Если начальные значения решения заданы точно, то это­ го члена нет. Второй член получается за счет того, что мы находим не точ­ ное решение задачи, а приближение к нему по формуле Рунге— Кутта. Это погрешность метода, и она имеет порядок hs. Третий член получается за счет ошибок округления. Часть пол­ ной погрешности приближенного решения, источником которой являются ошибки округления, как уже указывалось, называется вычислительной погрешностью. Скорость возрастания вычисли­ тельной погрешности не превосходит eL x nb nh eLXb h l eMLXb \ \ h ) Если величина б ограничена снизу: 0 < б о С б , а в практике вычис­ лений на ЭВМ так обычно и бывает, и при этом длина шага h слишком мала, а значит, число шагов очень велико, то вычис­ лительная погрешность может достигать больших значений. В действительности же ошибки округления б/ могут иметь различные знаки и частично компенсировать друг друга. Разные знаки могут иметь и погрешности метода р/. Отдельные состав­ ляющие, входящие в полную погрешность R n (38), могут давать отклонения от точного решения в разные стороны. Поэтому оценка (40) (или (4 1 )) по сравнению с (38) является завышенной. Кро­ ме того, ее применение затруднено еще и из-за сложности опреде­ ления величины С, выражаемой через производные высокого по­ рядка от правой части /(х, у) уравнения (1). Поэтому данная оценка на практике не используется для определения точности окончательного результата. 68
I !з приведенных оценок можно сделать следующий вывод, подтгрждаемый практикой численного решения на Э В М дифферен­ циальных уравнений. Если заранее обеспечена необходимая ма­ нн м, неустранимой погрешности, то в полной погрешности пре­ обладает либо погрешность метода, либо вычислительная погрешн'ч-ть. Погрешность метода может быть сделана сколь угодно малой за счет уменьшения шага h. Вычислительная погрешность может быть снижена за счет увеличения числа используемых в промежуточных вычислениях значащих цифр (значащими цифра­ ми называются все цифры в записи числа, начиная с первой неи\левой). Однако наши практические возможности в этом дале­ ки не беспредельны из-за конечности разрядной сетки машины. Если же погрешность (27) в начальных условиях велика, то in устранимая погрешность может также оказаться значительной и ее нельзя будет уменьшить никаким сокращением длины шага ип гегрирования, так как она не зависит от численного решения за1.1411. Неустранимую погрешность можно уменьшить только за и п ' более точного определения начальных условий. Поэтому осI.и*I ся только надеяться, что неустранимая погрешность будет не­ значительной по абсолютной величине по сравнению с другими им чпми погрешности. Из вышесказанного следует, что вычислительный процесс дол­ жен быть организован таким образом, чтобы поддерживался баi.iнс между всеми видами погрешности, составляющими полную in)грешность приближенного решения. Этот баланс может быть чистнгнут, если надлежащим образом будут согласованы между гиГюй требуемая точность решения задачи, точность задания на­ чальных условий, порядок численного метода, величина шага ни­ трирования и используемая длина разрядной сетки ЭВМ. ■1.3. Асимптотическая оценка погрешности метода. Пусть праи.п1 часть f ( x , у) уравнения ( 1 ) имеет непрерывные частные проижодпые до порядка s + 2. Предположим, что задача Коши ( 1), С.1) решается с постоянным шагом h i= h мс|одом Рунге— Кутта порядка s (7), так что для локальной поI репшости ( 8) метода справедлива оценка (9), которую запишем и следующем виде: У (Хп+ 0 — г/„ 4 1 = Ч> (Хпг Уп) hS~' + О (Л‘ +2), (43) уп) = М'дем считать равными нулю погрешность начального условия и погрешности округлений: R 0= 0 (27), 6 „ = 0 (30). Тогда для гло­ 69
бальной погрешности (29) метода имеет место представление en= z ( x n ) h s + 0 ( h ° + i ) , где Хп асимптотическое (44) [ -|Ц -С т .» < х » л хп z ( x n) = $ 1И 5. ! / ( i » e 5 dl Заметим, что г|?(лг, у ) Ф 0 и г ( х ) Ф 0 . Более того, если ф(л:, у) не меняет знака, то г(л:)¥=0 ни при каком х. Первое слагаемое в (44) z(Xn)h5t (46) которое указывает малую величину главного порядка, называется главным членом погрешности метода. При достаточно малых зна­ чениях А, таких, что в (44) можно пренебречь членом 0 ( h s+l), д ля погрешности метода справедлива формула e n ^ z ( x n)! is. (47) 4.4. Реальная область асимптотики. Рассмотрим, когда глав­ ный член (46) погрешности метода хорошо отражает полную по­ грешность (33) приближенного решения. Д л я этого необходимо, чтобы члены порядка 0(/is^ ) , входящие в (44), наряду с вычис­ лительной погрешностью rj* были малы по сравнению с главным членом. При этом неустранимая погрешность также должна быть малой по отношению к нему. Условия, обеспечивающие бли­ зость главного члена погрешности метода к полной погрешности приближенного решения, математически можно записать в виде /?0= O ( / i s- 1), б = 0 ( Л * + 2). (48) Если предположить, что условия (48) выполняются при А—.-О, то для полной погрешности приближенного решения имеет место асимптотическое разложение вида (44) R n= z ( x n ) h s+ 0 ( h s+ ' ) . (49) При этом разложения (44) и (49) отличаются друг от друга толь­ ко членами порядка 0 ( h s+l). При достаточно малых значениях Л, таких, что в (49) можно пренебречь членом 0 ( A s+l), для полной погрешности справедлива формула R r ^ z ( x n) h s. (50) Множество таких значений шага А называется областью асимп­ тотики. Однако в реальных условиях вычислительного процесса требо­ вания (48), как правило, не выполняются (по крайней мере, вто­ рое). Погрешность R 0 задания начальных условий вообще не за­ висит от длины шага интегрирования, а погрешности округления 70
и I mare (30) при решении задачи на ЭВМ с фиксированной разI•и Iион сеткой остаются ограниченными по абсолютной величине Г ) Ш «V 0< 60< 6. II рушение требований (48) при Л—►0 приводит к тому, что не\м ранимая погрешность будет ограничена снизу, а вычислительн.о» погрешность может даже возрастать при л-*-0. В результап формулы (49) и (50) перестают быть справедливыми. Поэтому в реальном процессе численного решения задачи Коши и » ЭВМ множество значений шагов, для которых главный член ( 1< ) погрешности метода (29) хорошо представляет полную по•ргшкость (33) приближенного решения (при достаточной мало• MI неустранимой погрешности), т. е. для которых справедлива формула (50), ограничено не только сверху, но и снизу: О< А < А < А . (51) П[ш переходе через верхнюю границу Я в сторону увеличения зна■м 11ии шагов растет вклад членов в правой части формулы (49), • ••ь ржащих высшие степени А, и формула (50) становится не•II |нI'>п. При переходе через нижнюю границу А_ в сторону уменьин пня значений шагов увеличивается вычислительная погрешность «I. (32) и формула (50) скова перестает быть действительной. Т а ­ т и образом, формула (50) для полной погрешности приближен• .. . решения может оказаться несправедливой как при больших [ h h), так и при очень малых ( А < А ) значениях шага А. Множество значений шагов (51) называется реальной областью ш имптотики. Д л я фиксированной задачи (1), (2) и фиксирован... о метода решения (7) нижняя граница зависит от разрядной «*11411 вычислительной машины. Чем шире разрядная сетка, тем,во••r.iiir говоря, меньше нижняя граница реальной области асимп»"|мкл. Расширить разрядную сетку можно за счет выполнения ни числений с удвоенным числом значащих цифр. ■>. Практические способы оценки погрешности приближенного (’•мнения. 5.1. Апостериорная оценка глобальной погрешности ме!"•/(/ Предположим, что для погрешности приближенного решения гмранедливо асимптотическое разложение (49), (50). На этом 1>л ыожении основывается важный для практики способ Рунге чп>>( тсриорной оценки погрешности. Правило Рунге состоит в том, .... решение задачи в некоторой точке х п интервала интегрирова­ ния вычисляется дважды по одной и той же формуле (7) с разны­ ми малыми шагами и полученные значения решения использу■••IOI для получения апостериорной оценки погрешности. Обычно и качестве шагов выбирают h и А/2. Допустим, что в точке х п по формуле Рунге— Кутта (7) с 1ВП1ПЯМНЫМ шагом А вычислено решение уп. На основании (50) "<>| рсшность этого решения приближенно равна у ( х п)~~ yn^ z { x n) h s. 71
Используя ту же формулу с шагом hf 2, вычислим в точке хп другое значение решения уп> для которого потребуется в два раза больше шагов и погрешность которого приближенно выражается равенством У ( х п) — yn s * z ( x n) f — V . Исключая из этих у ( х п), имеем соотношений точное значение решения Уп— У * в * г ( х п) & Отсюда (52) Окончательно получаем оценки погрешности для значений решения Кп = У(Хп) — Уп S£ Gn — Уп) I ( 1 — Кп = У (Хп) Уп^ {Уп Уп) / (2s приближенных (53) ) . (54) 1) . Полученное приближенное значение можно уточнить, прибавив к нему величину главного члена погрешности, т. е. положив У (лтп ) — У п — У п + Rn или y{Xn)^lJn=9n+T ln. При этом у (х п )— у п = 0 (hs+ l ) . В случае системы уравнений (23) правило Рунге оценки по­ грешности (53), (54) может быть записано в координатной форме следующим образом: / & = 0*(хп) — (yln— yk) Д 1 —■ Фп = у‘ {хп) — y h ^ ( y h — Уп)/(25— 1), i = \ y 2, 4= 1, 2, М, М. (55) (56) В качестве решения в точке х„ примем значение уп как более точное по сравнению с уп. Д л я него имеем оценку погрешности (54). Эта величина может быть как больше, так и меньше неко­ торого значения е, являющегося наперед заданной допустимой погрешностью. Если то заданная точность приближенно­ го решения достигается, в противном случае — нет *. Если точ* К онтроль точности для системы уравнений (23) подробно излагается в п. 6.3. 72
... 'и, не достигается, то необходимо решить вопрос, какую нуж­ но шить длину шага, чтобы все-таки достигнуть заданной точно• in I т л и же точность достигается, естественно поставить такой во­ прос: можно ли увеличить длину шага интегрирования для того, •||<1(*ы уменьшить объем вычислительной работы и одновременно I ммм сохранить заданную точность? В обоих случаях такую ве-I им ii ну шага hz можно определить, если положить |2(лСп) |hes= e . '•м’юда находим /ie=V^e/|z(xn)|. (57) П о с та в л я я в (57) выражение (52) для z ( x n), получаем (2s — 1) V \ У п — У п \ 2* h_ * f ( 2s- l ) e 2 У tUn (58) Уп I H i (58) следует, что если | [ > е, то новое значение шага v мгиыиается: hB< h l 2, м ' 4VIH [ / ? « { < е, то новое значение шага увеличивается: ht > h f2 . I imim образом, формула (58) дает более подходящее значение in.и.I интегрирования. ■• 2. Апостериорные оценки локальной погрешности метода. М предыдущем разделе мы познакомились с практическим спосо­ бом оценки глобальной погрешности метода, когда решение зада­ чи вычисляется в некоторой фиксированной точке интервала ни­ трирования. Теперь обсудим, как можно практически оценить 1*401.11иную погрешность метода. Мы рассмотрим несколько спо***f>im. а начнем t известного нам правила Рунге. 5.2.1. Оценка погрешности по правилу Рунге. Правило Рунге заключается в том, что по одной и той же форм\ и' (7) вычисляются два приближения к решению в одной точ|*. но с разными малыми шагами, которые затем используются | hi получения апостериорной оценки погрешности. Пусть в начальном узле х 0 известно решение Уо. Выполним из Mi4i.il .г0 один шаг h по формуле Рунге— Кутта (7). Полученное в м>ч1\с л-1=дг0+/г решение обозначим у\. Д л я локальной логрешноI in метода воспользуемся формулой (43). Если пренебречь чле­ нами порядка 0 (AS+2), то для погрешности метода на данном ma­ il <ираведлива формула y ( x a+ h . ) —~yl 5£'St(xs>, i/0) Л Н1. (59) Hi рпемся в исходную точку Хо, и из точки Хо сделаем подряд «m i шага, каждый величиной hf 2. Сделав такой шаг первый раз, 73
получим приближение у к решению в точке x 0+/i/2. Тогда погреш­ ность метода на этом шаге согласно (43) равна y(x„ + h/2) — y 4 's t >(х«, (/„)(Л/2) ! _ ‘ . (60) Сделав шаг h/2 второй раз, но уже из точки x0+ h ! 2, получим при­ ближение у\ к решению в точке х {^=х0+ h . На этом втором шаге погрешность метода равна У ( х 0+ Н.)— у~Я£У (*о + ft/2. ~у) (ft/2)s+1, (61) где у ( х ) — точное решение уравнения ( 1), удовлетворяющее ус­ ловию y ( x 0+ h/2) = у . Так как мы используем малую длину шага Л, то точка ( x 0-\-hI2, у ) находится близко от точки (х0, уо). Поэтому в силу ограничен­ ности по предположению частных производных и 4V глав­ ный член погрешности метода на втором шаге будет таким же, как и на первом: < /(*о+Л)— г/1 = 'М*о. !/<,) (ft/2)5' 1. (61') Разность У ( х ) —у ( х ) двух решений уравнения ( 1 ) удовлетворяет линейному дифферен­ циальному уравнению (у ( * ) — у (ж))' = fu (х. У) ( где у ( х ) заключено между у ( х ) лено в виде (X )— у (*)), и & (х ), и может быть представX У М — У ( * ) = ( * / (х0- f /1/2) — у (х0 + h/2)) ex°+h•Отсюда следует, что xt -f-h _ \ 4^-(l.yh))dl У (*о+ К) — у (х0 + h ) = ( y ( x 0+ h / 2 )— y (х0+ h/2)) ex^ h'2 = = У {*о -Н h/2)— у (х0 + h/2) - f О (h ( у (*04- hi2 )— у (х0 as у (Х 0 + h/2))) ^ /1/2) — у (х0- f h/2)= у (х 0-4-/Z/2)— Теперь может быть найдена погрешность метода на двух по­ следовательных шагах h/2: У (*о + h ) — i J i = ( y (х 0+ h) — у ( х 0+ h)) - f (у (х 0+ h ) — y j as (У (х0- f h/2) — //) + (у (х0+ h ) — y j . 74
Мпдсгавляя б полученное соотношение правые части формул (60) п ((И'), окончательно получаем y ( x v+ h ) - y t£= 2Ч>(*0, ) ,+ ‘ . (62) III (59) и (62) вытекают представления главных членов погреш­ ит-гей метода на шаге h и на двух последовательных шагах /г/2: 'Р (х0. Уо) '= G— '/ II У о ) m t ' ' = (Hi- 24= (*». л )/(2!-1). Пели в качестве приближения к решению в точке х : принять i/t, го локальная погрешность метода равна У ( * 0 + А) — га* (г/l — </j)/(' — ' /2s). У I «ми в качестве приближения к решению в точке Х\ принять у\, то mu решпость метода на двух последовательных шагах к 12 равна y ( * o + h ) — У, s e Q i — j/i)/(2s— ' ) . ( 66) Из (63), (64) видно, что выражения для погрешностей отличаHiioi друг от друга только значениями знаменателей. При этом •никка (64) дает меньшее по абсолютной величине значение поI решпости, чем оценка (63). Следовательно, значение y ]t полу­ ченное на двух последовательных шагах hj 2, является более точ­ ным приближением к решению у{х\) по сравнению со значением i/i. полученным за один шаг h. Конечно, сказанное справедливо имм.ко при достаточно малой величине шага интегрирования h. Ii случае систем^ уравнений (23) правило Рунге оценки ло|-.1/11,ной погрешности (65), ( 66) может быть записано в коорди­ наций форме следующим образом: y - ( x 0+ h )-~(/fas (у !— у \)!(\— 1/2»), У (х„ -i-й) — HI = (у [ — у\)!(2>— 1), i= 1, 2........ М . ( 66') i 1олученное приближенное значение у\ или у\ можно уточ­ ни и,, прибавив к нему величину главного члена погрешности, т. е. шиюжив y ( * i ) 3* У1=У1 + (]/!— </,)/(' — 1 мни У (х ,) — У1^У1 + (У ,—f/i)/(2s— 1). (67') 75
Тогда y { X i ) - y l = 0 ( h s+ 2). В данном способе оценки погрешности формула Рунге— Кутта (7) применяется три раза и требует 3q— 1 вычислений правой ча­ сти f (x , у) дифференциального уравнения (1). Поэтому при слож ­ ных и трудоемких для вычисления правых частях этот способ влечет большие вычислительные затраты. 5.2.2. Оценка погрешности на основе комбинации формул раз­ ных порядков точности. Рассмотрим второй способ оценки локальной погрешности ме­ тода. Этот способ также основан на использовании д в у х прибли­ женных значений решения в одной точке. Однако эти приближе­ ния в отличие от правила Рунге вычисляются не по одной, а по двум формулам разных порядков точности р и s с одним и тем же шагом. Начнем обсуждение данного способа с общего с л у ­ чая, когда применяемые формулы Рунге— Кутта не связаны друг с другом, а потом перейдем к рассмотрению специально подобран­ ных формул. 5.2.2.1. Комбинация независимых формул. Данный способ ос­ нован на комбинации двух формул вида (7) разных порядков точности р и s: г у \ = Уо+ £ р I —i а > ( 68) где k ^ h f i x o , уо), i—i kt= h f \x0+ a ihI^ l= i и = {/<>+ £ Piki, i —l (69) где k l = h f ( x 0, уо), i—i k , = h f [ x 0+ a th, у „ + Л Pi A ). /=i Пусть p > s , r>-r. Локальные погрешности имеют вид 9 " = y ( x 0+ h ) - y ' [ = O ( h . ^ ‘) и P s— y ( x 0 + h ) 76 — i / i = 0 (As+1). в этих формулах
Mi последних равенств следует оценка локальной •|"»1>мулы (69) погрешности Ps= y 1 ~ y \ + 0 ( h ^ ' ) . (70) оставляя в (70) только члены главного порядка, имеем Ps = ур— у\. (71) Мплученная оценка погрешности требует г + г —1 вычислений пранчй части уравнения ( 1). ‘>.2.2.2. Комбинация специально подобранных формул. Если |и >ффициенты в формулах ( 68) и (69) таковы, что ai=ai, Р»7~Р<7* и» 1 = 1« 2, . г, (72) 1» 2, I . • | г, ki —kiг и тля локальной погрешности (71) формулы (69) получается вы1'л/кение следующего вида: г p'ssi/?— У\=ТИ, (73) 1 -1 »,1с q i ^ P i — Pi, <7*=р*. i = l , 2, . . . » г, 1=7-Ь 1, . . . . г. (73') Оценка (73) помимо тех значений правой части, которые вы­ числяются на текущем шаге h и входят в формулу (69), вклю* ♦ист дополнительные значения k,, t= г -f-1, . . . » г. Такой подход к шп ике локальной погрешности позволяет уменьшить по сравне­ нию с правилом Рунге (65) и оценкой (71) количество вычисле­ нии правой части уравнения ( 1). Оценка (73), как и более общая оценка (71), является асимпмштеской, так как она учитывает только члены главного поряд1. 1. к справедлива при достаточно малых размерах шага ннтегри1">иапия. В практике вычислений в качестве приближенного значения ||гшеиия принимается значение у\р как имеющее более высокий порядок точности. Величина £=F. i —l • (74) I и- коэффиценты qi определяются с помощью (73'), называется контрольным членом. В случае системы уравнений (23) конт-
рольный член может быть записан в координатной форме следую­ щим образом: г Е1= Qik / = 1 .2 ........ М . (74') ыл У 5.2.2.3. Контрольные члены для методов Рунге— Кутта. Оцен­ ка погрешности в методах Мерсона, Ингленда, Фельберга. Рас­ смотрим несколько примеров. 1) Методы (21) = + (^i н 4fc2-j-£3) и (16) удовлетворяют условию (72). Контрольный член (74) записывает­ ся в данном случае в виде (75) и имеет порядок О (/г3). Здесь р—3, s = 2 , г—3, г —2. Если оценку локальной погрешности метода (16) вести по правилу Рунге (65), то для этого потребуется пять обращений к правой части вместо трех. 2) Классический метод Рунге— Кутта (22) У1 = Уо+ -J- <'fei + 2кг + 2*3•I- К ) и метод второго порядка У\=Уо + -^ {— * i -г 2fc2 2*а— ,)7 к ( 6) удовлетворяют условию (72). Контрольный член (74) записывает­ ся в данном случае в виде Е= - + (77) и имеет порядок 0(/i3). Здесь р = 4 , s = 2, г —4, г = 4 . Он известен как контрольный член Егорова. 3) Классический метод Рунге— Кутта (22) и метод (16) так­ же удовлетворяют условию (72). Контрольный член записывает­ ся в виде E = - ^ ( k 1— 4k2- f 2&, + £4) О и имеет порядок 0 ( й 3). Здесь р = 4 , 5=2, г = 4 , 7=2. 78 (78)
I) Мерсон предложил следующую модификацию классическо I " метода Рунге— Кутта: У1~Уо~г ~^г (^i ~\г 4^4 + ^s)* kx= h f ( а'0 , у0) , k2= h f fx „ + - Y h, + ^ з = ^ / (*o + ~ И №>+ ~g“ + "jp (79) ) . kt = h f ( x 0+ -^ ih ,/0+ -^-fei + - | - fes ) . kb= h f U 0-\-h, Уо + ~ - k ---- ~ - * Формула (79) и формула третьего порядка !/i — ^/о+ ~ ~ (^i "1" З^з + 4&4 (80) 2&б) . vювлетворяют условию (72). Контрольный член « п н в данном случае в виде Е = - L - ( 2 k 1— 9k3-\-8kA— kb) uU (74) записыва(81) к имеет порядок О (Л4). Здесь р = 4, s = 3, г = 5 , 7=5. Если бы контp o .i i> точности для метода третьего порядка производился по прапилу Рунге (65), то это потребовало бы восьми вычислений пра­ вой части вместо пяти в методе Мерсона. Па более узком, чем ( 1), классе линейных уравнений вида y '= f{x , y )= a x+ b y -\ -c (82) формула (80) имеет не третий, а пятый порядок точности. Поря1ок формулы (79) остается по-прежнему равным четырем. Помому величина р = — Е = ---- — (2/гх— 9/г3 + 8£4— &5) 30 (83) ■ пжит главным членом локальной погрешности формулы (79) и имеет порядок О (/г5). Таким образом, метод Мерсона (79) о б л а ­ пит той особенностью, что на классе уравнений (82) главный ч и п его локальной погрешности выражается с помощью линей­ ном комбинации только тех значений правой части, которые не­ посредственно входят в формулу (79). Следовательно, для полу41 ими оценки погрешности отпадает необходимость в дополнитель­ ных вычислениях. 79
5) Фельберг разработал множество методов, удовлетворяющих условию (72). Приведем предложенные им формулы четвертого и пятого порядков: 16 . , 6656 . ki + - — ~ k . i ОО 12 825 + У[ь' = Ус !к-\ 28 561 ,.ж 95 Ж .Л/ , km" 56 _ 433 <84> k + J i 08- A + -212L kt ----1- k„, 216 1 2565 J 4104 5 (85) 6 v k,i=~ hhff (x0, (xa. y0), k hf ( x 0+ - j - h , Co: ,, 4 j__ 8 k1-\~—— h __ ® y0 3 h А:3=Л/^ х0+t -5-/1, k4— hf ^x0 1 =/l/ ^Л'о 12 12 13 1 ^* , , 0 32 1932 216 1 . 2197 7200 1 , 32 , / , 2197 7296 , N 2197 */ * _ ______^ 8fez Д+ . J—8 8—! *3 ■ -43- /f _ y9+ + — 1 2 513 *Л 3 я = */ (*0 -4 Контрольный член (74) записывается в виде Е = 360 128 , 4275 ^ , 127 , 6840 . 1 . . 50 2 55 , 6 (86) и имеет порядок О (Л5). Здесь 5, s = 4 , г = 6, 7=5. Если оценку погрешности для метода четвертого порядка производить по пра­ вилу Рунге, то это потребует одиннадцати вычислений правой ча­ сти вместо шести в методе Фельберга. 6) Инглендом построены следующие формулы четвертого и пя­ того порядков: У',5’ = Уа + 336 (1 4 ^ + 3 5 * , + 1 62fe5+ 125*в), о (k 1 4-4*з + *i). k1 = h f ( x с Ус), k2~ h f —, у0 Ч ~&i j . k3= h f ( jc04— — h, i/04 - -j* k4~ h f {xQ-\-h, y0~ k 80 + ^2) у . 34- 2/e3), (87) ( 88)
k ~ h f ( -к0H— + А- /1, у0 + (7*, + 10*2+ * 4) |, ( 2 8 ^ - 1 2 5 ^ + 546^ + 5 4 * 4 - 378*»)j . Контрольный член Е= 1- ( — 4 2 ^ — 224*3— 21*4+ 1 6 2 * 5+ 1 2 5 * „ ) (89) ммост порядок О (/г5). Здесь р » 5, s = 4 , г = 6, г= 4. Выигрыш в ко­ личестве вычислений правой части по сравнению с правилом Рун11* при оценке локальной погрешности метода такой же, как и в методе Фельберга. 5.2.3. Оценка погрешности с помощью нелинейного контроль­ н о г о члена. Д л я приведенных в предыдущем разделе методов оценка локальной погрешности выражалась с помощью линейной комбинации (74) нескольких значений правой части дифферен­ циального уравнения. Существуют ли другие оценки локальной погрешности, отличные от (74) и содержащие меньшее количестио значений правой части? Оказывается такие оценки сущест­ вуют. В качестве примера можно привести формулу типа Рунге—К у п а четвертого порядка точности: * ! = * / ( * „ , (/„), *2 — ^ / (X 0 -\-~h, </о+— * 1 ) . *з— hf (x 0+ -^-/t, f/,; + - j^ - * 1+ - * 2) , и выражение для погрешности формулы на шаге Pi = У (*о + /i) — Ul — О (ih5) п виде нелинейного контрольного члена Скрэтона: I де 81
19 27 8 — 20 — - J 15 W— kt — k^. Полученное значение решения y { можно уточнить, если прибавить к нему оценку локальной погрешности, т. е. в качестве прибли­ женного решения взять сумму У[&}= У 1 -т Р , ■ В результате получаем новую формулу вида (5) пятого порядка точности У ( 5 ) _ Уо 32 162 1 170 135 . , 4 250 1377 Ь5+ uv W использующую пять вычислений правой части на одном шаге. Но эта формула уже не является формулой типа Рунге— Кутта (7), поскольку величина Д у о = г /!5>— уо не выражается линейно через kt. 6. Интегрирование с переменным шагом. Автоматический вы­ бор шага интегрирования. Д о сих пор мы рассматривали такой процесс решения задачи ( 1), (2), когда формула Рунге— Кутта применялась с одной и той же величиной шага интегрирования во всей области вычисления решения вне всякой зависимости от ха­ рактера поведения решения. Это были шаги h либо h/2 в случае повторного счета для оценки погрешности по правилу Рунге (53), либо 1гг (58). Какая бы из этих величин ни использовалась, она не изменялась от точки к точке. В этом случае говорят, что решение задачи получено с посто­ янным шагом интегрирования. Применение переменного шага ин­ тегрирования позволяет учитывать характер поведения решения и уменьшить общее число шагов, сохранив при этом требуемую точ­ ность приближенного решения. Тем самым могут быть снижены объем работы и машинное время и замедлен рост вычислитель­ ной погрешности. Имея в распоряжении способы (65), ( 66), (71), (73) оценки локальной погрешности метода, величину шага интегрирования можно выбирать автоматически в процессе счета. При этом мож­ но исходить из того, чтобы на каждый шаг приходилась приблизи­ тельно одинаковая погрешность. Наиболее простой и распростра­ ненный алгоритм автоматического выбора шага является предме­ том нашего дальнейшего обсуждения. 6.1. Алгоритм выбора с помощью удвоения и деления шага пополам. Пусть p«+i — оценка локальной погрешности метода на шаге /г, допущенной при вычислении приближенного значения ре82
шсния в точке x n+ h. Если оценка превосходит некоторую наперед заданную границу е: |рл+11 > £ , (90> ю считается, что значение решения не удовлетворяет пред­ писанной точности и шаг h объявляется неприемлемым. Получен­ ная точка х п+ h и значение исключаются из рассмотрения. выбирается новое значение шага /2(1)=Л/ 2, и вновь по той же формуле Рунге— Кутта с шагом Л(1) вычисляет­ ся новое значение решения УЬ п1\ в новой точке Пусть — оценка локальной погрешности метода на дан­ ном шаге Л(1>. Если оценка опять превосходит заданную границу е: ip $ ii> E то точка х п+ Л(|> и значение опять исключаются из рассмотрения, шаг снова делится пополам: hM^hM/2 н вычисления повторяются. Так происходит до тех пор, пока при какой-то величине шага (обозначим ее через hn) оценка локаль­ ной погрешности не станет меньше е: |pn+i|<e. (91) 11осле этого считается, что решение дифференциального уравне­ ния продолжено до точки х п^ \ ^ х п+ hn. Дальнейшее интегрирова­ ние уравнения производится из точки х п+\ с шагом hn+ь который выбирается описанным ниже способом. Если оценка локальной погрешности на шаге hn= x n+\— х„ удовлетворяет неравенству |рп+11<е/7С, ’ (92) где К — некоторая константа, то считается, что достигнута точ­ ность, превышающая заданную, и шаг интегрирования удваиваетгн: hn+ 1= 2/г„. Если выполняется неравенство е / К < |рл-и |< е , (93) ю считается, что полученное в точке х п+\ решение удовлетворяет •пданной точности и шаг интегрирования остается без изменения hn+i—hn83
Таким образом, на тех участках изменения независимой пе­ ременной, где достигается высокая точность приближенного ре­ шения, шаг интегрирования возрастает, а там, где точность не до­ стигается, шаг интегрирования сокращается до необходимых для ее достижения значений. Тем самым обеспечивается выбор вели­ чины шага в зависимости от характера поведения решения диф­ ференциального уравнения. Константа К обычно полагается рав­ ной 2\ где v — порядок используемой оценки локальной погреш­ ности метода. Константы, определяющие переход к удвоению ша­ га для различных формул Рунге— Кутта, приведены в таблице. Формула Рунге — Кутта н ее порядок S Формула для уточнения решении и ее порядок р Формула для оценки локальной погрешности метода и порядок оценки (1 6 ) 5 = 2 (2 1 ) з 8 Контрольный член Р= (75) 3 (7 6 ) s= 2 (2 2 ) Р= 4 (7 7 ) 3 8 Контрольный Егорова (1 6 ) s= 2 (2 2 ) /7 = 4 (7 8 ) 3 8 Контрольный член (80) s= 3 (7 9 ) /7=4 (81 ) 4 16 Контрольный член в методе Мерсона (7 9 ) s= 4 (8 0 ) (8 3 ) 5 32 Р = 5 Контрольный член в методе Мерсона для у ' = ах 4 - by + с (8 5 ) s= 4 (84 ) /7 = 5 (8 6 ) 5 32 Контрольный член в методе Фельберга (8 8 ) = 4 (8 7 ) р = 5 (89 ) 5 32 Контрольный член в методе Ингленда (7 ) У S (6 5 ), (6 6 ) s -г 1 2$+i 5 5 Константа удвоения шага К Способ оценки локальной погрешности метода член Правило Рунге Иногда для того чтобы сократить число неприемлемых шагов, в изложенный здесь алгоритм выбора шага вносится изменение, которое заключается в следующем. Если при продолжении реше­ ния из точки х п в точку Хп+1 = х п-\-hn шаг интегрирования сокра­ щался хотя бы один раз, то при выборе следующего значения ша­ га hn+y удвоения предыдущего шага hn не происходит, даже если и выполняется соотношение (92). 84
6.2. Выбор максимальной для заданной точности длины шага. 11:11-смотрим еще один алгоритм выбора шага, применив ту же ичгю, которая была использована при выводе формулы (58). Так как оценка р«-и локальной погрешности метода равна с точностью н> членов более высокого порядка малости главному члену л о ­ кальной погрешности метода, то в силу (43) рп+1^ ф ( х п, yn) h s+ l. (94) Соотношение (94) справедливо для всех оценок, выведенных в и 5.2 (см. также таблицу). Если оценка рп+1 погрешности превос­ х о д и т заданную границу е: )р«-н I > е , м> считается, что на данном шаге h метод не достигает требуемой тчпости и вычисленное значение t/n-н решения вместе с точкой р/г исключается из рассмотрения. В этом случае выбирается новый размер шага, но не последовательным делением пополам, как в вышеописанном способе, а с помощью соотношения ht = a h , (95) t че а находится из условия выполнения равенства Ж х п , у п)П?'\=е. (96) Из (94), (96) получаем, что a 5 + i= e / | p n + l J к а= . (97) Гчесь а <1 и новое значение шага меньше предыдущего. Д а лее по формуле Рунге— Кутта из точки а,, выполняется один шаг /гв и вычисляется приближение Уп%\ к Решению дифференциального уравнения в точке x n-\-ht. Если первоначальная оценка ря+| локальной погрешности меи»да не превосходит заданную границу е: I pn+i |< е , и* считается, что полученное приближение уп+\ к решению удовм гворяет требуемой точности и значение x n+ h независимой пе­ ременной принимается в качестве следующего узла х п+\ интери.1лл интегрирования. Дальнейшее интегрирование уравнения осу­ ществляется из точки х п+1 с шагом /ге, который определяется с по­ мощью соотношений (95), (97), Теперь а > 1 и ht ^>h. 85
Преимущество данного алгоритма выбора шага заключается в большей гибкости по сравнению с описанным в предыдущем разделе способом. Напомним, что в нем при достижении требуе­ мой точности абсолютная величина шага интегрирования либо увеличивается в два раза, либо не изменяется в зависимости от того, выполняется или нет неравенство (92). Если это неравен­ ство не выполняется из-за незначительного превышения оценки (р/7-ril над величиной е/К, то шаг интегрирования не увеличивает­ ся и остается прежним. В алгоритме, основанном на использова­ нии формул (95), (97), имеется возможность увеличения шага в любое число а раз даже тогда, когда это число меньше двух. Это приводит к более сглаженному изменению шага интегрирования и, как следствие, к сокращению общего количества шагов и сниже­ нию вычислительных затрат. В действительности берется несколько меньшее, чем опреде­ ляемое с помощью (97), значение а, например а* = 0 . 9 а = 0 . 9 чу e/|p„+ i| , (97') и соответственно меньшее по сравнению с (95), (98) значение ша­ га интегрирования h*e= a * h . (95') Это делается для того, чтобы избежать тех шагов, для которых не достигается требуемая точность. 6.3. Использование различных характеристик точности. Авто­ матический выбор шага интегрирования имеет важный аспект, о котором надо помнить при практической реализации алгоритма на ЭВМ. Д е л о в том, что для достижения заданной точности может (в зависимости от алгоритма выбора шага) происходить большое число делений пополам шага интегрирования или величина а, вычисляемая по формуле (97), оказывается настолько малой, что вновь определяемая длина шага h не вызывает изменения неза­ висимой переменной, т. е. в условиях машинной арифметики вы­ полняется равенство ,v©/i=x, (99) где 0 — машинная операция арифметического сложения, а точ­ нее, сложение чисел с плавающей точкой, т. е. чисел вида л = ± Р Р (а 1Г , + а 2Г г + ••• + а , Г ' ) . здесь р — основание системы счисления, удовлетворяющий неравенству р — порядок (ЮО) числа, рсрср. Д л я ЭВМ Б Э С М -6 Э=2, р —— 64, р —63. Равенство (99) выполняется тогда, когда текущее значение h станет по абсолютной величине меньше или минимального поло­ 86
жительного числа, представимого на данной Э В М и равного ,1 ==р^-1| или некоторого числа г > 0, равного расстоянию от х до «пооднего справа (при Л > 0) или слева (при Л < 0) вещественного числа, которое представимо на ЭВМ. Можно показать, что r= r(x , t)= pl_/-PP_l = m a c h e p s ^ m a c h e p s - [ x j , (101) | ic macheps=p1- ', называемое машинным эпсилон, равно расстоянию от 1 до соседжто справа вещественного числа, представимого на ЭВхМ. Таким образом, если шаг интегрирования h удовлетворяет условию | / i| ^ m a x {a , г(х, 0}» ( 102) I<> при этом h равенство (99) не выполняется. Без проверки ус­ ловия (99) во время работы программы с автоматическим вы­ бором шага может произойти зацикливание. Этого можно избе­ жать, если вместо верхней границы локальной погрешности мет д а , которая может оказаться слишком малой в сравнении с порядком искомого решения, задавать число верных цифр в приближенном значении решения. Это позволяет более осторожно подходить к определению точности приближенного решения с уче|<>м длины разрядной сетки машины. Чтобы прояснить ситуацию, напомним определение верных цифр числа. Цифра а* в приближенном числе У* — 1+ аФ Р 24“ • • • -г а'П$р т-г - • • считается верной, если абсолютная погрешность удовлетворяет неравенству р = Л?. < ( о Р ' ,_*. Ау+ числа у* (103) где со — некоторое число, удовлетворяющее условию 1/2< о > с 1. 1 сли а ) = 1, то абсолютная погрешность числа у* не превосходит единицы разряда, соответствующего цифре ак, т. е. Ясно, что, задавая ограничение сверху для ошибки в виде до­ пустимой абсолютной погрешности, мы тем самым фиксируем разряд, соответствующий самой младшей верной цифре числа, .1 не число верных цифр в нем. В результате количество требуе­ мых верных цифр в приближенном решении становится зависи­ мым от порядка р искомого решения и может превзойти длину / разрядной сетки вычислительной машины и быть недостижимым па данной ЭВМ. Поясним сказанное на примере. Предположим, что допустимая абсолютная погрешность метода составляет 1/2 - 10_3, а точное ре­ шение задачи в некоторой точке интервала интегрирования при­ нимает значение с десятичным порядком р —5, например 10000.33333... . Допустим, что вычисления ведутся на Э В М с 87
семью десятичными знаками. Заданная верхняя граница абсо­ лютной погрешности соответствует требованию, чтобы приближен­ ное значение решения имело по крайней мере пять верных знаков после запятой. Но так как решение имеет порядок /?=5, то о б ­ щее количество верных десятичных цифр должно быть не менее десяти, что превышает возможности условий проведения счета. Вообще, если допустимая абсолютная погрешность равна <о* 10"Л, порядок решения равен р, а количество используемых при вычис­ лении десятичных знаков равно t, то, для того чтобы заданная точ­ ность была достижима, необходимо выполнение соотношения t— p > k . (104) Как видно, для рассмотренного примера это соотношение не вы­ полняется. В таких случаях более целесообразно использовать в алгорит­ ме выбора шага не абсолютную, а относительную погрешность р/М> (Ю5) так как, требуя, чтобы решение имело k верных цифр (десятич­ ных), мы тем самым требуем, чтобы относительная погрешность этого решения не превосходила (о-101_*. Однако здесь надо сле­ дить за тем, чтобы решение не обращалось в нуль. Более гибким является использование меры погрешности. М е ­ рой погрешности приближенного значения у называется величина р,, определяемая соотношением I р/1г/1. ' i p, \у \ > р , \у\<Р. (106) где Р — некоторое фиксированное положительное число. Конт­ роль точности по мерз погрешности состоит в том, что на тех уча­ стках интервала интегрирования, где абсолютная величина реше­ ния не превосходит некоторого значения Р у контроль точности ве­ дется по абсолютной погрешности, а там, где абсолютная величи­ на решения превосходит это значение, контроль точности ведется по относительной погрешности. Другим эффективным средством может служить ограничение на число последовательных делений шага интегрирования, совер­ шаемых в одной точке, или ограничение снизу на величину шага интегрирования. Например, ограничивая количество делений двад­ цатью, мы допускаем максимальное уменьшение шага в 10б раз. В большинстве случаев этого вполне достаточно, если, конечно, не нарушается требование ( 102), обеспечивающее невыполнение условия (99). Если и после двадцати делений точность по-прежне­ му не достигается, то, как правило, это свидетельствует о том, что явный метод типа Рунге— Кутта не подходит для решения данной задачи (конечно, если в программе нет ошибок). 88
Г л к л и ситуации обычно негрсчиегем при ми имрнрпилппн дпф||н•реиин альпых у р д т к ч ш н , у которых ,и шах I — I Оу » I- 1‘ подобным уравнениям относятся уравнения и системы уравне­ нии. правая часть которых удовлетворяет условию Липшица м I/'<*. у\ ... . yM) — f ( x , z1........ z « ) | < L . y \у‘ — г‘ | (107) i—1 * (ю л мной константой L: 1, (107') и частности жесткие системы (см. п. 7). Указанный прием позволяет получить в процессе счета поимпую информацию о характере решаемой задачи, обнаружить « ильное измельчение шага интегрирования, избежать большого \нсличения общего числа шагов и, как следствие, чрезмерного тмрастания машинного времени. Д ля системы уравнений (23) с проверкой на точность могут иычпсляться либо все компоненты решения, либо некоторые из них, в частности одна компонента. При этом контроль точности может вестись покомпонентно или по норме. В первом случае каждая компонента проверяется на точность отдельно от осталь... . причем для разных компонент могут использоваться как раз­ личные характеристики точности (абсолютная, относительная поI рсшность, мера погрешности), так и разные допустимые значе­ ния погрешности. В последнем случае г — вектор ( е 1, е2, . . . . ,, с * ' ) , длина которого М ' равна количеству проверяемых на тчность компонент решения, а неравенства (90), (92), (93) буIYI своими для каждой компоненты решения: |p*v, 1> е / - (108) (109) ( 110) {лось /= 1, . . . , М \ yVf'cAf, ij — номера проверяемых на точность компонент, Решение о делении шага пополам принимает­ ся. если условие (108) выполняется хотя бы для одной компо­ ненты, а решение об удвоении шага принимается тогда, когда ус­ ловие (109) выполняется для всех этих компонент. Те компоненты решения, которые проверяются на точность по мере погрешности (106), могут иметь каждая свое значение Р для перехода от абсолютной погрешности к относительной и обратно. В этом случае Р — вектор ( Р \ Р 2> . . . , Р м" ) , длина которого 89
М " равна количеству проверяемых на точность по мере погреш­ ности компонент решения, а мера погрешности определяется от­ дельно для каждой компоненты: ц., I pW I p'i . 'I . I (Ш ) Здесь / = 1.........М " , Л Г ' < Л Г с М , // — номера компонент, прове­ ряемых на точность по мере погрешности, ч'. Контроль точности по норме означает, что контролируется не­ которая норма оценки погрешности ||р||. Часто используются нормы II Р IIос" max |р'|, lip 111 = у I P'1. 1-1 Г тг ИР На— у |Р‘ Г . В этом случае е — скаляр, а неравенства (90), (92), (93) и со­ отношение (97') записываются соответственно в виде 11р/1-и!1> е , i!p«4-ill<e/K, е//Сс!!ря-и1!с Е , a* = 0 . 9 a = 0 . 9 s I Ц. «< VII Из вышеизложенного следует, что формулы Рунге— Кутта очень хорошо приспособлены для интегрирования с переменным шагом, так как они позволяют легко менять шаг интегрирования и при этом не требуют никаких дополнительных вычислений и преобразовании. Этим они выгодно отличаются от других мето­ дов таких, как конечно-разностные методы (см. гл. 3), в которых при изменении шага интегрирования требуются дополнительные вычислительные затраты. 7. Чего не могут явные методы Рунге— Кутта? Рассмотрим случан линейных уравнении ( 112) (113) У (0 )=У о с К О . Д л я метода Эйлера имеем Уп~ 1= Уп ~г hb-Уп = (1 + 90 Уп• (114)
I очное решение задачи (112), (113) у ( х ) = е ' - х-у0 монотонно убывает, у { х ) ~ * 0, сохраняя знак, когда х растет. Есте< Iпенно требовать, чтобы решение разностной задачи (114), (113) обладало таким же свойством. Очевидно, что условием такого поведения решения является выполнение неравенства О< ИЛИ 1 +>./*< 1, |X |/I < 1. (115) Д ля метода второго порядка точности (14) имеем Уп и= Уп -г № у п Hr 7Ji ( J r, — M u j n) ) = (1 - ^ X h - r № i 2/ 2 ) y n . (116) Мюбы решение yr. задачи (116), (113) монотонно убывало, необ­ ходимо выполнение условия O c l H - ^ т X2/i2/2 < Синода следует липа шага к: неравенство, которому 1. должна удовлетворять — 2<>М<0, ii.'i и |X |/г< 2. (117) Такое же условие (117) на величину шага интегрирования по:iyчается и для метода (16). Ограничения, аналогичные (115) и ( N 7 ) , должны выполняться, хотя и с несколько большей констанмж. и для методов Рунге— Кутта более высокого порядка (7), мтгорые, подобно (114) и (116), могут быть записаны в виде yn+\—Fq(}Jl)ynf (Н 8) « и-’ /*'<У(Х/;) — многочлен степени q от }.Н. Таким образом, применение методов типа Рунге— Кутта (7) иля решения задачи ( 112), (113) возможно только при выполне­ нии условия (119) |>.| /j< const, Рассмотрим систему линейных уравнений с постоянными ко•ффицнентамн ( 120) У ' - А у , А (^с.)» i, /— 1, М, У (0 )= У о , Уо= (Уо‘ ), 1— 1. ... , м. ( 121) Можно показать, что применение явных методов типа Рунге— Кутi.i (24) к (120), (121) приводит к соотношению y n + i = F q ( A h ) y n, (122) • ic Fq(A h ) — многочлен степени q от матрицы Ah. 91
Пусть А является матрицей простой структуры, т. е. имеет М линейно независимых собственных векторов. Пусть А«, е, — соб­ ственные значения и соответствующие им собственные векторы матрицы А. Тогда общее решение задачи (120), (121) может быть представлено в виде м у(х) = У (123) При интегрировании линейной системы ставляющая (120), (121) каждая со­ C^Ve* решения (123), пропорциональная одному из собственных векто­ ров, интегрируется независимо от остальных компонент. В силу ( 122 ) м м м «Л.+1= ^ И Л ) г / » = Е />(ЛЛ)С!,е( = £ F , С'е, = £ c i + ,e,. (124) i —1 f —1 i~*l Формулы преобразования коэффициентов Сп1 C‘„ + i = F „ { } , , h ) C ‘r, (125) совпадают с формулами (118) численного интегрирования урав­ нения (112) с X=Xi. Поэтому условие (119) с А = А <, t— 1, . . . , М, должно выполняться также и для системы уравнений (120). Од­ нако при интегрировании системы с большими по модулю отрица­ тельными собственными значениями |А,/|^>1 требование выпол­ нения условия (119) является слишком обременительным, так как оно влечет необходимость применения очень малого шага интег­ рирования |h |< const / 1А/1. Существенно, что малый шаг интегрирования не может быть увеличен даже тогда, когда быстро изменяющиеся составляющие су-/*е/ станут ничтожно малыми и решение (123) задачи (120), (121) будет характеризоваться медленно изменяющимися компонента­ ми с малыми по модулю производными. Поэтому использование явных методов Рунге— Кутта требует огромного объема вычисле­ ний, что делает их для таких задач практически непригодными. Д л я жестких дифференциальных уравнений характерно поле направлений, изображенное на рис. 9. На нем иллюстрируется поведение явных методов типа Рунге— Кутта на примере метода Эйлера, когда они применяются к жестким уравнениям. Эти ме­ тоды дают беспорядочные колебания с быстро возрастающей ам­ плитудой, ничего общего не имеющие с точным решением задачи. 92
Д ля таких задач применяются специально сконструированные неявные численные методы, например неявный метод Эйлера yn+l= y n + hf (дсп-м, У п + 0- Подставляя вместо f ( x n+\, У п + \ ) правую часть уравнения получаем Уп+1=Уп-\- hhyn+i, (126); (112), in сюда Уп+\—Р (}М)уп, F (Xh) = I /( 1— } Л ). ' Н Гак как А,<0, то 0< F ( X / i ) < l . Таким образом, применение фор­ мулы (126) обеспечивает монотонное убывание уп. Тем самым обеспечивается монотонное убывание всех составляющих Cn'ei приближенного решения (124) задачи (120), (121), для которых Рис. 10 иллюстрирует использоii.'iiine неявного метода Эйлера (126) для интегрирования жесткоt o уравнения. В заключение приведем список литературы, рекомендуемой к гл. 2: |4-7, 9, 12, 14, 19, 22, 24— 26, 28, 29, 31, 33, 34, 37— 41, 44J. Рис. 9. /‘ш\ 10. И» падение неявного 1 ПЧ.1 Эйлера ме- Поведение ломаной Эйлера д ля ' жесткого уравнения, когда не со­ блюдается условие |Я|А<1
Глава 3 МНОГОШАГОВЫЕ МЕТОДЫ РЕШЕНИЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИИ 1. Общее представление многошаговых методов. В данной главе мы рассматриваем численные методы решения за­ дачи Коши (2.1), (2.2), которые могут быть заданы формулой Уп-±к'=: F {ft Xnj-kt Xrx-i-k■ —1» * * * » %п • Уп-kt Уп-'— k—1* • • ■ » Уп)• (О Здесь значение решения уп-к в точке х н+к определяется через зна­ чения решения в к точках, предшествующих Такой метод называется /г-шагозым. Из класса (1) выделим многошаговые методы вида к к У а (уп.L|==/iV (31-/‘ ( a v w , Уп- i ) , Як¥=0, (2) i==0 f—о применяемые на сетке с постоянным шагом + /г= 0, 1, 2, . . . , N h, Л \ = [Х уА ]. (3) Разность между наибольшим и наименьшим значениями индекса неизвестной функции уп, входящей в уравнение (2), равна к. П о ­ этому соотношение ( 2) является разностным уравнением /г-ro по­ рядка, общее решение которого зависит от k параметров. Чтобы выделить единственное решение этого уравнения, необходимо за­ дать к дополнительных условий на функцию уп. Этими дополни­ тельными условиями являются значения функции уп при /г— = 0, 1, , к— 1 : Уо==£о> **• 1 Ук—i ==g*—ь (4) которые предполагаются известными. Используя значения (4). из уравнения (2) при п= 0 можно найти yk, затем, используя значения g-!, g*_i, у а и полагая в (2) /2—=1, найти ук+\ и т. д. Таким образом, данный метод числен­ ного решения дифференциального уравнения ( 2. 1 ), ( 2.2 ) состоит в решении разностной задачи Коши для разностного уравнения (2) и начальных условий (4). Если искомое решение уп+к входит в правую часть этого урав­ нения, что бывает, когда то формула ( 2) определяет неяв94
пый метод. Если р.-=0, то искомое решение в правую часть не ичоднт и уравнение ( 2) может быть разрешено относительно и„\!.. В этом случае формула (2) определяет явный метод. Введем в рассмотрение многочлены k (5) р(г) = У а,г‘'. f*0 * О (2) = £ PiZ' i=0 (6) ii оператор Е сдвига по узлам: Еуп 1огда == У п -г Ь Е Уп Уп-~ 1 • уравнение ( 2) может быть представлено в виде p ( b ) y n= h o ] ( E ) f nf (7> I U* ft: —/ (Хп, У») • Наряду с (2) и (7) мы будем пользоваться также следующей •.мпк. ю разностного уравнения: у . - ^ i r - i-~О h = У Llj Pi/ Уп- t ) - (8> i=0 Уравнения (2), (7) и ( 8) называются также конечно-разностные мн схемами. 2. Построение разностных схем методом неопределенных коэф­ фициентов. Коэффициенты а, и р, выбираются таким образом, чтоГ'Ч разностное уравнение ( 2) аппроксимировало дифференциальное \равнение ( 2. 1) с достаточно гладкой правой частью с некоторым порядком s. Это означает, что невязка р, которая получается поi .о подстановки точного решения у ( х ) дифференциального урав­ нения ( 2. 1) в разностное уравнение ( 2): k к У a ty (.хп и) — Л У руд' (*„_ 0 = (9> i— 0 1=0 ииляется величиной 0(/is+I). Число s называется порядком ап­ проксимации, или степенью разностного уравнения (2). Величи­ на Гп+k —pn+klfl (19)' называется погрешностью аппроксимации дифференциального \равнения ( 2. 1 ) разностным уравнением ( 2). Другими словами, погрешность аппроксимации — это невязка, м»шрая получается после подстановки точного решения диффе­ ренциального уравнения в разностное уравнение ( 8). 95
Если У (*«+/): воспользоваться формулой sf 1 У< * „л,) = У ' /=0 Тейлора дО>(х„) + для y ( x n+i) и 0 {К'% ( 11) ' г/' (x„+i) = .«</•-» '> (х„) + О ( * ’ +'), /=0 то после подстановки (11) в (9) может быть получено разложе­ ние величины pn+k по степеням Я: к к к Рп+*=( « г ) г/(<п) + * ( P i) £/' <лг„) 1— 0 ft + ft - 2 y . # i ) i f (*») + e=i 2-1 ft •••■ ft + ~ r ( is<x‘ ~ s ‘ 5_1^ ' ) y<S> + i— 1 1=1 К К ( -> < *,-(*+ !)£ » • & ) ^ + » ( х „ ) + 2—1 2«~l /,s +l + (5+1)! 0 (Л512). ( 12) И з ( 12) видно, что, для того чтобы величина рл+* имела поря­ док 0 ( Я 5+!), необходимо выполнение условий i 2-0 “'=°- ft (13) У ia ‘ - y Р<=°i-0 2-1 V * 'а г— vV, fv—lPi = 0, 1= 1 2*-1 v = 2 , 3, . . . , s. Предполагаем, что коэффициенты a;, p, удовлетворяют условиям (13) при некотором s > l , так что всегда выполняются первые два коэффициентных условия (13). Подчеркнем, что степень s разностного уравнения (2) опре­ деляется только коэффициентами <х« и р, этого уравнения и не за­ висит от того конкретного дифференциального уравнения, для ре­ шения которого оно применяется. Поэтому, если правая часть дифференциального уравнения ( 2. 1) обладает достаточной глад96
попью (а мы в дальнейшем предполагаем, что функция f i x , у) имеет непрерывные частные производные до порядка 5+1 вклю­ чительно и, следовательно, у (х ) — непрерывные производные до порядка s + 2 ), то невязка (9) и погрешность аппроксимации (10) и.| решении такого дифференциального уравнения запишутся в виде я я ( '/I \k= 7 7 + 7 ) 7 ( £ V + ' a , - ( s + И V V & ) y{s+" i-1 ^il i-ft-- (s + 1 )! (fts- 2) = i-l = C . + ,ftH-V <sf" (* » ) К К /lS + +0 (14) (fts+2), ( £ > + 4 - ( s + ! ) У ] *sP i) y (s+l> <*"> + 0 (А‘ + ‘) = i---l i—l (15) = c s+,/iVs+1) ( * „ ) + o (Л*'4 ). I Д1* Cs-fl = + 7 (s + ( Е ^ - С 2=1 + . ф , , ) . i-1 Ir ’iii же решение дифференциального уравнения не обладает нуж­ ным числом производных, то невязка (9 ) и погрешность аппрок­ симации ( 10) имеют, вообще говоря, меньший порядок по h и «щенки (14), (15) не выполняются. Д ля того чтобы величина ря+ь и погрешность аппроксимации Г.1 у не изменялись при умножении разностного уравнения (2) на произвольную постоянную, вводится нормировка разностного \равнения с помощью дополнительных условий, налагаемых на коэффициенты уравнения. Обычно полагают а /г=1 или £ Р , = 1. (16) (17) 1«0 При выполнении условия (16) уравнение ( 2) может быть заII11<■*1но в виде Л-1 * (18) У п -у к ^ ^ ip n f ? *4“ h V** P i/ (Xn l-i> Уп-1- i ) ' 1=0 i--0 П ном случае невязка pn+k (9) называется локальной погреито• п,ю (формулы (18). 11 качестве примера использования условий (13) для построе­ ния разностной схемы ( 2) попробуем найти явный и неявный двухI 1 .1 К 217 97
шаговые могоды максимально возможной степени, г. о. попытаем­ ся построит!» разностные схемы Уп f 24" a j f n + X 4' & оУп = Л (Pi/ (Х п [ I, */л-и)4-Р0/(*п> У п )) и Уп+2 4* ai!/n-i-l 4" аоУп = Ь (Paf (*л+ 2» */n-j-2) 4" Pj/ (*n fb У«4-1)-Ь0о/(*п, //„))* ( 2(0 с наивысшим порядком аппроксимирующие дифференциальное уравнение ( 2. 1). Коэффициенты а* и 0г явной схемы (19) должны удовлетво­ рять системе уравнений (13), которая в данном случае имеет вид 2 + ^ 1— Р0— Рх = 0, 4 — 2Pj — 0, 8 4-осг— ЗРг = 0, • • • Решая совместно первые четыре уравнения этой системы, находим cto=— 5, a != 4 , 0o = 2, 0 i= 4. Уравнение из системы (13), соответст­ вующее v = 4 , 16+ щ— 40!=О не выполняется при найденных значениях коэффициентов. Таким образом, искомая разностная схема (19) имеет степень 3 и за­ писывается в виде Уп*2 + ЬУп+\ — 5г/п= Л (4 / (х л+ь 0„-ы)4- 2/(хл, уп)). ( 21) Коэффициенты неявной схемы (20) должны удовлетворять сле­ дующей системе уравнений: 14“ a j 4* ®о — 2+ — 0о— 01— р 2=0, 4 4-ctj 2 (0j 4* 202) = 0, 84-ах— 3 (0А4- 40г)= О , 16 + a J- 4 ( 0 14-802) = O, Решая совместно первые пять уравнений, находим а 0= — 1, « 1= 0, 0о=1/3, 0i=4/3, 02= 1/3. Уравнение из системы (13), соответству­ ющее v = 5 , 32 + — 8 (0А4~ 1602) == 0 не выполняется при найденных значениях коэффициентов. Таким 98
и**|* I him. шкомам рланпстпли схема (20) имеет степень 4 и запи» 11и.м1101 п ни до IV //„ ~ т‘ (/ (^ 1 |2, I/«4-2) + 4f (хп+и yn+\) + f ( x nt уп)). *) ( 22) V Усшичипость многошаговых методов. Нам нужны сходя•ми« • методы (2 ). Метод (2) сходится, если для каждой задачи in p i.1 мл три маемого класса ( 2. 1), ( 2.2) >1 max \у(хп) — уп 1-*-0 k^n^Nh (23) tl|MI 0, I шах \у(хп) — уп [-*- 0. (24) In обстоятельство, что разностная схема ( 2) аппроксимирует пиффсрснциальное уравнение ( 2. 1 ) с некоторым порядком s:> 1, .... . вообще говоря, не означает, что решение разностной задачи (V). ( 1) сходится к решению дифференциальной задачи ( 2. 1 ), Г ’ ). Чтобы это проиллюстрировать, рассмотрим задачу Коши | у ' ( х ) = — х3, 0< х < Х < оо, (25) I У (0) = 0. И рання часть дифференциального уравнения (25) рн I дифференцируема. Будем решать эту задачу с ипт метода ( 21) третьего порядка аппроксимации, н.14 1.ЧЫШХ условий (4 ) возьмем точные начальные сколь угодно помощью ява в качестве значения | У (^) == | ^ = ^(/1) = — /г4/4. Разностное уравнение (21) для данной задачи запишется в ви|Г Уп^2+ 4Уплл — 5г/п= — ft4(6п3+ 12я2+ 12п + 4). (27) >ио является линейным разностным уравнением с постоянными м> >ффициентами. Общее решение (27) представляет собой сумму ■1ИЦСГО решения однородного уравнения Упп 2 ч- 4Уп +-1— 5Уп = 0 (28) | частного решения неоднородного уравнения (27). Общее реше­ т е однородного уравнения (28) выражается через корни харакир логического уравнения z2+ 4 z — 5 = 0 (29) 99
и имеет вид У п ^ + С А -Ь Г - (30) Нетрудно убедиться, что частным решением неоднородного урав­ нения (27) является функция У п = — (/ш)4/4 + Л4п/6. (31) Таким образом, общее решение (27) записывается в виде Уп = С1Аг С 2(— 5)п— (/m)4/4 + h*nj6, (32) где константы С, и С 2 определяются из начальных условий (26): Сх= — Л4/36, С2= / г4/36. (32') Окончательно получаем г/„ = — Л4/36 + зь ( — 5)" — (hny/4 + . (33) Рассмотрим решение (33) задачи (2 7), (26) при фиксирован­ ном x n= n h = x * . Если Л—►0, то частное решение (31) неоднород­ ного уравнения (27) стремится к точному решению задачи (25): У п -*— O O V 4 = */<**). Решение (30) однородного уравнения (28), колеблясь, неограничен­ но возрастает по модулю о \Уп\ 00 из-за слагаемого h*_ ( — 5)п. 36 Таким образом, построенное численное решение (33) разностной задачи (27), (26) не сходится к решению дифференциальной за­ дачи (25). Если вместо точных начальных условий (26) выбрать для разностного уравнения (27) специальные начальные условия Уо=0. ух= — НЧ 12, (34) то C i= C 2= 0 и уп- * у ( х * ) - Однако условия (34) в действительности не могут улучшить ситуацию и обеспечить сходимость числен­ ного решения к точному решению задачи (25). На самом деле изза ошибок округления находится решение не уравнения (27), л уравнения с возмущением Уп+2 + 4уп+л— Ьуп= — /I4(6n3+12ra2+ 12л+ 4 ) + 100 6. (35)
Предположим, что миишется в виде 6= 6( к ) = 0 ( № ) . Тогда общее решение (35) yn— C t -{- С2(— 5)" — (/т)4/4 4- /14п/6+ пб (Л)/6. (36) I «ли С\ и С 2 определить из специальных начальных условий (3 4), to Сх= — 6(А)/36, С ,=6 (А )/3 6 (36') и. как видно из (36), опять нет сходимости из-за того же слагае­ м ого 36 Отсутствие сходимости заключается в принципиальном отли­ чим дифференциального уравнения (25) от разностного уравне­ ния (27). Порядок дифференциального уравнения равен единице, и порядок разностного уравнения — двум. Уравнение (27) имеет лна фундаментальных решения 1 и (— 5 )", соответствующие двум • ориям характеристического уравнения (29) 2j = l и z2—— 5. Диффсренциальное уравнение (25) имеет одно фундаментальное ре||ипне у (х ) = \у которое аппроксимируется решением ynmmz ln= l раз1Н" |кого уравнения. Можно сказать, что составляющая С2г2п= 0 ( — 5 )", соответствующая второму фундаментальному решению p.i «постного уравнения, носит паразитический характер. Ее влия­ ние приводит к катастрофическому искажению результата. Вернемся к общему разностному уравнению ( 2) и рассмотрим н.чгсбраическое уравнение Р (* )= 0 , (37) I !«• р (г ) — многочлен, определяемый по формуле (5 ). Уравнение (.1/) называется характеристическим уравнением, а многочлен r U ) — характеристическим многочленом р азн осн ого уравне­ нии ( 2). Допустим, что у многочлена p (z ) имеется корень z ly такой, что I - 11> 1, или кратный корень г 2, такой, что |22|= 1. Применим многошаговый метод (2) к решению задачи Коши У '= 0, У (х 0)= 0 . (38) Формула ( 2) примет вид k 5] г=0 щуп+ 1= 0. П качестве начальных условий для (39) возьмем начальные зна**I IIИЯ У о = Ь , yi = h z x% y2= h z * t . . . , yk—i= h z * —1. 101
Тогда решением уравнения (39) будет сеточная функция yn—hzxn. Если зафиксировать узел х п= х 0+ n h = x , то при Л— 1 гл.1-Л При наличии кратного корня z2 в качестве начальных условий для (39) возьмем следующие начальные условия: г/о=°» y i=h z2, y2=2hz*t . . . , £/*_i = (fe— 1) /гг*~5. Тогда решением уравнения (39) будет функция yn= nhzn r При фиксированном узле Х п = х 0+ n h = x имеем Iyn\ = n h \z2\n— nh = х — xQФ 0. В обоих случаях решение разностного уравнения не стремится при h-*-0 к решению дифференциального уравнения (38), кото­ рое тождественно равно нулю. Следовательно, метод (2) не яв­ ляется сходящимся. Из сказанного выше можно сделать вывод, что не все методы (2 ), коэффициенты которых удовлетворяют условиям (13), при­ годны для численного решения задачи Коши (2.1), (2.2). Среди методов ( 2) следует забраковать те, для которых характеристиче­ ский многочлен (5) имеет корни, по модулю большие единицы, или кратные корни, по модулю равные единице. В связи с этим формулу (2) называют устойчивой, если все корни характеристического многочлена (5 ) расположены в еди­ ничном круге на комплексной плоскости с центром в начале ко­ ординат, а на границе круга нет кратных корней. Первое условие системы (13) означает, что характеристиче­ ский многочлен (5 ) всегда имеет корень z x= \. Д ля устойчивой формулы (2) этот корень называется главным. Все остальные k— 1 корней называются посторонними. Если характеристический многочлен не имеет больше корней на границе, а все посторон­ ние корни лежат внутри единичного круга, то устойчивая фор­ мула (2) называется сильно устойчивой. Если есть посторонние корни на границе и все они простые, то устойчивая формула на­ зывается слабо устойчивой. 4. Некоторые явные конечно-разностные формулы. Рассмотрим примеры широко распространенных конечно-разностных формул. Эти формулы имеют следующие коэффициенты: 0СЙ 1* 102 &к— 1 1> 0&Л—2—‘ • • • а0 05
мк что k ^ yn-i'k~~~~У п -^-k—1 Pf/ 1-rO J-i* У п -L-t)’ <)Г)озиачим л -+ -& = т + 1 , тогда к Ут+1 Р*—// (^m-t-I—/» Ут+ l—г)* /™0 Переходя от m к /г, от / к i и обозначая (3fe_i~6£, получаем /г */„44— */n= fcV b j{ x n+i - lt yn^l~i), (40) 1=0 И ииных формулах неизвестное значение */rt+i не входит в правую млеть, поэтому явные формулы записываются в виде k Уп^т-i — Уп = h £ B J (xn- t , Уп- i ). i—0 (41) /./. Экстраполяционная формула Адамса. Коэффициенты В/ и (41) выберем так, чтобы формула (41) имела максимальную • мч1сиь, или максимальный порядок аппроксимации дифференци­ ального уравнения (2.1) с достаточно гладкой правой частью. Си« н*ма линейных уравнений (13), который должны удовлетворять коэффициенты B iy имеет k + \ неизвестных В,-. Определитель сисм'мы, составленный из первых 1 уравнений, содержащих эти неизвестные, есть определитель Вандермонда. Следовательно, ко>ффициенты В, определяются из этой системы единственным обp.г<ом. Итак, для лю бого k существует явная разностная формула (41) {/’ I 1)-й степени, аппроксимирующая дифференциальное уравне­ ние ( 2. 1) с достаточно гладкой правой частью с (& -Ы )-м поряд­ ком. Эта формула называется явнойу или экстраполяционной, фор­ мулой Адамса. Формула (41) может быть получена другим способом, если lit ходить не из дифференциального уравнения ( 2. 1 ), а из интег­ рального соотношения Хл+1 Хп+1 У {Хп \\) — У (Xn-j) = ( f (х, У (*)) d x = Г у ' (X) dx. xn-l (42) xn-j •1ля этого аппроксимируем подынтегральную функцию одного пе­ ременного f ( x t у ( х ) ) алгебраическим интерполяционным много­ членом, который в узлах х т, т = п — /г, п— / г+ 1, п, принимает 103
значения f ( x m, у {х т) ) . Запишем этот многочлен в форме интерпо­ ляционного многочлена Лагранжа к и,п (* ) = £ / Ф| (•*). (43) 1=0 где п ®<(*)= П — хт х т —п—к тФп— 1 *n -i — х т Заменим у '(х ) в (42) по формуле Лагранжа: (44) у ’ ( * ) = / (X, у (х)> = и , п (х ) + г Кп (х ) , где П. Гь.п(х) = y (t+2> (I) ( * - г 1)! JJ ^m)t m=-n—k £ — промежуточная точка между и х. Тогда к У (х п-j \)— y (x n- j ) = h £ B if (x n- lt у (xn_i)) + pn-н, i=0 где \ t ( t + \ ) . ..(t + k) (-1 V i! (k — P «-M = ^ rk,„ (x )d x = ^ 0! J t + i П m=n / dt, (46) — fe £ (- — вполне определенные числа, не зависящие ни от Л, ни от х п. Отбрасывая в (45) остаточный член, получаем разностное урав­ нение k У п \-\ У п —/ = = Л & i f (х п —t, y n—i ) f (47) i=О аппроксимирующее дифференциальное уравнение ( 2. 1 ) с поряд­ ком Л + 1. Разностное уравнение (41) получается из формулы (47) как частный случай при j = 0. Несколько явных формул Адамса различной степени с указа­ нием порядка разностного уравнения и коэффициента при глав­ ном члене погрешности ря-и этих формул приведены в табл. 1. 104
Таблица 1 Примеры конечно-разностных формул в ординатной форме ЛГ. П оря­ док Формулы k Сте­ пень Локальная погрешность S c S41' - ' * V s+1> ( v • ---1 * 1 з 1 4 5 Явные формулы Адамса 1 'р Уп+х = Уп + hfn 1 2 2 5 ------Л3«<3) 12 3 3 3 — AW ‘ > 4 4 1 Уп+ 2 =* Уп+х + .1 Уп+з 1 Уп+л *= Уп+з 4 A (3/n+i — /п) Уп*г ~г 4~ 37/n+i 1 «1 1 !/п+ь “ ^ (23/л+а |2 16/n+1 4~ 5/л) 1 24 ^ ^ ^ п+а — 39fn+г 4" 1 ^20 А(1901/п+4— 2774/n+s4- 251 /l5V<5) 720 9/я) tfn+4 + Т * * * 4 5 5 9S — — A W 288 * 2 2 — 3 3 - J A V ‘> 4 4 4 4 + 2616/п+а — 1274/„*, + 251/п) Формулы Нистрсма (. Уп+ч = Уп 4" 2Л//1+1 19 Уп+з — Уп+i 4 М Уп+4 = Уп+ч 4“ 1 ^ А 0 /п+ 2 2/n+i 4- /л) А (8/п43— 5/п+г 4“ 4/n+i —/л) h*yV) 29 . v — - h->yvy 90 Формулы Милна •1 Уп+ а = Ул + 4 j ^ (2/л+3 -— /п+а 4~ 2/л+1) 14 45 1П 3 //л+о — Уп 4 _ jq А(11/п+5— Н / „+44 26/п+3— 6 6 41 140 i — 14/n+44- U/n+i) Л6#(5> ‘ схема «3/8» 11 Уп+ i — У п + i 4 ' 3 Q А (7/п+з — 3/п+2 4“ 5/ri+i — 4 о 27 4 - 2 - h*y(s) 4 161 м » 480 h * 80 /л) Формулы Хемминга схема «1/2» IV Чп i Уп+З + Уп+Ъ 99/п+2 4" 69/л+1 * 1 й /MQf 17/л) Л ** 105
Продолжение табл. / 3 2 1 4 5 схема «2/3» 13 V n *t — - 2Уп+з + Уп+i - 1 . по1. Vrt«-3 — + Ю7/„„ + 109/„+1 - 4 4 4 4 -07 /лл*> 2160 /lV 25/„) схема «1/3» 14 Уп+з + Уп+з 4- Уп+ i , 0 т о — 63fn +г Ч- 57/п+1 13/п) Уп+« “ 1 /Л1, „ с л (Учп+з — ЗЬ 121 360 у Неявные формулы Адамса 15 Уп+ i — Уп~\~ N n + \ 1 1 - 16 Уп+х = Уп~\~ h (fn + 1 “Ь fn ) 1 2 —— л v 3> * 17 Уп+з “ Уп+х “I- ^2 2 3 —— /ityi) 18 Уп+з = У п+г Ч— 19 Уп+л — Уп+з Ч~ ^ 2 0 ^ (251fn+4 ~г 646/п+а — - С5/гг+2 8^ги-г — fn ) Л(9/п+зЧ*19/п+з 5/n+i-j-/n) 3 y 12 24 19 4 720 J 4 5 2 4 --- ---— Л5»(5) 3 4 --- ------- hbi№) 4 6 g — --------- / iV 7) 5 6 ------------- W \p ) 3 4 - ,60 2 6 4 / „„+ 1 0 6 / „„-1 9 / „) Неявные формулы Милна 20 Уп+s = Уп Н ^ (/п+а + 4/п+1 + /п) 90 схема «3/8» 21 3 Уп+З “ Уп Ч- —J7" Л О 22 (f n +З ~Ь З/п + 2 + 3fn+l fn) ^ { l f n +л ~г 32fn+3 Ч~ 12/„+2 Ч~ Уп+4 = Уп Ч~ 3 80 945 * + 7/л) 5 23 Уп+5 — Уп Ч~ ggg ^ (19/п+ь “г 75/,1+1 Ч- 55 24 + 32/п+гЧ“ 50/п+3 4 - 50/п+а -j- 75/n+i Ч- 19/п) Неявные формулы Хемминга схема «1/2» 24 Уп+з— Уп+зЧ~Уп+ 1 , 2 + 1 , ;i4t . 48 М17/п+з-г *4* 51/п+гЧ- З/л+i -{ /п) 106 - ,60 ^
Продолж ение табл. 1 3 2 4 5 схема «2/3» а —Уп+1 п Уп+з— 1 Уп . 1 . /net *7 2 [ ni f 1 *” У *1 п + г -г 3 43 4 2160 AV + 43/л+1 -f- 9/п) схема «1/3» ^nva + l/n+i «/п +а=---- 3 Н~ г Уп , “Г 1 , /ппг ?2 ft (26/л*э т 3 4 — ------АММ 40 * 2 "Т 30/п+1 -|- 10/л) Гг л и интерполяционный многочлен представить в форме ин|«-|Ш()ляционного многочлена Ньютона для равных промежутков к U.n (X) = ,n*„ U (+ th.)= У1 i^U f| 7,: — конечная разность t-го порядка назад функции у '( х ) — у ( х ) ) в узле х Пу x —X n+th, то формула численного интегри­ рования может быть получена в разностной форме. Заменим у '(х ) и (12) по формуле Ньютона У' U ) = /(■*» У (* )) = f ( x n -\- th, у (xn + t/i)) = = j ] v !~0 7„ ,|/' 1> ; ; (< + i - t) + r*.n(x) (49) ii положим /—•0. Тогда k y {x „+ ,) — y (x n) = h ' £ y iy 1f n +Pn +i, (50) i t + l — l)d t, (51) 0 2 /-» Vn i 1 = 77~— Г7Г W <* + 0 • • • V + k) У(к ' 2) Й (*n + «0 ) (ft -,L »)l •j о = 7-; H*4КУ ‘ ' 2! (Л) = T* ЬIЛ*+2{,<*+» (* „) + О ( У +3), = (52) ■I «включено между и xn+i. Отбрасывая в (50) остаточный а н и. получаем разностное уравнение, эквивалентное (41), но и|н-вставленное в разностной форме: 107
к Уп 4-1= ifn + fc 2 jV (V 7 n = »»+ ft (/ „ + V/n 1=0 251 _„«• + 720 . v 4/n + 95 288 _ 5f v 5/п+ . 19 087 _ ЙГ 60 480 , 5257 V е f n “Ь • — 17 280 _5_ 12 V2/п+ V3/п + V 7/n -Ь . . . + YftV*/n ^ . r j (53) 4.2. Экстраполяционная формула Нистрёма. Если подынтег­ ральную функцию у '{х ) в соотношении (42) заменить многочле­ ном по формуле Ньютона (49) и положить /= 1, то это приведет к разностному уравнению k упл-1= У п -1 + *1 ^ А я Ч п (54) i=\ с коэффициентами 1 A = - j \ <<<+!) . . . (t + i — i)d t. , —l Подставляя численные значения коэффициентов, имеем !/„+.= Уп- i + h ( 2fn+ -1- V7n + - j V3/» + -Ц- VVn + ~ + Л 7 „+ ••• + A v * / n) = { { » - i + A ( 2/ „ + - i- (v V n + Vs/» + V4/n + V*/n) — ---- ---- ( v 4/n + 2v 7 „) + .. ■+ A v 7 » ) ■ ( 55) Формула (55) называется экстраполяционной формулой Нистрё­ ма. Локальная погрешность формулы Нистрёма р„+ ,= А Д н ,уИ '/„ + О (ft*'!‘3)=fty4*+ ,h*+1/<tH’ (Л. {/(г))) + О (A* f3) = = л 2) (х„) + О (hk ■*), (56) т] заключено между x r-k -i и хп. Из-за простоты ко: ффициентсз счет по формуле (55) реализу­ ется проще, чем по формуле Адамса (53), особенно, если членами h 2Л —— V 4/n» “ ~ V 5/n и т. д. можно пренебречь. От разностной формы (55) легко перейти к ординатной форме (47), заменяя конечные разности их выражениями через значения функции V 7 „= £ ( - /=0 108 1)'С|/„_,. (57)
I [есколько явных формул с указанием порядка разностного \равнения и степени, а также коэффициента при главном члене погрешности pn+i приведены в табл. 1. 1.3. Формулы Милна. Если в (47) положить /= 3, k = 3 (а это «ипачает, что интегрируется по отрезку [х п- з, Хл+i] интерполяци­ онный многочлен Lz, n, построенный по четырем точкам х„_з, и хп), то получается разностное уравнение Уп+ i— У п - з = ~ - ( 2 имеющее четвертую Ii.i (58) /„-1 + степень. Л окальная 2/„_2), (58) погрешность р„+ , = - — ftty 5>(х„) + 0 (А‘ ). форму(59) Если в (47) положить /—5, 6= 5 (что означает интегрирование по отрезку [х „_ 5, Хл+ij интерполяционного многочлена L 5, поп роенного по шести узлам хп-ь> лгп- 4, Хл-з, хп- 2 , *п-и х п), то милучается разностное уравнение я/» Уп+Х— yn- i = ~ ( U f n - 14/„_, + 26/„_2— 14/„^+11/„_4) (60) ци стой степени. Погрешность формулы (60) ^ = ^ - A ’ !/n W + O W . (61) Заметим, что формулы (58), (60) характеризуются располо­ жением ординат, симметричным относительно средней ординаты. <>||ц называются формулами Милна. 4.4. Схема <с1\2». Если взять полусумму разностных уравнений (53) и (54), соответствующих методам Адамса и Нистрёма, то получим новое разностное уравнение . к Уп+I= -£- (Уп + -О п У i—0 Полагая в (62) k = o и подставляя численные значения коэффи­ циентов ус и А,-, имеем Ч" ■ 1 = ~ ( У п + У п -\)+ ь (— f n + ~ v/n + -|-v7« + v7«). (63) Игреходя в (63) от конечных разностей к ординатам с помощью 1'м ), получаем разностную формулу Упн = ~ ( У п + У п -!) + -£■ (1 1 9 / ,- 99/л_ , + 69/„_2— 17/„_3). 109 (64)
Конечно-разностная схема (64) называется схемой «112». Л о ­ кальная погрешность этой схемы равна полусумме локальных погрешностей формул Адамса (53) и Нистрёма (54) при &= 3 и определяется равенством р "“ = Ч 4!o!'Jг (65) < *п )+ о № в). 5. Часто используемые неявные разностные формулы. 5.1. Интерполяционная формула Адамса. Коэффициенты 6,- неяв­ ной формулы (40) выберем так, чтобы формула (40) имела мак­ симальную степень. Система линейных уравнений (13), которой должны удовлетворять коэффициенты bi, имеет k f 1 неизвестных Ьи Определитель системы, составленной из первых &+1 уравне­ ний, содержащих эти неизвестные, есть определитель Вандермон­ да. Следовательно, коэффициенты Ь, определяются из этой систе­ мы единственным образом. Итак, для любого k существует неявная разностная формула (40) (&4-1)-й степени, аппроксимирующая дифференциальное уравнение ( 2. 1) с достаточно гладкой правой частью с (k -f 1 )-м порядком. Эта формула называется неявной, или интерполяцион­ ной, формулой Адамса. Как и явная формула (41), неявная формула (40) может быть получена с помощью интегрального соотношения (42). Д ля этого подынтегральную функцию одного переменного f ( x , у ( х ) ) аппроксимируем алгебраическим интерполяционным многочленом, который в узлах х т , т = п— /г+ 1, п— /г+ 2, . . . , п + 1, принимает значения f ( x m> у (х т) ) . Повторяя предыдущие рассуждения, мы придем к формуле Уп f l ( 66) Уп— У Ь У"4 bif (хп4-1— j, Уп\-1— i)» где ь , ------{k — i ) u 1 J ( < _ ! ) < ( / + i) ... (/ + * t+ i —1 1) dt, bi — вполне определенные числа, не зависящие ни от h, ни х п. Локальная погрешность формулы ( 66) Рл+1= ^ "п-j • II (67) от ( 68) т=»п—А4-1 2*(л ) заключено между х п_уг+1 и х „+ь Формула (40) получается из формулы ( 66) как частный случай при /■*0. Несколько неявных формул Адамса различной степени с ука­ занием порядка разностного уравнения и коэффициента при глав­ ном члене погрешности рп+] приведены в табл. 1. 110
1:сли интерполяционный многочлен представить в форме ини рмоляционного многочлена Ньютона для равных промежутков к 1) ... (f + f — 2) (69) 1-ь.п и ( x ) = L f e , n + 1 (x n + th ) - = ^ j v V n -L i 1=0 i до — конечная разность t-го порядка назад функции n ' { x ) = f ( x , у ( х ) ) в узле Хп+и x = x n+ th, и положить /— 0, то при­ дем к разностной форме неявной формулы Адамса к 7iVYn+i = '/n+ * f/n+1----— V/n-t-i — Уп+\=Уп+ h i= 0 — 160 v V n n — IT V/ f i — 863 __gr V f Я'1'l 60 480 6 275 ~ , 24 192 чj V /п-И— * 4• YfcV*/n-t-0 * I)<(*+ I) ••• (/+ ‘' - 2)л - (70) (71> Д ля локальной погрешности формулы (70) справедливо равен­ ство е л - н = (£ ijv -)< « + i) w о = 7 * + ,ft*4V * +2) (n)=T*-H ft‘ + V <* hS> (х„) + 0 (ft*43), (72) i| заключено между *„-*+ ! и x n+i. Из выражений (51), (71) для коэффициентов у,- и у] непосред«ч пенно следует Y t - i4 - Y i= V < * (73) Суммируя (73), получаем i £ V/= Yc /— 0 (74) I. пс как у/<0, а y t> 0 , то из (73) следует, что у, монотонно убы ­ вают и |Т'| <?*• (75) <>кюда получаем, что константа в главном члене локальной пог­ 111
решности у интерполяционной формулы Адамса всегда меньше, чем у экстраполяционной формулы Адамса той же степени. Заметим, что коэффициент в формуле (40) удовлетворяет соотношению Vi = T к- ( 76 ) *—0 5.2. Неявные формулы Милна. Класс разностных формул мо­ жет быть получен интегрированием интерполяционного многочле­ на Ньютона (69) по отрезку [хп- /, 1. Это приводит к не­ явным разностным формулам Милна к Уп4 \— У п -!= Ь £ a,vVn+i (77) *=о с коэффициентами i [ ( t — l ) t ( t + l ) . . . (t + i - 2 ) d t . *' J -/ (78) Локальная погрешность формулы Милна pn+1 =/m *+1v ‘ + 7„+1-|- о (hk ■3) = hak+lhk+Y k l " (Г), у (Г))) + О (hk+3) = - а*.и А * + У * + « (х„) + О (/г‘ +3). (79) т) заключено между *«-*+1 и х п+\. Группа неявных формул Милна для нескольких значений / приведена в табл. 2. Выражая разности через значения функции с помощью (57), получим неявные формулы М илна в ординатной форме. Несколько таких формул для & = / + ! приведены в табл. 1 вместе с указанием порядка разностного уравнения и степени, а также коэффициента при главном члене локальной погрешности Prt+J• 6. Особенности поведения многошаговых методов на больших интервалах интегрирования. Д ля формул Адамса (40), (41) ха­ рактеристическое уравнение (37) z n + ]— г п — 0 имеет единственный корень zi = l, а остальные корни равны нулю. Поэтому формулы Адамса являются сильно устойчивыми. Они имеют максимальную степень среди тех формул, у которых все посторонние корни равны нулю. Д л я формул Нистрёма (55) и М илна (58), (60), (77) харак­ теристическое уравнение (37) 2л-н— 2п ч ~ или 112 о z"-'(z'+l—1) ( / ^ 1), = 0,
Т а б л и ц а 2 Примеры конечно-разностных формул в разностной форме V 2/,rt V In * 1 Cj Уп+i+l — Уп-} = Л ^ а д П -h 2 12 +1 +1 Л+1 С3 24 V &/n+i V 4/n^l + Ci 1440 720 V 6Am V f n +1 -г Q ' 60 480 + C-t 120 960 к. vn + i+ l un - j ) С4 С5 — 1 — 19 — 27 — 863 — 1375 0 —8 — 16 — 592 — 1024 сг с о + С7 1 Тсявные методы (1 — 0 ) 1 1 — 1 — 1 Уп- 1 2 —4 4 Л Уп+х — У п- 2 3 —9 27 —9 — 27 — 27 — 783 — 1215 1 1.1 Уп+х Уп-з 4 — 16 80 — 64 224 0 — 512 — 1024 Уп+ i — УП—4 5 — 25 175 — 225 2125 — 475 — 1375 — 1375 1 36 799 *1 Уп+ i — Уп Уn + i ' Явные методы ( 1 = 1 ) 1, Уп+г — Уп+ i 1 1 5 9 251 I 475 19 087 i У п +2 — У п 2 0 4 8 232 448 18 224 • 35 424 4 помимо главного корня z L= l еще и посторонние корни, по ммдулю равные единице. Поэтому формулы Нистрёма и М илна иидиются слабо устойчивыми. Применим одну из таких слабо устойчивых формул iimi *t Уп— Уп-2 = 2/l/n-l ( 80) I. решению задачи Коши f у ' = Ху + а, Х<0, а = const, I y (0 ) = g o.\р.пшение (81) асимптотически устойчиво и всякое его решение у ( х ) = — а/Х + — а/Х (у (0) + а/Х) еХх (82) • (ргмится к постоянному решению У = — afX "I 11 x-voo. В данном случае разностное уравнение (80) приобре­ л и - I 1ШД Уп— Уп- 2 — 2/г (Хуп—i + а) , К III уп— 2hXyn—i— Уп-2 — 2ah= 0 . (83) 113
В качестве начальных условий (4 ) для (83) возьмем значения точного решения (82) y «= g «, !/i= У Ф ) . (84) Общее решение (83) можно выразить через корни Z\ и гг характеристического уравнения z2— 2hXz— 1= 0 , (85) а именно Уп = Ч" С 2^2 — о/Я, где z1= h k + УМ ?+ 1 = 1+ 2 ЛЯ + — — + z ^ h X — V M F + T 1— = — [ 1—ЛЯ. 4- ( (Л4) = + -Ь О (ft1) = А*Я* 2 j + 0 ( A 4) = — е - * Ч - 0 (Л » ), 0 < г х< 1 , 1< (86) |2aJ. Определим постоянные С\ и С 2 из начальных условий (84) !/i с. а /а ~ Т ~ \~Т 2i — 22 2 КЛ2Я2 -г 1 Ух С* — ~т~ + */о — Д л я решения ставление уп= С 1 (НХ а / а \ У1 + ~ Т ~ — ~ Т ~ -}- У о ) \ + У о ! г2 ^ Д / Д 'Я . \ л. 2K /W разностной задачи + у м * + (83), Ч~ Уоj 1 (84) получаем пред­ +1 )" + С2 (йА. — )/'/г2Я2+ 1 )“--- (87) К Параметры а и к всегда можно выбрать так, чтобы Сг^О. При произвольном фиксированном h с ростом п решение уп стремится к бесконечности из-за экспоненциального роста второй составля­ ющей: Са (ИХ — y M F + T ) n= Сг (— 1)" (e~hX+ О (й3))п= = С3( — 1)" (е-*Ч-о<*,> )"= С , ( — 1)',е-Ч .-к)<*п',«>= = С2' ( — 1)" 114 оо. (88) (Л3
t.iKiiM образом, с ростом п резко возрастает отклонение числен... . решения (87) от точного решения (82) задачи (81). Рассмотрим более подробно причину такого поведения численmu <> решения разностной задачи (83), (84). Первая составляю­ щая (87) С 1 (ИХ + ]/й*Х» + 1 ) " = С, (еы- + О (h3))n= C t (e^ + o«> *))"= = c / x» +0(V > = C 1e*'x" <1+0(ft' , ) . » I ремится к нулю при (89) оо и аппроксимирует слагаемое {у (0) + а/Х) еХх и (82), которое является фундаментальным решением дифферен­ циального уравнения (81). Постоянная составляющая в (87) c o b м.i щст с постоянной составляющей точного решения (82). Можно • казать, что вторая составляющая C2Z2n, соответствующая второ­ му корню характеристического уравнения (85), носит паразитиче<кий характер. Ее влияние с ростом п быстро возрастает и привомп к катастрофическому искажению результата. 11з всего сказанного следует, что применение слабо устойчивых формул требует осторожности при интегрировании на больших интервалах [хо, Хо + Х ]. При /г—П) корень z2—>— 1, оставаясь по модулю больше едини­ мы ( 86). Вернемся к общему уравнению (2 ). Если все посторон­ ние корни характеристического многочлена (5) по модулю мень­ ше единицы, то при достаточно малом h корни уравнения k £ (а, — ЯАР4) 2Г*= 0 о (90) близки к корням характеристического уравнения (37) и все, кро­ ме одного (который стремится к главному корню), по модулю меньше некоторого числа, строго меньшего единицы. Фундамен­ тальные решения разностного уравнения k k £ (а, — ЯЛр4) yn \.l = h a V i—0 i—оi (91) i (ютветствующие этим корням уравнения (90), стремятся к нулю при я—>-оо, и влияние паразитических составляющих убывает. Папример, для явного метода Адамса разностное уравнение (•>3) для решения задачи (81) записывается в виде k Уп Н = Уп + Л £ Y iv ‘ (XiJn + a). 115
Заменяя разности с помощью соотношения (57), получаем ь { Уп+1=Уп + Ы У ?i ( ( — 1)г С \ У п -1 )+ у 0а1г. 1=0 1—0 Характеристическое имеет вид уравнение для разностного (93) уравнения (93) р ( * ) = * * + ' - г * - Л Х £ T t ( £ ( - 1 ) 'С | г » - ') = f— 0 ‘ 1—0 к I =г*-1 ■— z* — т i=0 t(£ (— 1 j z * - ' = 0, /«0 или к f =0 V i(z — 1) ' г * - ' = 0. При больших по модулю отрицательных z многочлен p (z ) име­ ет знак ( — l ) ft+1: Р ( — 1) = ( — 1)*+1 — ( - 1 f — hX X у, ( — 2)' ( — 1)‘ - = Г=-0 = ( -1 ) * -И ( '2 + Л Я Х 1—0 k Если 2-\-fiX y * у*2' < 0 , то р ( — 1) имеет знак ( — l ) ft. Следовательно, 1--0 характеристический многочлен p (z ) имеет отрицательный корень, по модулю больший единицы, и среди фундаментальных решений уравнения (93) имеется неограниченно растущее по абсолютной величине решение при п -+ со. Это приведет к возрастанию влия­ ния паразитических составляющих в получаемом с помощью (92) численном решении асимптотически устойчивого дифференциаль­ ного уравнения (81). Поэтому условие k 2 - f hX Y t Vi2‘ > 0 (94) i«sX) является необходимым для получения приемлемых результа­ тов. Заметим, что с увеличением порядка 1 аппроксимации ус­ ловие (94) для величины шага интегрирования h становится все k более жестким, так как с увеличением k растет величина Y 1=0 116
и область значений h, для которых выполняется условие (94), Vмс'питается. В частности, для дифференциальных уравнений с большим по модулю отрицательным К условие (94) может приводить к столь м.июй величине шага интегрирования, что формула (53) оказыиаотся практически непригодной. Д л я решения таких уравнений не обходимо использовать специальные методы. 7. Реализация неявных разностных схем. Рассмотрим нахож­ дение численного решения задачи ( 2. 1), ( 2.2) с помощью неявных многошаговых методов. Отыскание решения разностного уравне­ ния сводится к решению алгебраического или трансцендентного \равнения. Часто это уравнение решается методом итераций. Обратимся к общей разностной формуле (18). Обозначим //;,")* начальное приближение к искомому решению уп+ь- Тогда и юрационный процесс вычисления yn+k может быть представлен и виде C*n+*» y ^ lk ) ^ f a i Уп- l i h$if(Xn^i* У п -l-i ))t (^5) i= 0 v — 0, Mill < V ) = y{n lk + hPk (/ 1 , 2,..., y(n lk) — f (x*+k> y {n~kX)) ) ’ v = ь 2, (96) Итерационный процесс (95), (96) сходится к решению yn+k уравмеипя (18), если hL\$k \<\, (97)I I де L — константа Липшица функции f ( x , у) (см. (2.39) и (:М 0 7 )). Обсудим вопрос о выборе начального приближения для итера­ ционного процесса (95) и о количестве выполняемых итераций. Начальное приближение У ^ к может быть выбрано различными способами. Например, можно положить y£lk= y n+k-\' В качестве начального приближения можно взять значение, полученное по нтюй разностной формуле. В таком случае явная формула иазыМ.1СТСЯ предсказывающей (или предиктором), неявная формула — исправляющей (или корректором), а весь комбинированный про­ цесс называется пргдсказывающе-исправляющим методом, или мп одом прогноза и коррекции (или методом предиктор— коррек"7 ')Количество итераций v, которое необходимо выполнить, зави« и г от величины шага интегрирования, степеней явной и неявной формул и требуемой точности решения неявного уравнения. Если • мчишь предсказывающей формулы меньше степени исправляюnifii формулы, то каждая вновь выполняемая итерация (95) или СМ)) увеличивает порядок точности очередного приближения на t •пиццу до тех пор, пока не будет достигнут порядок исправля117
ющей формулы. Д л я того чтобы точность приближенного решения Уп1к определялась степенью неявной формулы, число итераций должно быть не меньше разности степеней неявной и явной формул. Если Р обозначить вычисление с помощью предсказывающей формулы начального приближения y £ lkj Е — вычисление зна­ чения правой части дифференциального уравнения ( 2. 1) = = f ( x n+k, l/n+k) » а С — уточнение полученного приближения у £ )к с помощью исправляющей формулы, то методы прогноза и кор­ рекции можно представить в символическом виде Р Е С У если исп­ равляющая формула применяется один раз, или P ( E C ) V, если исправляющая формула применяется более одного раза. Если по­ лученное после v итераций приближение yj*}k к решению yn+k ис­ пользовать для вычисления значения правой части /n+fe= / ^ v)ft= = /(*„+*, ytZi.it) при отыскании решения в следующем узле Xn+k+u то методы прогноза и коррекции принимают следующий вид: Р Е С Е или P ( E C ) VE. Рассмотрим интерполяционный метод Адамса в ординатпой форме (40). Обозначим у}°)л начальное приближение к искомому значению решения уп+\ и определим первое приближение с по­ мощью соотношения k 1’ =Уп + hb0f (*„+ ,, i/n" l,) + h £ (/„+,_,) I- 1 или в силу (76) i £ S ,>=fcV*/(*»+i. y £ l i ) + g ( h< Уп. fn, fn -u . . . . -*)•(98 ) Здесь g — известная функция своих аргументов, v = 0, 1, 2, ___ Итерации повторяются до тех пор, пока в пределах заданной точ­ ности не установятся приближения к решению. Итерационный процесс (98) сходится к решению уп+\ уравнения (40), если A L < l/ v * . (99) Из (98) следует, что й® 1> = У ^ t + h y k (f (х „ ; 1, J/<v>,)— f(Xn+i, y^+i'1))- (100) Если интерполяционный метод Адамса использовать в разно­ стной форме (70), то итерационный процесс строится с помощью соотношения ^ " = г / » + л У T iV '/ i+ i> i“0 (loi) где i = Vlf (xn+it y * l i). Как и в случае (98) или (100), для начала итерационного процесса ( 101) требуется знать начальное 118
приближение yj^)l для уп+ 1. Однако итерационный процесс можно начать, если выбрать начальное приближение vVn+i Например, можно положить для V */ n-n. ( 102) v ‘ /i+.=v*/n и но формулам составления конечных разностей V,_7«+i=V'/n+i + V i_ l/n. k — 1 ..........1, [(103) n14числить все разности, входящие в ( 101): V*- s?k~ 2fn°+\, Затем при помощи ( 101) при v = 0 находим У п + 1 = У п -\ -Ь ^ i=o Определяем правую часть ности (хп+ ь f/n‘-i) и ее конечные раз­ V/n4i, V z/i!ri, 1/п+-1» V*/4+i но формулам составления конечных разностей = Vl - 1/n+i— V1- 1/», V *= 2, . . . , k. * (104) Далее при помощи (101) при v = l получаем Итерационный процесс повторяем до тех пор, пока в пределах заданной точности не установятся приближения У^л Начальное приближение у*Лн -1 можно получить экстраполя­ цией по нескольким предыдущим значениям V */ n, ___ Ф орм улу (101) можно преобразовать к другому виду. Д л я кого воспользуемся формулами (104) составления конечных раз­ ностей и свойствами (7 3 ), (74) для коэффициентов у* и y t формул Адамса (53), (70). Рассмотрим сумму в (70): V ivv‘Y.>+i=£ Vi i и г= о v7nj=/n+i / —о Vi— У v7„ у у/ = i= o Л— 1 1=о * /= *+ 1 к —W »+i—У (Vk—Vi)v‘/n=v*/«+>+y ViV7n—Vi.У v7ni=0 i—0 i—0 Подставляя полученное выражение в (70), имеем 6 ft yn+ i = < / n + f t y ViV'7n— ftv/.$] v '/ ii+ ft W ii+ i- i=0 i=0 (Ю5) 119
Обозначая Р п+\ приближение к уп+ь полученное формуле Адамса (53) k P n + ^ y n + h J^ Y tV '/n. по явной 1—0 ф ормулу (105) можно представить так: k yn ^ = P n M — hyh ^ Y f „ + hykf n+1. (106) • •■* 1=0 Тогда итерационный процесс принимает вид y £ \ ') = Pn+ , - h y b f l v 4 n + h y J (X n -n , « О i— 0 (Ю7) Естественно принять Р п+\ в качестве начального приближения для итерационного процесса (107). Тогда получается предсказывающе-исправляющий метод. Ф ормула (107) более удобна для счета по сравнению со ( 101), так как здесь не требуется пе­ ресчитывать конечные разности на каждой итерации. Конечные разности V в ы ч и с л я ю т с я только один раз после окончания итерационного процесса. Заметим, что формула ( 100) может быть использована для проведения итерационного процесса в любом случае независимо от того, в какой форме используется формула Адамса: в ординатной форме (40) или разностной форме (70). Приведем метод прогноза и коррекции, основанный на форму­ ла х Милна. Д л я неявной формулы четвертого порядка аппрокси­ мации Уп-hi = У п - 1 -г “ - (/п-и + 4/„ + f n- 1) (108) соответствующий итерационный процесс имеет вид y № ) = y n- i + - ^ - № i + V n + f n - l)', ’ = 0 , 1, . . . «5 • Начальное приближение yj£Hl для у п+1 вычисляется по явной формуле (58), тоже имеющей четвертый порядок аппроксимации: У «и = У п -з + ~ ( 2/„— + 2/„_2). (110) Д ля неявной формулы шестого порядка аппроксимации Уп+1 120 = Уп - з + — 90 /„_2+ (7/„+, + 32/„ f 12/n-i + 32 7/п-з) (111) (10
•<>') I нстствующий итерационный процесс имеет вид t- Г , = Уп- 3+ ~ (7/#< + 32/„ + 12fn—\+ 32/„_2 + 7/а-з). v = 0, 1....... ( 112) и.ми 1* = Л/ (*«+1 , ,) 4- «/л-з 4- 4- 32/„_ 24~ 7/«_з), (32/n4-12/u_ i4- v = 0 , 1, . . . . (112') Начальное приближение для уп+1 вычисляется по явной фор­ муле (60), тоже имеющей шестой порядок аппроксимации: У™х= Уп-s 4- (П fn - 14/л—1 4- 2б/„_2— 14/п_ з + 1 1/й-4>. (113) «Метод прогноза и коррекции, основанный на (109), (П О ) и (112), ( I 1,4), называется методом Милна. Исли неявная формула Милна используется в разностной фор­ ме. например Уп+1=Уп-1 + >1 (2/„Н— i-vV n4- 1--- ~ ( V 4/n-H + v 6/n-:i)). (114) m соответствующий итерационный процесс имеет вид IV Чч , I I) Уп- i + h (2/B+ -i- v V i'? i----+ ). v = ° . 1. (115) Итерационный процесс может быть начат, если выбрать на­ чальное приближение v V i^ i для V 5/„-h . Д ля этого можно поло­ сып ь v‘rt+i=vV„. I ie V 5/n — известная величина, и по формулам ние конечных разностей вычислить разности зИ О ) (103) составле­ 2 f(0 ) V /n-i-Ь V /л+1» v fn-fl. la гем при помощи (115) при v —0 находится у ^ )х Определяется ирпная часть fn -l\ = f {хп+и ) и ее конечные разности у/^+ь \ViVi. . . . , V5/i + 1* Д алее по формуле (115) при v = l получаем ' I. Итерационный процесс повторяется до тех пор, пока не п тнадут с заданной точностью очередные приближения к реШСИНЮ. . Построение начальных значений. Разностная формула ( 2), предназначенная для нахождения решения yn+k в точке x n+k, со|* ржит значения решения уп, уп+ь •••, Уп+ k -\ в предыдущих узлах »«, avm » Хп+ь- 1 и соответствующие значения правой части 121
f ( x nt Уп)* f(*n- 1-ь Уп+i), , f(Xn+k-u Уп+k- 1)Предполагается, что указанные величины заранее известны. Совокупность этих величин составляет так называемый фронт многош агового метода. Если формула численного интегрирования используется в раз­ ностной форме, например (53), (55), (105), то ее применение так­ же предполагает знание входящих в нее конечных разностей V 1/п правой части f ( x, у) . Совокупность этих разностей также образует фронт разностного метода. В начале интегрировании фронт включает в себя начальные значения (4) и соответствую­ щие значения правых частей или значения конечных разностей. Однако значения этих величин нам неизвестны. Поэтому приме­ нение многошаговых методов требует предварительного построе­ ния недостающих начальных значений или конечных разностей. Недостающие начальные значения могут быть найдены с по­ мощью одношаговых методов, описанных в гл. 2, например, мето­ дом Рунге— Кутта или методом ряда Тейлора. Рассмотренные в данной главе конечно-разностные схемы также могут быть ис­ пользованы для вычисления начальных значений. Построение фронта многошагового метода в начале интегрирования иногда называют разгоном. Рассмотрим процедуру разгона для методов Адамса (53), (105). Эта процедура основана на итерационном применении раз­ ностных формул с последовательно увеличивающейся степенью. Используя начальные значения задачи Коши (2.1), (2.2) и явную формулу Адамса (53) первого порядка аппроксимации, вычисляем y\X)=yo~\rhfQ. Погрешность у [ ]) составляет О (/г2). Находим f [ l\ у/ 1° и полагаем V / o = V /i(1) Используя явную формулу Адамса (53) второго порядка аппрок­ симации, вычисляем у ? )= =у<,+^ [fo + ~ v / o j . Погрешность y f \ у^2) составляет О (/г3). Находим /(22\ V/г2\ У2/г и полагаем v 2/ „ = v 3/ i = v 7 f \ v/o=v/22,- 2 v 7 f ’ . Используя явную формулу Адамса проксимации, ВЫЧИСЛЯвхМ 122 (53) третьего порядка ап­
y\3)= y0+ h (fo+-^-Wo + -j^-V2/o). r f " - * ! * + ft (?13) + 4 - v/S3)+ *$" = г/23) + ft ( va/i) . + - i- W i " + - A - v V f ) • I l<nр,'шность i/j3), i/23>. Уз3) составляет О (ft4). \ у 3/з3) и полагаем v7o=v7, = v 7 2= Находим /з3), v /з3*. v 7 i 3' . v7 o=v7 3 31— Зу7з*\ у V.-vVf*—2vVi*’. v/o= Vfa3’ — Зу7з3) + ! 1слользуя формулу Адамса « нмпции, вычисляем = + (/о Зу7з3). (53) четвертого порядка аппрок- v/o 4— “ -VVo-b — V3/o j . ^ 4)= .ft!4’ + ft ( r.4) + -j- v/!4)+ v*/i+ -f- v 7 i ) . ^ 4)=</S4’ + ft (M4) + —- v ^ 4) + - J - v 2t f ’ + ~ v V . ) , „<4,= ^ ’ +ft (M4, + y v/i4’ + -J-vV i"+ -f- v3/34)). Погрешность i/{41, i/£,\ i/J41, (/J4) составляет О (ft5)- Находим /i4), у / Д . \ ’/i 1', у 3/!41. y V i4’ и полагаем V4/e = V*/i4), v7o=v7i1>— 4y4/l4), v 7 o = v 7 J 4) — 4 v 7 l4) + 6yV«4\ v / o = v ^ 4>- 4 v 7 i 4) -t- 6 v 7 i4’ - 4 y 4/i4). ( П 6) Погрешность вычисления конечных разностей V ‘7o составляет *Ц1г) . Если снова воспользоваться формулой Адамса (53) пятого порядка точности, то вычисленные значения ^ 5), *Д5), #<5), #<5), */£5) е\ t\ г иметь погрешность порядка 0 (/ip). Тогда определяемые I к \ помощью конечные разности v7s5), /= 0, 1, 2, 3, 4, 5, в точ• »• V, также будут иметь погрешность порядка 0 (/i6), а следова|г.п.ио, такую же погрешность будут иметь и разности V'/o123
Таким способом вычисляются недостающие начальные значе­ ния вместе с соответствующими разностями. Продолж ая этот ите­ рационный процесс, можно вычислить необходимые для использо­ вания разностной формулы (2) начальные значения (4) решения Уо, у\, . . . » уk- 1 и соответствующие им конечные разности с любым порядком точности относительно h. П осле этого может быть на­ чато вычисление всех последующих значений решения уп, п = к, k -Ь 1, . . . . 9. Сходимость многошаговых методов. 9.1. Классификация п ог­ решностей. Обозначим уп решение разностного уравнения (2) с начальными условиями (4 ), совпадающими с точными значени­ ями решения дифференциальной задачи (2.1), (2.2). Разность между решением исходной задачи Коши (2.1), (2.2) и решением разностной задачи (2 ), (4) еп= у ( х п) — Уп (117) называется погрешностью метода (2 ). В действительности вслед­ ствие ошибок округления, неточного вычисления правой части дифференциального уравнения и приближенного решения неявно­ го разностного уравнения (2) вычисляется не функция уп, а другая сеточная функция у п, удовлетворяющая разностному уравнению k k У apjn+i— h y Pi f ( xnr i , ynH) = 6 n^k I —0 1—0 ( 118) с некоторой невязкой б«+*. Величина 6n+k называется погреш­ ностью округления. Функция уп является решением разностного уравнения (118) с начальными условиями У о = ё о , Уу.= £ i ......... £ * - ! = £ * - ! . (119) которые приближенно находятся с помощью некоторой процедуры разгона. Разность между точным решением разностной задачи (2 ), (4 ) и решение возмущенной разностной задачи (118), (119) п= Уп— Уп ( 12°) 11 называется вычислительной погрешностью. Разность между точ­ ным решением дифференциальной задачи (2.1), (2.2) и решением возмущенной разностной задачи (118), (119) Rn = y (X n ) — Уп (121) называется полной погрешностью приближенного решения у п. Из (117), (120), и (121) следует, что полная погрешность равна сум­ ме погрешности метода и вычислительной погрешности Rn = Zn-rT|л. 124 ( 122)
Вычитая (118) из (9 ), получаем, что полная погрешность удов* к* ширяет разностному уравнению k _ к V C ti (у < )— i/n + l)— i= 0 h J ] Pi (/ (Хп H . y(xn + l)) — i—0 / — Pn-t-fc II/III k k &iRn-\ i~ h i^ O Pi/v С*л-;-Ь £л-н) -Rn-}-! ===Prt-t-A (123) 2 —0 i if ±„+i лежит между yn+i и y {x n+ t), n — 0, 1, . . . . N — k. P.2. Мажорантная оценка полной погрешности. Если разностII'.I* уравнение (2) устойчиво и правая часть дифференциального \равнения удовлетворяет сформулированным выше условиям, то мI>м всех достаточно малых h, удовлетворяющих условию h < h 0l h„\\\,,!ak\ L < l , справедлива мажорантная оценка полной погрешН'.( Г1!, сходная с оценкой (2.39) для одношаговых методов: lR n \ «W * ( max \R,\ + V (|ру| + |в,|)). o < / o -i f? k (124) I if G, L y С — некоторые постоянные, зависящие от коэффициенн»и разностного уравнения (2) и дифференциального уравнения I” I) и не зависящие от h. Б частности, если погрешность на на­ чальном участке |f y | < c y i ° , ... .. а>0, / = 0 , 1, . . . , k — 1, (125) округления р > 1, |6У| < С Х . j = k .(1 ||щ|1мула (2 ) имеет степень s ^ l , т. е. |Р/1<СХ+ ‘. ......... N . (127) !-• имеет место оценка I Я » I < Се°г х (C J f + X ( С Х + С Х ”- 1)), (128) и I которой следует сходимость приближенного решения у п к точ♦и»му |)ешению задачи Коши у ( х п) при h-+-0. Как и для одношаговых методов, полная погрешность состоит «и фех частей: во-первых, из погрешности, обусловленной прибли/ы иным заданием начальных условий (119) (эта погрешность не превосходит величины CC1eGLKha)\ во-вторых, из глобальной пог|||'||1иости метода, которая не превосходит величины CC3eG^xXhs\ и ipcibiix, из вычислительной погрешности, обусловленной ошиб­ 125
ками округления и неточным решением неявного разностного уравнения (эта погрешность не превосходит CC*eGLXXhp~ l). Д л я многошаговых методов справедливы многие утвержде­ ния, сходные с приведенными в гл. 2 для одношаговых методов. Поэтому подробно останавливаться на них мы не будем. 10. Вычисление решения между узлами сетки. Рассмотрим случай, когда точка х*, в которой требуется вычислить решение дифференциального уравнения (2.1), не совпадает ни с одним у з­ лом Хп сетки, на которой ищется решение уп разностного уравне­ ния. В этом случае можно поступить следующим образом. Предположим, что точка л:* леж ит между двумя соседними узлами х т- \ < х * < х т, в которых вычислено решение разностного уравнения. Пусть разностное уравнение используется в ординатной форме (2 ). Допустим, что его степень s ^ 6 + l . Построим ин­ терполяционный многочлен Лагранж а (43) по значениям функции / (х, у { х ) ) в узлах Xjy j — m — k, т— 6 + 1 , . . . » т: к L k,m ( * ) = £ f i —0 У (*"»-*)) Ф ' <*)• Подставляя f (Ху у { х ) ) = и , т (х) + r*,m (х) в интегральное соотношение х* У(х')— у(хт (129) rn получаем y (x *) — y (x rn) = h У B i i ^ f i X m - u y {x m- i ) ) - ЬР, 0 (130) где /(/-1-1) ... (/-Lfe) Д|ф - 1)1 i! (k — i ) ! JI" t + ll d t. P = ? r k.m { x ) d x = 0 ( h k+-), m 6— x w — xm , Отбрасывая p в (130), получаем конечно-разностную формулу для вычисления искомого решения у {\:* ): У (х ) = ут-{- h ^ Bi (|) / (хт _ 1, Ут—г)• 1—0 126 (131)
1!|нтедем коэффициенты В ,(£ ) для k — Z\ + 8|3+ 22s- - f 245 B o© - 24 3^4 + 20|« + 36g B ,(D = - 24 3u b 2(D — b 3© (132) i6£> + 18£2 24 ^ + 4|3+ 4^2 = 24 I ’ели степень разностного уравнения (2) s ^ k + 2, то для вычт л е н и я решения в точке х * можно воспользоваться интерполя­ ционным многочленом Эрмита Н ( х ) , построенным по значениям I ' r i i i i ' i n i n у\ и его производной / (лг/, у,) в узлах X/, j = m — k, т k + 1, . m— 1, m, и найти его значение Н { х * ) . Теперь предположим, что разностное уравнение используется п [кншостной форме, например, в виде (53) или (70). Построим ни к'рполяционный многочлен Ньютона (48) и , т ( х ) = и , т (хт + t h ) = j j v f , n < « + ! ) ^ f =’0 11<»дставляя / (*. У (х ))= 1 к ,т (х) + гк,т(х) и (129), получаем У ( х ' ) — У ( x j = /i V Vi (?) v7m + P. (133) i —0 I -и* $ Y i(l)= ~ -C H < + 1 ) 0 (t + i — \)dt, p==0(/i*+2). |>|Г>расывая в (133) остаточный член р, получаем конечно-разно• т у ю формулу для вычисления искомого решения у { х * ) : k y ( x ' ) £ i y m+ h Y Vi © v ‘7m(134) i=0 1|>мведем выражения для нескольких коэффициентов у , ( £) : Y o (l)= i. .. / *ч _ V + 4S3 + Y ,© = 4^ Y3(l ) ----------- ^ --------* _ 4 -? 2. Y a(E )= — 6g» + 456« + V 4 © - -------------- 12 (135) 1 Ю £ *+ 9 0 | * 555-------------- • 127
11. Практические способы оценки погрешности приближенного решения. Из выражения (14) для невязки (9) разностной форму* лы (2) s-й степени на решении дифференциального уравнения (2.1) вытекает следующая асимптотическая оценка локальной погрешности метода: и (хт) — чт— С1г 1 V + ' l (х „ ) О (/ О - (13«) Здесь и(хт ) — точное решение дифференциального уравнения (2 .1 ) , удовлетворяющее условию и(хт-к) =Ут-ку С — известная постоянная, ит — точное решение разностного уравнения ft—1 ft—! ^hUm + ct.ii (xm- kVi)= h $ kf {хт, u j + f t y Pif(xm- kxt , u(xm-.t .] i))- (137) У i=-0 i= 0 Заметим, что если W /73—ft—t — ti (xm—k j-f) = 0 {h то решение йт уравнения ft-i _ ft-H= ^Pfc/ (xm> um) t— 0 ), ft—l ^ У* Pi/ (xm—ft-f-l» um—ft-fi) (137') 1=0 имеет оценку того же порядка, что и решение ит: u ( x J - u m= C h * и и<н-о (х , ) + о Г ! ). Если ит- к+1 — и (х,„_* — то решение йт уравнения (137') имеет что и решение ит: (1ЗК) такую же оценку (136), и(x j— йт= O i5+lu « + » < x j + о (1 Рассмотрим способ оценки локальной погрешности методи прогноза и коррекции в предположении, что степени предсказы­ вающей и исправляющей формул вида (2) равны s. Локальные погрешности этих формул можно представить согласно (136) в виде и (хт) - и Г = p<f» = С<Р,Л*11U<! H >Ы (хJ- « £ ’ и + 0 (Н * \ (139) = р™ = С [C)t-1 i Погрешность приближенного решения , полученного в ре­ зультате уточнения предсказанного значения 1= « ! , Г 1, имеет тот же главный член, что и в (140). Поэтому и (xm) - C ’ = f £ > = С <с,Ли '«<*+») (хт) + О (hs+2). 128 (Н О ')
Решая систему двух уравнений (139), (140') относительно /, ''«<*+l>(xm), получаем u <v) _ Л>+ „(0) )= (Х v 7 С (Р> _ С (С) v 1 ------ |_ о 9 Окчода следуют апостериорные асимптотические оценки для локильных погрешностей предсказанного значения и т { и исправп-ниого значения иЦ ?: рг = с, Г с1С) (и" ’ - + ° (л$+2)- РУ=- £<Р> ,pf_° ^(С ,,, ( в У - ^ + О^*)) <i 4 i > (142) <>11.441 ка (142) может быть использована для уточнения получен­ н о ю приближенного решения иЦ'*: + с <Р? С _ 'с(С1 043) njifi jtom локальная погрешность и т составляет 0 (/is+2). Из (136') следует, что оценки (141), (142) остаются в силе, t’l.iii для вычисления н<ш °> и т использовать не точные значения ра’икчшя u ( x m - h + i ) > t= 0 , 1 , ...,/г— 1 , а приближенные значения, *. юнлстворяющие условию (138). Практическое значение этого •■мсчапия состоит в том, что при интегрировании дифференциаль­ н о ю уравнения с помощью рассматриваемого метода прогноза и мфрекции использование оценок (141), (142) обоснованно только "■I щ, когда производится уточнение найденного решения по фор­ муле (143). I ели разностная формула используется в разностной форме, и» оценка погрешности может быть получена следующим способом, tuюрый мы проиллюстрируем на примере методов Адамса. Если применяется явная формула Адамса (53), то локальная погрешп<и■111 приближенного решения и п+\ равна (Хя+0 — un + i = h y k+ i V kJ-lf n + 0 (/г*+3). "июда получается асимптотическая оценка и (x„4 -i)— Wn+ 1 ^ h y k biS7M fn> inIирая представляет собой первый отброшенный |пhi формулы (53). В частности, оценка и (144) (145) член разност- “ (*,)— « 1 = h y k + , v*+V», (145') нмгокающая из (145), может быть использована для оценки точ­ ит in при разгоне. h 1.1к 217 129
Заметим, что_так как в формулах Адамса (53) и (70) коэф­ фициенты уI и yi имеют противоположные знаки: у<>0, у (< 0 , 1, то при использовании метода прогноза и коррекции, осно­ ванного на явной и неявной формулах Адамса (53), (70), пред­ сказанное У^л_ 1 и исправленное у^1, значения при достаточно ма­ лом h дают двусторонние приближения к точному решению зада­ чи. Поэтому т а х {| и (х „ м )— |u(x„+ i)— u<*>,|} < !«£ £ ,— « W , l . Кроме (146) могут быть использованы оценки которые в данном случае принимают вид Р < £ > , = ----- Ук"_— Y*-ui — Yjfe-3-l ^<v> _ Y*+| (141) и (142), (itfb /.,(v) P«+l = ----------- Z---- («п- l — ..(0) ч , л / ( ,й )3, U n. - \ ) - ^ - U { n (146) ), (147) (143) V*4 l — Y*+i или с учетом (73) - < ° ' , ) + o (Л‘ +3), p£2,= - - f <<>, + о (h ^ \ (147') (148') 12, Автоматический выбор шага интегрирования. Как и для одношаговых методов, вопрос о выборе величины шага интегри­ рования для многошаговых методов имеет существенное значение, так как от него зависит не только точность вычисления решения, но и общий объем вычислительной работы, а значит, и машинное время, необходимое для решения задачи. Имея оценки для л о ­ кальной погрешности, можно организовать для многошаговых ме­ тодов автоматический выбор шага интегрирования, руководству­ ясь теми же соображениями, что и для одношаговых методов. Однако использование конечно-разностных схем вносит свою осо­ бенность в этот процесс, обсуждением которой мы сейчас и зай­ мемся. 12.1. Удвоение и деление шага пополам. Пусть интегрирование ведется с использованием конечно-разностной формулы (2 ). Д о ­ пустим, что после оценки погрешности принято решение об изме­ нении величины шага интегрирования. Рассмотрим сначала слу­ чай удвоения шага. Д л я того чтобы продолжить счет по той же формуле (2), но с удвоенным шагом необходимо помнить значе­ ния решения и правой части в [&/2} дополнительных точках (за­ метим, что если используется формула Адамса (40) или (41), то запоминаются только значения правой части). 130
Рассмотрим случай деления шага пополам. Д л я того чтобы н|п. 1м.чжпть счет по той же формуле (2 ), но с половинным шагом, 4‘гч'Г»видимо заново вычислить значения решения и правой части •• |А-/:?| дополнительных точках. Эти дополнительные точки раси». и1/м‘пы посередине между узлами сетки. Дополнительные знаun i могут быть вычислены с помощью интерполяционных или ч.1и1»'11и>-разностных формул. Чтобы точность вновь вычисляемых iiu'iniiiji решения соответствовала степени разностной формулы I *) численного интегрирования, можно привлекать для их вычисн цщ| кроме значений решения в узловых точках значения правых <м> ни. Это может быть сделано с помощью интерполяционного iiv.niнома Эрмита. Проиллюстрируем эту идею на примере метода Чп им (110), (109) четвертого порядка точности. Пусть интегрирование выполнено до точки х = х п. Если приня••• решение о делении шага пополам, то для того чтобы продол• н и. счет по формулам (110), (109) с половинным шагом, необ••• inмс> иметь значения решения в промежуточных точках х j =* п 2 — i„ hj2 и х з = x rt_ i — /i/2. Эти значения могут быть найдены п 2 • помощью интерполяционного многочлена Эрмита пятой степени, »*■.. Iроенного по значениям решения уп, уп-и Уп- 2 и производной /(•*.., Чп), f ( X n - и У п-i), 1{хп- 2, Уп- 2). Построить многочлен Эрмита ми,мк1, записав его в виде Нь( х) = L 2( x ) |м 12{х) — интерполяционный * 2 + <j) 2 ( х) Н 2 ( х ) , многочлен (149) Лагранж а L 2 (х) = Y j »/п_ / М * ), < М *) = п (х — хп^{). Многочлен Н 2( х ) второй степеI II 1=-0 ....... прсделим из условия совпадения производных многочлена •рмпгн Н${х) и решения дифференциального уравнения в узлах » 1 ... v„ х п сетки: Н * > { Х п—2 ) 2* H b i X n —1) — /п—1» H b С^п) (150) fn Условия (150) дают 3 Н 2{.Хп—jl) 2 Уп- 2 h _ ЧУп- 1 ^ Уп /I ' 2h 2h2 t Уп—2 2/i h2 н 2(Xft—1) У п-2 2h 2Уп- i h 2h* 131
Следовательно, (151) Н 2( * ) = £ H 2(xn- i ) Ф{ (x). i~0 Подставляя (151) в (149), получаем следующее выражение для многочлена Эрмита: 2 2 U n - P i М + ®2 ( * ) £ t f« (* n - i)< M * )i—О i—O Полагая в (152) х = х п-\п и х = х*-з/2, формулы имеем (152) интерполяционные У, = я 5(* (45 уп + 72 ,)= .уп_ , + ! ! ( / „ _ , + h (— 9/„ + 36/„_, + 3/„_ (153) У = Н ъ(х ,) = ---- т ~ ( 11Уп + 72(/п _, + 45i/n_ 2 - А (3/„ + 36f„_, — 9/„_2)), которые имеют остаточный член О (А6). Таким образом, вновь вычисленные значения у п- \ / 2 и i/n-3/2 не изменяют главного члена локальной погрешности формул (109, 110). Располагая узлами • • * * Х п — 3 = = Х п — 3/2* Х п ~ 2 = 1, Я п— 1 1/2» Х п = = Х п и значениями решения в них У п -З ^ У п -З / 2 ' Уп—2 ~ У п — 1» У п - 1 = У п — 1/2* У п ~ У »* можем продолжить интегрирование по формулам (109), (Н О ) с шагом А* = А/2 для нахождения решения в узлах **«+* = **/*+ i + iA* t> 0 . /2.2. Переход к произвольному шагу. Переход к произвольному шагу может быть осуществлен тем же способом, что и к половин­ ному шагу, а именно с помощью интерполяционного полинома Эр­ мита (152). Пусть А* = £А (154) новая длина шага интегрирования. Обозначим новые узлы x*n-i = xn— ih*, i = 0, 1, 2, 3. (155) Решение в этих узлах найдем по интерполяционной формуле Эр­ мита y*n-i = Hb( x*n- l) t 132 /=0, 1, 2, 3.
Iсмерь можем продолжить интегрирование по формулам (109), 1110) с шагом /г* для нахождения решения в узлах x * n+i = х п+ I ///*, />0. Гаким образом, при переходе к новому шагу интегрирования И М ) используется та же конечно-разностная схема, но с другим фронтом. Теперь предположим, что интегрирование ведется с помощью ..... .. метода, записанного в разностной форме. Проил.•Iнитрируем переход к новому шагу на примере методов Адамса |М), (70). Начнем с произвольного изменения шага (154), а уд... . и деление шага пополам получим как частный случай. Допустим, что с помощью формулы (53) интегрирование вынм.'мнчго с постоянным шагом /г до точки х = х п. Если и дальше «нитрирование продолжать с тем же шагом, то значение реше­ нии и следующем узле х п+\ —х п-\-1г вычислялось бы по той же формуле (53): * Допустим, что на основе оценки погрешности полученного приближения принято решение об изменении шага интегрирова­ нии Пусть новый шаг интегрирования определяется с помощью (1*1). Если бы интегрирование дифференциального уравнения • самого начала велось с постоянным шагом И,*, то разностная Формула для вычисления решения имела бы вид к (156) • «• конечные разности V y rt* составлены но значениям } * п-/ = »/ (**„_/ , y * n- i ) функции f ( x , у ) на новой сетке узлов х п— }h*, / о. I, . . . , k, с шагом h*. Можно сказать, что переход к новому шагу в точке х п озна•|м« I переход от интегрирования по формуле (53) к интегрироваии иI но формуле (156). Это в свою очередь подразумевает пере* о т конечных разностей составленных по узлам x n- j y i Д 1, . . . » k, к конечным разностям составленным по iiI*\|*Iм узлам х * „ Т а к о й переход может быть выполнен нескольинмн способами. Например, с помощью интерполяционного многочлена Ньютона I 1М) * и ,п ( х ) = и , п (хп + / Л )= ^ v '/ n i! (157) 133
можно вычислить значения — W 1* У(Хп— № ))• /*_/= /(хп — jh\ у ( х п— /Л*)) = / (х п —* С точностью 0 ( h h+l), полагая t = — /е: f * n -j= L h ,n ( x n— j l h ) . /— 1.......Л. (158) По найденным значениям можно составить конечные разности i = l , . . . , k, и продолжить интегрирование дифференциально- ] го уравнения по формуле (156). Погрешность (52) формулы (155) и ошибка, вносимая в нее за счет неточности вычисления V'/n*. имеют одинаковый порядок 0 ( h k+2). Д ля того чтобы эта ошибка не изменяла главного члена погрешности (52), необходимо повы­ сить точность вычисления конечных разностей Этого мож­ но достичь тремя путями. Во-первых, можно использовать полученные разности V '/ h* I для нахождения по формуле (156) значения решения y*n+j в уз-1 лах x * n + j= x n-rjh *, j — 1, к, с погрешностью G ( h k+2). Затем по вычисленным значениям правых частей f * n+j = f ( x * n+i, y * n+i) составить конечные разности V */*^*., а из них по формулам типа (116), применяемым в процедуре разгона, найти разности V 1/п*. Теперь погрешность этих разностей будет иметь порядок 0 ( h k+2), а ошибка, вносимая ими в формулу (156), соответствен­ но — О (/ift+3). Во-вторых, в интерполяционном многочлене Ньютона (157) можно использовать значение параметра k на единицу больше его значения в формуле Адамса (53), т. с. к-И . В этом случае пог-| решиость вычисляемых по формуле (158) правых частей имеет порядок 0 { h k+2) и не изменяет главного члена погрешнос­ ти формулы (156). Если же дополнительной конечной разности нет, то она может быть вычислена по формулам (147), (148). В-третьих, можно определить решение дифференциального уравнения //*«_/ в узлах x * n- j по формуле (134) с погрешностью 0 ( h k]2), вычислить значения правых частей f * и-/ = / (*%-/, y*n-i) и составить разности V 'f / , i = 1, 2, . . . , k. Теперь погрешность этих разностей имеет порядок 0 { h k+2). Сохранение главного члена погрешности разностной формулы (156) после перехода к новому шагу имеет практическое значе­ ние, так как тем самым обосновывается использование рассмот-1 ренных ранее асимптотических оценок локальной погрешности метода. Рассмотрим теперь другой подход, который позволяет перейти от разностей V 1/*, соответствующих шагу h, непосредственно к разностям V'/n*, соответствующим новому шагу (154), минуя этап вычисления правых частей /*«—/, / = I, 2, . . . , к. Найдем ко­ эффициенты в разложении V / n* = a 1V f „ + a2V 2/rt+ a 3 V 3//l+ . .. + a *V *//I+ 0 (/ i* + !). (159) Д л я этого разложим по степеням h все разности в левой и пра­ вой частях этого равенства: 134
v'/« = £ ] ( - 1)* c t f n i—0 i= i—0 i=0 r = E T /—о I ’ (' i—о 2] ( - 1) ' l ) ' c ' ( - i ) 4 0 ( ', H , ) = _ \ 1 Л //,Л v L 1J7 r U ( - 1)' CJ(- ,') , + 0 ( ^ i=r 1=1 ,)’ r = 1 > 2— *• IIi>.iri«'Iним полученное выражение в (159): r= l Л = 2 2 г-=-1 /«г * = 2 /«1 ( - 1 ) ' = Г « У / п + 0 (А**1) = Я - 2 /«=i & 2 < - , ) ' CJ( Л + 0 <ft* f ’> = г -1 / ~ аг У£ ( Г=1 - 1)' (- 0 (А*+'). 1—1 11|Щ|>;1Ш 1яем коэффициенты при одинаковых степенях Л: E = «i, — £2= — а х4-2а2, Е3— a i — ^а г + ба3, — 14= — а, (160) 14а3— 36оСз4-24а4 л. Решая полученную систему уравнений (160), последова•• ii.iio находим m i «1 ^ 6 ; « 2 = а. _ 6 (6 - 1 ). 2 _ _ 6 ( 6 - 1 ) (1 - 2 ). 3 6 g ( g - I ) ( 6 - 2 ) (6 - Э ) 24 \иалогично находятся коэффициенты в разложениях V7n = P2Va/n+ РзУ3/^ + ... + Р ^ 7 п + 0(Лл+1), (161) V *fn = v ,v *fn + ■ ■ ■ + Ъ У Ч п + 0(/1*--'),(162) v v ; = 6 4v V » + • •• + + 0 (ft"*') (163) » • /I I-Сли ограничиться членами до четвертого порядка включи­ 135
тельно в виде (т. е. & = 4 ), то (159), (161) —-(163) v^E v/. W. + 2 1 (1 - 1 ) (S - 2 ) (S — 3) 24 . !fn=lV/n- ? (5 - •) V3/n + можно представит!, - о V V „ + 0(/i5). т е « - 1) ( е — 7- ) ------- - ---- — v7„ + о (A‘), ( 10-1) vVn=£3vVn— -r -(-2 —- vVi t-0(A5), v V n = i Jv V n + 0 ( A 6). Так как в формулу Адамса (156) этот фронт входит с множи­ телем /г, то в локальную погрешность этой формулы он внесет ошибку 0(/i*+2). При удвоении шага интегрирования формулы (164) принимают вид v fn = v f n h)= 2v/n — V3/П V2/<1= V2fn’h>— 4V3/n—4y V„ + V4/n + 0 (A5), V3/n= = 8v3/n— 12yV n (16Г.) v 3K = v V i 2',,= i 6 v V „ а при делении шага пополам — v/n=v/n 2 ^= -£- V/n + -^-V3/n-r -jj^-V3/i> l- V4/n v 7 «= v7«T " = { v s/ » + j v 7 » + - ^ v V , + 0(fts). (16(i) v 7 » = v v l a^ = - g - v 7 » + - ^ - v 4/. v 7 n = v 4/ i 2 ^==-j^-v4/n 13. Конечно-разностные методы решения дифференциальных уравнений второго порядка. Рассмотрим разностные методы реше­ ния задачи Коши для дифференциальных уравнений второго по рядка г/" = /(А% у, у') (167) 136
I м- 1 Ч : 1.’ 1 Ы 1 Ы М И условиями \ У (х о ) = № > . у ' ( х 0) = У'о- (168) ‘ V«чествуют два подхода к решению задачи (167), (168). Пер­ ил I» включается в том, чтобы свести уравнение второго порядка • «|ц ц‘ мс уравнений первого порядка и полученную задачу реимм. каким-нибудь из рассмотренных выше методов. Второй под­ тип состоит в применении таких численных методов, которые спе­ ки <1.и.но приспособлены для решения уравнения (167) и обладают Л-. in* высокой эффективностью. На этом втором подходе мы ос•- ....иIмс я более подробно и рассмотрим конечно-разностные ме•»|*ы решения задачи (167), (168). Д ля построения формул чис1М1И.ИП интегрирования уравнений второго порядка поступим так гак и при выводе конечно-разностных схем для интегриро­ вании сравнений первого порядка. /•■ / Экстраполяционные формулы. Предположим, что нам иззначения решения у ( х ;) и его производной y ' { X j ) в узлах • / //—/г, п— /s-ь 1, . . . , п— 1, п. Построим интерполяционный *•" .тч.'кч! L k , » ( x ), принимающий в этих узлах значения /(*/, I. ч ' ( х , ) ) . Запишем его в виде интерполяционного многочлена Ммимша (48). Подставляя f(x, й у( y' ( x ) ) = L k, n ( x ) + r k, n(x ) х ), (169) ни и-i ральное соотношение х X у ' ( х ) - у ' ( х п) = J y " ( t ) d l = f / ft, Xп хп ft)) dg, (170) И Ml I М ч ' ( х ) — У’ (хп) = у' (хп Э г Щ — У’ ( X n) = h j Lk.n ( Х п -j- th))dt -f0 (171) x n X n \<ft \ Lk.n {X„ + th) d t + p ^ h * ^ 0 U i^--n H,v7»+Pi. (172) 137
где f n = l ( x n, у { х п), y ' { X n ) ) t 1 с ( 173) о о 1 с p != ft * d£ J г*,„ (х„ + th) d t = О о J А+3 = * ‘ С Г d g { < « + ! ) ■ ■.(< + <;) Л О о 0 (*. </(*). - А * 4Ч +|/й+"<Ч. У (*|). у '(Я ))= й 4+3Ц*+1!^ +3,(Л) = = / 1t+V * + , ^ 3» (* „ ) + о (hk+l). (17-1) Отбрасывая в (172) остаточный член, получаем явную разностную схему конечно­ А Уп+ 1 = г ' » + Л^ + ла1^ ^ v ‘?n1—0 075) Величина /i_2pi называется погрешностью аппроксимации диффс* ренциального уравнения (167) разностным уравнением (175). Таким образом, разностное уравнение (175) аппроксимирует диф­ ференциальное уравнение (167) с погрешностью 0 (/ ife+1), или с порядком k + 1. Приведем несколько значений ц,: ро— 1/2, fjti = 1/6, р2=1/8, р з= 19/180, р4=3/32. Если в (171) положить х = х п±и то А у' ( * „ + , ) = * ' ( * ) + * £ TiV‘7n + P'. I=0 (175) где у* — коэффициенты экстраполяционной формулы Адамса, ом ределяемые с помощью (51), P' = ft*+ 4 Ут з )*( „ ) + +t о {hk+\ Отбрасывая остаточный член в (176), получаем разностное ураннение для определения производной у 'п+\: k y'n+\ = y'n + h X i ViV'/ni—О Равенство (178) производной. 138 — экстраполяционная формула (175) Адамса дли (177
Интегрирование дифференциального уравнения (167) с началь­ ными условиями (168) может быть выполнено с помощью раз­ но, пи,ix уравнений (175), (178), если известны конечные разносИ1 V'/„, решение у п и производная у п' в точке х п. Мы предпола* .н м, что эти величины известны. 1огда из (175) находится ре11М1ИК* уп+\у а по формуле (178) — производная у ' п+\ в следую ­ щем узле х п+\. П осле этого определяется [ п.и = 1 ( х п+у, У п + и у 'п + \ ) и но (формулам составления конечных разностей находятся V ‘/n{.b I I. 2, к. У зел х п+1 принимается за текущий, и все вычисле­ нии повторяются. Таким образом могут быть найдены во всех \ i.i.ix сетки производная у п' и решение у п дифференциального •. р.жнения. Допустим, что правая часть дифференциального уравнения не • шержнт производную, т. е. . . . у у"—} (х > У)- (179) И ном часто встречающемся в приложениях случае при вычисле­ нии //„+, можно исключить все промежуточные производные, если im. ii .ko значения производной не требуются в качестве одного из !•»■ »ультатов решения задачи. Д ля этого поступим следующим обIM юм. Проинтегрируем (171) по отрезку [агя- ь х п ] : Xп X y ( x n) — y ( x n - i ) — y ' ( x n) h = ) dx j у" (g) d g = X П—I. n AV, = / i2 l L k,n (xn + th) dt + p2= f t 2 £ о v ,v ;/n + P2» (180) l —I 0 0 t P2= ^2 ^ ^ rk,n(xn - \ - t h ) d t = —I c —1 0 =ftM3VA+i/(*fl)(Ti, */(*)), у' (Л))=Л*:‘Ч +1?/<АЬЗ)(г))= = h k + * V b 4 .i y i* + * > ( X n ) + (182) О (flk 4 ) . Нычитая (180) из (172), находим k У (х п - i) (хп) *1~у (X/i_i) — /i2 “Ь Р» (183) 139
где 1)d t — о S I S — C d E f < ( < + l ) . . . ( i + « - - l ) d < ) = - ^ - J d S j t ( t + l ) . . . ( t + i — l)d/. —1 0 о —s (184) Остаточный член в (183) .(174) и р2 (182): р=А *+3(|itM равен разности остаточных членов pj y«+v (х„) 4- о va-j-i ) (185) Отбрасывая в (183) остаточный член, получаем разностное урав­ нение k г/„+ 1— 2у„4-г/п_ , = л 2^ ] xiV7-. О86) 1—0 аппроксимирующее дифференциальное уравнение (179) или (167) с (£ + 1 )- м порядком. Итак, из разностного уравнения (186) полностью исключены все производные. Решение задачи может быть найдено, если изве­ стны уп, уп-\ и конечные разности V ‘/„ в некотором узле х„. Предполагаем, что эти величины нам известны. Очевидно, что разностная схема (186) более удобна для интегрирования диффе­ ренциального уравнения (179), чем схема (175), так как в этом случае нет необходимости проводить вычисления производной уп' по формуле (178). Формула (186) называется экстраполяционной формулой Штермера. Она может быть представлена также в виде к У „ + х= У п + Ч У п + Ь? £ г= 0 XiV'/x. ( I 86') или с учетом численных значений коэффициентов Уп+1 = Уп \-ЧУп + (/» + - ^ - V2/-4- ~ V яfn + - ‘490- vVn + + -j j - V5/n4" ■• • + x (1v A7 n )= y > t+ W n + + йг (/„4 — ----240~ (V ^ “ 140 (v7n 4-vVn 4- V4/,. + + 2V5/n) 4- • • • + V 6f n ) — j .
П.2. Интерполяционные формулы. Если подынтегральную Ф\имшю /(х, у ( х ) , у ' { х ) ) в (170) заменить интерполяционным Мишпиленом Ньютона L k, n-и. принимающим в узлах x,-t j — n— А* I I, . . . » /г, п + 1 , значения f (х/, y { x , ) t */'(лг,)), и выполнить мни грнрование, 'то мы придем к следующ ему соотношению: </'(*) — У' (,хп) = у ' ( х +Щ — у' (x „)= ftf U .n + i (xn + th) + Л \ /*,п к (х п + th) dt, (187) 6 I и- \ ^хп-\- ±h. Интегрируя (187) по отрезку [х п, x n+ i ] t получаем Хп-М X У(х„+|) — у (дс„) — у' (* „) h = I хп 1 с = Л а [ d i J L k.n+1 (xn + tk) dt + 0 0 dx \ у" (g) Г1 * PiV‘fn+i + Р » . i—0 (188) •H- f n \ \ = f { X n+U y { x n+\), y ' ( x n+ 0), » **i = « t 0 0 i p3= h2 J о A-L3 ( Д ,), J J 0 0 1 l ) . . . ( t + i — 2)dt, J (/ — 1 ) < ( ' + C j rk,nx l (*n + ^ ) dt = 0 C V - 1) t V + 0 - • •P + У' to )l «=s</> d t = h t+ % + / ,‘ ^ (T1, у (г)), у ' (n)) = =Л*+3^ Н^ + 3)(П) = fc‘ +3|VM^ + 3>(х„) + 0 (Л*+4). Iг.11 м в (187) положить Х = Хп+и ТО k y ' ( x n+i) = y ' ( x n) + h Y , YiV'/n+i + Р\ i*-0 (189) I и* у, — коэффициенты интерполяционной формулы Адамса, оп|и 1глнемые с помощью (71), р '= л *+2т*^1г/<*+3) (*0 + о<л‘ +3). 141 1)
Отбрасывая в (188) и (189) остаточные члены, приходим к ралпостным уравнениям для определения решения уп и производной Уп': ; ,~ (190) У п-4hy’n ft2 Y ; i—0 И У i=0 (191) Viv7n+i. Равенство (191) — неявная формула Адамса для производной. Приведем несколько значений (10= 1/2, ptb= — 1/3, р2= — 1/24, рл= — 7/360. Если проинтегрировать (187) по отрезку \хп- и х п], то хп х У (Х п ) — у ( X n - i ) - y ' ( x n) h = У dx ^ / (I) d|= *л-1 о С = h 2 Id t, J —I где Ап k (хп-Ь / Л )^ Ч -р 4 = Л 2£I ViV'/n+i + Р 4. *~0 о о (192) I v,--- i . ^ — !)/ (/ + 1)...(< + «-2 )Л , —1 о о £ p4=/i2 ^ d£ ^ r*.„.L, ( х п + //i)d/= —I о hkA (*+ 1 )1 о £ С f(<— !)<(< + !)• ••(*'+ *— Ч ^ ' С * . —I О У' ( x ) ) \ x - u t ) d t - = h k = У {х ), Ы " 'Ч к + ,у«+*> (п)= Л* •3vs у <Г|)’ ^ (х„)+ у ' (Г|) ) = О (Л*"4) Вычитая (192) из (188), находим у {х п+х) — 2//(x„)4-f/(x„_,)=/i2Xi “ iV'/nfi + Р, *=о где - - - = Pi —v , 1 ‘ и 142 * ( СЛ j (t — 1) t (t + 1)... (/+ i —2) Л — о ( 190)
о ; — £ d £ j(/ -l)*(/ + l)...(/ + i-2 )< «)= —1 О 1 t = = -^ fd £ I + (194) o u ( i :почиый член в (193) равен разности p = h k+3 (U4+1 - vt . ,) у * остаточных членов рз (* „) + О (А*И) = = hk-’ Ч н1г/'"+з| (А*-Н). (195) ' >и>расывая в (193) остаточный член, получаем разностное урав- |имне к Уп+1— 2 Уп+Уп- i = А 2£ • i=-=0 •ншроксимирующее дифференциальные уравнения (179) и (167) • <Л* |-1)-м порядком. Формула (196) называется интерполяци•41пай формулой Штермера. Интерполяционная формула Штермера может быть представвена в виде к Уп+1 = и hi уп+ s/Уп + л 2 1= 0 г учетом численных значений коэффициентов Уп{.{ = У п + S/Уп + Л2 ( /V*-1— V/n+1+ 1 240 1 V4/ftH*l 240 V2/n+1— V5/rt-M — •. • + i). Формула (196) более удобна для интегрирования дифферен­ циального уравнения (179), чем формула (190), так как в этом • iN'i.ie не требуется проводить вычисления производной уп'И:» выражений (184) и (194) для коэффициентов щ и к,- сле,iw i, что x i_ i + - 1 1 0 + -jj- 1 j * \ ^ (^4* !)• • •(^-{- i — 2)dt-\-£ (* — 1)1 . . . ( t + i —2 )d t= 143
i о ; i < £ ( ■' It { t + } ) . . . v + t - 2 ) d t + J -C ..(* + « — 2)<tfj = -t » r = - - f d £ f /...(/ + « — 2)(< + <— 1 ) Л = н „ *1 •’ J o t. I e. = Xi. (197) * l = x*. (198) Xi—i 4Суммируя (197), получаем * £ i—0 /5.5 Видоизменение формы записи разностных уравнений. Неизвестное значение функции уп+\ в (196') входит в левую и правую части разностного уравнения. Поэтому для отыскания уп+\ применяется итерационный процесс. Прежде чем переходить к описанию итерационного процесса, приведем интерполяционную формулу Штермера к несколько иному виду. Д ля этого восполь* зуемся формулами составления конечных разностей и свойствами h (197), (198) коэффициентов и преобразуем сумму X *iV7n-» i i~0 в (196') аналогично тому, как это было сделано при преобразо­ вании интерполяционной формулы Адамса (70) к виду (105). В итоге имеем k к Уп-и^Уп + УУп + Ь2 i—0 — f-=0 v7n + ^ *x j«4 I- (199) Заметим, что формулы Штермера (186) и (196) обладают большей чувствительностью к ошибкам округления по сравнению с формулами Адамса. Проиллюстрируем это с помощью ниже приводимых рациональных рассуждений для простейшей формулы Штермера Уп+\=Уп + V y n+ h 2i ( x n, уп), (200) которая следует из (186') при &= 0. В реальных вычислениях ошибки округления приводят к тому, что вычисляется не точное решение уп разностного уравнения (200), а некоторая сеточная функция уп, удовлетворяющая разно­ стному уравнению У пЛ 144 i= Уп+ЧУп + (*п , У п ) + (20 1)
. иIличной от нуля невязкой 6«. Уравнение (201) можно записать |и . ж е в виде Я,+ 1 = y n + Vyn+ hz(f (хп,уп) + Ьп11хг). (202). Н\гн> i ) n = $ — const. Наряду с дифференциальным уравнением (1/0) рассмотрим дифференциальное уравнение с возмущенной иIи ион частью u " = f { x t u ) + 6 f h 2. (203) IОтменим формулу (200) к решению уравнения i.H.ni, что округление отсутствует, имеем (203). Предпо- un+i = Un+ Vun+№(((x„, Un) -\-6/h2) . (204) Разностное уравнение (204) совпадает с разностным уравнеингм (202). Можно сказать, что в результате интегрирования н|||м|>ерепциального уравнения (179) по простейшему методу 11J11' рмера при наличии округления ( г. е. в результате отыскания |н ццч|ня уравнения (202)) вычисляется та же сеточная функция, мимраи получилась бы, если тем же методом, но без округлений, mi Mi рнровалось уравнение (203) с возмущенной правой частью. Ра «иость между решениями невозмущеииого (179) и возмущеннои» (203) дифференциальных уравнений имеет порядок 0(b/h2). I.ihoii же порядок, вообще говоря, имеет и разность между реше•111им 11 соответствующих разностных уравнений. Отсюда мы делаем иипол, что вычислительная погрешность приближенного решения, получаемого по методу Штермера, может иметь такой же поряюк, как б//г2. К такому же заключению мы приходим с помощью и.... ах оценок для частного случая, когда -^ -= 0 , ду 6 „= 6 = const. (205) Разность между решением уп невозмущенного уравнения (200) и ргшепием уп возмущенного уравнения (201) Лпж Уп Уп \ ижлетворяет разностному уравнению Tl„i l = » ln + VTln + 't8 - ~ 4 n — бд. I «71и выполнены условия (205), то г )«- н = г ]« г V tj* — 6. (205) Нам (см общее решение (206). Общее решение соответствующего »■ «и.«родного уравнения есть сеточная функция С х+ С 2п. НеЧ'\.111(1 убедиться, что частным решением (206) является функ- 14S
* ция тЦ = -----— л 2. 2 формулой Следовательно, общее решение (206) дается + ---- -- п\ откуда для фиксированного значения x n= Xo+nh = x* имеем Лп Уп— независимой б (ж * - х 0)« 2 Л2 переменной 0 (J _\ \ Л* / * Таким образом, вычислительная погрешность приближенного ре­ шения, полученного методом Штермера, может оказаться недо­ пустимо большой, если /г мало. В связи с этим формулы Штерме­ ра употребляются в другой форме. Вводится дополнительная сеточная функция zn такая, что Уп+l Уп *“ h-Zn+l • Тогда явная формула Штермера (186) принимает вид к г п4. , = г п + Л $ ] H , v 7 n . (207) 1= 0 а интерполяционная формула (199) — к к = z n-t-ft£ 1=0 Ktf'fn— h*vk YV » + to % / «-n - (208) 1=0 Следовательно, Уп+i “ Уп “l- hzn+\* (209) 13.4. Реализация неявных разностных формул. Рассмотрим сначала случай, когда интегрируется дифференциальное уравне­ ние (179). В формуле (208) неизвестная величина z n +1 входит п левую и правую части разностного уравнения. Поэтому для се отыскания применяется итерационный процесс, который может быть представлен в виде к k г£Й1>= 2п-ЬЛ £ i= 0 к л Ч п — Ь к к У V £f n + h x kf ( x n+ i , i= o yn + h s £ it)9 (210) или z i + i ' ) = h x hf(x n+t, yn-\-hz{Z , „, (h g )+ '.\ n v/n. •••. V*in)- Здесь v = 0, 1 ,..., g — известная функция своих аргументов. Из (210') следует, что z ^ V ^ z ^ i + A x * (/ (**+ !. v = 1, 2....... 146 Уп+ h z jfio —
11 ii-рации повторяются до тех пор, пока в пределах заданной точ­ ит i и не установятся приближения к решению. Итерационный процесс (210) сходится к решению z n+t уравнения (208): k k \\ = z n + h £ * , v 7 n— h * h Y i f =-0 i— -0 Уп + hZn^), (211) H f . ' III h2x hL < \ , (212) Обозначая P„+t приближение к z „ + i, no* i ;ie />=max Л1 dy лученное по явной формуле (207): k h (213) /rtt i= 0 формулу (211) можно представить так: k Zn p1^ Pn 4-1 V 7 n *T" i—0 {%n +-1» У п T~ hZn-\- j). I in-да итерационный процесс (210) принимает вид к 4 Ум ! >= Р п ± I— h * k £ V Ч п + Л* J ( х П4-и yn + hzh*li). 1=0 (2 1 4 ) Г.стсственно принять Р п+\ в качестве начального приближения для итерационного процесса (214). Тогда получим предска* «ынающе-исправляющий метод. П осле окончания итерационного процесса решение у п+ 1 уравнения (199) находится по формуле (209): У # 1 1}= У п + 1 * 3 $ К (215) Теперь рассмотрим общий случай интегрирования дифферен­ циального уравнения (167) с правой частью, зависящей от произнодной. В этом случае формула (208) записывается так: k к M .|-l=zn + / l £ *iV 7 n — 1=0 £ V //n4-^xft/(xn-i-1, yn + h z n+ u y'n+l), i—0 (2 1 6 ) а формула (191) для производной — I =y'n + h ' L Yi V' /n— 1= 0 Ё V ‘f„ + h y J (x„+1, 1—0 Уп hZn+1» У п.,. j)* (2 1 7 ) 147
Итерационный процесс для отыскания решения уравнений ((216), (217) может быть организован следующим образом. Д опу­ стим, что мы имеем некоторые начальные приближения для про­ изводной и вспомогательной переменной ные приближения подставляются в соотношения к Эти началь­ к ytv ‘ fn— 0 «+ t', > = y « + fcE v i n + h y j ( x „ ht, Уя + Лгй?!, 1=0 1=0 я (218) к ri'^ ,l, = zn + ft £ , * * i V ‘f n— hxk £ i —0, V'/n + Ахй) (х „,.ь yn + hz'n%x, y^4 l). i«-0 (219) по которым вычисляются исправленные значения производной «у 'м и вспомогательной переменной z<v+ n . Вместо (218), могут быть использованы соотношения >• (219) Уп + Ьг{п1 ,. < + !) + « ' (Л. у„. /л. v/n. (218') *пЙ|,™Лх*Нх"+,> ^ + !)+ ^ (Л. гп. vfn .......vV«). (219') где g ' и g — известные функции своих аргументов. Из (218'), (219') следует, что уточнение значений может производиться так­ ж е по формулам г/;<^ 1>= У п+,’ +Лу,(/(<л4-1. Ул + А г ^ ,, Уп + I), + * * £ н ,). У ли ))• ,(V | , г£ п , , = г £ н + Лхк(/(-*»г1. Уп + + w . az^ С , , j/;^,)— i, t/n-4 " » ' Итерации повторяются до тех пор, пока в пределах заданной точности не установятся приближения к у 'п+\ и zn± i. Итерацион­ ный процесс (218), (219) сходится к решению системы уравнений (216), (217), если правая часть этой системы удовлетворяет по переменным zn+\ и у 'п+\ условию Липшица с константой меньше единицы, а именно если выполняется следующее соотношение: 148
max (ч (h max 3L h>Ci (h max d f_ dy + max dy Обозначим L..— max d\_ , Ly = max dy v \\ dy‘ !/ ’ -fm a x d[_\\ I dy' dy df \J J (220) 1. L = m a x ( L y , Ly>). Из dy' пыражений (51) для у» и (184) для следует, что Y i > X i для i > 0 и Поэтому условие сходимости (220) может быть записано и миде ykL h ( l + h ) < \ . (220') • Иикшачая P n+i приближение к z n+i, полученное по явной форму|с (207), а через P ' n+i — приближение к у' п+ь полученное по явщlit формуле Адамса (178) k p n+> = y'n + h Y j ViV‘7n. (221) i-0 *|ц»рмулы (217) и (216) можно представить так: * y'n+ i = P h + i — hyk V \7lf n -Ь hykf (хп±и Уп+hZn+u Уп+\), i= . 0 k гП4 1 = ^я-и—Лх* Л v7n+ *xftf (хп+ь yn+ hzn^u i--0 I«иди итерационный процесс (218), (219) примет вид ,(v-H> , * УпЛ 1 = ^ n + i — Л ,(v) V7n4-^v^/(x„4-b ‘/п + Л З Д » 0п-н). (222) ,< v ) *п1Л} = Р п + — 1 Y V ‘fn + b*k). (223) hxh i=0 Кстественно принять P n+i и P n+i в качестве начальных при­ ближений y't^\ и Zn\ 1 для итерационного процесса (222), (223). 1111/I«I получим предеказывающе-исправляющий метод. После •ммжчания итерационного процесса решение у п+1 уравнения (199): k k I =Уп-\-ЧУп-\~Ь?У KiSI^n— h h i b Y y i n - \ - h 2xkf ( x n+ ь #н-ь ^ f l ). i-0 i —0 ii.i холится по формуле (215). /.V.5. Построение начальных значений. Д ля того чтобы можно было находить решение уп+\ дифференциального уравнения (179) * помощью разностных формул (207), (211), (209), необходимо 149
иметь значения решения г/п, вспомогательной переметши z n и конечных разностей V * f n, вычисленные в точке x = x v. Д ля го го чтобы найти решение y n+i дифференциального уравнения (1(17) г помощью разностных формул (178), (217), (207), (210), (200), необходимо иметь еще и значение уп' ■ В начале интегриропаиня величина z n и конечные разности V * f n неизвестны. Поэтому ис­ пользованию данных формул численного интегрирования должно предшествовать вычисление указанных неизвестных величии. Э ы величины могут быть вычислены одношаговыми методами. Рас смотренные в данной главе конечно-разностные схемы также мо­ гут быть использованы для этого. Как и для уравнений первого порядка, определение необходимых для счета начальных значс ний называется разгоном. Перейдем к описанию процедуры разгона для методов Штор мера, основанной на применении конечно-разностных формул с последовательно увеличивающимся порядком аппроксимации» В частности, нам понадобится явная формула (175) У1 = ‘л + hy0 + Л8 £ i»jv7 «. i =0 которую представим в виде k z, = y0+ h ( 221) £ HiV'/n. *—0 i j \ = y o + h z {. Рассмотрим сначала процедуру вычисления начальных значс ний для уравнения (179). Используя начальные условия (168) и явную формулу (224) при &= 0 (что соответствует первому по­ рядку аппроксимации), вычисляем (225) . У[') = о У+ М " - При помощи формулы (207) при /е= 0 (что также первому порядку аппроксимации) вычисляем соответствует 4 |)=2<11>+ ЛА1>, Погрешность 2£> составляет О (/г2), погрешность у{1), (226) — 0(/ia). Находим f (2 ]t v/ 20, V2A V> и полагаем v 150 7 « = v 7 i = v 7 <21). v*/*1’. v/«=v/1 —v*/j.
I Icnujii.ayu формулы (221) и (207) it учиi иная и mix разности in* nioporo порядка включительно (чю соответствует третьему порядку ампрокснмацни), вычисляем I = Уо Н"Л V/t» Ч" - j - V2/0) . (227) ( '/f’ ^ '/ o + M *1' ■ *p = -*p + ft ( / p + - j j - w , ) . (228) . »Р -*Р + А *Р . z f= 4 2) + . r « ft ( V */ f ) . (229) + A * f, jf- a p + ft (/ ? )+ -^ 1bn репшость zp , z(,2>, (230) zjp составляет 0(/i4), погрешность */P» /Л'. //?*— 0(/i5). Находим /?, V/?', Y 2/?. У 3ЛЭ. V1/?’- Положив V * / o = v 7 i= v 7 s = v 7 s = V V?’ . можем вычислить с помощью соотношений (116) конечные разно• ut V :%, V 2/0, V/o. Д алее, используя формулу (224) при k = 4 pun соответствует пятому порядку аппроксимации), вычисляем - — Уо + ,1(ф / о + v/o + ~ v7o + v7« + v7o ) . (231) Таким образом, в описываемой процедуре разгона итерацион­ ным способом мы получаем на третьем этапе в точке Х\ значение ргмкчшя у\ с погрешностью О (h 7), промежуточную переменную .-| г погрешностью О (Л6), а конечные разности v V i= v 7 o . v 7 l = v 7 o + v 7 i = v 7 0+ v7o. ,232) v 7 i= v 7 0+ v 7 i = v 7 o + v*/o+ v 4/o. v/i=v/o + v 7 i= v/o+ v a/o+ v7o+ v 7o • погрешностью 0 ( h 5) . Если ограничиться этими разностями, то •пиленное интегрирование уравнения (179) можно далее продол•кпгь по формулам (207), (211), (209) с k —4 (что соответствует интому порядку аппроксимации), начиная с п = 1. Выполнив по 151
этим формулам три шага и вычислив решение в точках х 2, * 4, получим в точке х = х 4 фронт V*/^, i = О, 1, 2, 3, 4, с погрешностью о т . Если же после вычисления решения у\ продолжить разгон по формуле (207) с k = 4 (что соответствует пятому порядку аппро­ ксимации), вычислить решение */г-<3> в узлах i = 2, 3, 4, 5, 6, по ним составить конечные разности V 7 e (3)» а потом разности V*/0г i = l , 2 ,. .. ,6 , и снова применить формулу (224) при &= 6, то мож­ но вычислить у\(А) с погрешностью О (/г9), промежуточную пере­ менную Z\(A) с погрешностью О (ft8), а конечные разности V l'/i с погрешностью 0 ( h 7). Рассмотрим теперь вычисление начальных значений для урав­ нения (167). Предложенная схема разгона сохраняется и в этом случае. При этом для вычисления значений производной у' ис­ пользуется аналогичный итерационный процесс, основанный на рекуррентном применении экстраполяционной формулы Адамса (178). Вся схема может быть представлена следующим образом. _ .. ,0> Вычисляются z\l\ у\1) по формулам (225) и определяется у\ двукратным применением формулы (178): первый раз — с исполь­ зованием только двух первых членов: У1 = Уо + ft/0, и вычислением f\'\ v/V\ v/0= V / iI), второй раз — с использова­ нием первых трех членов (что соответствует второму порядку ап­ проксимации) y\m = y ’o + h Вычисляются 4 °* t/г '(И + V/o). по формулам (226) и определяется 'И) У2 = У 1 _ ,(*) ,0) Погрешность у\ и у2 составляет О (Л3). Вычисляются с помощью (227) и определяется У\ — Уо + ft ^/о "1 ~ V/о Вычисляются 4 2), 4 2) с помощью (228) и определяется , /гС Уг'<2) = yi,(2) -Eft (А<г> Вычисляются z<2>, v / P H - J - V ’ / i). с помощью (229) и определяется + А (/ Р + Д - 152 ~ V2foj • v/!?> + 4 - V 2/ ? ).
Погрешность у\ , у2 и у\ v V f . V''/з21 И, положив составляет 0(/i4). Находим ff\ v/?\ v7o= v 7 i = v 72= vT?’, пересчитываем конечные разности, необходимые для определения значений производной по экстраполяционной формуле (178) с учетом разностей до третьего порядка включительно. Вычисляем ^ 2). */i2) с помощью (230) и определяем новые шачения производной (/I — ifo + fc |7о + ~ V / v 1 •<3) ^ <3’= у;'3’ + ,0 ) o V o V 3/oj » /i3) = /4*i. #i2\ £/1 ), h>+ -i- v/<3>+ vVi + -j- v 7 ,). ,(3) £/3 = У'2 -\-h ,(3) i t = f ( x 3, y f , ?/i ), .(3) .(3) УА = У з + 4 ^ + 7 V ^ + ^ „(2) / (x 4* £/4 i v7?’ ■f ,<3> )• .Погрешность I '(3) , у.л '<3) , yA '(3) составляет Л /w. BV y '(3) x y2 О (/г5 ). Д алее разгон продолжается так же, как для уравнения (179), 1 о. по формулам (231) вычисляются z<3\ */\3> и определяется производная М) у, , / 1 5 = y a+ h ( / „ + — v /o+ — 3 „ v 7 »- l- — v 7 o+ 251 ~ 20 „ \ v 7 . )• погрешность которой имеет порядок 0 ( h 6). Таким образом, в описываемой процедуре разгона итерацион»п.1м способом мы получаем на данном этапе в точке Х\ значение решения У\ с погрешностью О (/г7), производную у\ и промежу|очную переменную Z\ с погрешностью 0(/i6), а конечные разно• м| (232) с погрешностью О (/г5). Если ограничиться разностями in четвертого порядка включительно, то численное интегрирова­ ние уравнения (167) можно далее продолжить по формулам (1/8), (217), (207), (216), (209) с /г= 4 (что соответствует пято­ му порядку аппроксимации), начиная с п— 1. Выполнив по этим Формулам три шага и вычислив решение и производную в точках 153
x 2> xzt х4, получим в точке х = х 4 фронт V ‘f 4, £= 0, 1, 2, 3, 4, с по­ грешностью 0 ( Н 6). Данный способ позволяет в несколько раз уменьшить на раз­ гоне число вычислений правых частей дифференциального урав­ нения по сравнению с вычислением начальных значений одноша­ говыми методами Рунге— Кутта. 13.6. Вычисление решения между узлами сетки. Рассмотрим случай, когда точка х*, в которой требуется определить решение дифференциального уравнения (167), не совпадает ни с одним узлом х п сетки, на которой вычисляется решение разностного уравнения. В этом случае можно поступить следующим образом. Предположим, что точка х* расположена между двумя соседни­ ми узлами: x n- i < x * < х „ , в которых вычислено решение разност­ ного уравнения. Обозначим х* — хп Тогда — 1 < £ < 0 . Проинтегрируем [ х Пу х * ]. Учитывая (169), имеем соотношение (170) по отрезку y(x*)— y(x n) — lhy'(xn) = ^ dx^ y " ( Q d l = h 2 \ d l ^ L k,n {xn^th) dt -f*n l xn b o * X. + h2j dl 5 r*.„ (xn + th) d t= h * £ |if © v7n + P> 0 6 (233) f=0 где р = 0 (Л и з ), Щ © = -7 7 J f t di 0 Г t(l + 1 ) . . . ( < + ( — 1) dt. ( 234) 0 Отбрасывая в (233) остаточный член, получаем конечно-разност­ ную формулу для вычисления искомого решения у (*• ) = г/„ + + /г2у • л» Иг © V ‘7n- (235) IM) Приведем несколько коэффициентов рД |) И о © = 4 -| *. M l ) = - f Из (1 )= ~ оЬО Иа( ! ) = - ^ ( 1 4+ 2 р ), (3? + 15Г + 20|П, и4(|) = 1440 (2|« +18£Ч- 55|* + 60£»). Теперь рассмотрим вычисление решения у { х * ) для дифферен­ циального уравнения (179). Если при интегрировании (179) зна154
■и мнс производной не вычисляется, то в формуле (235) величина </„' неизвестна. Однако она может быть найдена, например, из со» «* I ношения (180) k У' ( * n ) h = y (хп) — у {хп- 1) — л 2£ VfV'/n— р2(236) Подставляя (236) в (233), находим к 0 (**) = ( 1 + £) У (Хп) — bf (хп-\) — Уг2 у i Vfv 7 n — Ь >2 + j-0 + h2 Y, И' (D v'7n + Р = ( ! + 1) У (X„)— Iy (х„_|) + i~0 к + л2 у (р, < | )-£ v t) v 7 « + р — &>*• (237) i —o 'Мбрасывая в (237) остаточный член, получаем конечно-разностиvн> формулу для определения искомого решения у ( х ' ) ~ ( \ + Ъ ) у п-1Уп-У ( i ; © v 7 n , (238) i-o • ;u * К Ш — *V|. 11|'|]»сдем несколько коэффициентов ц,* ( | ): м; (1 )= ф ( р + ? ). к < э = ф ( Р - 0 - К © = - ^ - ( I * + 2|з— |). Из < 0 = - g - (355+ 15|* + 20|3- 81), К ® = - Г ^ Г ( 2?“ + 18?5+ 55?1+ 60s3— 211). 144U Формула (238) может быть использована также для нахождения р* пи ния дифференциального уравнения (167). /.7.7. Практические способы оценки погрешности. Рассмотрим « иосиб оценки локальной погрешности для метода прогноза и кор­ рекции, основанного на формулах Штермера (186'), (196'). Из выражений (185) и (195) для погрешностей предсказывающей (1Ьп ) и исправляющей (196') формул следуют асимптотические оценки локальных погрешностей явного и неявного методов Штсрмгрл: p i? - И р ‘;г>= (xJ - U! T = x4+ ,h‘ + 3и1* - * « с*-> — « й ? = * * 4 1 л ‘ г3 ы + О (ft*+<>), (239) + о (/1*-'). (240) 155
Погрешность приближенного решения разностного уравнсния (196'), полученного в результате уточнения предсказанного значения м ] = имеет тот же главный член, что и в (240). Поэтому и ( x j — u£>=pJJ' = х * rl hk+3“ t3) (x J Решая совместно (239), (240') относительно ft*+3u<ft+3>(x m) , имеем „(V) _ ,/0) Л*’ 3 и(*+3) (*,„) = ■■ ---- 1- О (Л*г4). X*+i ^A+l Отсюда получаем апостериорные асимптотические оценки лок аль­ ной погрешности предсказанного значения решения Р<* ------- - ( « ? . '- и%>) + 0 (Л*4 4) Xfr+i ' (241) и исправленного значения u,n<v> p(v) = -----2iiL---- (им _ „ Г ) + 0 ( Л 4+4). X*+l *к+1 (242) С учетом (197) — -(«2?— « О + О (Л* (241') Н), Р<£>---Xfe РМ = - ^ - (Urn -U™ *) + О (Л *4 ). Оценка (242') может быть использована для уточнения женного решения и™: .. __,.(V) 1 X**.! , (v) ит ~Г ' ^ Кит и т— (0)ч ит) , (242') приблн- (243) при этом локальная погрешность w™ составляет 0 ( f i h+A). Оценки (24Г ) и (242') остаются в силе, если для вычисления значений ц<0) и использовать не точные значения ре­ шения и (х т) и v u (хт) = и (хт)— u(Xm-i), а приближенные значения U nv V U m ~ U m — lim — и ИМСЮЩИе П О Г р в Ш Н О С Т И U(xm) - u m= 0 ( h k- 4), V " (* „ ) — V “ m = 0 (ft*-* а вместо точных значений конечных разностей V Ll ( x m, и { х т) ) ис­ пользовать их приближенные значения V 1 7(x'nj, um) t вычисленные с погрешностью 0 (/ iA+2). Практическое значение этого замечания состоит в том, что при интегрировании дифференциального уравнения с помощью рассматриваемого метода прогноза и коррекции использование 156
|мешок (241/) , (242') обосновано только тогда, когда производит «и уточнение найденного решения по формуле (243), Как следует из (183), локальная погрешность ыт+1 равна и (* m+i) — Um- 1= h 2X k +-lV*'b,/m + О ( l l k + 4 )> ■и куда получается асимптотическая оценка и (Хли-i) — umt 1Эй Нгх кл Vm* (244> Таким образом, асимптотическая оценка равна первому отбро­ шенному члену разностной формулы (183). Б частности, оценка и ( x ^ — ux s* 1V *Г4 0г i4.ilекающая из (244), может быть использована для оценки точ­ ности при разгоне. 18.8. Изменение шага интегрирования. Все, что было сказано •>г> изменении шага интегрирования для конечно-разностных ме1ИЧОН решения дифференциальных уравнений первого порядка* ш-ргносится на методы Штермера. Как следует из (207) и (208), переход от шага h к новому шагу Л* (154) означает: во-первых, и» pi ход от конечных разностей V^/n, составленных по узлам сет­ ки (3), к конечным разностям составленным по другим \ 1.чам х п— ih*, i — 0, 1, . . . , k\ (245> по вторых, переход от значений переменной zn на сетке (3) к зна•и миим этой переменной zn* на другой сетке (245). Переход к конечным разностям V ‘f n* выполняется по формулам (159), (M.I) — (163). Теперь получим формулы для пересчета значений переменной Найдем коэффициенты в представлении -м = C jZ n ~rh (C2/n-j-C3y/n + C4y 2/n + . . . + C ^ v */ n ) + 0(fcw “). '1 in этого достаточно разложить, как и при пересчете фронта, лемую и правую части этого равенства по степеням /г и приравнять км мрфициенты при одинаковых степенях h. Приведем первые пнем, коэффициентов этого представления: С,= 1, с2---±-(1-0. 2 ' .= 24 о (|— 1) (g+ 1), ( 1 - 1 ) ( - 12+ 1 + 1). С6-----Д - (Е— 1) (3|3ЗоО 12|г + 8 1 + 8), С . = — ±— (|— 1) ( — 2|4 + 16|3— 39|2+ 21| + 21). 157
Аналогично можно получить коэффициенты в разложении zn* че рез новый фронт: 2: = c : z n+ h ( c i f n+ c ; v rn+ c ; v * f n + . .. + c ; +2V* / :)+ o (&*•**). Приведем первые шесть коэффициентов этого разложения: с:= 1 . c:= -i-(i-i), Сз=-^-(р- 1). с’ = ^ - й 3—2? + 1). С*= 1 5 5 Г (8 | «-2 0 ? + 1 5 1 - 3 ), Cl = (21|s— 60|3 + 55|2— 181 + 2). Полученные формулы пересчета конечных разностей и промежу­ точной переменной zn позволяют произвольно менять шаг инте­ грирования в методах Штермера. В заключение приведем список литературы, рекомендуемой к гл. 3: [3— 9, 12— 15, 17, 19, 22, 24— 26, 28, 29, 31, 33— 35, 38, 39, 41— 43, 45].
Глава 4 ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ ЖЕСТКИХ СИСТЕМ 1. Жесткие системы. Простейшие неявные ме­ нты. Рассмотрим применение многошаговых методов (3.2) для |и*иич111я линейной системы (2.120), (2.121) с матрицей простой мруктуры. Точное решение этой системы дается формулой IV 123): м у (х ) = У C,exi‘ е,'. /1 (1> 1'л шостное уравнение в данном случае примет вид k £ k a t-Уп+ i = h £ i= 0 Ayn+i. (2) i —0 Разложим yn по собственным векторам е* матрицы А: уя= £ с к , . /---I I In.вставляя (3) в (2 ), имеем £ «I 1— 0 V cn+i e/—h У Р,А У /= 1 М = £ /=1 (3) i= 0 k C i-н е , = /=! k (Т a-tC'n+i— Р Д ,С ^|) е / = 0 . 1=0 i--=0 IV силу линейной независимости векторов е* отсюда следует, что k У i—0 k a fiL . i = h £ РД/СЦ,. / = 1........М . (4) 0 Соотношение (4 ) совпадает с разностным уравнением (3.2), и|Ч1мененным для решения дифференциального уравнения (2.112) г >. Xil (5) y '= h y 159
"Оно показывает, как преобразуются коэффициенты C „j при чисч ленном интегрировании линейной системы (2.120), (2.121) много шаговым методом. И з (3) и (4) видно, что каждая составляющая е/ (<■) решения (1 ), пропорциональная одному из собственных векторов, интегрируется независимо от остальных. Составляющая Сп*е3 (?) решения у п (3) соответствует составляющей (6) решения диффе| ренциального уравнения (2.120), причем формулы преобразовл ния коэффициентов C nj совпадают с разностными формулами ип тегрирования уравнения (5 ). Поэтому, если уравнение (5) проин тегрировано с достаточной точностью при всех / = 1 ,...,Л 4 , то г достаточной точностью будет найдена составляющая (7 ), соот­ ветствующая собственному значению Х-, и, следовательно, обеспс чена достаточная точность решения всей системы (2.120), (2.121) многошаговым методом. Рассмотрим случай действительных отрицательных А,/. В этом случае уравнение (5) является асимптотически устойчивым и лю ­ бое его решение стремится к нулю при х -^ со . Обсудим, какому условию должен удовлетворять шаг интегрирования h для того, чтобы решение разностного уравнения (4) хотя бы качественно отражало указанное свойство решений дифференциального уран нения (5 ). Другими словами, найдем, при каких h решение урав­ нения (4) стремится к нулю при п -+ оо. Д л я того чтобы всякое решение разностного уравнения стреми лось к нулю, необходимо, чтобы все корни его характеристиче­ ского уравнения были по модулю меньше единицы. Д ля явных методов Адамса (3.53) было получено необходимое для этого ус­ ловие (3.94). Д ля методов Адамса в ординатной форме (3.41) это условие записывается в виде h m < — 2— и приводит к таким ограничениям на шаг интегрирования: метода Адамса первого порядка аппроксимации Л|Х| < 2 , второго порядка аппроксимации Л|М <1, третьего порядка аппроксимации h |A, j < — -— ^ 0.545, 1 360 1 44/12 для
%«■тертого порядка аппроксимации 2 h |Ь| < 160/24 «Иниго порядка аппроксимации h |Я| < ---- -------as 0.163. 8816/720 l.iметим, что для методов Рунге— Кутта условие, обеспечи... . стремление к нулю решения соответствующего разностiMHii уравнения (2.118), имеет вид: для метода второго порядка IV I I) h\% |<2, •ли метода четвертого порядка (2.22) h\X|<2.785. «’..-н-мовательно, для явного метода Адамса необходимое условие vo имитотической устойчивости разностного уравнения принимает иид \h 1 <Сconst/ шах (Я/|. 1</<м (8) 1 ели матрица системы дифференциальных уравнений (2.120) и ч п т большие по модулю отрицательные собственные значения, • г шах 1Х/| » 1, (9) •и играиичение (8) на шаг h является на больших интервалах ин•*• рнрования слишком обременительным, так как оно требует ис•1<| и.зопаиия очень малого шага на протяжении всего интервала пин |рирования. Это обстоятельство вступает в противоречие с ' «рам ером поведения точного решения системы. Если матрица ни u-мы имеет большой разброс, собственных значений, например, и глучае двух уравнений |a i |^>|X2|, то первая составляющая точ­ ит и решения у (х )= С хек'х 4- С2екаХе2 ••■!• 11111 быстро затухает на отрезке, длина которого имеет порядок j I/1Л,11, а затем становится ничтожно малой. Именно на этом •••pi 1ке она вносит свой вклад в решение у ( х ) . Вторая состав"|цццая заметно изменяется на отрезке длины — 1/|Х21* причем Л 11nI.I второго промежутка значительно превосходит длину перитп. 11а втором отрезке именно вторая составляющая определяет ити’деиие всего решения. Н а первом отрезке скорость изменения решения определяется • •мрпсгью изменения первой составляющей и имеет большую ве­ личину. На втором отрезке скорость изменения решения опреде­ |» 1.1 к 2\1 161
ляется скоростью изменения второй составляющей и имеет отно­ сительно малую величину. Таким образом, на интервале интегрирования выделяются дна промежутка с разным характером поведения решения. На первом промежутке, называемом пограничным слоем, для воспроизведу иия быстро изменяющегося решения с приемлемой точностью не обходим шаг интегрирования, удовлетворяющий условию /i«C 1/1A.J |. Казалось бы, что на втором промежутке, т. е. после про хождения пограничного слоя, где решение характеризуется ма лой скоростью изменения, шаг интегрирования мог бы быть yiiel личен. Однако, как показывает неравенство (8 ), этого сделал, нельзя, так как при значениях шага, нарушающих условие (8), соответствующая составляющая решения уп разностного уравпс ния не будет затухать. Таким образом, на всем интервале определения решения не обходимо применять малый шаг интегрирования, что приводит к огромному числу шагов на больших промежутках интегрировании и чрезмерному возрастанию времени решения задачи на ЭВМ. Описанная ситуация встречается при интегрировании жест* ких систем уравнений. Жесткие системы характеризуются тем, что среди собственных чисел матрицы Якоби df/dy имеются боль шие по абсолютной величине, которые обязательно обладаю! большой по модулю отрицательной действительной частью, а соб ственные числа с положительной вещественной частью имеют ма лую величину. Как уже отмечалось, для жестких задач примени* ются специально сконструированные численные методы, один u i которых — неявный метод Эйлера — был приведен в гл. 2. Как уже бы ло показано, применение неявного метода Эйлера (2.126) (формула которого получается из (3.70) при k = 0) для задачи вида (5) приводит к разностному уравнению первого по­ рядка (10) У п + 1 = Р ( Щ у п, (II) Из (10) и ( 1 1 ) видно, что при произвольном h > 0 и отрицатель ном X решение уравнения (10) стремится к нулю при оо. Тем самым обеспечивается стремление к нулю всех тех составляющих (7) решения (3) разностного уравнения Уп+1 - У п + НАуп+и которые соответствуют матрицы А. Д ля комплексных отрицательным собственным (12) значениям X—а + bi с отрицательной реальной частью а < 0 также выполняется нер;ь венство \F (Xh) |< 1. 162
I hi ному, если среди собственных чисел матрицы А имеются ком■игм-пые, то будут стремиться к нулю также и те составляющие 1*1*it11*itii я разностного уравнения, которые соответствуют комч.икспым собственным значениям с отрицательной реальной •I>11- I МО. I;i к как точное решение устойчивого дифференциального ) 1»лимения вне пограничного слоя изменяется с малой скоростью л т*дог себя плавно, то шаг интегрирования может быть увели*ич1 без нарушения численной устойчивости приближенного реше­ нии Таким образом, применение неявного метода Эйлера (2.126) ii чмеленному решению устойчивой линейной системы (2.120), IJM2I) позволяет выбирать шаг интегрирования, ограничивая его ■отметенным требованием достижения заданной точности прижженного решения. Рассмотрим теперь неявный метод Адамса второго порядка • ммроксимации. Ф ормула этого метода получается из (3.70) при b - I: L Уп+ 1 = Уп + — ( f ( x n, yn) + f{*n+ Ь У п Л ). (13) Формула (13) называется также неявной формулой трапеций. Применив (13) к решению (5 ), получим разностное уравнение Уп+\=уп + - ^ - ъ . ( у п + У п + д , (14) •и куда приходим к (10), где F ( U ) = ( l + U / 2 ) / ( l — М / 2 ) . f I -ж \ = a + bi, то 111 »ii </<0 имеем |Z7(ХЛ) |< 1, и лю бое решение уравнения (14) оремнтся к нулю при п— оо. Следовательно, обеспечивается пргмлсиие к нулю всех составляющих (7) решения (3) разност............. Уп+\ — Уп-\-— {Ауп -\-Ауп+\), (15) ••нпрые соответствуют отрицательным собственным значениям мгнрмцы А. Если среди собственных чисел матрицы А имеются «••ммлсксные, то стремятся к нулю и те составляющие решения !*•* нтстного уравнения (15), которые соответствуют комплексным *«и’м тенным значениям с отрицательной реальной частью. Поэтоприменение метода трапеций, как и неявного метода Эйлера, 163
для численного решения устойчивой линейной системы позволяет увеличивать длину шага интегрирования вне пограничного слоя без нарушения численной устойчивости приближенного решения Единственным ограничением при этом является требование достн жения заданной точности. 2. Методы дифференцирования назад. Д ля интегрирования жестких дифференциальных уравнений наиболее распространен ными являются методы численного интегрирования, основанные на формулах дифференцирования назад. Эти формулы имеют вил (3.2) и могут быть построены, если производную /(*„+*,, y ( x n+h) ) решения в точке л: — аппроксимировать с помощью односто» ронних формул численного дифференцирования. Односторонние формулы численного дифференцирования можно получить разпы* ми способами. Один из них заключается в следующем. По известным знач<* пням функции у ( х ) в узлах x = x n+i, i = 0 ,___ k, строится инте|м поляционный многочлен Лагранж а Lhtn+k(x ). Тогда у (х) = LA.n.Lk (*) + rk.n-ik(x), где (Hi) I I * [ ( х — Хп+i), Гкш п+к(х) = (ft + 1)1 i—0 £ — промежуточная точка между Дифференцируя (16), получаем и х„. у ' ( х ) = и , п vk (х) 4- г ’к,п+к[(х). Подставляя х = х п+к, имеем к У' (хп+к) = 4 Сш (х„ о.,) + r'Kn f к (*„_ *). 1г*0 ( 17) где Ci — вполне определенные числа, г k,n /.. ч f k {Xn+k) — !/**-“ <0 £ __j Л . Умножим (17) на /г: к Ну' (хп+к) - £ с ,у + hr'kn+k (*„+*)• ( IН) i—0 Чтобы получить формулу вида (3.16), поделим (18) на C h: (3.2) с условием нормировки <ад(*«+|)— ЛРй/ (xnj k. у (хп ь* ))= р п+*, ( I ’)) k i—0 164
I А'* di = C{JCft, Oft = 1> Pft = \jChf Pn+*= ~ h r kn H (*„.,.*) p„ = - - ^ J - ft*+l (Д 5” (I). Отбрасывая в (19) остаточный член, ... . пое уравнение получаем (20) конечно-раз- k ^Рй/ Уп~>-к) 9, ah 1, (21) f^O Аппроксимирующее дифференциальное уравнение (2.1) с поряд­ и м ( ) { h h). Локальная погрешность (20) формулы (21) может Лим. представлена в виде Рпх*=----- Л4_г1 *+ 1 " (х„) + О (hk ' 2). (22) Несколько формул вида (21) различной степени вместе с укаиши’ м порядка разностного уравнения и коэффициента при глав­ амм члене погрешности приведены в табл. 1. ia мети м, что неявный метод Эйлера (2.126) является методом тффсренцирования назад первого порядка. Рассмотрим применение метода второго порядка для решения мшсПпой системы (2.120) с начальным условием (2.121), матрин.| \ коэффициентов которой имеет отрицательные собственные П1.1ЧП1МЯ. Применим формулу (21) при /г= 2 Уп+2----# 1+ 1 + -“ Уп--------- hfп+2== 0 (23) и \|»;iмнению (5 ). Тогда получим разностное уравнение Уп-\2------ Уп+\ -j- “У~ Уп ~ ЛА#п+2= 0» мчи ^1---- “ hh ) Упл 2 ------ Уп-г 1 + Уп = о. (24) •и.Mire решение (24) имеет вид У п ^ С ^ + С **, * *• * 1. *2— корни (25) характеристического уравнения ( 1 _ _ | _ ^ Z* _ _ L Z + _ L = 0 . (26) 165
Таблица 1 Формулы дифференцирования назад для решения жестких уравнений Формулы № Уп+2 — 1 Уп+1 док пень k 1 2 Т Уп+ т hfn+* 18 9 2 У п +2 ' У п +i + 11 11 11 Уп “Ь ь + "и' hfп+з 48 36 16 Уп+4 25 Уп+3- 25 Уп+2 + 25 Уп+i — Уп+з 2 Сте­ Поря* S 2 2 3 3 Локальная погрешность fe+l *{хп) - - f- A V * » 12 — ----- /lV5> 125 * 12 ~ 25 Уп + 25 hi/1+4 300 300 , 200 Уп+з— ,1г,Уп+i , У п + з ~ f“ 137 Уп+2 137 37 60 12 75 У п Ч * У п + i 137 137 137 hf,п+5 __ 450 , 400 360 Уп+в 147 Уп+5“ И7 Уп+4т ' j47 Уп+з— 72 225 10 ' У п +i — У п +2 147 147 147 Уп+ 60 + 147 hiп+в 10 137 20 343 h*yW h?yW Непосредственные вычисления дают 2 dbr ^1 г 2/iА, *1,2= 5( ‘ - Пусть Я,<0 и Л > 0 . Если + 2ЛЛ<0, то 1+ 2hX>0, М то |zit2| < l. Если I f V 1 + 2hX— i V2/i 1Х| — 1. Тогда . |2 4+ (2/ПЦ—1) 9 (l+ -i-/ .| X | )S 166 _ 3 + 2/ЧМ (3 + 2 M W 1 __ < Л _I 3 + 2/1 |X| 3 I, I
Т-м.м образом, |^i,21< 1 при лю бом К О . И з (25) следует, что и|ш Л < 0 лю бое решение разностного уравнения (24) стремится к И при п -+ о о. Если формула (23) применяется к решению за(2.120), (2.121), то все составляющие (7) решения (3) раз••i,< I мою уравнения У п г У п 2 — — | - л Л г / Л 4 .2 = о 11ргмятся к нулю при 1»*чшпр(шания назад, л —►оо. Значит, применение метода диффеоснованного па формуле (23), позволяет ^mi .*iiiчикать шаг интегрирования после прохождения пограничноi.'inn. Таким же свойством обладаю т все методы, приведенные ь l«»U I. 1. Показано, что и для комплексных %= а + Ы с отрицательной ft* ii.-n.nou частью а < 0 корни уравнения (26) по модулю меньше ч ти ц ы . Следовательно, и для устойчивых систем, имеющих кроftt* u-нствительных еще и комплексные собственные значения с ut |. ии лтельными реальными частями, применение (23) позволяет отмачивать шаг интегрирования, ограничивая его единственным •|ч-пинанием достижения заданной точности. l.iметим, что константа в локальной погрешности неявного ме!и-м |рапеций меньше соответствующей константы формулы (23). Пиерь перейдем к рассмотрению других методов, основанных ни формулах дифференцирования назад. Методы дифференциро­ вания назад (21), примененные к уравнению вида (5 ), приводят * p.-i июстиому уравнению k £ а, — к№Уп+ь= 0. (27) i= 0 • мщ ттствую щ ее характеристическое уравнение имеет вид h £ a izl — hphte k= 0. *=о •I mk .i i ; i i i o , что при k 3, 4, 5, 6 корни этого уравнения также УАмижтворяют условию \z\< 1 для всех hX—h(a-\- Ы ) , принадле­ жи пт.ч некоторой области комплексной плоскости, содержащей <"■■* конечный клин = л— a < a r g А ,< л + а, (28) •и 0<а <л/2. • ромг указанного клина эта область содержит полуплоскость, за • •пмгмую неравенством ha<D, 167
где D — некоторое отрицательное число. Следовательно, все со­ ставляющие (7) решения (3) разностного уравнения k ЯчУп ы h$kAyn-,-k == О i—o будут затухать, если для всех собственных чисел X} значения hX> принадлежат указанной области. 3. Реализация неявных методов. Д ля решения разностных уравнений (3.2) в гл. 3 предлагался метод простой итерации (3.96), необходимым условием сходимости которого является ус ловие (3.97) / iL lM d * Однако в случае жестких систем уравнений выполняется условие шах |X,- | 1 1. Следовательно, в силу соотношения шах |Xj |^ L константа Липшица для таких систем велика: Ьз>\. Поэтому условие (3.97) сходимости метода простой итерации при­ водит к сильному ограничению на шаг интегрирования, которое мы старались устранить. Бот почему при интегрировании жестких систем от использования метода простой итерации следует отказаться. Перепишем формулы неявных методов Эйлера (2.126), трапе­ ции (13) и дифференцирования назад (21) в следующем виде: Уп-г\ — Уп — h f ( x n ‘rU уп~\) = 0, -У п----- 2 f ( x n, y n) Уп-Н— (29) ~ f ( x n . I, !/л-|) = 0, (30) ft—t Уп !-ft “П hi ft)==0 (31) i--0 и применим для решения этих уравнений метод Ньютона. Тогдн итерационный процесс для уравнения (31) может быть записан так: а н ^ е ,> ) - ( ^ УпХ'к" п+ = y ({n U ~£ — ft—I + iyn+i — h p j (xn±k, y w k)), v = 0 , 1 , ---i —0 168 (32»
Фмрмула (32) может быть реализована либо вычислением Обрат­ ной лля G— E —/фА df (хп+к, y £ lk) ду ми 11>11|ц> 1 и непосредственным нахождением y ^ t i ^ y ^ k — GT1е д . * + ^— W по формуле (хп^ , y ™ k) ) t (32') I .»«• *—1 ^ ^ i—O 1i> ямГм! решением линейной системы уравнений о < ***. * s u (зз) Дли решения системы (33) может быть применено L U - разлофгит- матрицы G, где L — нижняя треугольная матрица, U — •«рчмни треугольная матрица, и последовательное решение двух жмгпимх систем: сначала решение системы L z = — у ™ к— v + hpkf (хп+*, У%\ к) (34) | НИ/М1СЙ треугольной матрицей, затем решение системы Uw = z (35) I нгрхпсй треугольной матрицей. П осле этого решение (33) нахоимми по формуле 4'Sft,l,“ i'S?r* + w H i каждой итерации требуется вычисление матрицы Якоби, иАрлиц-ние матрицы G или решение системы (33). Часто приме­ ни, и и модифицированный метод Ньютона, который заключается и h i m . что вычисление матрицы Якоби и обращение матрицы G и mi гг /.^-разложение производятся только один раз и все итеriiHin для v = 1, 2 ,... выполняются с одной и той же обратной мифищ-н G~l или с одними и теми же матрицами L и U: it*•в .I i/v>. 7и ! к— | Е — /ip. df (хп+к, у{£ 1к) Оу ) к+ ЙР*/ (*"+*. <4,1 /.))• Л '• 1‘т, если матрица Якоби мало изменяется от точки (x n+ft, уп+ч} ► п .*1кг ( а',1+|,+|, уп+к+1), то одна и та же матрица —l df (xn+k, y(^ k) dy ) 16^
(или одна и та же LLZ-факторнзация) может быть использован:! для вычисления решения в нескольких точках хп+*. Хп+*.|-ь Xn+k±u Если же при нахождении решения в некоторой точке хп \к\т сходимость не достигается за максимально допустимое число ите­ раций, то вновь вычисляется матрица Якоби и вновь находится обратная матрица д/(Xn+k+nif ду \ 1 ) или снова производится L ^-разложение матрицы G. Аналогичный итерационный процесс производится и при решении уравнении (29), (30). Теперь обсудим вопрос о выборе начального приближения. Выбор хорошего начального приближения имеет существенное значение, так как от него зависит не только сходимость, но и к<и личество итераций, необходимых для достижения заданной точ­ ности, а значит, и число вычислений и обращений (или фактора заций) итерационной матрицы G. Д л я вычисления начального приближения используются различные способы. Например, на­ чальное приближение может быть найдено с помощью явной фор­ мулы вида k—I #nl-fc= — £ а ^ п н - f /iP*_i/(x„4-A-b y n \k— i), (ЗЬ) i=0 которую можно интерпретировать как интерполяционную форму­ л у Эрмита, построенную по значениям функции у ( х ) в точках хт = Xj, j = n, ..., n-\-k— 1, и ее производной в точке При этом локальная погрешность (36) имеет порядок 0 (/ift+J). Несколько таких формул разных степеней приведены ниже. Ф ормула второй степени: Уп+2 = У п - \ - 2 Ы (хп+ и yni.i). Ф ормула третьей степени: Уп+3 = -- ~ Уп-f2+ З у п + л -- 3h f ( х п-± 2, У п+ъ ) • Формула четвертой степени: 1 10 Уп+4 — ------- --- Уп+Ъ~\г Ь у п Т 2 ----2 у щ \ + — У п Л - ^ Ы (х « 4 - 3 , У п + з)* Ф орм ула пятой степени: Уп+5 170 65 = ----- — у 5 1 Qyn+z— Ъуп4-2+ — Уп+1----- -У п Л - 5/z/(X„+4, Уп { 0■
Формула шестой степени: Уп+б— -~ У п-гЪ-\- 15у„-и— 10(/„+3+5{/„1-2— ----- Упл 1. + - j - У п + 6А/ (х„ ;5, 2 о Уп+ s )- Приведенные формулы могут быть построены также методом ■•••определенных коэффициентов. Например, для того чтобы получин. формулу к-й степени (36), коэффициенты аг и p*_i подбирамю| таким образом, чтобы формула (36) была точна для всех •ынсбраических многочленов степени не выше к. Начальное приближение может быть найдено также по экстра­ поляционной формуле к Ail/n— i= О нш |роенной по значениям функции у ( х ) в узлах x = Xj, j = n— 1, Ф ,n-\-k— 1, при этом локальная погрешность предсказанного •и.он пия имеет порядок 0 ( h h+ l ). Несколько таких формул раз­ ни s степеней приведены ниже. Ф орм ула первой степени: Уп f 2®^ ^Уп-* 1 Уп~ Формула второй степени: Уп+з = 3«/гн-2— Зул-pi 4- уп. •1'ирмула третьей степени: {/п-*-4== 4f/n-|-3 Ъуп+2 4“ 4Уп-{-\ Уп- Формула четвертой степени: Уп+5=5Уп-\ 4— 10«/„ + з4- 10£/я_|_2-- Ьуп И + У п Формула пятой степени: Уп \-Ь— Ьуп->гЬ 1 м 4 “ 20*/„_j 3— 15уп-\ 2-\-6уп-J- 1 — уп. Гассмотрим теперь вопрос о вычислении матрицы Якоби df/dy. При вычислении решения жесткой системы наряду с формулами н in вычисления значений правой части f (х, у) используются фор14 h i для частных производных. Однако бывает так, что этими формулами не всегда удобно воспользоваться. Поэтому для вы11В .'leuпи частных производных применяются формулы численного •ц|||н|и*ренцнрования, например формулы первого порядка по *У V /'(*, у1, • • *, f//-1, у1 4- У 'п 1. - • •, Ум) — /Ч*. У1- * • •. У'r-i У1 • ш • , ум Ayi (37) 171
и второго порядка по A t/ df! __ fl (x, у1, ••• , y i- K l//-I- Ay/, yi-f t , -•• , yM) — 2 Д yi ~ д у Т ~ УХу , y i~ l , y1 — b y i, y f '‘ yM) *» m 2Ayi При вычислении матрицы Якоби с помощью (37) требуется М + I вычислений правой части f ( x , y ) = ( f l (x, у ) , . . . , f M (x, у ) ) у а с по мощью (38) — 2М вычислений. 4. Метод Гира. 4.1. Вывод формул численного интегрирова ния. Перейдем к изложению еще одного метода решения жестких систем. Этот метод строится на основе формул дифференцирова­ ния назад (21). Предположим, что начальное приближение для решения урав­ нения (21) находится по формуле (36). Обозначим tn = n-\-k и по репишем формулу (36) в следующем виде: Ут— — —<Ут—i -\-hPk—\f (хт—\, У-п—l)f=l Обозначим Ai = — a k-i, ^1 = Р аг- , и заменим т па п. Тогда к ^ и + Ц / h - b Уп-О- i=»l Аналогично преобразуем формулу (21): k Ут= = Otft—ip m — l (X m , Ут)- i= 1 Обозначим cii = — a.k-i, 6о = Рл. и заменим tn на n. Тогда k yn= Y , aiyn-t + hb0f(xn, yn). i =1 Рассмотрим следующий итерационный процесс: ^ 0) = ^ Aiyn-i + h B J n - 1, f=i y ^ ll> = ' J \ a iyn- t + h b 0f ( x n, t=- 1 m v = 0 , 1,2, « • « • Из (40) получаем 4'nV + l)= ^iv> + b0 (hf (* „ , y W ) — hf (xn, y<?~l>)), 172 v = l , 2, . . (40)
"прсделим v-e приближение для производной h y ' ( х п) по формуле h y ™ = h f ( x n, пт ju'iiiiiocTb этого Тогда У{™ приближения для h y ' (х п) = У™ + Ьа{ИПхп, y ™ ) - h y f \ имеет (41) порядок v = l , 2......... (42) Ничюм (39) из (40) при v = 0: k ,/ и = у т (а, — Ai) y „_i + h b j (x,„ y ^ — h B J n -, = i—1 k = + b, ( hf (xn,y W ) - £ Д' ~ а‘- yn- i — h - 1=1 Обозначим у<=(/4*— fli)/b0f 6j = /51/60 и определим приближение для производной Ну' ( х п) по формуле hyn0) = £ Yilfc-i - f • начальное (44) i«i I » mi*гим, что погрешность этого приближения к h y ' ( х п) имеет поI*■!#!■Iк 0 ( h h+l ). Тогда (43) примет вид У«>= 4 ° ’ + *. (Л/ <*». y ™ ) - h y f \ (45) И» (15) следует, что формула (42) справедлива также для v = 0. Мри н о м hy'ni0> определяется с помощью (44). I(ведем в рассмотрение векторы 9 J Уп^= (l/n* Нуп, Уп—1* • - * ♦ Уп—fc+ l) И Y ( x n) = ( y ( x n), h y ' ( x n), y ( x n- 1) ......... y {xn-k+\))T . Мирили компонента уп вектора Yn аппроксимирует у ( х п), вторая м--Viпимента hyn' вектора Уп аппроксимирует h y ' ( x n). Остальные фиинппеиты у п- 1 аппроксимируют значения точного решения /), /= 1, 2 , . . . , k— 1. Определим также вектор Уп === {,Уп \ (у) Нуп у Уп— Ь • • • » Уп—ft-j-l) 173
и матрицу D= А Vi 1 0 • к0 В. б, 0 0 • 0 . . . У2 0 1 • 0 ... ... • ■• ... Лк- 1 V*—1 0 0 • 1 Лк Ун 0 0 • 0 Тогда предсказывающие формулы (39) и (44) для решения y ( x v) и производной hy' ( х п) могут быть представлены в виде следую ­ щего разностного векторного соотношения: (46) Погрешность первой и второй компоненты вектора Y„ имеет порядок 0 ( h h+ l), а для остальных равна нулю, если yn- i = у ( x n- i ), t = l , . . . , 6 — 1, и 0 { h h+2) t если y ( x n- i ) — 0 (hh+2) . Следова­ тельно, (47) Y {xn) - Y T = О (hk+'). И з (41) следует, что , ,<v+l) = h y f ) + h f (хп, ylv))— hy'n" ’\ НУп (48) Введем вектор с = (60, С О, . . . , 0 ) г и функцию невязки ,<V) F ( Y ™ ) = h f ( x n, — куй (49) Тогда исправляющие формулы (42) и (48) для решения у ( х п) и производной h y ' ( х п) могут быть представлены в виде У'£н',>= Y ^ + c F (riv)). (50) Погрешность первой компоненты вектора У,',' 11 имеет порядок 0 ( h h+l) t погрешность второй компоненты — 0 ( Л Й+2), а для осталь­ ных компонент погрешность такая же, как для Yn0) Следова­ тельно, ( 51) Итерационный процесс (39), (40) сходится к у п, если h достаточ­ но мало. Следовательно, будет сходиться итерационный процесс (46), (50): V (v) 1п V *п И Y ( x n) ~ Y n= 0 ( h k+ ’). 174 (52)
Определим линейное преобразование |и*|\mp Y ( x n) в вектор Z ( x n) 4 - 0 (hh+1), где Q, которое fc*»W (X») \Г *! ) ' h * y "(x n) Z (x „ )= (у (х п), hy'(xn), переводит I г. (53) QY(xn) = Z ( x n) + 0(hk+\ или, записывая покомпонентно, У (Х п ) hy’ (хп) У (* п ) №у" (*«) 2 hy' (хп) У {Хп - О (530 f t V " (хп) У ( Х п -2 ) 6 у (*„_ *+ !) & У *? (* п) ft! Пгкгор Z ( x n) называется вектором Нордсика. Матрицу Q такого преобразования можно найти следующим ••г.р.кшм. Так как преобразование Q не меняет первые две комипигмты вектора Y {хп), то первые две строки матрицы Q имеют иид 1 о о ... О О 1 о ... о Чинил найти l -ю строку матрицы Q Яцу 9i2. ••• » 9i.k-f i {l 3), ми'н» |>азложить все слагаемые в левой части равенства ЧпУ {Хп) + 9i2W {хп) + qt5y {хп- 1) + ... + qi.k+iy {xn-k н )= •in степеням h, а затем приравнять коэффициенты при одинако|*|.1\ степенях h справа и слева. Получим £4-1 уравнений с £4-1 ж и шестными. Решая эту систему, найдем элементы /-й строки. I mmim способом находятся строки третья, четвертая........(£4-1)-я. 175
Например, если £ = 3, то матрица преобразования У(х„) \ hy (х п У (х„) W (хп) 0 f t V (*л) + 0 (Л «) 2 y(Xn-l) / У (Хп-2) / A V " <*п> 6 равна Q= 1 0 0 О 0 7 1 з 0 0 0 1 4 2 3 JL 2 4 4 1 4 Элементы третьей строки являются решением системы уравнений ^31 + <733+^34==®» Я32 Язз 2<7з4 = :0, + 2 2 < 7 э < = -у . Язз а элементы четвертой строки — решением системы уравнений *?4i Н- Я\з 4* Ян— О* Я н-- <?43 2^44= О, -- г 2<?44= 0 , Ялз 8 1 Я 44 • Заметим, что матрица Q не зависит от h. При k = 4 матрица преобразования f У(Хп) | й*/'(*п) | У (X n -l) j y ( X n - 2) { У (*л-з) j W (Хп) h*y” (ха) 2 Ь ' У " ' (Х п) 3! hV*> (х„) 4! 176 + 0 (Л б)
I •м 1111; I 1 0 0 0 0 0 1 0 0 0 85 11 я и 3 1 36 6 4 9 5 3 5 — 1 1 2 1 6 11 1 1 1 1 36 6 2 4 18 Р».п м1‘иты /-й строки, 7= 3, 4, 5, являются •hi и-мы уравнений: решением следующей; 0 0 — коэффициент при 7i°, <?/з/2+ 2<7/4 -Ь — <7/5 = 6 / 3/2 — коэффициент при /г2, (?/3/6— 8<?/4/6— 27<7;5/6 = 6/4/6 — коэффициент при 7i3, Q/i + <7/з+ <7/4+ <7/5 = <7/2 = <7/з ^*<7/4 3<7/5 — коэффициент при h, <7/з/24 -Т 16<7/4/24 + 81 <7/5/24= 6.6/24 — коэффициент при /г4. l.irri. 6/з» 6/4, 6/5— символ Кронскера. Преобразование Q переводит вектор Yn в вектор Л, « QYn= Q ( Y (х„) + О (hk i ') ) = QY (*„) + О (Л*~ ') = Z (х „) + О (Л“ '). (54) I <.*ш записать это покомпонентно, то имеем у(*п) Уп hijn Уп-1 Уп— 2 Уп—k-t-1 hy’ (хп) h*y" (х„) 2 * V " (хп) (54') + 0 (Л ‘ +|). hftyik) ^ k\ Теперь применим преобразование Q к (46). Обозначим i,. , QYn- i , и пусть K „_i = y ( x rt-i). Тогда —QY^, «Я Г == ,. _! = QD (Q_,Q) Уп- i= (QOQ-1) Qyn_, = (QDQ_I) (55) 177
Учитывая (47), получаем QYHi) = Q ( Y (*„) + О( h ^ ' ) ) = Q Y (х„) + 0(ft4 f') = Z (х„) + или z r = z ( * „ ) + o ( / i 4+'). (56) (Q D Q rl) Z n- , = Z ( x n) + 0 (Л*4-1). (57) Следовательно, Воспользуемся (54), заменяя п на п— 1. Тогда из (57) следует Z (х„) = (QDQ-‘) Z (* „_ ,) + О (Л*+ >). (5Н) Обозначим P = Q D Q ~ X и распишем (58) покомпонентно: У (хп)— РцУ -г PiJiy' (*n -i) + р18 ftV W ■• • 4" pi.fe-j-i--------—--------- г ^ ( « ft! ), >4/' (* n )= P 2i*/ (x„_i) + p^hy' (xr*-i) + p23 • • • +P 2,*—l „ V * » <*«-i L + о (Л*4 '), ft! h*y* (x n_ ,) h2y" (xn) ---- ----- = P 3i.V ( V i) t P32 ^ ' ( * « - i ) + p 33 ----------- — ,„ hky{k) (*n-i) , • • • + Р з ,*+1 ------ — -----------г О {n ft! hky<k) (xn) - - " ft! = / v , . ,, v , Pk+i.iy(xn- i ) + pki-i.zhy (xn- i ) + p k+u3 + РА-И.Л+1 hky{k) (*„_ ,) ft! ), h*y" (* „ _ l) , ------------------------ h + О {hk+') Раскладывая левые части этих равенств по формуле Тейлора н лриравнивая коэффициенты при одинаковых степенях h слева и 178
трапа, получаем, что матрица Р является треугольной матрицей Мнскаля: 1 1 1 1 1 1 1 ... 1 1 2 3 4 5 6 ... 1 3 6 10 15 . .. k k (k -\ ) 2 1 4 1 10 5 20 . . . 15 . . . 1 6 ... (59) 1 ... О 2 k 1 ) Обозначим ZnV) — QY(n \ Из (51) следует К " = Q Y ' n ' = Q ( Y ( x n) + 0 (ft'"'-’) ) = Q V (x „) -t- О (h* 4’ ‘) = Z (* „) + О (/»*+'). (60> Применим преобразование Q к (50). Тогда QV<v •■) = QY M + QcF {Y?_ Z<v) + iru- /= Q c = ( i 0, , ) т. Так как функция невязки F(V^,V>) заи11ciri' только от первых двух компонент вектора у Г , а преобрашнание Q первые две компоненты не меняет, то эти компоненты иск гора Yn ° совпадают с первыми двумя компонентами вектора Поэтому Z ^ " = ' Z £ ' + I F ( Z ' ? )). H i сходимости УГ> к У „ следует сходимость Z . к Z„. Таким иоразом, мы приходим к следующему сходящемуся итерационно­ м у процессу: z T = P z n- и = Z<v' + I - F (Z<v>), v = О, 1, . . . . (6i). (62) 111 ((>2) следует, что Z«v+I>= Z<0) + / {F (Z<0)) + т (Z in) + . . . + F (Z ‘v>))H i сходимости (62) вытекает, что Z£v!l> сходится к Z n= Z ^ + lw, (63) 179
>где a y = l i m V F ( Z \ ! \ v-°° 5 ) причем, как следует из (62), F { Z n) = 0. (6 1 ) Подставляя (63) в (64), получаем уравнение F (Z ^ + (65) Iw )= 0 . Реш аем уравнение (65) относительно w методом Ньютона: tp(v+ l ) = a ,,v) _ ( _ Д Р (£ Г + / »(v>) V dz /) ' F ( Z ln0) + f w M ). Умножим обе части равенства на /: /aitv+D = / a ,(v )_ / ( dF (z/®) -f- Iw{v)) dZ —I ./ F ( Z (n0) + I w iv)) . Прибавим к обеим частям равенства Z n ] и обозначим Z iv): *=Zh0) + Iw<v). Тогда имеем следующий итерационный процесс: £<'•+■> = 4 V> - / I д - 1* р ■I ] ' F (Z ™ ). Н ачальное приближение для этого процесса мощью (61). И з (49) находим dF _ ( dZ dF \ dZi ’ dF dZi ' ' ' ' ' определяется с по­ T dF DZ***- Обозначим df (xn, y<v>) —l dy Тогда (66) Z {P r 1>= Z iv) — I W F (Z iv)), или z ‘v+1)= z ‘v)- / ( a/, df (An, t/p) dy —I , (V ) , (Л/(*п. y{nv)) — hy'n )- Итерационный процесс (66) отличается от итерационного процес­ са (62) тем, что сложению вектора 1 -F с Z^v) в (62) предшест­ вует умножение F на матрицу W в (66) и только после этого про­ изводится коррекция значения Z i'\ Заметим, что если правая часть дифференциального уравне­ ния f (х, у) линейна по у, то итерационный процесс (66) сойдется за одну итерацию. 180
Компоненты вектора / = (/0, ^ ь-.-*/ к )т для методов порядка аппроксимации приведены в табл. 2. Таблица разного 2 Коэффициенты метода Гира I = (^о» й » ...» Ik) 1 7.2. Оценка погрешности. Автоматический выбор шага и порчОка. Первые две компоненты вектора Уп равны первым двум компонентам вектора Z n, так как преобразование Q не меняет мерные две компоненты. Следовательно, для оценки погрешности нерпой компоненты уп решения Z n уравнения (64) можно восиользоваться оценкой (22) локальной погрешности формулы (21) рn= C * +1h6+V (*+,) ( * „ ) + О (/i‘ J2). (67) I И* Сь-г\=^ 1 • погудим, как практически воспользоваться оценкой (67). Неизпч |пой величиной в (67) является y(k+l)( x n) . Если заменим про•миодную hy<h+i)( x n) разностью назад V*/(ft>(jtn), то при этом дои\ с I им погрешность порядка 0 (/ i2). Если заменим hh+lyik+ l* (x n) и.I |)азиость V ( h hy ( k ) (х п) ) , то допустим ошибку порядка 0 ( h h + 2 ) : А*+'4,(»+1) (хп) = у (х „)) + 0 (Лг^2)181
Конечную разность V (h hy ^ ( x n) ) можно получить, если in последней компоненты Z n, h+i вектора Z n вычесть последнюю ком­ поненту Z „ _ bh+1 вектора Z „_ i и полученную разность умножить на k\. Следовательно, h * + y * Tl) (* n) = V-Z„.»+l ■*! В результате имеем Рп — 'k\ (68) или, расписывая покомпонентно, С*! 1у21п.*.м £ !, Заметим, последней ность упК сительную i = 1, 2, . . . » М . что последняя компонента вектора Z „ - 1 совпадает с компонентой вектора Z n(0>. рп* — абсолютная погреш­ Введем также другие характеристики точности: отно­ погрешность Р л 7 \Уп*\, если у п^ФО, так называемую стандартную погрешность р'/ шах \у< \ п о</<п ' меру погрешности pV I^ I. если если Все перечисленные характеристики точности можно в общем виде записать P n W , где 1 |*/Ч шах |^*.| OsQsvi ; если для абсолютной погрешности, для относительной погрешности, для стандартной погрешности, то 1, иначе для меры погрешности. Будем вести контроль точности по норме £;(c*flVS>,r*l)=(^lfel); Обозначим 182 2
, Яг е — заданная точность вычисления приближенного решения, и Ьн да, если V > E , к> считается, что на данном шаге метод не достигает требуемой мииости и вычисленное значение Z n вместе с точкой х п исключа­ емся из рассмотрения. Выбирается новый размер шага с по­ мощью соотношения (3.154) | и* величина £ выбирается так, чтобы на шаге h* достигалась •рсбуемая точность. Это приводит к следующему значению для £: 1 (71) Формула (71) аналогична формуле (2.97) для одношаговых ме Hi ло в . Вместо (71) можно взять несколько меньшее значение 1 2(Л-М) 1 1.2 (72) Теперь вычисление можно повторить по формулам (61), (66), ис'<>ди из точки * n_i. Д ля этого необходимо пересчитать вектор Л, 1. Новые значения компонент этого вектора Z * „_ ! вычисляют• и но простым формулам Z n— i , j — Z n —i.j, /— I, •••* Вели (70) не выполняется, то считается, что полученное при­ ниж ение уп удовлетворяет требуемой точности и значение х п принимается в качестве текущего узла интегрирования. Д альней­ ш ее интегрирование можно вести, исходя из точки х п с шагом /i*, *<морый выбирается но формуле (72). I 11р вместе с автоматическим выбором шага решает вопрос об стоматическом выборе порядка точности метода. Предположим, ’но решение в точке х п было получено не методом порядка ky а методом порядка на единицу меньше k— 1. Тогда локальная поI решпость решения равна р„ з* C V tV » (х„) fO (ft‘ +l), II 'I и Pn ^ Ch.Zn,k-T-1 183
Аналогично (69) норма для погрешности запишется в следующем виде: £> \2 - ) = (С * * !)г Обозначим Если провести все рассуждения аналогично тому, как это бы­ л о сделано для метода 6-го порядка, то мы получим аналогичное выражение для константы £ изменения шага в методе порядка 6 — 1: 1 Вместо (73) можно взять несколько меньшее значение 1 Теперь рассмотрим, как следовало бы изменить шаг интегри­ рования, если бы решение в точке х п было получено методом по­ рядка на единицу больше. В этом случае погрешность решения была бы равна р„ = С*+ ,hb+■v * * j) ( * » ) + О (hk+\ Выразим 6й+2*/(А+2>(х п) через разность A*+V * + *> ( * » ) = Va (AV*> ( * „ ) ) + (ft*"3). Д алее, V 2 {h'-yW (хп)> ^ у 2 (2«,л+ 1 *6!) — v (V^n.fe-и -б!)= 6 ! у (vZrt>fe41). В результате имеем рп ^ Сй4.2у (y Z n>* f ,) 6!. (75) Аналогично (69) норма для погрешности запишется в виде М = (С/г-[-2 Рп 184 ) / V (v^h,k-i 1 IV *=1 4 я ) •
<)бозначим Диалогично предыдущему приходим к значению константы изме•11*1111и шага интегрирования в методе порядка k - r l (76) Вместо (76) можно взять несколько меньшее значение (77) Выбором дополнительных множителей в (74), (77) отдается преднпчтспие методу порядка k или k— 1. Д ля эффективного использования оценки (77) следует при •п роходе от точки хт _, к точке х.т сохранять значение V Z m_ ljft+j, •и)т р о е используется в (75) и V. После вычисления £, £, | выбирается тот метод, для которого *«и.|иетствующая константа изменения шага максимальна. Преимущество метода Гира по сравнению с другими многошаЩЦММИ методами численного интегрирования, рассмотренными в и данной главы, состоит в легкости изменения шага интегриро| |мНИ. Описанная процедура выбора шага и порядка в действитель­ ное щ несколько видоизменяется. Во-первых, если новая предпо■.11.ге ма я длина h* шага интегрирования увеличивается менее, •им в 1.1 раза по сравнению со старым значением /г, то шаг не и- м. мнется. Во-вторых, изменение шага и порядка не допускается it н-чение /г4-1 шагов после последнего изменения, если только ••' пользуемое значение шага обеспечивает заданную точность. При н та этого заключается в том, что более частые изменения in.li а интегрирования могут вызвать дополнительный рост погреш­ им» гм. В-третьих, если после k-\-\ шагов увеличение шага невоз­ можно, то дальнейшая проверка возможности увеличения шага м кладывастся до десяти шагов, чтобы сократить накладные раг,*|и, связанные с вычислением констант изменения шага. Вычисление итерационной матрицы W в (66) включает нахожи-пне матрицы Якоби и обращение матрицы (dF { Z nw ) j d Z ) •/. I- чждая такая операция достаточно трудоемка. Если матрица «*/М/ мало изменяется, то и итерационная матрица мало изме­ ни» »еи ог итерации к итерации и даже от одного узла интегриро­ вании к другому. Поэтому применяется модификация метода Ih.tomiia, при которой итерационная матрица W определяется >• п т раз и не перевычисляется ни во время итераций, ни при пе­ 185
реходе от точки к точке до тех пор, пока не произойдет изменение шага интегрирования или порядка метода или пока не будет oft* наружено, что матрица Якоби существенно изменилась. Об измг нении матрицы Якоби судят по количеству выполняемых итеря* ций. Если за три итерации поправка W F (Z n<v)) = W F (Z n<3)) ни станет достаточно малой, то считается, что матрица Якоби суше ственно изменилась и итерационная матрица W вычисляется вновь. Если за три итерации указанная точность коррекции не до стигается, то шаг к сокращается до значения hjA и вычисление повторяется из точки jt„_i с новым шагом. Если в процессе автоматического выбора порядка метода по­ следний оказался слишком большим, то при известном законе распространения допущенных в ходе численного интегрирования ошибок в ут на конечные разности функции /„ (m^Zn) старшие производные, входящие в Z „, становятся лишенными математнчс ского смысла. Это приводит к тому, что в одной и той же точке отвергается подряд несколько шагов с последовательно ум ет» шающейся длиной. К такому же плохому поведению разностей может привести разрыв в какой-нибудь производной решения. В этом случае рекомендуется уменьшать порядок метода па» столько, чтобы конечные разности вели себя гладко. В методе Гн» ра принято, что если в одной и той же точке подряд отвергаются три шага, то порядок метода полагается равным единице и вы­ числения проводятся заново из этой точки. Метод Тира относится к методам переменного порядка. Самый первый шаг выполняется методом первого порядка. Д ля э т о т требуется знать вектор Z 0= (у0, hy0' ) T. Так как у0 известно, то мс»» жет быть вычислено и куо' = hf (х 0, г/о) Уменьшение порядка на единицу приводит к отбрасыванию последней компоненты Z n>h+i вектора Z ( x n), равной hhy<k) ( х п)!к\. Увеличение порядка на единицу требует присоединения еще од­ ной компоненты к вектору Z ( л „ ) , равной hk+ly<b+l)( х п) /( k + 1)!. В качестве /*й+,(/(й+1>{лгп) можно взять конечную разность ot Ику1к)( х п) : ЛА+у*+|) (х „ ) ( х п). При этом будет допущена ошибка порядка 0 (/iA+2). Тогда недо­ стающую компоненту Z n,*+2 вектора Z „ можно найти по формуле Z n .k + 2= 41 *4-1 5. Экспоненциальный метод. В этом пункте излагаются мето­ ды численного интегрирования линейных систем обыкновенных дифференциальных уравнений специального вида, основанные на точном представлении решения в аналитической форме и вычис­ лении матричной экспоненты. Предлагаемые алгоритмы особенно эффективны для решения важного класса систем с большой кон стантой Липшица, в частности для жестких систем уравнений. 186
~).t. Интегрирование линейных однородных систем с постоянныю/ коэффициентами. Если формулу Рунге— Кутта четвертого по­ рч чка точности (2.22), применить к интегрированию линейной и.‘иinродной системы обыкновенных дифференциальных уравнений игриого порядка (2.120), (2.121), то получим следующее выражеIIне для приближенного значения решения на одном шаге инте|{нфования: </, = (£ + АЛ + (АЛ)г/2 + (АЛ)*/6 + (АЛ)*/24) у«. (78) « раипивая (78) с точным решением задачи (2.120), (2.121) у { х 0+ h) = e Ahy0, (79) I :ll‘ ОС» (80) 1Ш.ЧИМ, что приближенное значение решения, получаемое по мето|\ Рунге— Кутта, учитывает только частичную сумму F = E + НА + (НА)2/2 + (НА)2/6 + (ИА)*/24 (81) и» первых пяти членов ряда (80). Если матрица А имеет бо ль­ ш ие но модулю собственные числа, то аппроксимация (81) для мифичной экспоненты (80) будет грубой для больших значений Mt.-ii а Л. Следовательно, счет по формуле Рунге— Кутта приведет и численной неустойчивости. Если метод Рунге— Кутта применять при малых И, то он потребует огромных затрат машинного време­ ни на больших промежутках интегрирования, причем с увеличе­ нием длительности счета вследствие большого числа округлений накапливается вычислительная погрешность. \\ этом случае для определения решения задачи (2.120), (.4 2 1 ) в заданной точке х п —хo + n h целесообразно организовать вычисления следующим образом. Сначала аппроксимировать при мндом Н матричную экспоненту (80) выражением (8 1 ); затем, иси«».и,дуя алгоритм быстрого умножения, вычислить решение Уп = (Е + НА + (НА)2/2 + (НА)2/6 + (НА)*/24)" У о = ^ У о и шдапной точке х п. Затраты машинного времени будут порядка ••■г гц что существенно меньше времени, затрачиваемого методом I ■\*11о— Кутта, которое пропорционально п. Рассмотрим аппроксимацию матричной экспоненты более об ­ ними вида и определим « • - '■ " • - ( S - Т - ) '* *-0 <вг> Покажем, что можно выбрать 5 таким, чтобы получить решение «МГ1СМЫ (2.120), (2.121) на одном шаге Н с заданной точностью е. 187
Положим eAh = F + R и рассмотрим соотношения у = еАНу0 и Введем относительную ошибку б для вектора yF : <5= IIУ - У Р П/ll yF 11= 11yR Н/НУР ||. (83) 5 выбираем так, чтобы выполнялось условие б ^ е , которое озна­ чает, что на фиксированной сетке узлов мы применяем такой ме­ тод (82) численного интегрирования, для которого относительная погрешность б приближенного решения на одном шаге не превос­ ходит наперед заданной величины е. В дальнейшем под нормой матрицы понимаем норму, согласо­ ванную с нормой вектора. Д л я ||Д|| имеем следующую оценку: ОС ||Я|! = ||е"— F|| со (| А II h)s~' у ч (5 + 1 )1 (S + 2)fe ph (S + l)l (84) L t + S + 1)! k^rO где !! A I! p = — — h 11— S+ 2 . Пусть So — наименьшее значение S такое, что P < 1, (85), 5 > 5 0. Тогда сумма в неравенстве (84) ограничена величиной оо k==0 так что Ц Я 1 !< (IM | | ft)5+1 (86) (S + l)! Далее, F = eA h — R = eAh ( E — e~AhR ) . Предположим, что е|1А,,ЛНД||<1. (8 7 ) Тогда для F ~ ' — (E— e~AhR ) ~ ' ~=£ e k=Q 188 e~Ah
справедлива следующая оценка: 1 и f - 1и А , £ ( ^ ' Л и /г id* к—О JHP (8 8 )? Используя неравенства 1|г/н1К!1^1П1уо11 и получаем из (83) 11Ы>11/7- , 1|-11Ы1, (89> Подставляя (88) в (89), имеем s^ 11^ II <$т 1 — IIЛII ем,Л ■ Так как в правой части неравенства (86) стоит убывающая к ну­ лю функция от S, то всегда найдется такое значение S > S 0, что (II а н h)s+l (S + l)! д ----glHIlft - < р 1 И S < + — < е. 1— q (90): Покажем теперь, что если выполняется условие \\F\\ (1 + е) < 1, то lim уп = \\т у ( х п) = 0. П—► ОС' (91> гг— *-оо В самом деле, Ы х п) — Уп\\<\\ ( e * * ) n— F n\\.||г/о!1с( (11Я1 + \\Я\\)п— Ш Ь ) Ы , Далее, (IIF || + 1| R И)" < ( || F| |+ — + ) " < (IIF || (1 + в)Г - Из последнего неравенства и неравенства Ы 1<1№ 1Ы вытекает справедливость нашего утверждения. Отсюда следует устойчивость алгоритма (82) для решения задачи (2.120), (2.121); при постоянном h и п-^оо. Заметим, что матричная экспонента (80) является значением, при x = h фундаментальной матрицы решений еАх системы (2.120)у Г 89*
нормированной в нуле. Поэтому ее нахождение можно свести н численному интегрированию системы (2.120) с начальными уело виями 04(О) — 1, z/j(0)=0, ]Ф1, 1, 2 ,... ,Л1, на отрезке ГО, А ]. Данный метод вычисления матрицы eAh со стоит, следовательно, в Л1-кратном решении задачи Коши для си стемы (2.120) на малом отрезке интегрирования. Поэтому все эти задачи Коши могут быть решены быстро с требуемой точностью каким-нибудь методом численного интегрирования из рассмотрен­ ных в гл. 2, 3. 5.2. Интегрирование линейных однородных систем с переменш ными коэффициентами. Д ля линейной однородной системы с по ременными коэффициентами у '(х )= А (х )у (х ), у Ы = у. m аппроксимируем матрицу А (х ) кусочно-постоянной матрицей. Дли этого возьмем некоторое разбиение интервала интегрирования х0< х ] < х 2< . . . < Х ( = Х 0+ Х и на каждом сегменте fx t, xt+i] будем решать задачу Коши дли линейной системы с постоянными коэффициентами dx у(1) М = уи - 1 , ( х .)у (9.1) где Д < 0 = Л (т ), т е [^ / , г=0, 1, . . . , /— 1, у^0)(х 0) ~ у 0. Функции У {Г)( х ) примем в качестве приближенного решения на fx,, х*+ 1| исходной задачи (92). Найдем уклонение */<0)( * ) от решения исходной задачи у (к) в узле X i = x 0+ Т. Положим z ( x ) = y ( x ) — y(0)( x ) , Функция 2 ( х ) х0<-х<сх{. удовлетворяет дифференциальному уравнению г' ( х ) = А {х) z (х) + (А (х) - А (т)) уЮ (х) (ЗД и начальному условию 2(лг0) = 0 , Решение (95), (96) можно представить в виде X г ( * ) = j £3(I. х) ( (90) А( |) - где Q(£, х ) — матрицант матрицы Л ( х ) . Предположим, что маг 190 (т)
1>ниn A { x ) трижды непрерывно дифференцируема. Тогда выражеит* (97) для z ( x ) можно преобразовать так: X 2 ( х ) = j Q <|, х) ( А' (х) ( 1 - т ) + А ’ (т) У<0> (£)<*! + X« + 0 (T *)= v (x )+ 0 (T *), (98) H i' v ( x ) — решение следующей задачи Коши: I (д- ) = А {х) и (х) 4- { а * ( т) (х — т ) 4- А" (т) ( А j I *' ( v0) = 0. т)-~ ) у<°> (х), 4 (99) (100) x0^ x ^ x lt l\i «дожив о (*| ) по формуле Тейлора, имеем г ( x , ) = 7 V (х„) + ~ V ‘ (х0) + - 4 - V" (Х0) + 0 (Г*). 2 (101) о l.i кч\ последовательно дифференцируя (99) и учитывая (100), наI I *-I им . v'(x„)=-D//a, v" (х„) = А (х„) Dy„ 4- D'IJ0+ DA (т) у„, (х„ ) = 2 А'(х0) Dy„+ А2 <х0) Dy0 + А (х0) D 'y + А" (т) у0 4- 2D’А (т) уо + О А2(т) у„, I III* D = A ' (т) (х0— т) 4- А" (т) Т)* , D ' - A ’ ( x ) + A " ( x ) (ха— т). Подставляя найденные производные в (101) ■итого порядка малости, получаем 2(X.) = А ‘'( т) ( (х0- т ) Т4 -4 г ) 1 4 г + ( * « - т) ^ - ) и группируя члены У»+ А" М ( (Jf° 7 T)2 т + уо 4- Л ' (Т) А (т) ( ( х „ - т) -Ц - 4- 2. + А (*°> w ((* «- т ) Уо + о ( Т % Полагая х —х 0-\-Т12, приходим к следующему выражению д ля О* , ) : 2 ( х , ) = = ~ г Г (Л”(т)~ 2 ( А ы А' (Т)~ А ’(т) А (т))) тзУ о + 0 (П , 191
-которое можно записать также в виде У (* ,) — (/01 (x 1) = - f r (А ” (т )— 2 (А (т) А ' ( т )— А ' (т) А (х)))Г » у„ + 0 (Г*). (ИЙ) • Отметим, что задачи Коши (93), (94) с постоянными матрица­ ми можно решать описанными в п. 5.1 методами. 5.3. Интегрирование линейных неоднородных систем со сне циальной правой частью. Решение задачи Коши для линейно!) неоднородной системы с постоянными коэффициентами [ t/ = Ay-\-f (x), . ч [ у ( х е) = у0 (103) может быть представлено следующим образом: х у (х) = е А{х~ *o)y0-h \ еА^х~ т)/ (т) dr. *о (10-1) Преобразуем это представление в предположении, что свободный член / (т ) задан в виде м /(т )= (а 1е^\ ацг&х, а д ^ Л1У = ] ! Г 095) 1—1 вектор е .= (0, 0, 1, 0, . . . , 0 ) г имеет все компоненты, равные 0, кроме i-й, которая равна 1 (i-й орт). Подставив (105) в (101) и воспользовавшись соотношением Ее^ ix—е'\£х, имеем Af х и( х) = еА<-х~ х^цп4 -У j* e/,(i - T*ai/ l'Td T - e ,= e 1 (M »l|/()- f i~\ ха М х + У a l U A(x- " +ei‘Erd%-el . {= 1 Д0 П олож им Т = х — Л'о, тогда МI У(*) = У(х0 +ту„ т еМТ~1)ЩЕ,^Е*. dt et = 1=1] о М = е АТУ о + У * i ^ x' +T) ( 1=1 .192 в в л .е,.
Пип ш обозначения ф ( (7) = J еМт~ 1)d l — elA~ p‘ E,iT~ l) dt О о S i { T ) = 0 i (T )e iy ни i v >i ;icm следующее выражение для у { х ) : м Т ) = е лтуа+ Е i- 1 у ( х ) = у (х0+ gi (7). (106) Матрицы Ф ^ У ) и векторы £ , ( У ) удовлетворяют рекуррент­ ным соотношениям g/47*— gAT(2gAT/2 (107) Ф/ (7) = Ф, (7/2) ( £ + е~7' 2), (108) й ( Г ) = . ( Е + е * / * ) Л (7/2), 109) • Iг *Л7'2 — еЛ7/2^~Э1-7’/2 и кроме того, ( 110) Ф Л О - ( 111 ) 1] *=1 Покажем, например, справедливость формулы (108): 7 7/2 о 7/2 / - 7 7/2 7/2 772 . j’ e ^ T~ ^ d t + ] j 6?3(7/2-T)dX= J e7(7/2-0^7/2^_|_ f *3(7/2-<)<# = 7/2 = \ e * г/2 - о Л . (еЯт-,2 + С) = ф, (7/2) (£ + е*7"'2) . |*| 14. 217 193
Из (108) и перестановочности матриц Ф/ (772) и Е-\-елт/2 при умножении вытекает соотношение (109): g i (Т ) = Ф, (Т ) е* = Ф г (772) (Е + е, = (Е + е*7У2) Ф, (Г/2) е* = = (£ + е^ / 2) я , (Т/2). Решение задачи (103) может быть найдено, если известны матрица еАТ и векторы g i ( T ) . Л эти матрица и векторы могут быть вычислены на основе последовательного применения рекурреиг» ных соотношений (107), (109) и вычисления eAh, gi(h) при достаточно малом Л = Г / 2N с помощью частичных сумм рядом ( 110), ( 111) А— 0 о Ф, <А) = £ А *-'/.* Л А! I! Я* !rtfe 1 А! А=1 А— 1 Е (* + 1)? И ^ (/г) = Ф, (/г) е£. Д алее решение задачи (ЮЗ) вычисляется по формуле которую можно представить в виде At y ( x n+^ ) = y ( x n + T ) = e ATy ( x n) + Y t Т )g t ( T ) , г =-1 0, 1, (106). ----- (П2) Приведем еще один алгоритм вычисления решения задачи (103), (105). Предполагая, что обратные матрицы существуют и могут быть эффективно определены, интеграл Ф ( ( Т ) можно пред ставить следующим образом: Ф, (7’) = — (А—P jE )- 1 е(*-0(£,<г- ' ) ^ = ( Д _ р (£ )-1 Тогда формулу (112) можно записать так: Af y ( X n - n ) = y ( x n - + - T ) = e ATy ( x n) + Y i ^ i—l 194 Е) М е.1 — еАТу 1^1 iiXn+T} ( Л — рtE ) ~ l (е{А~ЪЕ)Т-4 (х„) + £ а , ( А - ? , £ ) " ' (евЛ ( е ^
Iлviн каждая компонента вектор-функции /(т) мои экспонент: Л! является сум- р f (*)= £ £ f=i /=1 (114) »•• и (112) должна быть двойная сумма и формула (113) прини- 41н'( ИНД Л1 р ц(хп+л) = у (xn + T ) = e ATtj(xn) + Yt Y a i/M — Pi/£ ) * x 1/-i X Л х" (eAT— e^iiTE ) e,. \||.|.|<>гично записывается формула ( 112). Приведенные в данной главе методы применялись в Н И В Ц М Г У I «я решения ряда задач вычислительного эксперимента в физим и гсхнике. 1ак, алгоритмы п. 5.1, 5.2 были использованы в физической •••....гике для численного исследования динамики заселения энер• чмчсских уровней атома и иона гелия. Математическая модель (•••инетсгвующих переходных процессов сводится к линейной си-*и \]е с большим числом уравнений и с большими по модулю отiorii.мольными собственными числами матрицы системы. Попытка I" т а п> такие задачи традиционными численными методами Рун•• Кутта и Адамса приводит к необходимости выбора шага ин•* I рпрования, много меньшего продолжительности интервала иа• но юмия решения, и значительному возрастанию машинного вреV* пн Использование методов, основанных на вычислении матрич­ ной .кспоненты, позволяет эффективно решать эти задачи, прим весь процесс решения укладывается в отладочное время. NП 1сшным оказался этот метод и для численного исследования •» • и /кпости некоторых систем управления, моделируемых с по•|‘ 'inmo марковских случайных процессов с дискретными состояниичи и непрерывным временем и описываемых дифференциаль­ ными уравнениями Колмогорова для вероятностей состояний. Рассмотренный в п. 5.3 метод применялся в электротехнике вI•11 (печете наведенных токов в электрических цепях нагрузки каи.пых линий связи при воздействии на них одиночных имнуль«••и (розового разряда. Соответствующая неоднородная система иифференциальных уравнений характеризуется большим разброи наличием комплексных собственных значений и имеет бы• Ч"' затухающие и сильно осциллирующие компоненты решения, п . (м\шлющая функция имеет вид (114) и каждая ее ненулевая • f I.меняющая является суммой нескольких экспонент с различны­ ми коэффициентами a«/ и показателями степеней р«/. Решение этой •мл 1чп вычислялось с использованием алгоритма с обратными Щирицами с удвоенным числом значащих цифр на Э ВМ БЭСМ- 6. iVim iuie также было проведено за отладочное время. Г 195
6. Неявные методы Рунге— Кутта. Важным классом одноша* говых методов решения жестких задач являются неявные методы Рунге— Кутта, имеющие следующий вид: ух— Уо 4 рЛ (А) -4- РчК (А) 4 • • - 4 pqkq (/г), ( П Г)) где kL (h)— hf (х 04 a Ji, у0 4 PUA4(A) 4- Pi 2A2(А) 4 • • - 4 PiA A2{ h ) = h f (x 0+ a 2A, y0 4 Р г А (A) 4 P22A2(A) 4 (A)), • • • 4- P A (A)), ............................................................................................ (HO) A,(h) — hf (x0+ t /04 P„A (A)4 P A (A)4 -•-4-P A (A)). Числа a,, p,/, pi выбираются так, чтобы разложение выражения (115) по степеням А совпадало с разложением (2.6) до некоторой степени As включительно. Проиллюстрируем вывод неявных фор­ мул Рунге— Кутта на примере двучленной формулы Уу= Уо 4 РгАх (А) 4 Р*Ао(А), А2 (А)= А/ (х 04 a i A, P o 4 P i A ( A ) 4 p 12A2(A)), А2 ( А ) = А / (х 04 а 2А, (П7> 4 Р г А (А)4 Р22А2 (А)). Находим первую производную Ai(А)=/(х04 ctjA, г /04 р11А1 4 РА) 4 А(/А 4 /у(РА 4 РА))Находим вторую производную k\ (А) = 2 (fxtXy 4 fy (РцАц 4 Pi 2Ao)) 4 Аф (А), где Ф ( h ) = f xx<xi 4 2/х^ (PnAi 4 Pi2A2) 4 fyy (PnAi 4Pl2A2)24 fy (Pu Ai 4 P i 2A-.). Находим третью производную р ; " (А ) = З ф (А) 4 Аф' (А). Аналогично вычисляются ставляем А = 0 и получаем производные А2(А), А2(А), А2 (А). А1 (0) = 0, А2( 0) = Под. 0, Ai ( 0 ) = / ( х о, р0) = /о» А2( 0 ) = / о, Ai (0) = 2 (/jcOtj 4 Pn/Ло 4 Pi 2!у\о) — А2( 0 ) = 2 Ai ( 0) = 3 (fxxct 1 4 fyfo (Рц 4 Pi 2))> (f.лос2 4 fyfo (Р2 1 4 Р22 )) * 2/Xyf0(Pu 4 4 2 / j /оРц (Pu 4 P12) 4 196 2 (/*0^ 4 Pi2) « 1 4 fyyfо (Pn 4 Pi2)“ 4 2/J xP i A 2fyf x<x2Pi 24 2 /^/0p12 (P214 P22))* 4 t
f-t (<0 = 3 (f XX «2 4* 2fxyfo (P214 P22) a24 fyy fo (P21 4" P22)34~ 2fy fx P2A 4" 4’ 2fy /0Р21 (P11 Г P12) 4* 2/i, /*a.>p224 2f у /0Р22 (P21 ~1“ P22))* Найденные производные подставляются в разложение Уг = Уо 4 Р A <h)Jr Ргкг Ф) = Уо 4 (РА (°) 4 РтФэ (0)) h + 4 (р А (0) -|-p2k 2 (0)) — -f (pj/гi (0) j р А (0)) 2 о 4* • • ■• (US) Ьиффициент при h в разложении (118) имеет вид (Pi + p 2)fo. Приравнивая его коэффициенту при h в разложении ( 2.6), полу■игм уравнение 019) Р Н -Р 2 = 1 Приравнивая коэффициенты при подобных членах, и разложениях (118) и ( 2.6), получаем уравнения содержащих Pia i + p 2« 2= l / 2» Pi (Pu 4 Pi 2) 4 P 2(P21 + Ргг)= ( 120) 1/2. ( 121) Приравнивая коэффициенты при подобных членах, содержащих '■ и разложениях (118) и ( 2.6), получаем уравнения Зр1а ?4 Зр2а | = 1, (Рц 4 Р12) 4 Зр2а 2(Р21 4 Р22) = 1» 8Pi (Рц 4 - Pj з)24 3р 2(Р214* Р22)2— 1» 6Pi Ф А х 4- а А 2) 4- 6р 2(а хр21 + « 2р22) = 1, f,Pi 1Р11 (Рц 4* Р12) 4- Р12(Р21 4 Р22)) 4- 6р 2(р21 (рг1 4 р12) + р22(P2l + ( 122) (123) (124) (125) Р22))— 1 (126) П'н гмь уравнений (119) — (126) обеспечивают локальную погреш­ им, м, формулы (117) порядка 0(/г4). 11оложим ai ===Pii 4“ Р12» a2= ( 127) p2l4-P22- 1 | ia уравнение ( 121) совпадет с уравнением ( 120), уравнения 1171) п (123) совпадут с уравнением (122), а уравнения (126) — I \равнением (125). Вместо восьми уравнений будем рассматри­ вай четыре уравнения (119), (120), (122), (125). Из уравнения ill*») имеем pi = l — р2. Имичавляем это выражение в ( 120): c t 1 — a 1p 2 + p 2a 2 = \ j 2 f 197
или Рч (а2— a i ) = 1/2 — otp (12Н) Уравнение ( 122) запишется так: ( 1 — Р2) a j + Р-2а2= 1/3* или р2 («2 — а 2 ) = 1/3— «2 (1211) Поделив (129) на (128), имеем + “1 3 «1 = — «1 откуда — а 2— — а2 3 _<Xl + 1 — а1 Найдем решение уравнений (119), ( 120), ( 122), (125) в не скольких частных случаях. Пусть р ц = р 22, Pi 2= 0. Тогда рц—(ii. 3 Положим J • Тогда а 2== ——J 3» pi = l/2, р2= 1/2. В ре зультате приходим к неявной формуле У1 = У« + - ^ к1+ \ и 1( / , з 4 -1 3 , К = h f ^Х0Ч----------- /1, 3- y * - h */оТ“ 3+ V I 6 ь + 1 ± У 1 Полученная формула имеет локальную погрешность О (Л4). Сли довательно, это метод третьего порядка точности. Применим формулу (130) к линейной системе (2.120), (2.121) Формула для принимает вид kx= hA (у0 - f a AАа) = hAijQ+ cx.1 JiAkl . Отсюда находим /гА= (Е — a L/i^)_1 /iA*/0. Формула для k2 принимает вид k2= h A (Ро + 198 («2— « а) ( £ — а А/гЛ) -1/гЛр0) + aJiAk2. 1
Пн шда находим k2= ( E -— (XyhA)~l hA ( £ - |-(a2— a A) ( E — aJiA)—xhA) y0. I In in являем найденные выражения для k { и k2 в (130): 0i = ( £ + - £- ( £— ЛЛ + + - ^ - ( £ — a xhA)—xhA ( £ + (a 2— 04) ( £ — а ^ Л )-1 /гЛ)^ г/0= (£ + ( £ — a xhA)—x hA + - i - ( a 2— а д) ( ( £ — о^/гЛ) -1)2# 4 2) 0 o * 4ш Hi -aj/i/l )-1 )2 ( ( £ — а,Л/1)2+ ( £ — а,Л/1)Л>4 + - ~ (a 2— a J / i M 2! y0— = ( £ — 2 a , M H- affcM2) - 1( (1 — 2a!) hA + ( « i ---- f - a i + ~ J “ г) Л М *) </„. Mini ходим к соотношению y i—F ( A h ) y 0, (131) t «Г F (A h )= {E x (£ З + S z Ax Ah 1 +v5 (132) l h соотношения (131) получаем 0П+1— F (A h ) y n. (133) Рассмотрим неявную формулу Рунге— Кутта (117) второго помлка В этом случае достаточно удовлетворить уравнения (119) •• Н •*()). Пусть P n = P i 2= 0. Тогда a i = 0 . Положим р2г = Р и рассмот­ рим неявную формулу вида 01 = 0О+ Р А -Ь / > 2* 8> К = Л / ( * 0. у0), (134) К = hfSxo + a 2/i, у0+ ( a 2— р) + Р^2) • Применим формулу (134) к линейной системе •(•••рмула для принимает вид k x= A h y 0. (2.120), (2.121). Фирмула для k2 принимает вид k 2= Л/гг/0+ (a 2— Р) A 2h 2y 0 + рЛ/ifc,. 199
Отсюда находим k2= (£ — рЛ/г)-1 (Л/г + (а 2— р) A2h2) у0. Подставляем найденные выражения для Лг, и k2 в (134): yl = { E - \ - p 1AhA-P2 ( E — $Ah)~l (Ah + (а2— Р) A2h2))y0= = ( £ - р А Ч ) “ « ( ( E - $ A h ) ( E + pxAh) + p A A h - b (a 2- p ) A 2h2)) y0= = ( E — pЛ Л ) - 1 (£ + (p l — P)Л/г— ppxA2h* + p2Л/г - f p2( a 2— p) Л 2/г2) y0=■ = (£■— рЛ/г) -1 (Zf + ^ i-b P -i— P) Л/г + (р2а 2— P(pt -bA>)) ^ 2/i2) Po- Учитывая (119) и (120), получаем yL= ( E — PAh) ~ * (E 4- (1 - P) Ah + (1 /2 - P) A2h2) у0. Положим p=l/2. Тогда приходим к соотношению (131), в кото­ ром F(Ah)= ( E - - L A h y l ( Е Ч~ -j.A h )- (1ЗГ.) Из (119) и (120) имеем Ргж 2* г 1= ^ 2a*l i При a2= l формула (134) приобретает вид У\== Уо 4- — kx 4- k2, k1= h f (x0, г/0), * г= л / а при (12= -t-л. г/0+ - Ь *• + (13«) 4 " * г) • 1/2 У\~У0+ k\=hf (х0, г/о), (137) k2= h f ( д г / о + - Ь * ! ) Во всех рассмотренных случаях применение неявного метода Рунге— Кутта к линейной системе (2.120), (2.121) приводит к разностному уравнению (133), в котором F ( A h ) — функция or матрицы, зависящая от используемой неявной формулы. Раскла* дывая уп по собственным векторам матрицы Л, имеем yn\\ = F ( A h ) { / „ = £ F (A h )С'п е/. /-1 200
Учтивая соотношение F (Ah) e/=zF (X,h) е/, цм|«1|)ос получается из формулы Лагранжа— Сильвестра для мат­ рично й функции, выражение для уп+\ можно представить следую­ щим образом: м F ( X fh) CL е; . /-1 |и пода получается формула преобразования коэффициентов Сп-1-1= F (Xjh) С'п, ...... совпадает с формулой численного интегрирования уравiH iiioi (5) Уп+\~Р (h jh )y n. (138) Ии ному о поведении составляющей (7) решения уп уравнения И U) можно судить по поведению решения уравнения (5). Для (130) выражение для F( Xj h) имеет вид F (k jh )= 1— 1- Уз 1 -Г r 3 4- V з — т— ¥ т 1^3 Xfh* Ь /| 2 + V 3 ,г Xfh2 б 1«.ш Х,<0, то \F (Xjh) \< \ . Показано, что если Х,=а-{-Ы и а < 0, |" |/■( X, h) \<\. Д л я формул (136), (137) 1 -г ~T~Xfh F (Xjh)— -------1------1 -- --X; h 2 12 (139) I ''ли X ,=a + Ы и a < 0 , to \F(Xjh) ] < 1. I hkhm образом, применение указанных формул для иитегриро«н иия уравнения (5) обеспечивает убывание решения уравнения (МН) при п-+ оо при произвольном h. Следовательно, обеспечи••01 и я стремление к нулю всех составляющих (7) решения раз........ ого уравнения (133), которые соответствуют собственным НИ1ЧПШЯМ с отрицательной действительной частью. Поэтому для v* к'ичпвых систем после прохождения пограничного слоя шаг ин•♦ч |'И|ц)вания может быть увеличен. При этом сохраняется чис|- ии.1я устойчивость приближенного решения. Мы построили неявные двухчленные формулы Рунге— Кутта м••< 1ми <> и третьего порядка, применение которых для жестких си» « « ч позволяет увеличивать шаг интегрирования, ограничивая его • шип псиным требованием достижения заданной точности. Бат••• I» чоказал, что для каждого q существует единственная неяв20!
пая формула Рунге— Кутта (115), (116) порядка точности Ъ), причем коэффициенты этой формулы удовлетворяют следующим условиям: 1) я CLj = YI Pi/» ^ = 1» - - . . < 7, коэффициенты /=1 являются нулями многочлена Лежандра q-Yi степени L q (2 а— 1) — 2) 2<q\ d<* (jc2— 1)? dxQ ж—2а—1 коэффициенты p, удовлетворяют уравнениям я (MUI 3) коэффициенты удовлетворяют уравнениям я ] y j p u<z)-l = - Y < i k t% k = \ (H i) /=1 Эти методы называются методами оптимального порядка. Построим неявные методы Рунге— Кутта оптимального порид ка для <7=1, 2, 3. Многочлен Лежандра первой степени имеп вид L { ( а' ) = * . Следовательно, L, ( 2а— 1 ) = 2а— 1. Отсюда а — 1/2. Коэффициент р определяется из уравнения (ИП) явно: р = 1 . Таким образом, одночленная формула второго поряд­ ка имеет вид уп+1=уп+к, k = h f (х „+ - Т л , (H i Формула (142) может быть названа неявной формулой средни\ прямоугольников. Применение (142) для задачи (2.120), (2.121) приводит к следующему выражению для k : k = A h y n -+■ Ahk. Отсюда k = ( E ---- A h ) 202 1 АНУп
* «..|1 = Уг.+ ( £ — у = ь А у 1 Ahyn= ( E + ( £ -уп= ( E - ± - A h 'y ' = ( E - T ( E - ± - A h + A h ) y n= Ah) ~ ' { E + i - Ah) • и'тщательно, матричная функция F ( A h ) для данного метода иni t | вид (135), т. е. такой же, как и для двухчленных формул •мирит порядка. Применение (142) к уравнению (5) также прии*» in 1 к разностному уравнению (138), в котором F ( k j h ) задается < помощью (139). Многочлен Лежандра второй степени имеет вид М О = у ( 3 * 2- 1 ) . » 'н аовательно, £ ,(2 а — 1) = у (3 (2а— 1)*— 1). Он юдн а 2= 1/2— j/ 3 / 6 , а 2= 1 / 2 + У З / 6 . Но|ф<|)мциенты р 1 и р 2 определяются из уравнений (140) Pi + Р г ^ 1. P i * i + Рг<4 = г ми-пне которых дает следующие значения: 1 --------а, 2 а х — а, _ . _ 1 2 ’ = I 2 |ффициенты Эп и pi 2 определяются из уравнений I (141) при Pn + P i * ~ a i» Plia i rPl2a 2 ~ мне* которых дает следующие значения: T 1 о «I-«A а а.х — — а, о. J = Т4 - * j/ 3 Р*’ = Т ------ 6 203
Коэффициенты p2i и Э22 определяются из уравнений (141) при /*• —2 Р2 1 + Ргг^* * { Рг1а1 + р22а2= а 2* решение которых дает следующие значения: £з 6 * Таким образом, двучленная формула четвертого порядка име­ ет вид Уп+ i — У п + — » kl= h f (*„ + ( 4 - J& - ) h, yn+ *,|+ (± Применение (143) к уравнению (5) приводит к разностному ураннению (138), в котором 12 4- 6 X j h — X?/i2 F ( M ) = ---------- -— 12 — 6X j h + Х/Л2 Показано, что если R e(X / )< 0 , то |F(A,//i) |< 1. Многочлен Лежандра третьей степени имеет вид M * ) = Y (5*3- 3 х ) . Следовательно, La (2а — 1) = — (5 (2а— 1)’ — 3 (2 а — 1)). Отсюда а 1= 1 / 2 — Т/15/10, а2= 1/2, сс3= 1/2+£15/10. Коэффициенты р,- определяются из системы уравнений Р1 + Аг + Р з = 1. Р Л + Р 2« 2 + Р з а з = + Р з «1 = 4 "» - ■ Коэффициенты рц, Э12> Э13 определяются из системы (141) при 1=1 204 уравнений
Pll + Pl2+Pl3 = a i> P ll« l + P l2 “ 2 + P l3 « 3 “ Pn“5+ Pi2“i + Pis“i = ~Y « * . y *ф<|)ициенты Рг/ и Рз/, / = 1» 2, 3, определяются из аналогичных •|ммнений. Определители этих систем являются определителями ii hi дермоида, поэтому каждая такая система имеет единственное рппгкие. It результате мы приходим к следующей трехчленной формуле ми ггиго порядка: yni \= yn - \ - - f r 1о * ! — Af (* п ]+ У + 1о (144) ( 4 - ------ Применение (144) к уравнению (5) приводит к разностному уравигиню (138), в котором 120 + 60X ih 4- 12>Л2 + F (X,h) = ------------ — :------ — — '----- . 120 —60A,yfc 4- \ 2t f h 2 — Гьи..Iдано, что если R e ( X / ) < 0, то |F(X/^)|<1. 1'акнм образом, применение неявных формул Рунге— Кутта для ..... . рпрования жестких систем ( 2. 120), ( 2. 121) обеспечивает при *■ * • при произвольном h затухание всех составляющих (7) реи- мня разностного уравнения (133), которые соответствуют соб• iiHiiiiiJM значениям с отрицательной действительной частью. Это шятсльство позволяет увеличивать шаг интегрирования после мрм’.пждения пограничного слоя, сохраняя численную устойчик» приближенного решения. И включение приведем список литературы, рекомендуемый к I [ 1, 3— 5, 7, 16, 18, 19, 22, 24, 32, 34, 41, 42].
Глава 5 ОБЩЕЕ ОПИСАНИЕ ПОДПРОГРАММ РЕШЕНИЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ БИБЛИОТЕКИ ЧИСЛЕННОГО АНАЛИЗА НИВЦ МГУ В данной главе рассматривается раздел Библиото ки численного анализа Н И В Ц МГУ, предназначенный для решс ния обыкновенных дифференциальных уравнений ( О Д У ) . В ней рассмотрены предметная классификация раздела и целевые пол* программы, непосредственно решающие ОДУ. Кроме того, даются общие характеристики подпрограмм раздела, а также излагаются некоторые аспекты применения численных методов, которые мо гут быть использованы при практическом выборе наиболее подхо­ дящих подпрограмм. Приводятся сведения о разработанных дли данного раздела средствах автоматизации доступа к подпрограм мам и описание параметров обращений к подпрограммам. 1. Предметная классификация. Раздел включает основные ти пы задач из следующих подразделов: 1.1) задача Коши для уравнений и систем уравнений первою порядка, разрешенных относительно производных, без контроля точности; 1.2) задача Коши для уравнений и систем уравнений первоп» порядка, разрешенных относительно производных, с контролем точности; 1.3) задача Коши для уравнений и систем уравнений второю порядка, разрешенных относительно старших производных, с копт* ролем и без контроля точности; 1.4) задача Коши для жестких систем. 2. Состав раздела. Подпрограммы данного раздела разбива­ ются на группы в соответствии с указанной классификацией. При описании состава раздела приводятся имя подпрограммы, ее ня* значение и в скобках номер пункта в приложении, где приводи! • ся ее текст на Фортране. 2.1. Задача Коши для системы уравнений первого порядки ( без контроля точности) DE14R — интегрирование системы классическим методом Рунге— Кутта четвертого порядка точности ( 1. 1 ). DE33R — построение начальных значений при интегрирован нии системы методами типа Адамса (1.2). DE26R — один шаг метода Адамса пятого порядка точно­ сти (1.3).
ME27R — интегрирование системы методом Адамса пятого инридка точности (1.4). 'J. Задача Коши для системы уравнений первого порядка ( с *•>/*гролем точности) I Ж 13R — интегрирование системы классическим методом Рун­ ге— Кутта четвертого порядка с контрольным членом Егорова (2.1). ME 10R — интегрирование системы методом Мерсона (четвер­ тый порядок) ( 2.2). M E U R — интегрирование системы методом Хойна (третий по­ рядок) (2.3). ME15R — один шаг метода Фельберга (пятый порядок точно­ сти) (2.4). DI* I 6R — интегрирование системы методом Фельберга (пятый порядок точности) (2.5). 1'1.32R — построение начальных значений при интегрировании системы методами типа Адамса (2.6). ME28R — один шаг метода Адамса пятого порядка точности (2.7). MI.29R — интегрирование системы методом Адамса пятого по­ рядка точности ( 2.8). IH-20R — один шаг метода рациональной экстраполяции Грэг­ га— Булирша— Штсра переменного порядка (2.9). И 22R — интегрирование системы методом рациональной экс­ траполяции Грэгга— Булирша— Штёра переменного порядка ( 2. 10). ME21R — один шаг многозначного метода Гира переменного порядка точности ( 2. 11 ). DE23R — интегрирование системы многозначным методом Гира переменного порядка точности ( 2. 12). 2 3. Задача Коши для системы уравнений второго порядка IH-135R I I 34 R DI 18R DI.38R — построение начальных значений при интегрирова­ нии системы методом Штёрмера без контроля и с контролем точности (3.1). Ml 10R ’ DI !8R — один шаг метода Штёрмера без контроля и с кон­ l>!v!2R тролем точности, когда правая часть системы не < зависит от производной (пятый порядок) (3.2). DI-.46R — один шаг метода Штёрмера с контролем точности, когда правая часть зависит от производной (пя­ тый порядок) (3.3). DI MR Ml !3R — интегрирование системы с правой частью, не за­ Ml IOR висящей от производной, методом Штёрмера с кон­ тролем и без контроля точности (пятый порядок) (3.4). t 207
DE47R — интегрирование системы с правой частью, завися* щей от производной, методом Штёрмера с копп ролем точности (пятый порядок) (3.5). 2.4. Задача Коши для жесткой системы уравнений. DE21R\ — один шаг интегрирования жесткой системы много* DE24R / значным методом Гира переменного порядка точ* ности (2.11), (4.1). DE23R \ — интегрирование системы многозначным методом DE25R | Гира переменного порядка точности ( 2. 12), (4.2) DE36R — один шаг интегрирования линейной системы пени ным методом Рунге— Кутта с контролем точное! и (шестой порядок) (4.3). DE37R — интегрирование линейной системы неявным мети дом Рунге— Кутта с контролем точности (шестой порядок) (4.4). DE31R — интегрирование линейной однородной устойчивой системы с переменными коэффициентами экспо ненциальным методом без контроля точности ( 4.5) DE30R — интегрирование линейной однородной устойчивой системы с постоянными коэффициентами экспо ненциальным методом без контроля точное:и (4.6). 3. Общие характеристики подпрограмм решения задачи Коши Подпрограммы вычисления решения задачи Коши для уравнений и систем уравнений первого к второго порядка, основанные на чие ленных методах, выполняющих интегрирование шаг за шагом, можно условно разделить на два вида: подпрограммы, выполняю щие один шаг численного интегрирования, и подпрограммы, выпол няющие последовательность шагов и вычисляющие решение в кон це интервала интегрирования. Эти подпрограммы могут исполю зоваться как для непосредственного решения задачи пользователи, гак и в качестве готовых подалгоритмов для составления индинн дуальных программ, которые находят решение, например, при пс скольких значениях аргумента в нулях некоторой функции или па другом конкретном множестве значений аргумента. Размер шага численного интегрирования в каждой из этих групп программ может оставаться постоянным или изменят!,си от шага к шагу. Постоянный шаг соответствует интегрированию без контроля точности приближенного решения. Переменный шаг выбирается самой подпрограммой (исходя из задаваемого поль:ю вателем начального его значения) таким образом, чтобы удовлет* ворить некоторый критерий достижения требуемой точности при* блнженного решения. Д л я большей эффективности рекомендует­ ся использовать при выполнении очередного шага интегрироваши» то его значение, которое определено подпрограммой на предыду* щем шаге. Подпрограммы вычисления решения задачи Коши реализую! численные методы разного порядка точности. Более высокий поря 208
гмж обеспечивает при малых размерах шага интегрирования бои г высокую точность при наличии достаточной гладкости правой ■| и гм дифференциальных уравнений. Метод высшего порядка ока­ пывается более эффективным, если требуется высокая точность, и мпнч* эффективным в противном случае. Однако при выборе по­ ри мка метода следует помнить, что каждый порядок требует суИНЧ1вования соответствующих непрерывных частных производных иравой части уравнений. Если для какого-то порядка правая часть н« является достаточно гладкой, то применение методов этого и ьп.и е высоких порядков нецелесообразно, так как решение данной • i i.iчи может быть получено с той же точностью методом более ни «кого порядка с меньшим объемом вычислений и за меньшее прими. <Следует иметь также в виду, что даже те методы, которые ис­ пользуют для контроля точности оценку главного члена погрешг ги приближенного решения, не гарантируют заданную точность, ■.1к как эта оценка является асимптотической, т. е. справедлива в проделе при h-*~0. 11а точность результата вычислений влияют ошибки округле­ ния. зависящие от длины машинного слова. Каждая подпрограм­ ма библиотеки имеет версию, предназначенную для выполнения фомежуточных вычислений с удвоенным числом значащих цифр, i-си д а под мантиссу отводится не одно машинное слово, а два слои.1, I) тех случаях, когда вычислительная погрешность в одинарном случае превышает допустимую предельную погрешность прибли­ женного решения, необходимо использовать версии программ с удМСНЧ1МЫМ числом значащих цифр. Параметры подпрограмм решения задачи Коши можно условно разделить на следующие группы: а) параметры, определяющие постановку математической за­ дачи: число уравнений в системе; начальное значение независимой переменной; - начальное значение зависимой переменной (решения); подпрограмма вычисления правой части системы уравнений; конечное значение независимой переменной, при котором требуется вычислить решение задачи; (Д ля жестких систем уравнений может присутствовать дополнительный параметр, указывающий подпрограмму вы­ числения матрицы Якоби системы.) и) параметры, характеризующие точность приближенного ре­ шения (для подпрограмм с контролем точности); и) параметры, относящиеся к величине шага интегрирования или к величине, обратной к нему; j ) параметр, задающий режим использования подпрограмм (за­ дается, как правило, для подпрограмм, реализующих один шаг численного интегрирования); д) рабочие массивы, необходимые для хранения промежуточ­ ных результатов; 209
е) параметр, указывающий причину окончания работы под* программы; нулевое значение этого параметра означает бла­ гополучное окончание работы для заданных пользователем исходных данных; после окончания работы подпрограммы необходимо проверить значение этого параметра. 4. Решение нежесткой задачи Коши для уравнений и систем уравнений первого порядка. Решается задача Коши для системы М уравнений ( Y '—F(xf У), 1 Y(XN)=YN, V y ===(^/i* * • * » Ум)у F (х, У)^=(/ 1 (х, t/j, . . . , Ум), • ■- » fМ{Ху У1 * • • * » Ум))ш Подпрограммы решения задачи Коши для нежестких уравне­ ний и систем уравнений первого порядка охватывают наиболее распространенные классы методов численного интегрирования: — одношаговые методы типа Рунге— Кутта; — многошаговые методы Адамса типа предиктор — коррек­ тор и многозначный метод Гира; — экстраполяционные методы. Среди одношаговых методов типа Рунге— Кутта имеются: — метод Хойна с пятью вычислениями правой части на шаге третьего порядка точности с оценкой погрешности по пра­ вилу Рунге; — классический метод Рунге— Кутта с четырьмя вычисления­ ми правой части четвертого порядка точности; — метод Мерсона с пятью вычислениями правой части четвер­ того порядка точности; — метод Фельберга пятого порядка точности с шестью вычис­ лениями правой части на одном шаге. Правило Рунге и метод Фельберга позволяют достаточно точ­ но оценить погрешность приближенного решения на одном шаге, так как они используют оценку главного члена погрешности в от­ личие от классического и метода Мерсона. В тех случаях, когда предпочтительно сократить время счета и иметь невысокую точ­ ность приближенного решения, целесообразно использовать клас­ сический метод Рунге— Кутта и метод Мерсона. Если важнее точ­ нее оценить погрешность, то следует пользоваться методами с точной оценкой погрешности на шаге. При громоздких правых частях, требующих выполнения боль­ шого числа арифметических операций, методы типа Рунге— Кутта могут потребовать много счетного времени для вычисления ре­ шения на всем интервале интегрирования. В этом случае более эффективными оказываются многошаговый метод Адамса пятого порядка и многозначный метод Гира переменного порядка, кото­ рые на одном шаге требуют значительно меньшего числа вычис­ лений правой части. Д л я контроля точности приближенного реше­ ния в этих методах используется оценка главного члена погреш210
И'>г [ и, что позволяет довольно точно учитывать погрешность при милых размерах шага интегрирования. Класс экстраполяционных методов представлен методом рационл и.мой экстраполяции Грэгга— Булирша— Штёра переменного иирядка, где приближенные значения решения вычисляются с по­ мнимо явного метода прямоугольников второго порядка, которые «и н м уточняются с помощью рациональной экстраполяции Ри•I ip u-пна. Получаемое таким способом повышение точности при­ лож ен н ого решения делает метод Грэгга— Булирша— Штёра весьил (|>фектнвным методом в случае, когда требуется высокая точ|ци м» приближенного решения. Перечисленные в данном пункте методы имеют ограниченные иг. i . K T H устойчивости, поэтому соответствующие им программы in .ффективны и даже практически непригодны для жестких сисн м уравнений. Па рис. 1 приводится дерево решений для выбора метода или iiiMiitu методов численного интегрирования нежесткой задачи 1\<HI (II. г». Решение задачи Коши для уравнений и систем уравнений iiioporo порядка. Решается задача Коши для системы М уравне­ нии Y " = F ( x , Y ), ( 1) Н III Y " = F ( x , У, У') (2) • начальными условиями Y{XN) = YNy (3) Y' ( X N ) = D Y N . Y = ( у , , . . . , ум) у F { x y Y) = ( f l ( x y У\у. . . у Ум) , — , [ м (л\ у j , . . . . Ум) ) для системы ( 1), F ( х у У, У ') = ( Ы * , Уь •••» Ум* У\\ ••• . ум') у . . . у ( м ( х у у ь . . . , уму У\'у . . . » у м ' ) ) для системы ( 2 ) . I гли предварительно преобразовать системы уравнений ( 1 ) и Г') к системе уравнений первого порядка, то полученную задачу ли */кно решать любым из указанных в п. 4 методов. В библиотеке им< инея подпрограммы, предназначенные для непосредственного пи 11 i рнрования систем уравнений второго порядка ( 1 ) и ( 2), реа1н iyющие метод Штёрмера пятого порядка точности, который и|" итавляет собой перенесение метода Адамса на уравнения втон in порядка. Как и в методе Адамса, в методе Штёрмера используется для • inп роля точности приближенного решения оценка главного член I погрешности на шаге, что позволяет довольно точно учитывать ■шIпоку при малых размерах шага интегрирования. Небольшое •им ю вычислений правой части системы на одном шаге повышает н|н|и ктнвность этого метода по сравнению с одношаговыми мето|||ми, перечисленными в п. 4. На рис. 2 приводится граф решений для выбора подпрограммы ипк Iрнрования уравнений второго порядка. 211
М етод ы : М етод ы : Ад ам са, Г ира Рис. I Хойна, Адам са, Ги ра
I’m 2 (>. Решение жесткой задачи Коши для уравнений и систем уравнений первого порядка. Жесткие уравнения — такие уравне­ ния, которые моделируют процессы, обладающие явлением жест­ кие i и. Подобные процессы описываются функциями двух видов: с большими по модулю производными и с малыми по модулю пром шодными, причем функции с большими производными быстро \пинают. Такие задачи часто встречаются при исследовании ди­ намических систем в химической кинетике, электротехнике, меха­ нике сплошной среды, при исследовании работы ядерного реакто­ ра. и теории управления и т. д. Д л я жестких систем, как правило, « vшествуют два участка решения с существенно различным харакм’ром поведения его составляющих, причем длина первого участ­ ка, называемого пограничным слоем, значительно меньше длины ишрого. Необходимость выделения таких уравнений в отдельный к л а с с вызвана трудностями, которые встречаются при их числен­ ном интегрировании традиционными методами, например явными методами типа Рунге— Кутта, Адамса. 213
Д л я численного воспроизведения быстропротекающих процес­ сов в пограничном слое необходим малый шаг интегрирования. Однако вне погранслоя, где существенны функции с малыми произ­ водными, увеличение шага приводит к резкому возрастанию по­ грешности, влекущему собой качественное изменение поведения решения. Описанное явление происходит потому, что указанные методы обладают, как уже отмечалось выше, ограниченной обла­ стью устойчивости. Поэтому для решения жестких систем пред­ ложены методы с неограниченной областью устойчивости; некото­ рые из этих методов реализованы в подпрограммах библиотеки. Решается жесткая задача Коши для следующих видов урав­ нений: Y ' = F (х, Y ), (4) Y ' = A ( x ) Y + < f ( x ) , А ( х ) = ( а ц ( х ) ) , q>( * ) = (<f 1( я ) , . . . , <р.ч ( * ) ), i'5) У ' = Л (х ) У, ( 6) У '= А у , А = (аг/), at/=const, (7) с начальными условиями ( 8) Y ( X N ) = YN. Здесь У - (У\у • • •, ум)» F (л:, У ) (/i (-V, у \, . . . , ум), . • •, f м {х, у\, . . . , ум) ) . Д ля решения нелинейной задачи общего вида (4), (8) предла­ гается многозначный жестко-устойчивый метод Гира переменного порядка, использующий, как впрочем и все другие методы реше­ ния жестких систем, матрицу Якоби dF/dy=(dfi/dyj) системы (4), Д л я квазилинейных систем с малым нелинейным членом более эф­ фективным, чем метод Гира, является И-устойчнвый вариант явно­ го метода Рунге— Кутта, предложенный Лоусоном, для линейной системы (5) — метод Лоусона и ^-устойчивый неявный метод Рунге — Кутта шестого порядка точности, а для сильно жестких систем ( 6) и (7) — экспоненциальный метод, основанный на пред­ ставлении решения линейной однородной системы с постоянными коэффициентами в виде матричной экспоненты. Следует иметь в виду, что численные алгоритмы решения жест­ ких задач исследованы на эффективность не столь подробно, как алгоритмы для нежестких задач, поэтому предлагаемые в данном пункте рекомендации по использованию тех или иных методов пс следует рассматривать как окончательные. Укажем свойства жестких линейных систем с постоянными коэффициентами. Матрица такой системы, как правило, обладает большим числом обусловленности р = шах |Я« |/min |Х,| > I г 1, при этом большие по модулю собственные числа должны обладать большими по модулю отрицательными действительными частями Наиболее типичен случай линейной жесткой системы, когда собст» венные числа матрицы отчетливо разделяются по величине моду- 214
ini на две группы. Собственные числа первой группы с большими ом улям и определяют поведение решения в пограничном слое и • гпетствующие им составляющие быстро убывают, а собственIIi.iг значения второй группы с малыми модулями характеризуют тшсдение решения вне погранслоя. Однако возможны и другие • .-IVдли, когда собственные числа расположены на вещественной uni достаточно равномерно. Судить о жесткости линейной системы с переменными коэффи­ циентами по собственным числам А,»(х) ее матрицы Л ( х ) можно, ii in собственные векторы изменяются не слишком сильно. I .ели нелинейную систему можно достаточно близко аппрокси­ мировать линейными системами с постоянной матрицей на отрезI..14, значительно превышающих по длине пограничный слой (так и.I (ываемые системы с кусочно-постоянной жесткостью), даже когы число таких отрезков велико, то выполнение указанных усло|иш для собственных чисел матрицы Якоби нелинейной системы ИМ.1ЯСТСЯ также признаком ее жесткости. На рис. 3 приводится дерево решений для выбора метода чисiniiioro интегрирования жесткой задачи Коши. 7. Автоматизация доступа к подпрограммам Библиотеки. Для •ипц-ываемого раздела Библиотеки разработана и реализована си• и мпая компонента, предоставляющая пользователям автоматижрованиый доступ к подпрограммам раздела. Данный раздел • множен неалгоритмическим проблемно-ориентированным языком • Iи постановки основных типов задач для ОДУ. Системная ком­ понента, анализируя описание математической задачи на неалго1'ЦIмнческом языке, обеспечивает автоматическое выполнение всеMI комплекса работ, связанного с решением этой задачи. В част­ ит-ш, обеспечивается: I ) анализ входной информации и выдача пользователю исчер­ пывающих диагностических сообщений о допущенных в за­ просе ошибках; *2) решение задачи заданным методом; Ч) автоматический выбор наиболее подходящего для данной задачи метода, если последний не задан; I) выдача пользователю сведений об используемых при реше­ нии данной задачи методах, причем для тех из них, кото­ рые оказались непригодными для решения задачи, указы­ ваются причины, делающие их применение неудачным; >) автоматическое распределение рабочей памяти, необходи­ мой для решения задачи выбранным методом. При автоматическом выборе численного метода используется i i./кс качественная информация об уравнениях, которая может м i.жаться при обращении. Доступ к системной компоненте (по•иалгоритму) осуществляется непосредственно из программы на ■И )1>ТРАНе. N. Описание параметров обращений к подпрограммам. Д л я »| пиемии места описания параметров обращений вынесены из тек• и>и подпрограмм, помещенных в приложении в том порядке, в 9 215
Рцс, 3
котором они перечислены в и. 2 и приведены в данном пункте. При этом те параметры, которые являются общими для всех под­ программ, описываются только один раз, а при описании пара­ метров, учитывающих специфику решаемых задач, в скобках пос­ ле их идентификаторов перечисляются имена использующих их подпрограмм. Таким образом, для применения какой-либо под­ программы по ее заголовку и по помещенным здесь описаниям ее параметров легко можно сформулировать требуемый оператор об­ ращения (см. также п. 8.5). Д л я использования версий подпро­ грамм, выполняющих вычисления с удвоенной точностью, всем описанным здесь вещественным параметрам следует приписать тип D O U B L E P R E C IS IO N . 8.1. Описание параметров для подпрограмм решения задачи Коши без контроля точности 1) F — имя подпрограммы вычисления правой части системы дифференциальных уравнений. Первый оператор подпрограммы должен иметь вид S U B R O U T IN E F (X, Y, DY, М ) . Здесь X, Y — значения независимой и зависимой переменных соответственно. Вы­ численное значение правой части должно быть помещено в DY. В случае системы уравнений, т. е. когда М ^ 1 , параметры Y и DY представляют одномерные массивы длиной М. 2) М — количество уравнений в системе. 3) XN, Y N — начальные значения аргумента и решения; в с лу­ чае системы уравнений (т. е. М.¥=\) YN представляет одномерный массив длиной М. 4) Х К — значение аргумента, при котором требуется вычис­ лить решение задачи Коши (конец интервала интегрирования); Х К может быть больше, меньше или равно XN. 5) Н — переменная, содержащая значение шага интегрирова­ ния. Может задаваться с учетом направления интегрирования, т. е. положительным, если X K > X N , отрицательным, если X K < X N , или без такого учета в виде абсолютной величины. 6) Y — искомое решение задачи Коши, вычисленное подпро­ граммой при значении аргумента ХК. Д л я системы уравнений (когда М.Ф1) задается одномерным массивом длиной М. В случае совпадения значений параметров XN и Х К значение Y полагается равным начальному значению YN. 7) IO RD ER (DE33R) — порядок точности того метода Адамса, для которого выполняется разгон и который будет использоваться при интегрировании данной системы уравнений; IO RD ER должен быть не больше 10. 8) DF(D E 33R ) — двумерный массив размером M X I O R D E R , в котором запоминаются значения правой части системы и ее раз­ ностей до порядка (I O R D E R — 1) включительно, вычисленные в точке XN; элемент D F ( I , 1) этого массива содержит значение пра­ вой части I -го уравнения, a D F (I, J + 1 ) — J-ю разность, погреш­ ность вычисления которой имеет ( I O R D E R + l ) - f t порядок по Н. 9) X (D E 3 3 R ) — одномерный массив длиной IORDER, содер­ жащий на выходе из подпрограммы IO R D E R узлов, включая XN, 217
в которых вычисляются при разгоне приближенные значения ре шения; элемент X ( J ) этого массива содержит узел, равный X N + + (J— 1)Н . 10) Y ( D E 3 3 R ) — двумерный массив размером M X I O R D E R , в котором запоминаются приближенные значения решения, вы­ численные для значений аргумента, хранящихся в массиве X, а именно значению аргумента в X ( J ) соответствует приближенное решение Y ( I , J); погрешность этого решения имеет порядок IO R D E R по Н. 11) J S T A R T (D E 2 6 R ) — целый указатель режима использовл» ния подпрограммы, имеющий следующие значения: 0 — первое обращение к подпрограмме должно быть выполне­ но с нулевым значением JSTART; -+- 1 — выполнить один шаг интегрирования системы дифферси циальных уравнений для значений независимой и зависимой пере­ менных и шага интегрирования, заданных параметрами X, YX и Н соответственно; на выходе из подпрограммы J S T A R T = 1 ; — 1 — повторить последний шаг интегрирования с новым зна­ чением Н. 12) YX, X J D E 2 6 R ) — начальные вещественные значения реше­ ния и аргументы в результате работы подпрограммы в X получа­ ется новое значение аргумента, а в YX — соответствующее значе­ ние решения; в случае системы уравнений, т. е. когда М=?М, YX задается одномерным массивом длиной М. 13) А, В, С, RS, RF, R, DY, D E LTY, YP, RFN, YR, Y P M — од­ номерные рабочие массивы длиной М. 14) DF, RY — двумерные рабочие массивы размером М х 5 (и вызывающей программе могут быть описаны как одномерные мас­ сивы длиной М Х 5 ) . 15) IE R R (D E 3 3 R ) — целая переменная, значение которой и результате работы подпрограммы, полагается равным 1, если непра­ вильно задан параметр IORDER, т. е. I O R D E R > 1 0 ; в этом слу­ чае разгон выполняется для IO R D ER = 10. 16) IERR (D E 26R , D E 2 7 R ) — целая переменная, значение кото­ рой в результате работы подпрограммы полагается равным 65, если при заданном значении шага интегрирования не может быть достигнута сходимость численного решения к точному значению решения; в этом случае интегрирование системы можно повто­ рить обращением к подпрограмме с новым значением параметра Н и со значением J S T A R T = — 1 (последнее для DE26R). 17) Н (DE26R, D E 3 3 R ) — значение шага интегрирования; зна« ченне этого параметра, задаваемое при обращении к подпрограмм ме разгона, должно быть таким, чтобы узел X N + ( I O R D E R — 1)* * Н не выходил за конец интервала интегрирования. Замечания по использованию. Подпрограмма DE14R предиаз* начена для численного решения дифференциальных уравнений и 218
• пегом уравнений, имеющих непрерывные частные производные до '• порядка включительно. При работе подпрограммы DE14R значения параметров М, XN, ^ ХК сохраняются. Значение параметра Н сохраняется, если он ••Iл«!и с учетом направления интегрирования, иначе его знак менчггся на противоположный. Если после работы подпрограммы нет необходимости иметь начальное значение решения YN, то парайн‘ ||)ы YiN и Y при обращении к ней можно совместить. Мри работе подпрограммы DE33R значения параметров М. IORDER, XN, YN, Н сохраняются. Подпрограмма может исполь|мп,1ться как для разгона, так и непосредственно для численного решения системы уравнений на всем интервале интегрирования. I1 . качестве вспомогательной она использует подпрограмму I»! 28RS. Мри работе подпрограммы DE2GR значения параметров М и Н • мхраняются. При ее многократном использовании для вычисления решения на отрезке значения параметров М, YX, X, DF, Y P не ■и».:жиы изменяться в вызывающей программе между последоваieс н и м и обращениями к ней. В ней используются вспомогатель­ ные подпрограммы DE33R, DE28RP. DE28RS. Мри работе подпрограммы DE27R значения параметров М, XN, ' N. ХК, Н сохраняются. Если после ее работы нет необходимости иметь начальное значение решения YN, то параметры Y N и Y при •►вращении к ней можно совместить. В ней используется вспомог.‘цельная подпрограмма DE26R. к. 2. Описание параметров для подпрограмм решения задачи Киши с контролем точности. Параметры X, YX, F, М, XN, YN, ХК, М. У, RS, RF, D E L TY , YP, RFN, DF, RY, DY описаны в п. 8 1. 18) HM IN — минимальное значение абсолютной величины ma­ il, которое разрешается использовать при интегрировании данной сиг гемы уравнений. 19) EPS — допустимая мера погрешности, с которой требуется пы нклить все компоненты решения. .’О) Р — граница перехода с абсолютной погрешности на отног игольную и наоборот, используемая при оценке меры погрешно• in решения. 21) J S T A R T (D E 1 5 R ) — целый указатель режима использова1пг 1 подпрограммы, имеющий следующие значения: О или +1 — выполнить один шаг интегрирования системы шфференциальиых уравнений для значений независимой и зави• иMoii переменных и шага интегрирования, заданных параметрами V VX и Н соответственно; 1 — повторить последний шаг интегрирования с новыми значгщ'ями параметров Н и/или H M IN . 22) H(DE15R, DE21R, DE28R) — переменная, содержащая значпп'.о шага интегрирования; если для этого значения шага точи» приближенного решения достигается, то именно он и реа•н 1\ется подпрограммой, иначе этот шаг уменьшается подпро»р. 1ммой до тех пор, пока не будет достигнута заданная точность 219
E P S ; на выходе из подпрограммы Н содержит рекомендуемо!подпрограммой значение следующего шага интегрирования, onjun деляемое ею с целью достижения более экономного способа ин­ тегрирования. 23) B U L(D E 15R , DE28R, DE20R, DE21R) — логическая пери* менная, значение которой при обращении к подпрограмме пола­ гается равным .TRUE., если заданный в Н шаг выводит в конем интервала интегрирования, и .FALSE, в противном случае; в ре зультате работы подпрограммы B U L равно .FALSE., если вместо исходного шага интегрирования был реализован меньший шаг, и противном случае, т. е. когда был выполнен именно заданный при обращении в Н шаг, значение параметра BU L не меняется. Параметры IO R D ER (DE32R), D F (D E 3 2 R ), X (D E32R ). Y (D E 3 2 R ) описаны в п. 8.1 с указанием в скобках подпрограммы DE33R. 24) H (D E 3 2 R ) — вещественная переменная, содержащая зил чение шага интегрирования. Если для этого значения шага точ­ ность при разгоне достигается, то именно он и реализуется па разгоне, иначе шаг уменьшается подпрограммой до тех пор, пока не будет достигнута заданная точность. 25) B U L (D E 3 2 R ) — логическая переменная, значение которой при обращении к подпрограмме полагается равным .TRUE., если заданный в II шаг выводит в конец интервала интегрирования, т. с, узел X (IO R D E R ) совпадает с концом интервала интегрирования, и .FALSE, в противном случае. В результате работы подпрограм­ мы BUL равно .FALSE., если вместо исходного шага интегрирп вания при разгоне был использован меньший шаг; в противном случае значение переменной BU L не меняется. Параметры J S T A R T (D E 2 8 R ), X (D E 2 8 R ), Y X (D E 2 8 R ) описаны в п. 8.1 с указанием в скобках подпрограммы DE26R. 26) Н М А Х — максимальное значение абсолютной величины шага, которое разрешается использовать при интегрировании д а т ной системы уравнений. 27) X, Y X (D E 2 0 R ) — начальные значения аргумента и реше­ ния; подробное описание этих параметров приведено в п. 8.1 г указанием в скобках подпрограммы DE26R. 28) IO RD ER (DE20R, DE22R) — целая переменная, указываю­ щая максимальный допустимый порядок метода рациональной экстраполяции; IORDER должна быть меньше 7. 29) IU(D E 20R , DE22R, D E 2 3 R ) — целый указатель типа по­ грешности численного решения: Ш =1 для стандартной погрешности; Ш = 2 для относительной погрешности; Ш = 3 для абсолютной погрешности. Параметры X, YX(DE15R, DE20R, DE21R) описаны в п. 8.1 г указанием в скобках подпрограммы DE26R. 30) J S T A R T (D E 2 0 R ) — целый указатель режима использова­ ния подпрограммы; 220
J S T A R T —О — выполнить один шаг интегрирования дифференмii;i.ii,iioro уравнения для значений независимой и зависимой пе­ режитых и шага интегрирования, заданных параметрами X, YX и II соответственно; самое первое обращение к подпрограмме дол* 'мл» быть выполнено со значением J S T A R T = 0 ; . I S T A R T = — 1 — повторить последний шаг интегрирования с но1н.1мм значениями параметров Н, IO R D E R и H M IN ; значения па­ раметров X, YX и Y P M берутся равными значениям из послед­ нею обращения к подпрограмме со значением J S T A R T = 0 . 41) H (D E 2 0 R ) — переменная, содержащая значение шага ин•I I рнрования. Если для этого значения шага точность приближен­ ною решения достигается, то именно он реализуется подпрограммои, иначе шаг уменьшается подпрограммой до тех пор, пока не щ ит достигнута заданная точность. После выполнения такого ш.н.1 подпрограмма определяет, можно ли достичь заданной точ­ ное! и с большим значением шага интегрирования. Если это воз­ можно, то значение шага будет помещено в Н. Таким образом, в pi о'льтате работы подпрограммы в Н находится новое значение интегрирования, которое может быть больше, меньше или (мимо исходному значению. 42) Y P M ( D E 2 0 R ) — одномерный массив длиной М, I -й эле« п п Y P M ( I ) которого содержит: мри Ш —1 максимальное значение абсолютной величины 1-й компоненты решения, вычисленное с начала интегрирования; при 1U=2 абсолютную величину значения I -й компоненты. ЧЧ ( I ) решения, заданного в YX. И результате работы подпрограммы значение Y P M сохраняется, • г . hi вновь вычисленное значение решения не превосходит по абпотной величине исходного значения Y P M , и заменяется на пбголютную величину нового значения, если она больше первом.|'|.1Льного значения Y P M . Самое первое обращение к подпроip.iMMe должно быть выполнено со значением Y P M ( I ) = |Y X ( I ) |, ) 1.2, . . . , М. При Ш = 3 все элементы массива Y P M должны быть p.miibi 1; в этом случае значение параметра Y P M сохраняется. U) D E L T Y (D E 2 0 R ) — одномерный вещественный массив дли­ нен М, I-й элемент которого в результате работы подпрограммы пиержнт абсолютную погрешность для 1-й компоненты решения, » которой она вычисляется на текущем шаге. Н ) ISTiFJ ( D E 21R, DE23R) — целый указатель метода чисii inioro интегрирования: IS T iF J = 0 — интегрирование системы ведется методом Адамса; I STIFJ = 1 — интегрирование ведется специальным методом, предназначенным для жестких систем. >Г>) IORDER(DE21R, DE23R) — целая переменная, указываю|||-|я максимальный допустимый порядок метода; IORDER должна »’h.i i i . не больше 7 для метода Адамса и не больше 6 для метода ип им рнрования жестких систем. ■М») JSTART (DE21R) — целый указатель режима использова­ нии подпрограммы, имеющий следующие значения: 22 Ь
О — первое обращение к подпрограмме должно быть выпал нено с нулевым значением JSTART; -Hi — выполнить один шаг интегрирования системы диффе рендиальных уравнений для значений независимой и за­ висимой переменных и шага интегрирования, заданны\ параметрами X, YX и Н соответственно; — 1 — повторить последний шаг интегрирования с новыми значениями параметров Н и/или IIM IN ; на выходе hi подпрограммы JSTART равен текущему порядку ме­ тода. 37) EPS(DE21R) — требуемая точность вычисления решения; размер шага интегрирования и порядок метода выбираются в под­ программе автоматически таким образом, чтобы вычисляемые ею оценки абсолютных погрешностей всех компонент решения, делен­ ные на Y P M ( I ) , были не больше EPS в евклидовой норме. 38) Y P M (D E 2 1R ) — одномерный массив длиной М; значение YPM, которое он имеет на входе в подпрограмму, используется при вычислении погрешности приближенного решения; считается, что приближенное решение достигает требуемой точности, если ев­ клидова норма вектора, составленного из абсолютных погрешно­ стей вычисленных значений всех компонент решения, деленных па соответствующие элементы массива Y P M (т. е. абсолютная но. трешность I-й компоненты делится на I-й элемент Y P M ( I ) ) , ие превосходит EPS. В результате работы подпрограммы значение I -го элемента Y P M ( I ) сохраняется, если вновь вычисленное зна­ чение I -й компоненты YX ( I ) решения не превосходит по абсолют­ ной величине исходного значения Y P M ( I ) , и заменяется на абсо­ лютную величину нового значения, если она больше первоначаль­ ного значения Y P M ( I ) ; если на входе в подпрограмму Y P M ( I ) 4 = 1, то для I -й компоненты решения Y X ( I ) будет использоваться абсолютная погрешность; если на входе Y P M ( I ) = IYX(J) I^O, то для I-й компоненты берется отношение абсолютной погрешности приближенного ее значения в узле Хч-Н к абсолютной величине значения этой компоненты в предыдущем узле X. 30) EPS(DE23R) — допустимая погрешность, с которой тре­ буется вычислить все компоненты решения; тип погрешности спе­ цифицируется с помощью параметра Ш . 40) IERR(DE13R, DE10R, DE11R, DE16R) — целая перемен-! пая, значение которой в результате работы подпрограммы пола гается равным 65, если какая-нибудь компонента решения не м<ь I жет быть вычислена с требуемой точностью EPS. В этом случае интегрирование системы прекращается. При желании интегриро ванне системы молено повторить обращением к подпрограмме е новыми значениями параметров H M IN и Н. 41) RA(D E IO R) — одномерный рабочий массив длиной 4ХМ, 42) R A B ( D E l l R ) — двумерный рабочий массив размером МХ{ Х2. 43) ХР, YP (D E15R) — рабочая переменная и одномерный ра­ бочий массив длиной М; значения параметров ХР, Y P на выходе .2 2 2 :
iii подпрограммы равны тем значениям, которые имели парамет­ ры X, Y X соответственно при входе в нее (т. е. предыдущий узел и решение в нем). 14) DY, R l, R2, R3, R 4(D E15R) — одномерные рабочие массишл чл иной М. 1Г>) IERR (DE15R) — целая переменная, значение которой в ре0 н.тате работы подпрограммы полагается равным 65, если ка­ ким ннбудь компонента решения не может быть вычислена с требм моп точностью EPS. В этом случае последний шаг интегрироплипя системы можно повторить обращением к подпрограмме с ноi'N mh значениями параметров Н, H M I N и значением J S T A R T = I. 46) R A B (D E 1 6 R ) — одномерный рабочий массив длиной 6Х М | 1. 17) RS, RF, R (D E 3 2 R ) — одномерные рабочие массивы длишhi М. 18) I E R R ( D E 3 2 R ) — целая переменная, служащая для сооб­ щения об ошибках, обнаруженных в процессе работы подпрограм­ мы При этом: 11 RR = 1, когда неправильно задан параметр IORDER, т. е. H>RI R R > 1 0 ; в этом случае разгон выполняется для значения KIND ER— 10; II RR=65, когда на разгоне не может быть достигнута требуем hi точность EPS; в этом случае разгон можно начать сначала Ш'р.ицением к подпрограмме с новыми значениями параметров Н, IIMIN и IORDER. 4‘ )) RY — двумерный рабочий массив размером М х 5 . !>()) IE R R (D E 2 8 R ) — целая переменная, служащая для сообnil'llия об ошибках, обнаруженных в процессе работы подпро||мммы. При этом: Ii:RR =65, когда интегрирование системы выполнено с задан­ ным в H M IN минимальным шагом, но требуемая точность полу­ ченного при этом значения YX решения не достигнута. В таком • iviae последний шаг интегрирования системы можно повторитьн^|к|щ.епием к подпрограмме с новыми значениями параметров Н и IIM IN и со значением J S T A R T = — 1. I E R R = 66, когда решение иг м о ж е т быть вычислено с требуемой точностью EPS при первом ипр.-нцспии к подпрограмме (т. е. со значением J S T A R T = 0 ) . П ном случае интегрирование системы можно начать сначала обринн-иием к подпрограмме с новыми значениями параметров Н и M-'MN и со значением J S T A R T = 0 . '•I) IE R R (D E 2 9 R ) — целая переменная, служащая для сооб•п. пни об ошибках, обнаруженных в процессе работы подпрограм­ мы При этом IE R R = 6 5 и I E R R = G 6, когда какая-нибудь компоIII иi.i решения не может быть вычислена с требуемой точностью 1 1,,:> при заданных начальном шаге Н и его минимальном значе­ нии IIM IN . I E R R =66 указывает, что требуемая точность не мо*■' ' быть достигнута при разгоне, a IE R R = 6 5 — после разгона. При желании интегрирование системы можно повторить обраще­ 223
нием к подпрограмме с новыми значениями параметров Н и H M IN . 52) RAB(DE20R, DE22R) — одномерный рабочий массив дли­ ной 29 Х М . 53) IERR(DE20R, DE22R) — целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе работы подпро­ граммы. Пр и этом: IE R R = 1 , когда неправильно задай параметр IORDER: I O R D E R <1 или IO R D E R >6 (максимальный допустимый порядок метода); в этом случае выполняется интегрирование системы ■уравнений со значением IO R D E R —6; IERR=65, когда какая-нибудь компонента решения не может быть вычислена с требуемой точностью EPS; в этом случае по­ следний шаг интегрирования системы можно повторить о б р а т е нием к подпрограмме с новыми значениями параметров Н, H M IN и IORDER и значением J S T A R T ^ —1 (последнее — для DE20R). 54) RAB(DE21R, DE23R) — одномерный рабочий массив; при интегрировании нежесткой системы уравнений R A B имеет размер 1 7 х М , при интегрировании жесткой системы — М Х ( М + 1 7 ) . 55) Y P (D E 2 1 R , DE23R) — двумерный рабочий массив разме­ ром М х 8. 56) IERR(DE21R, DE23R) — целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе работы подпро­ граммы, При этом: IERR = 1, когда неправильно задан параметр IORDER, а имен­ но, когда IORDER превосходит максимальный допустимый поря­ док метода; в этом случае интегрирование ведется методом Гиря порядка не выше 7 для нежесткой системы и не выше 6 для же­ сткой: IERR =65, когда интегрирование системы выполнено с задан­ ным минимальным шагом, но требуемая точность полученного при этом значения решения не достигнута; I E R R = 66, когда приближенное значение решения не можн быть вычислено, так как итерационный процесс его определения не сходится для шагов интегрирования Н, больших заданного минимального значения H M IN ; IE RR =67, когда требуемая точность EPS вычисления прибли­ женного решения меньше той, которая может быть достигнута для данной задачи при тех размерах шага интегрирования, начальное значение которого задано параметром Н; I E R R = 68, когда приближенное значение решения для жесткой системы не может быть вычислено с заданной точностью. Замечания по использованию. Подпрограмма DE13R предназна­ чена для численного решения дифференциальных уравнений и си сгем уравнений с правой частью, имеющей непрерывные частные производные вплоть до пятого порядка включительно. При рабо­ те подпрограммы значения параметров М, XN, YN, ХК, HMIN, EPS, Р сохраняются. Если после работы подпрограммы нет необ224
ходимости иметь начальное значение решения YN , то параметры VN и Y при обращении к ней можно совместить. Подпрограмма DE10R предназначена для численного решения дифференциальных уравнении и систем уравнений с правой ча­ стью, имеющей непрерывные частные производные вплоть до пя­ того порядка включительно. Она является эффективной для нежегтких уравнений и систем уравнений с несложными правыми чаггями (т. е. не являющимися трудоемкими для вычисления). При работе подпрограммы значения параметров М, XN, YN, ХК, IIM IN , E PS и Р сохраняются. Если после работы подпрограммы пет необходимости иметь начальное значение решения YN , то па­ раметры YN и Y при обращении к ней можно совместить. При ра­ ните подпрограммы счета правой части F значения параметров X, Y и М не должны изменяться. Подпрограмма DE11R предназначена для численного решения дифференциальных уравнений и систем уравнений с правой ча­ стью, имеющей непрерывные частные производные вплоть до чет­ вертого порядка включительно. При работе подпрограммы значе­ ния параметров М, XN, YN , ХК, H M IN , EPS, Р сохраняются. Ес.111 после работы подпрограммы нет необходимости иметь началь­ ное значение решения YN , то параметры Y N и Y при обращении к ней можно совместить. При работе подпрограммы DE15R значения параметров М, H M IN, EPS, Р сохраняются. При работе подпрограммы счета праиой части F значения параметров X, Y и М не должны изменяться. При обращении к подпрограмме со значением J S T A R T = — 1 в ка­ честве исходных значений аргумента и решения принимаются зна­ чения параметров Х Р и Y P соответственно, т. е. те значения, ко­ торые эти параметры получили после самого последнего обращения к подпрограмме с неотрицательным значением JSTART. При работе подпрограммы DE16R значения параметров М, XN, YN, ХК, H M IN , E P S P сохраняются. Если после работы подпро­ граммы нет необходимости иметь начальное значение решения YN, то параметры Y N и Y при обращении к ней можно совместить. При работе подпрограммы счета правой части F значения пара­ метров X, Y и М не должны изменяться. В качестве вспомогатель­ ной используется подпрограмма DE15R. При работе подпрограммы DE32R значения параметров М. IORDER, XN, YN , H M IN , E PS, P сохраняются. Подпрограмма мо­ жет использоваться как для разгона, так и непосредственно для численного решения системы уравнений на всем интервале интег­ рирования. В качестве вспомогательной используется подпрограм­ ма DE28RS. При работе подпрограммы DE28R значения параметров М, IIM IN , Н М АХ , EPS, Р сохраняются. При многократном использоп.1иии подпрограммы или ее версии для вычисления решения систе­ мы уравнений на отрезке значения параметров М, YX, X и значе­ ния рабочих массивов, задаваемых параметрами DF, Y P , не долж ­ ны изменяться б вызывающей программе между носледовательныЗа к. 217 225
ми обращениями к подпрограмме. В качестве вспомогательных ис­ пользуются подпрограммы DE23R, DE28RP, DE28RS. При работе подпрограммы DE29R значения параметров М, XN. YN, Х К H M IN , Н М АХ , EPS, Р сохраняются. Если после работы подпрограммы нет необходимости иметь начальное значение ре­ шения YN, то параметры YN и Y при обращении к ней можно сов­ местить. При этом надо иметь в виду, что в случае аварийного вы­ хода из подпрограммы, т. е. со значением IERR, равным 65 или 66, значение параметра YN будет испорчено. В качестве вспомо гательной используется подпрограмма DE28R. При работе подпрограммы DE20R значения параметров М, IORDER, IU, JSTART, H M IN , EPS сохраняются. Значения пара­ метров X, YX и Н изменяются всегда независимо от того, будет достигнута заданная точность или нет. В общем случае значе­ ние H M IN должно быть много меньше, чем И, чтобы позволит!, подпрограмме приспособиться к быстрому изменению решении. При многократном использовании подпрограммы для вычислении решения системы уравнений на отрезке значение параметра YPM задается только один раз при самом первом обращении к подпро­ грамме. При этом Y P M (I ) = | Y X (I) |, 1=1, . . . , М для Ш = 1 и Ш = 2 ; Y P M (I ) = 1, 1= 1, . . . , М для Ш = 3 . При работе подпрограммы DE22R значения параметров М, EPS, XN, YN, ХК, H M IN , IO RD ER, IU сохраняются. Если после работы подпрограммы нет необходимости иметь начальное значс ние решения YN, то параметры YN и Y при обращении к ней мож­ но совместить. В качестве вспомогательной используется подпро­ грамма DE20R. При работе подпрограммы DE21R значения параметров М, EPS, ISTIFJ, IORDER, H M IN , Н М А Х сохраняются. Значение H M IN должно быть много меньше ожидаемого среднего шага им тегрирования при первом обращении к подпрограмме, так как при первом обращении к подпрограмме используется метод пор вого порядка. При многократном использовании подпрограммы для вычисления решения системы уравнений на отрезке значения параметров М, IS TiFJ, EPS, YX, X и значения рабочих массивов, задаваемых параметрами YPM , D E LTY, RAB, YP, не должны из­ меняться в вызывающей программе между последовательными обращениями к ней. При работе подпрограммы DE23R значения параметров М, XN, YN, ХК, H M IN , Н М АХ, EPS, ISTIFJ, IORDER, IU сохраняются. Если после работы подпрограммы кет необходимости иметь на­ чальное значение решения YN, то параметры YN и Y при обр.з щении к ней можно совместить. Значение H M IN должно быть много меньше среднего ожидаемого шага интегрирования, за даваемого параметром Н, так как интегрирование системы на чинается с метода первого порядка. В качестве вспомогательно!! используется подпрограмма DE21R. 226
Л'.З. Описание параметров для подпрограмм решения задачи АIчип для систем уравнений второго порядка. Параметры F, М, IIM IN, E PS, Р, Н, Н М АХ , ХК, Y описаны в п. 8.1 и 8.2. Параметр N(I>E34R, DE38R) описан в п. 8.2 с указанием в скобках подпроцмммы DE32R. 57) IO R D E R (DE35R, DE34R, DE38R) — порядок точности того чпода Штермера, для которого выполняется разгон и который М и г использоваться при интегрировании данной системы урав­ нении. Г>8) XN, YN , D YN —- начальные значения аргумента, решения н его производной; в случае системы уравнений (т. е. M ^ = l) YN и DYN представляют одномерные массивы длиной М. 59) X(D E35R, DE34R, D E 3 8 R )— переменная, значение кото|и»и на выходе из подпрограммы представляет первый (после на•и.чмюй точки X N ) узел интегрирования X N -f Н, в котором вы­ числены необходимые для интегрирования данной системы уравiH iiiiH начальные значения. <»()) YX, DY (DE35R, D E 3 4 R )— одномерные массивы длиной М, ii которых запоминаются значения решения и его первой разно• hi, вычисленные в узле X. Погрешности решения и разности имеют ( IO R D ER + 2 ) -й порядок по Н. 61) DF (DE35R, D E 3 4 R )— двумерный массив размером M X IORDER, в котором запоминаются значения правой части си• Iсмы и ее разностей до (IO R D E R — 1)-го порядка включительно, исчисленные в узле X и умноженные на коэффициент Н * * 2/12. Мемент DF (I, 1) этого массива содержит значение правой чаIMI I-ro уравнения системы, DF (I, J + 1 ) — J-ю разность, погреш­ ит-п> которой имеет (IO R D E R — 2)-й порядок по Н. 62) RFN, RF, R — одномерные рабочие массивы длиной 1Л. 63) IE R R (DE34R, D E 3 8 R )— целая переменная, значение коni|M>ii в результате работы подпрограммы полагается равным 65, •»«.-hi па разгоне не может быть достигнута требуемая точность I PS. В этом случае разгон можно начать сначала обращением к подпрограмме с новыми значениями параметров Н и H M IN . 61) YX, DYX, Z (D E 3 8 R )— одномерные массивы длиной М, в мнорых запоминаются значения решения, его производной и пер|||щ разностной производной назад, вычисленные в узле X. При ним погрешность решения имеет (IO R D E R 4 -2 )-й порядок по Н, а mu речивость D YX и Z — порядок IO R D E R 4-1 по Н. 65) D F (D E 3 8 R )— двумерный массив размером M X IO R D E R , и шпором запоминаются значения правой части системы и ее разши гей до (IO R D E R — 1) -го порядка включительно, вычисленные в V'-ie X и умноженные на коэффициент Н/12. Элемент DF (I, 1) nun) массива содержит значение правой части I -го уравнения сн• н мы, a D F (I, J 4 - 1 )— ее J-ю разность, погрешность которой и \мч* г порядок IO R D E R 4-1 по Н. Параметры JS TA R T(D E 40R , DE42R, DE46R), X, YX (D E 40R , IИ I2R) описаны в п. 8.1 с указанием в скобках подпрограммы I >1 -6R. I* 227
66) D Y(D E 40R , D E 4 2 R )— одномерный рабочий массив длиной М. При первом обращении к подпрограмме (т. е. со значением JS TA R T = 0) в этом массиве задается значение производной ре* шения в начальном узле интервала интегрирования. 67) D E LTY, RFN, RF, YP, D Y P — одномерные рабочие м а е т вы длиной М. 68) D F(D E40R, D E 4 2 R )— двумерный рабочий массив размг ром М х 5 , в котором запоминаются значения правой части сиси* мы и ее разностей до четвертого порядка включительно, умножен ные на Н * * 2/12. 69) IE R R (D E 40R , D E 4 1 R )— делая переменная, значение ко торой в результате работы подпрограммы полагается равным (>.'», если при заданном значении шага интегрирования не может бы и. достигнута сходимость численного решения к точному значению решения. В этом случае интегрирование системы можно повто­ рить обращением к подпрограмме с новым значением параметра Н и со значением JS T A R T — 1 (для DE40R). Параметры Н (DE42R, DE46R), B U L(D E 42R , DE46R) описаны в п. 8.2 с указанием в скобках подпрограммы DE15R. 70) IE R R (D E 42R , D E 4 6 R )— целая переменная, служащая длисообщения об ошибках, обнаруженных в процессе работы подиро граммы. При этом: IE RR = 65, когда интегрирование системы выполнено с задан­ ным в I4M IN минимальным шагом, но требуемая точность полу­ ченного при этом значения YX решения не достигнута; в этом случае последний шаг интегрирования системы можно повторить обращением к подпрограмме с новыми значениями параметров П и H M IN и со значением J S T A R T = — 1; IE R R = 66, когда решение не может быть вычислено с требуе* мой точностью E PS при первом обращении к подпрограмме (т. с со значением J S T A R T = 0 ); в этом случае интегрирование системы можно начать сначала обращением к подпрограмме с новыми значениями параметров Н и H M IN и со значением JS TA R T = 0. 71) D F(D E41R, D E 4 3 R )— двумерный рабочий массив разме ром М Х 5 . 72) IE R R (D E 43R , D E 4 7 R )— целая переменная, служащ ая дли сообщения об ошибках, обнаруженных в процессе работы подпро граммы. При этом: IE RR = 65 и IE R R = 66, когда какая-нибудь компонента реше­ ния не может быть вычислена с требуемой точностью EPS при заданных начальном шаге Н и его минимальном значении HM1N; IE R R = 66 указывает, что требуемая точность не может быть до­ стигнута при разгоне, a IE RR = 65 — после разгона; при желании интегрирование системы можно повторить обращением к подпро­ грамме с новыми значениями параметров IT и H M IN . 73) YX, DYX, X (D E 4 6 R )— задаваемые значения решения, про­ изводной и соответствующее им значение аргумента; в результате работы подпрограммы в X получается новое значение аргумента, а в YX и D YX соответствующие ему значения решения и проп.ч228
видной; в случае системы уравнений, т. е. когда М¥-\, YX и DYX «<|лаются одномерными массивами длиной М ; 74) Z, Z P (D E 4 6 R , D E 4 7 R )— одномерные рабочие массивы ушной М. 75) D F(D E 46R , D E 4 7 R )— двумерный рабочий массив разме­ ром М х 5 , в котором запоминаются значения правой части систе­ мы и ее разностей до четвертого порядка включительно, умножен­ ные на коэффициент И/12. 7(>) Y P , D Y P (D E 4 6 R )— одномерные рабочие массивы длиной М. представляющие значения решения и производной в предыду­ щем узле интегрирования. 77) F(D E 38R , DE46R, D E 4 7 R )— имя подпрограммы вычисле­ ния значений правой части системы. Первый оператор подпроt рам мы должен иметь вид S U B R O U T IN E F (X , Y, DY, D2Y, M ). I ien, X, Y, D Y — значения независимой, зависимой переменных и производной решения соответственно; вычисленное значение пра|||ж части долж но быть помещено в D2Y. В случае системы урав­ нении, т. е. когда М¥=1, параметры Y, DY, D2Y представляют од­ номерные массивы длиной М. 78) Y, D Y (D E 4 7 R )— искомое решение задачи Коши и его производная, вычисленные подпрограммой для значения аргумеиi.i ХК; для системы уравнений задаются одномерными массивами ушной М ; в случае совпадения значений параметров X N и Х К «п иемия Y и DY полагаются равными начальным значениям YN и DYN соответственно. Замечания по использованию. Значение параметра Н, задавае­ мое при обращении к подпрограммам DE34R, DE35R, DE38R, должно быть таким, чтобы узел X N 4 -(IO R D E R — 1 )* Н не выхо­ лил за конец интервала интегрирования. Значение параметра IORDER на входе в эти подпрограммы полагается равным 5. И дальнейшем предполагается расширить допустимое множество значений этого параметра. При работе этих подпрограмм значе­ ния параметров М, IO RD ER, XN, YN , DYN, H M IN , EPS, P сохра­ няются. Используется вспомогательная подпрограмма DE28RS. Назначение подпрограммы DE18R такое же, как и подпро|рам мы DE34R, но схема организации вычислений в ней несколь«“ » иная, чем в DE34R: значение решения вычисляется через зна•ичнц» некоторой промежуточной переменной, введение которой ни «виляет уменьшить вычислительную погрешность в приближенимм значении решения. Все формальные параметры DE18R имеют им же смысл, что и соответствующие им параметры DE34R с той М.Л1.КО разницей, что в массив D Y заносится разделенная разщ»< ц, решения, вычисленная с порядком IO R D E R + 1 по Н, а не конечная разность, как в DE34R, а в массив DF — конечные раз­ инет правой части системы, умноженные па коэффициент Н/12 и вычисленные с порядком IO R D E R + 1 по Н. При работе подпрограммы DE40R значения параметров М. и II сохраняются. При многократном использовании этой подпро||щ\1мы для вычисления решения на отрезке значения параметров 229
M, YX, X, DY, DF, Y P , D Y P не должны изменяться в вызывающем программе между последовательными обращениями к ней. И с­ пользуются вспомогательные подпрограммы DE35R, DE42RP и DE28RS. При работе подпрограммы DE42R значения параметров М, H M IN , Н М А Х , E PS, Р сохраняются. При многократном использо­ вании подпрограммы для вычисления решения системы уравне­ ний на отрезке необходимо выполнить следующие требования: — значения параметров М, YX, X и значения рабочих масси­ вов, задаваемых параметрами DY, DF, Y P , D YP, не должны из­ меняться в вызывающей программе между последовательными обращениями к DE42R; — значение параметра U M A X не должно быть слишком боль­ шим, так как в противном случае величина шага интегрирования может достичь таких размеров, которые приведут к абсолютной неустойчивости численного метода. В DE42R используются вспомогательные подпрограммы DE34R, DE28RS и DE42RP. Назначение подпрограммы DE48R такое же, как и подпро­ граммы DE42R, но схема организации вычислений в ней не­ сколько иная, чем в DE42R: во-первых, исправленное и предска* занное значения решения вычисляются через значения некотором промежуточной переменной, введение которой позволяет умень­ шить вычислительную погрешность в приближенном значении ре­ шения; во-вторых, для вычисления приближенного решения па одном шаге используется на одно вычисление правой части урав­ нения больше, чем в подпрограмме DE42R. Таким образом обес­ печивается возможность вычислить решение уравнения более точ­ но, чем в DE42R. Так как подпрограмма DE48R использует о б ­ щий блок с именем COM48R для храпения промежуточных значе­ ний, пользователь не должен портить содержимое его элементов. В качестве вспомогательной используется подпрограмма DE48RIV При работе подпрограммы DE46R значения параметров М, H M IN , Н М АХ , E PS, Р сохраняются. При многократном ее ис­ пользовании для вычисления решения системы уравнений на от­ резке значения параметров М, YX, DYX, X и значения рабочих массивов, задаваемых параметрами Z, DF, Y P , D YP, Z P , не д ол­ жны изменяться в вызывающей программе между последователь иыми обращениями к подпрограмме. Значение параметра U M AX не должно быть слишком большим, так как в противном случае величина шага интегрирования может достичь таких размеров, которые приведут к абсолютной неустойчивости численного мето­ да. Приближенное значение производной на точность не прове­ ряется. Так как подпрограмма DE46R использует общий блок с именем COM48R для хранения промежуточных значений, поэто­ му пользователь не должен портить элементы этого общего бло­ ка. В качестве вспомогательных используются подпрограмм и DE38R, DE28RS и DE48RP. 230
Мри работе подпрограммы DE41R значения параметров М, \ N , YN, D YN, Х К и Н сохраняются. Если после ее работы нет m обходимости иметь начальные значения решения YN и его прои шодной D YN, то параметры YN и Y, а в случае производной па­ раметры D YN и D Y при обращении к ней можно совместить. И с­ пользуется вспомогательная подпрограмма DE40R. Назначение подпрограммы DE49R такое же, как и подпро­ граммы DE43R, но схема организации вычислений в ней иесколь..... ... чем в DE43R: во-первых, исправленное и предсказанное |и.1чепия решения вычисляются через значения некоторой проме­ ру тчной переменной, введение которой позволяет уменьшить имчцелительную погрешность в приближенном значении решения; пн вторых, для вычисления приближенного решения на одном ma­ in используется на одно вычисление правой части уравнения больше, чем в подпрограмме D E 4 3 R . Таким образом, обеспечи1ыг гея возможность вычислить решение уравнения более точно, •им в DE43R. Используется вспомогательная подпрограмма hi IHR. При работе подпрограмм DE43R, DE47R и DE49R значения и.»|>аметров М, XN, YN , D YN, ХК, H M IN , Н М АХ , E PS сохраняимси. Значение параметра Н М А Х не должно быть слишком бо ль­ шим, так как в противном случае величина шага интегрирования мижот достичь таких размеров, которые приведут к абсолютной неустойчивости численного метода. Если после работы нет пеобч« I.'I имости иметь начальные значения решения YN и/или произи".ц|ой DYN, то параметры YN и Y, а в случае производной параMt чры D YN и DY при обращении к ней можно совместить. При *|пм следует иметь в виду, что в случае аварийного выхода из •ы Iпрограммы, т. е. со значением IE RR , равным 65 или 66, зна­ чении параметров Y N и D YN будут испорчены. Приближенное иычепие производной на точность не проверяется. Когда важнее ■пкр.тгить время вычислений, целесообразней использовать 1*1 I3D, а когда требуется вычислить решение поточнее — DE49R. Mu Iпрограммы DE47R и DE49R используют общий блок с име­ нем COM48R, поэтому пользователям не рекомендуется употреб*инь для своих целей общий блок с таким же именем. DE47R ис­ пользует подпрограмму DE46R, a DE43R — подпрограмму DE42R. «V.4. Описание параметров для подпрограмм решения задачи коти для жесткой системы уравнений. Подпрограмма DE24R, вы­ пи шиющая одни шаг по методу Гира с контролем точности, имеет и /ке параметры, что и подпрограмма DE21R, за исключением oil'll, что вместо параметра IS T IF J используется следующий паp. I метр. /9) ЕЛ — имя подпрограммы вычисления матрицы Якоби си• м-чм. Первый оператор этой подпрограммы имеет вид М liR O U T IN E FJ (X, V, Z, М ). Здесь X, Y — значения независимой и 1.1ИИСИМОЙ переменных, причем Y — одномерный вещественный массив длиной М ; вычисленное значение якобиана долж но быть и».чещено в двумерном массиве Z размером М х М , при этом част­ 231
ная производная от правой части I -го уравнения по J-й перемен ной Y (J ) запоминается в элементе Z (I , J). Подпрограмма DE25R, предназначенная для вычисления ре­ шения в конце интервала интегрирования методом Гира с авто­ матическим выбором шага, имеет те же параметры, что и подпро­ грамма DE23R, за исключением того, что вместо параметра IS TIFJ используется описанный выше параметр FJ. 80) F A — подпрограмма вычисления матрицы системы А (Х ) и любой точке X. Первый оператор подпрограммы должен иметь вид S U B R O U T IN E FA (А, X, М ). Здесь А — двумерный массин размером М х М , в котором помещается матрица системы, вычис­ ленная при значении аргумента X. 81) F I — подпрограмма вычисления неоднородности правой части системы ср(х) в любой точке X. Первый оператор подпро­ граммы должен иметь вид S U B R O U T IN E FI (G, X, М ). Здесь G — одномерный массив длиной М, в который помещается неод­ нородность правой части системы, вычисленная при значении ар­ гумента X. Параметры М, H M IN , EPS, Р, XN, YN, ХК, Н, Y описаны и п. 8.1 и 8.2. Параметры J S T A R T (D E 3 6 R ), X, Y X (D E 3 6 R ) описаны в п. 8.1 с указанием в скобках подпрограммы DE26R. Параметры Н (D E 36R), B U L (D E 36R ), Х Р, Y P (D E 36R), IE R R (DE36R) опи­ саны в п. 8.2 с указанием в скобках подпрограммы DE15R. Пара­ метр IE R R (D E37R) описан в п. 8.2 с указанием в скобках под­ программы DE13R. 82) IR (D E 36R , D E 3 7 R )— целый одномерный рабочий массин длиной З х М . 83) R l, R 2 (D E 3 6 R )— одномерные рабочие массивы длиной ( (З Х М ) X ( З Х М + 1 )) и З Х М соответственно. 84) R3 — двумерный рабочий массив размером М Х М . 85) R4, R5 — одномерные рабочие массивы длиной М. 86) R A B (D E 3 7 R )— одномерный рабочий массив длиной 10 М а+ 9 М + 1 . 87) N (D E 3 1 R )— целое число равных частей, на которые де­ лится отрезок интегрирования системы линейных дифференциаль­ ных уравнений с постоянными коэффициентами; при обращении к подпрограмме параметр N выбирается таким образом, чтобы m a x | | A (x )X (((X K — X N )/N S)/N )||<1, X N < x < X K (см. замеча­ ния по использованию). 88) NS — число равных частей, на которые разбивается интер­ вал интегрирования. NS должно быть таким, чтобы система урав­ нений (7) достаточно хорошо аппроксимировала исходную систе­ му уравнений с переменными коэффициентами. 89) А, Е, R l, R 2(D E 31R ) — двумерные рабочие массивы раз­ мером М х М . 90) R, R 3 (D E 3 1 R )— одномерные рабочие массивы длиной М. 91) IE R R (D E 3 1 R ) — целая переменная, служащ ая для сооб­ щения об ошибках, обнаруженных в процессе работы подпро­ граммы. При этом 232
I ERR = 65, когда значение параметра N меньше 1; IERR = 66, когда значение параметра NS меньше 1. В каждом из этих случаев интегрирование системы прекра- ИСК'ТСЯ. !)2) N (D E 3 0 R )— целое число равных частей, на которые де­ лится отрезок интегрирования. При обращении к подпрограмме параметр N выбирается таким образом, чтобы выполнялось нерангмство IIА х (Х К — XN)/N||^1 (см. замечания по использова­ нию) . 93) A (D E 3 0 R )— двумерный массив размером М х М , содер­ жащий матрицу системы уравнений. 94) IE R R (D E 3 0 R )— целая переменная, значение которой в ре•ультате работы подпрограммы полагается равным 65, если зна­ мение параметра N меньше 1. В этом случае интегрирование си* Iеми прекращается; значения параметров, М, X N, YN , ХК, N не и «меняются. Замечания по использованию. При работе подпрограмм MK21R, DE24R, DE23R, DE25R значения параметров М, XN, YN,, ЛК, IU, ISTIFJ, IO RD ER, H M IN , Н М А Х , E PS сохраняются. Зна­ ч е н и е H M IN должно быть много меньше ожидаемого среднего ш.и а интегрирования при первом обращении к подпрограмме, •*|к к а к при первом обращении к подпрограмме используется ме­ т я первого порядка. При многократном использовании подпрограмм DE21R и IH'IMR для вычисления решения системы уравнений на отрезке шачепия параметров М, ISTIFJ, EPS, YX, X и значения рабочих массивов, задаваемых параметрами Y P M , D E LTY , RAB, Y P , не ИМ1ЖИЫ изменяться в вызывающей программе между последоваtильными обращениями к ним. Подпрограммы DE21R и DE24R используют вспомогательные программы DE21RU и DE21RP, a DE23R и DE25R— DE21R и hi 1MR. При обращении к подпрограмме DE36R со значением 1'П ART = — 1 в качестве исходных значений аргумента и решения принимаются значения параметров Х Р , Y P соответственно, т. е. и- значения, которые эти параметры получили после самого по>1сднсго обращения к подпрограмме с неотрицательным значе­ нием JSTART. При работе подпрограмм DE36R и DE37R значе­ нии параметров М, IIM IN , EPS, Р, XN, YN, Х К сохраняются. Эти подпрограммы используют общий блок с именем COM36R, поэто­ му пользователю не рекомендуется использовать для своих целей общий блок с тем же именем. Мри работе подпрограмм F A и FI значения параметров X и М не должны изменяться. Если после работы подпрограммы IM J/R нет необходимости иметь начальное значение решения Y N , и» параметры YN и Y при обращении к ней можно совместить. Мри этом следует иметь в виду, что в случае аварийного выхода п» подпрограммы со значением IE R R = 65 значение параметра ЪN будет испорчено. 233
Значение параметра N, задаваемое при обращении к подпро­ грамме DE31R таким образом, чтобы шах ||А(х) X ( ( (Х К — XN)/ /N S)/N )1K1, X N ^ x ^ X K , есть, по существу, число шагов, кото­ рое необходимо было бы выполнить, чтобы получить численную устойчивость приближенного решения каждой линейной системы с постоянными коэффициентами, если ее интегрировать какимнибудь методом типа Рунге— Кутта. При работе подпрограммы значения параметров М, XN, YN, ХК, N, NS сохраняются. Хотя подпрограмма DE30R предназначена для интегрирова­ ния линейных систем дифференциальных уравнений с матрицей, имеющей все собственные числа с отрицательными вещественны­ ми частями, опыт ее эксплуатации показал, что она весьма эф­ фективна и для тех систем уравнений, которые имеют собствен­ ные числа с нулевой вещественной частью. Экспоненциальный ме­ тод, реализованный в дайной программе, является пока единст­ венным практически пригодным методом численного интегриро­ вания сильно жестких систем дифференциальных уравнений ука­ занного вида. Значение параметра N, задаваемое при обращении к этой подпрограмме таким образом, что ЦАН1КЗ, есть, по суще­ ству, число шагов, которые необходимо было бы выполнить, что­ бы получить численную устойчивость приближенного решении данной задачи, если ее решать каким-нибудь методом типа Рун­ ге— Кутта. При ее работе значения параметров М, XN, YN, ХК, N сохраняются. На месте матрицы А помещается матрица АН. Если после работы подпрограммы нет необходимости иметь на­ чальное значение решения YN, то параметры YN и Y при обра­ щении к ней можно совместить. 8.5. Сводная информация об обращениях к подпрограммам ре­ шения задачи Коши. Ниже приведены имена подпрограмм реше­ ния задачи Коши, в списках формальных параметров которых указаны номера, присвоенные этим параметрам в п. 8.1— 8.4. Та­ кая сводная информация о параметрах обращения к подпрограм мам обеспечивает быстрый поиск их описаний. DE14R (1, 2, 3, 3, 4, 5, 6, 13, 13, 13) DE33R (1, 2, 7, 3, 3, 17, 8, 9, 10, 13, 13, !3, 15) DE26R (1, 2, 11, 12, 12, 17, 13, 14, 13, 13, 14, 13, '16) DE27R (1, 2, 3, 3, 4, 5, 6, 13, 14, 13, 13, 14, 13, 16) DE13R (1, 2, 3, 3, 4, 18, 19, 20, 5, 6, 13, 13, 13, 13, 40) DE10R (1, 2, 3, 3, 4, 18, 19, 20, 5, 6, 41, 40) DE11R (1, 2, 3, 3, 4, 18, 19, 20, 5, 6, 13, 13. 42, 40) DE15R (1, 2, 21, 18, 19, 20, 12, 12, 22, 23, 43, 43, 44, 44, 44, 41, 44, 45) DE16R (1, 2, 3, 3, 4, 18, 19, 20, 5, 6, 46, 40) DE32R (1, 2, 7, 3, 3, 18, 19, 20, 24, 8, 9, 10, 25, 47, 47, 47, 48) DE28R (1, 2, 11, 18, 26, 19, 20, 12, 12, 22, 23, 13, 14, 13, 13, И, 13, 50) DE29R (1, 2, 3, 3, 4, 18, 26, 19, 20, 5, 6, 13, 14, 13, 13, 14, 13, 51) DE20R (1, 2, 28, 29, 30, 18, 19, 27, 27, 31, 23, 32, 33, 52, 53) DE22R (1, 2, 3, 3, 4, 18, 19, 28, 29, 5, 6, 13, 13, 52, 53) 234
DE21R (1, 2, 34, 35, 36, 18, 26, 37, 12, 12, 22, 23, 38, 13, 54, 55, М») DE23R (1, 2, 3, 3, 4, 18, 26, 39, 34, 35, 29, 5, 6, 13, 13, 54, 55, 56) DE35R (1, 2, 57, 58, 58, 58, 17, 59, 60, 60, 61, 62, 62, 62) DE34R (1, 2, 57, 58, 58, 58, 18, 19, 20, 24, 59, 60, 60, 61, 62, 62, «.2, 63) UE38R (77, 2, 57, 58, 58, 58, 18, 19, 20, 24, 59, 64, 64, 64, 65, 62, i»2, 62, 63) DE40R (1, 2, 11, 12, 12, 66, 17, 67, 68, 67, 67, 67, 67, 69) DE42R (1, 2, И , 18, 26, 19, 20, 12, 12, 66, 22, 23, 67, 68, 67, 67, I. 7, 67, 70) DE46R (77, 2, 11, 18, 26, 19, 20, 73, 73, 73, 22, 23, 74, 67, 75, 67, 67, 76, 76, 74, 70) DE41R <1, 2, 58, 58, 58, 4, 5, 6, 13, 67, 71, 67, 67, 67, 67, 69) DE43R (1, 2, 58, 58, 58, 4, 18, 26, 19, 20, 5, 6, 13, 67, 71, 67, 67, 6/, 67, 72) OE47R (77, 2, 58, 58, 58, 4, 18, 26, 19, 20, 5, 78, 78, 74, 67, 75, 6/, 67, 67, 67, 74, 72) DE24R (1, 79, 2, 35, 36, 18, 26, 37, 12, 12, 22, 23, 38, 13, 54, 55, :>б) DE25R (1, 79, 2, 3, 3, 4, 18, 26, 39, 35, 29, 5, 6, 13, 13, 54, 55, 56) DE36R (80, 81, 2, 11, 18, 19, 20, 12, 12, 22, 23, 43, 43, 82, 83, 83, Ml, 85, 85, 45) DE37R (80, 81, 2, 3, 3„4, 18, 19, 20, 5, 6, 86, 82, 40) DE31R (80, 2, 3, 3, 4, 87, 88, 6, 89, 89, 90, 89, 89, 90, 91) DE30R (2, 3, 3, 4, 92, 93, 6, 89, 90, 89, 89, 94) DE18R (1, 2, 57, 58, 58, 58, 18, 19, 20, 24, 59, 60, 60, 61, 62, 62, 63) DE48R (1, 2, I I , 18, 26, 19, 20, 12, 12, 66, 22, 23, 67, 68, 67, 67, |./, 67, 70) Проиллюстрируем формирование операторов обращения к пе­ речисленным подпрограммам на примере обращения к подпро|р.чмме DE29R интегрирования системы дифференциальных урав­ нении методом Адамса. Описание назначения подпрограммы DE29R дано в п. 2.2 дан­ ной главы. Там же указан номер 2.8 пункта приложения, в кото­ р о м приводится текст этой подпрограммы на языке Фортран. Р ас­ смотрим первый оператор подпрограммы DE29R: М JUROUTINE DE29R (F, М, XN, YN , ХК, H M IN , Н М А Х , E PS, Р, Н, Y, D E L T Y , DF, RF, YP, RY, R FN , IE R R ). II. i сводной информации об обращениях находим имя данной под­ программы со списком номеров, которые присвоены формальным параметрам: DE29R (1, 2, 3, 3, 4, 18, 26, 19, 20, 5, 6, 13, 14, 13, 13, 14, 13, 5 1 ). Каждый номер в этом списке играет роль ключа, по которому палчдится описание соответствующего формального параметра: его п.ппачение, способ задания и т. д. Сопоставим каждому формаль­ ному параметру номер в данном списке. Формальному параметру I соответствует номер 1. В п. 8.1 под номером 1 описан параметр, 235
F — имя подпрограммы вычисления правой части дифференциаль­ ного уравнения. Формальному параметру /М соответствует но­ мер 2. В п. 8.1 под номером 2 описан параметр М — количество уравнений в системе. Формальным параметрам XN, YN соответ­ ствует один и тот же помер 3. В п. 8.1 под этим номером описаны формальные параметры XN, YN — начальные значения аргумента и решения. Формальному параметру ХК соответствует номер 4. В п. 8.1 под этим номером описан параметр Х К — значение аргу­ мента, при котором требуется вычислить решение задачи Коши. Формальному параметру H M IN соответствует номер 18. В свод­ ном описании параметров в п. 8.2 под номером 18 описан пара­ метр H M IN — минимальное значение абсолютной величины шага, которое разрешается использовать при интегрировании системы уравнений. Формальному параметру Н М А Х соответствует но­ мер 26. В п. 8.2 под номером 26 описан параметр Н М АХ — макси­ мальное значение абсолютной величины шага, которое разре­ шается использовать при интегрировании системы. Параметрам E PS и Р соответствуют номера 19 и 20. Под этими номерами в1 п. 8.2 описаны параметры EPS и Р — соответственно допустимая мера погрешности, с которой требуется вычислить все компонен­ ты решения, и граница перехода от абсолютной погрешности к относительной и наоборот. Формальному параметру Н соответ­ ствует номер 5, а параметру Y — номер 6. В сводном описании па­ раметров в п. 8.1 под этими номерами описаны параметры Н iH Y — соответственно начальный шаг интегрирования и искомое ре­ шение задачи Коши. Формальному параметру DELTY, а также параметрам RF, YP, RFN соответствует один и тот же номер 13. В п. 8.1 под этим номером описаны несколько параметров, в том числе параметры D ELTY, RF, YP, RFN — одномерные рабочие массивы длиной М. Формальным параметрам DF и RY соответ­ ствует номер 14. В п. 8.1 под номером 14 описаны два параметра DF и RY — двумерные рабочие массивы размером М Х 5 . Нако­ нец, формальному параметру IERR соответствует номер 51. В сводном описании параметров в п. 8.2 под этим номером описан параметр IERR — целая переменная, которая служит для сообще­ ния о возможных ошибках, которые будут обнаружены в процес­ се работы подпрограммы DE29R. После формирования оператора обращения к данной подпро­ грамме следует обязательно внимательно прочитать приводимые в п. 8.2 после описания формальных параметров замечания по ис­ пользованию, относящиеся к выбранной подпрограмме. Если тип параметра не указан, то он определяется в соответствии со стан­ дартным соглашением о типах, которое принято в языке Ф О Р Т Р А Н (описание типа по умолчанию). В заключение приведем список литературы, рекомендуемой к гл. 5: [3, 4, 11, 19— 21, 23, 30].
Приложение I. Решение задачи Коши для системы уравнений первого порядка (без контроля точности) "1Л . Интегрирование системы классическим методом Рунге-Кутта 4^го порядка S U B R O U T IN E D E 1 4 R C F , M , X N , Y N , X K , H , Y , А , В, О IN T E G E R М REAL А , В ,С ,Н ,Х К ,X N ,Y ,Y N D IM E N S IO N A C M ) , В C M ), С C M ), Y C M ) , YNCM) IN T E G E R B A , J R E A L A D S ,BB,BC,B D , G , S I G N , X , Z L O G IC A L D D IM E N S IO N DATA / 0 .1 6 6 6 6 6 6 6 6 6 6 7 ,О.333333333333, 2 0 .3 3 3 3 3 3 3 3 3 3 3 3 ,0 .1 6 6 6 6 6 6 6 6 6 6 7 / , 3 BD C l ) , B D ( 2 ) , B D ( 3 > / 0 . 5 , 0 . 5 , G = J = 1, Y C J) = YNCJ) (XN XK) GO TO lO O S I G N C H , X K —X N ) .F A L S E . C O N T IN U E IF C .N O T . H = X TO D) GO TO 30 lO O C O N T IN U E 2 IF = XK — G (AB SC Z) .G T. X = H D = .T R U E . H = Z A B S (H )) GO TO 40 C O N T IN U E BB DO •50 . EQ. = = GO 40 M C O N T IN U E H D 3 0 1./ XN 10 IF 2 0 B C C l ) , В С C2 ) , В С C3 ) , В С C 4 > 1 DO 10 В С C4 ) , B D C 3 ) = 50 G J = 1, AC J) = YCJ) M BCJ) = YCJ) C O N T IN U E CALL F ( G , B ( 1 ) , C ( 1 ) , M ) DO 6 0 J = 1, M C C J) - H * C (J ) Y C J) = YC J) + B C (1 )* C (J > 237
60 C O N T IN U E DO 90 G BA - DO 70 — BB 70 1, + 3 B D C B A )*H J = 1, M В CJ ) - AC J) + BDCEA)*CCJ> C O N T IN U E C ALL F C G ,B C 1 ),C (1 ),M ) DO 80 60 J = 1, M C C J) = H *C C J> Y C J ) = YC J) + B C C B A + 1 )*C C J ) C O N T I NIJE 9 0 C O N T IN U E G GO lO O = BB TO + H 20 RETURN END 3*2. Построение начальных значений при интегрировании системы методами Адам са S U B R O U T IN E DE33R CFf М , IO R D E R ,X N ,Y N ,Н , D F , X , Y r 1 R S ,R F ,R ,IE R R ) IN T E G E R REAL IE R R ,IO R D E R ,M D F , H , R , R F , R S , X , X N , Y, YN D IM E N S IO N 1 X C IO R D E R ), Y C M ,1 > , YNCM) EXTERNAL IN T E G E R REAL D E 2 8 R S ,L O A D G O I , I O , J , J l , K , K l , L C , D , R 1 D IM E N S IO N DATA C C 1 0 ) , DC4 5 ) DC 1 ) , D C 2 ) , D C 3 ) , D C 4 ) , D C5 ) , D C 6 ) , D C 7 ) , 1 D C S ) , D C 9 ) , D C 1 0 > , D С 1 1 ) , D C 1 2 ) , D C 1 3 ) , 2 D C 1 4 ) , D C1 5 ) , D C 1 6 ) , D С1 7 ) , D C 1 8 ) , 3 D C 1 9 ) , D C 2 0 ) , D C 2 1 ) , D C 2 2 ) , DC2 3 ) 4 D C 2 4 ),D C 2 5 ), D C 2 6 ),D C 2 7 ),D C 2 8 ), 5 С» C 2 9 ) , D C 3 0 ) , D C 3 1 ) , D C 3 2 ) , D C 3 3 ) , 6 DC3 4 ) , DC3 5 ) , DC3 6 ) , DC3 7 ) , D C 3 8 ) , 7 D C 3 9 ) , DC4 0 ) ,D C 4 1 ) ,D C 4 2 > ,D C 4 3 ) , 8 D C 4 4 ) , D C4 5 ) / 1 • , 1 • , 9 “*4 . , 6 . , : - 6 . , 1 5 . , - 2 0 . , 1 5 . , - 6 . , 1 . , - 7 . , 2 1 . , I —35. , 35. , 21. , 7 . , 1. , 3 . , 2 S . , 56■ , < 7 0 . , - 5 6 . , 2 8 . , - 8 . , 1 . , - 9 . , 3 6 . , - 8 4 . , = 2 . , 1 . , 4 . , 1 • , — -j • , 1 0 ■ , , 3 • ,3 . , 1> , 1 0 . , *— *■ , 1 • , 1 2 6 . , - 1 2 6 . , 8 4 . , - 3 6 . , 9 . / DATA 238 D F CM, 1 ) , R C M ) , R F C M ) , R S C M ) , C C 1 ) , C C 2 ) , C C 3 ) , С < 4 ) , С C 5 ) , С C 6 ) , С C7 ) 1 C C 8 ), C C 9 ), C C 1 0 )/ 1 . , 0 . 5 , 2 О•4 1 6 6 6 6 6 6 6 6 6 6 ,О.3 7 5 ,
О .3 4 3 6 1 1 1 1 1 1 1 1 ,0 .3 2 9 3 6 1 1 1 1 1 1 1 , 4 О .3 1 5 5 9 1 9 3 1 2 1 7 ,0 .3 0 5 2 6 6 2 0 3 7 0 4 , Ь 0 .2 9 4 3 6 3 0 0 0 4 4 1 ,0 .1 4 9 1 3 3 8 5 0 3 0 9 / I ERR “ О 10 = IO R D E R IF СIO R D E R I ERR Ю ~ 20 I - 1, = Y N U ) = CALL F f. X < 1 > , Y ( 1 , 1 ) , D F ( 1 , XN C O N T IN U E 40 1 = 1 , DF C l, 1 ) R S C l) = h = D F C l , 1 )-*H D F C I,1 ) C O N T IN U E C IO R D E R .EQ . 1> GO TO 150 C O N T IN U E DO 60 К ХСЮ •60 lO N X (. 1 > IF 50 ТО C O N T IN U E DO 40 GO 1 Y< I , О 30 10) I О = 10 C O N T IN U E DO 20 . L.E . = 2 , IU = Х С К -П + H C O N T IN U E DO 140 J = J1 = DO 100 .J 2 , 10 - 1 К - К 1 = К DO 80 2, I 1 = 1, Y U , К > DO .J 70 = L M Y ( I , К 1) = 1, Y <I , Ю - J1 Y C I,K ) +- D F C I,L> * C CL> 70 C O N 7 IN U E SO C O N T IN U E CALL DO F (. X С Ю , Y < 1 , К > , R F , M> 90 I = F:F < I ) = M RF СI ) *H C O N T IN U E 90 IF <K CALL 1OO 1, .EQ. J 1 J ) = J D E 2 S R S C M , «J 1 , R F , D F , R } C O N T IN U E DO 130 DO I — 120 1, L M = R l - DO 110 2, J O. К = K1 = (J R l = R l L L , + J 1 )* < J - 2 ) /2 1 + D F ( I , Ю * D <К 1 ) + К
1 10 C O N T IN U E DF < I , L ) 120 = Rl C O N T IN U E D F ( 1 , 1 ) = R S ( I ) C O N T IN U E 130 140 C G N T IN U E 150 C O N T IN U E IF (IE R R CALL .NE. 01 L O A D G O C IE R R ,3 3 , 6H UTD E121 RETURN END 1.3. Один шаг метода Адамса пятого порядка SU E :R O U T I NE D E 2 6 R <F , M , J S T A R T , YX , X , H , D E L T Y , D F , R F , Y P , R Y , R F N , IE R R '' IN T E G E R REAL I E R R , .J S T A R T , M D E L T Y ,D F ,H ,R F ,R F N ,R Y ,X ,Y P ,Y X D IM E N S IO N D E L T Y ( M l , DF C M , 5 > , R F ( M > , R F N ( M l * R Y ( M, 5 ) , Y P ( M l , Y X ( M1 EXTERNAL IN T E G E R REAL D E 2 S R P , D E 2 S R S , D E 3 3 R , LOADGO I,IM A X ,IO R D E R ,К ,К 1 ADS, A L P , С 1 , C 2 , C 3 , C 4 , E P S , HOLD, P , RX, XOLD 1 L O G IC A L BUL2 D IM E N S IO N R X (51 DATA С 1 ,C 2 , C 3 ,0 4 / 0 .5 ,0 .4 1 6 6 6 6 6 6 6 6 6 6 * O . 3 7 5 , - O . 0 2 6 3 3 S S S S S S S S / , IM A X : / 6 / , Р / 0 . 0 1 / , E P S / 0 . OOOOOO1/ IF (J S T A R T IF . GE. (IE R R IE R R GO lO .EQ. = TO 20 TO Ю 60 30 К - K1 * К DO 20 1, + I 4 1 = 1, - M D F( I , К 1 - D F < I , К 11 C O N T IN U E TO 60 C O N T IN U E XOLD DO - 50 X I = Y P ( I I 1, - II Y X ( 1 1 C O N T IN U E IE R R IF 240 GO 40 C O N T IN U E GO 50 TO О D F ( I , К 1 40 01 GO C O N T IN U E DO 30 01 = О (J S T A R T .N E. 01 GO TO 60
IO R D E R = 5 C ALL F ( X , Y X , R F , M) CALL D E 33R C F ,M ,IO R D E R ,X , Y X , H ,D F , R X , RY, 1 R F N ,R F ,D E L T Y ,I) GO 60 TO 70 C O N T IN U E IF (H .EQ . ALP = C ALL 7 0 HOLD) GO TO 70 H/HOLD D E 2 3 R P СM , J O R D E R , A L P , D F ) C O N T IN U E DO 80 I = Y X ( I ) 1, = 1 RFC I ) = + *C1 D F C I,3 > * C 2 + DF ( 1 , 1 ) D F ( 1 , 1 ) 1 8 0 M YP C l) + + DFC1 ,2 ) DF ( 1 , 2 ) + D F ( I , 4 ) * 0 3 + D F < I ,3 ) ^ DF ( I , 4 ) C O N T IN U E X DO = XOLD 130 К BUL2 9 0 + H “ 1, = IM A X .TRUE. C O N T IN U E DO 100 I = 1, D E LT Y ( I ) lOO M = - R F C D * C 3 C O N T IN U E CALL F СX , Y X , R F , M ) DO 120 I = 1, RFC I ) = RFC I ) * H DELTY C l) Y X C I) IF = M = DELTY C l) D E L T Y C D (A E S C Y X СI ) ) DELTY C l) 1 10 = + + RF C l ) * C 3 Y X СI ) .L E . P ) GO TO 110 D E L T Y СI ) / Y X СI ) C O N T IN U E IF C A B S CD E L T Y C l ) ) 1 BUL2 120 = .G T. LP S ) .F A L S E . C O N T IN U E IF 1 3 0 CBUL2 ) GO TO 150 C O N T IN U E IERR DO 140 = 65 140 I = 1, M Y X C I) = Y P СI ) C O N T IN U E X = GO XOLD TO 180 150 C O N T IN U E 1 6 0 CALL D E 2 S R S C M , 1 O R D E R , R F , D F , DEL C O N T IN U E DO 170 I = D E LTY CI> Y X C I) - 1, = TY ) M DF СI , 5 ) * C 4 Y X C I) + DELTY C D 24 Г
170 C O N T IN U E 1SO C O N T I NIJE IF (IE R R 1 CALL .NE. O) L G A D G O ( I E R R , 2 6 , 6 H U T D E 12> .J S T A R T = HOLD = RETURN H 1 END 1 . 4 . Интегрирование системы методом Адамса пятого порядка S U B R O U T IN E D E 2 7 R (F , М , X N , Y N , ХК , Н , Y , D E L T Y , D F , 1 R F ,Y P ,R Y ,R F N ,IE R R ) IN T E G E R REAL IERR,M D E L T Y ,D F ,H ,R F ,R F N ,R Y ,X K ,X N ,Y ,Y N ,Y P D IM E N S I ON DELTY C M ),D F ( M, 5 ) , R F (M l, R F N ( M), 1 R Y ( M, 5 ) , Y ( M > , Y N ( M) , Y P ( M) EXTERNAL IN T E G E R A B 3 , D E 2 6 F , LO AD O O , S IO N 1 ,.JS TA R T REAL A D S ,H I, H S ,S IG N ,X L O G IC A L BUL IE R R DO = O 1О I Y ( I ) 10 = 1, M = Y N ( I ) C O N T IN U E X IF = XN (XN H .EQ. = XK) BUL = C O N T IN U E .R A IS E . JSTAR T = C O N T IN U E О 30 ( TO 60 S IG N C H ,X K -X N ) 20 IF GO .NOT. BUL) GO TO 40 H = HS GO TO 6 0 40 C O N T IN U E HI IF = XK = = H HI = AD S( H >) GO TO 50 .TRUE. C O N T IN U E D E 2 6 R ( F , M, J S T A R T , Y , X , H , D E LTY, D F, R F , 1 Y P ,R Y ,R F N ,IE R R ) IF (IE R R CALL RETURN END 242 .G T. H BUL CALL 60 X (A B S C H l) HS 5 0 - .E Q . O) GO TO 30 L O A D G O ( I E R R , 2 7 , 6 H IJ T D E 1 2 )
2 . Решение задачи Коши для системы уравнений первого порядка (с контролем точности) 2 Л . Интегрирование системы классическим методом Рунге-Кутта 4-го порядка с контрольным членом Егорова S U B R O U T IN E D E 13 R <F , М , X N , Y N , Х К , H M I N , E P S , Р , Н , 1 Y ,Y P ,D E L T Y ,Y R ,D Y ,IE R R ) IN T E G E R REAL 1 IERR,M D E L T Y ,D Y ,E P S ,H ,H M IN ,P ,X K ,X N ,Y ,Y N ,Y P , YR D IM E N S IO N B E LTY C M ),D Y C M ), Y C M ), YN C M ), 1 Y P C M ) , Y R CM) EXTERNAL LOADGO IN T E G E R BB,E R E A L A B S , B , B C , B D , B E , B F , C , S I G N , I J, V , Z L O G IC A L A , BUL, W D IM E N S IO N DATA B D C 4 ), B E C 3 ), BFC3) B D С 1 ) , B D C 2 ) , B D C3 ) , B D C 4 ) / 0 .1 6 6 6 6 6 6 6 6 6 6 7 ,О .3 3 3 3 3 3 3 3 3 3 3 3 , О .3 3 3 3 3 3 3 3 3 3 3 3 ,0 .1 6 6 6 6 6 6 6 6 6 6 7 / , B E С 1 ) , B E С2 ) , B E С3 ) / 0 . 5 , 0 . 5 , 1 . / , BF C l ) , B F ( 2 ) , B F C 3 ) / - 1 . 0 , - 1 . О, 1 . О/ IE R R * 32. С - XN Ю E CX N A YNCE) .EQ. = M XK) GO TO 150 .F A L S E . BUL = H S IG N (H ,X K -X N ) = C .F A L S E . .NOT. H = GO A) GO TO 30 IJ TO 150 C O N T IN U E V IF 40 1, C O N T IN U E IF 30 = Y <E ) = C O N T IN U E IF 20 О В DO lO = = XK - C CABS CV) . GT. U = H A = .T R U E . H = V A B S СИ )) GO TO 40 C O N T IN U E BC DO C 50 E YPCE) - 1 , = M YCE> 1 243
YRCE) 50 = YCE) C O N T IN U E CALL DO FCC, YRC1 ) , D Y C l) ,M ) 60 E = D Y (E ) 1, = YCE) = M H*DYCE) YCE) DELTYCE) 60 = + BDC1)*DYCE> DYCE) C O N T IN U E DO 90 C BB = DO = BC 70 1, + E 3 B E CB B ) * H — YRCE) 1, = M Y P CE) + BECBB)*DYCE> C O N T IN U E 70 CALL DO F СC , Y R < 1 ) , D Y С 1 ) , M ) SO E — 1, M DYCE) = H*DYCE> YCE) = YCE) + BD CBB+1)*D YCE) DELTYCE) 80 9 0 = C = N = BC + H .TRUE. lOO E Z AB SC YC E)) = = CZ 1, M .L T . P ) DELTYCE) = GO TO D ELTYCE)/YCE) 110 E = 1, M Z = ABSCDELTYCE) ) IF CZ . GT. E PS ) GO IF C .NU T. IF CB*Z W 1 10 - W> TO GO .L T . 120 TO 110 E PS) GO TO .F A L S E . C O N T IN U E IF CW) GO TO H = 2 .0 *H 20 C O N T IN U E DO 130 E YCE) = = 1, M Y P CE) C O N T IN U E IF CBUL) GO - TO C = C H = O .5 *H A = IF 140 И . F A LS E . CABSCH) H = BUL GO 140 lOO C O N T IN U E DO 130 B F CB B ) * D Y C E ) C O N T IN U E IF 120 + C O N T IN U E DO lOO DELTYCE) C O N T IN U E . GE. HM IN) SIG NCH M IN,H > = TO .TRUE. 40 GO TO 40 110
150 IE R R = CALL L O A D G O < I E R R , 1 3 , 6 H U T DE 10 ) 65 RETURN END 2.2. Интегрирование системы методом Мерсона (4-й порядок) SUBRO UT IN E D E 1 O R <F , М , X N , Y N , X К , НМ I N , E P S , Р , Н , 1 У , РА, IN T E G E R REAL I ЕРЕ) IE R R ,И E P S , И , Н М IN , Р , R А , Х К , X N , V , VN D IM E N S IO N RAC 1 ) , Y< 1 ) , Y N C M ) E X T E R N A L LOADGO IN T E G E R REAL I , I В 1 , I B 2 , 1 J K O , I J K 1 , I U K 2 , J , SW AB S, E , E 5 , FOUR, H 3, H S, 0 Р 5 , Р 5 , Q , R , S IO N , TH REE,X,XS,ZERO 1 LOGI CAL DATA 1 1 . 5 , 3 . , 4 . , . 5 E —4 / IE R R DO = О 10 I Y ( I ) 1О B E , BH, BR, ВX Z E R O ,P 5 ,O P S ,T H R E E ,F O U R ,E 5 / 0 ., . 5 , — 1, = YN < I ) C O N T IN U E IF < XN E5 2 0 .EQ. - IB 1 XK) GO TO 230 5 . «E P S = M + M IB 2 = BH = IB 1 + .T R U E . BR = . TRUE. EX = .TRUE. M H = S I G N ( A B S C H ) , XK X = XN - XN) C O N T IN U E XS = X DO 30 J = 1, IJ K O = M R A < I JK O ») 30 C O N T IN U E 4 0 C O N T IN U E HS Q BE IF = = M + J = YCJ) H X + H - = .TRUE. < .NOT. 1 ZERO) 2 Z E R O ))) H Bfo 5 0 M = < CH .O R . XK = XK GO - .G T. ZERO CH .L T . TO 50 .AND. ZERO Q .AND. .GE. Q . LE. X .F A L S E . C O N T IN U E 245
НЭ = Н /THREE DO 190 SW C ALL DO 1, 5 F (X ,Y ,R A ,M ) 150 О I = = 1, M H 3 * R A (I) IJ K O = IJ K 1 = IB 1 + I IJ K 2 = IB 2 + I GO 60 * TO M + I ( 6 0 , 7 0 , 8 0 , 9 0 , l O O ) , SW C O N T IN U E R = Q R A C IJK 1 ) = О GO TO H O C O N T IN U E 7 0 R = GO 8 0 P 5 *(Q TO + R A ( I J K l ) ) П О C O N T IN U E R = TH REE*© R A C IJ K 2 ) = R R ■ . 3 7 5 * (R GO TO 110 9 0 + R A C IJ K l)) C O N T IN U E R = R A C IJ K l) R A ( I J K l ) R = GO lO O = + R O PS* ( R TO R A (IJ K 2 )> 110 C O N T IN U E 1 lO R = P S *(Q G! + R A C IJ K l)) = A B S ( R + R —O P S * C Q + R A ( I J K 2 ) ) ) C O N T IN U E Y C I ) IF = (S W RAC I J K O ) .NE. 5 ) + = A B S C Y C I)) R = E3 IF TO (E .-G E . P ) R (Q .L T . R) GO IF ( .NO T. IS O . = E *E 5 TO BX) - .T R U E . BH = .F A L S E . IF 1 = 140 GO BR H TO 210 P5*H (ABSCH ) GO H BX TO = .G E. H M IN ) 120 S IG N ( 1 . , H )*H M IN = .F A L S E . C O N T IN U E DO 130 J = 1, IJ K O = M + YCJ) 1 30 R GO E IF 120 FO U R *Q C O N T IN U E = M J RAC IJ K O ) .
X - GO 140 XS TO 40 C O N T IN U E IF 1 150 (Q .GE. BE “ 0 .0 3 1 2 5 *R > .F A L S E . C O N T IN U E GO 160 TO C 1 6 0 , 1 9 0 , 1 7 0 , I S O , 1 9 0 ) , SW C O N T IN U E X = GO 170 X + TO H3 190 C O N T IN U E X = GO 130 X + TO P5*H 3 190 C O N T IN U E X 190 = X + P5*H C O N T IN U E IF C GO H 1 .NOT. (BE TO 2 0 0 = H + H BX 2 0 0 = .A N D . BH .A N D . ------ B R )) - ' .TRUE. C O N T IN U E BH IF = .T R U E . (B R ) H = GO 2 1 0 GO TO 20 HS TO 230 C O N T IN U E IE R R = 65 GO TO 2 2 0 220 C O N T IN U E CALL 23 0 L O A D G O ( IE R R , 1 0 , 6 H U T D E 1О ) RETURN END 2.3. Интегрирование системы методом Хойна (3=й порядок) S U B R O U T IN E DE11R ( F , М, XN, Y N , ХК, НМ IN , E P S ,Р ,Н , 1 Y ,Y P ,D E L T Y ,R A B ,IE R R ) IN T E G E R IERR,M REAL D E L T Y ,E P S ,H ,H M IN ,P ,R A B ,X K ,X N ,Y ,Y N , 1 YP D IM E N S IO N 1 D E L T Y (M ),R A B (M ,2 ), Y ( M ) , Y N (M ), Y P (M ) EXTERNAL LOADGO IN T E G E R B A ,E REAL A B S , B , B D , B G , C , L , N , 0 , S I G N , U , X, Z L O G IC A L A , B B , BUL D IM E N S IO N DATA L (2 ) L ( l ) , L ( 2 ) / 0 . , 1 . / , N , 0 / 0 . 5 , O . 5/ 247
IE R R В С = = DO 10 = О 8 .0 XN 10 Е = 1, УСЕ) = YNCE) C O N T IN U E IF СXN .EQ . A = C = GO - IF A) TO X к - c .G T. W = H A = .T R U E . H = X = - DO 50 E = 40 1, = M YCE) TO 110 C O N T IN U E 70 E = 1, = M = YCE) YRCE) C O N T IN U E C = Z H = H *G .5 BA = GO TO 2 H O C O N T IN U E BA = 3 GO TO llO C O N T IN U E DO lO O E = 1, DELTYCE) YCE) = = M CYCE) YCE) + C O N T IN U E H GO 24a TO C O N T IN U E YCE) 1 10 GO 1 D E LT Y (E ) 100 AB SC H )) C BA DO 90 30 230 C A B S СX ) GO 80 TO w YRCE) 70 GO C O N T IN U E Z 60 230 C O N T IN U E X 50 TO = -F A LS E . SIG N C H ,X K -X N ) .NOT. H 40 GO C O N T IN U E IF 3 0 XK) .F A L S E . B 1J L H = 20 М = 2 . 0*H TO 170 C O N T IN U E BG “ DO 120 C E = 1, M - DELTYCE) ) / 3 .О DELTYCE)
R A B (E ,2 ) 120 C O N T IN U E CALL DO F C C , R A B C 1 , 2 1 , R A B C 1 , 1 > , M) 130 E = 1, R A B CE, 1 ) 130 C O N T IN U E DO 1 4 0 E = R A B C E ,1 )*H 1, M = YC E .) + DO = BG + 150 E YCE) 0*H = = 1, M YCE) + L < 1)*E A B C E ,1) C O N T IN U E CALL F СC , R A B 0 , 2 ) , R A B С 1 , 1 ) , M ) DO 160 E YCE) = = 1, N YCE) + L C 2 )* R A B C E ,1) *H 160 C O N T IN U E 170 C = BG + H GO TO C6 0 , 8 0 , 9 0 ) , B A C O N T IN U E BB = DO 180 .TRUE. E = BD = IF CBD 1, M AB SC YC E)) .L T . P ) D ELTYCE) 130 « 190 BD IF E = = TO 180 D ELTYCE)/YCE) 1, M ABSCD ELTYCE)) CED IF .G T. C E PS) -NOT. IF GO BB) <B *B D BB = TO GO .L T . 200 TO EPS) 190 GO TO 190 TO 40 .F A L S E . C O N T IN U E 190 IF C .N O T . BB) = H + H BUL = .F A L S E . H GO TO GO TO 20 20 C O N T IN U E DO 210 GO C O N T IN U E DO 200 N *R AB C E ,1) C O N T IN U E C 150 M = R A B СE , 2 ) 140 YCE) = 210 E = 1, M YCE) = YRCE) C O N T IN U E IF CBUL) GO = C H = 0 .5 *H A = .F A L S E . IF - TO C 220 H CABSCH) . GE. H M IN ) H = SIG NCH M IN,H ) BUL GO = TO GO . TRUE. 40 249
220 C O N T IN U E IE R R CALL 230 = 65 L O A D G O C IE R R ,1 1 , 6 H U T D E 1O ) RETURN END 2.4. Один шаг метода Фельберга 5-го порядка S U B R O U T IN E D E 1 5 R C F , М, - J S T A R T , H M I N , E P S , P , Y X , X , 1 H ,B U L ,X P ,Y P ,D Y ,R 1 ,R 2 ,R 3 ,R 4 , 2 IE R R ) IN T E G E R REAL I ERR , -JSTART , M D Y ,E P S ,H ,H M IN ,P ,R l,R 2 ,R 3 ,R 4 ,X ,X P ,Y P , 1 YX L O G IC A L BUL D IM E N S IO N B Y C M ),R 1 C M ),R 2 (M ),R 3 (M ),R 4 (M > , Y P C M ) , Y X CM) 1 EXTERNAL IN T E G E R REAL A B S ,L O A D G O I A B S , A L P , EPS i , H R , H R 1 , MU, MU1 , Q , S IG N , Z L O G IC A L B U L H , BULHM D IM E N S IO N DATA A L P ( 5 ) , MU( 1 4 ) , MU1 C 3 ), Q (5 ) M U 1 ( 1 ) , MIJ1 ( 2 ) , M U 1 ( 3 ) / О . 2 5 , O . 3 7 5 , 1 O .923076923077/ DATA M U C 1 ) , MUC2 ) , M U C 3 ) , M U C 4 ) , M U C 5 ) , 1 M U C 6 > , M U C 7 ) , M U ( 8 ) , M U C9 ) , M U ( 1 0 ) , сч со MUC1 1 ) , MUC1 2 ) , M U ( 1 3 ) , MUC1 4 ) / 0 . 2 5 , ю 2 .0 3 2 4 0 7 4 0 7 4 1 ,-3 .9 3 6 2 1 8 6 7 8 8 2 , O .0 9 3 7 5 ,0 .8 7 9 3 8 0 9 7 4 0 5 6 , -3 .7 2 6 7 0 8 0 7 4 5 3 ,3 .7 7 6 3 9 7 5 1 5 5 3 , 3. 5 2 9 5 5 2 8 1 1 4 1 ,-0 .1 0 1 3 0 6 *7 9 7 7 4 6 , м да ■> -O . 2 9 6 2 9 6 2 9 6 2 9 6 ,6 .7 5 , -4 .6 6 3 1 5 7 8 9 4 7 4 ,1 .5 2 8 7 3 2 8 9 4 7 4 , -0 .9 2 8 1 2 5 / DATA A L P C I> , A L P C 2 ), A L P ( 3 ) , A L P ( 4 ) , A L P <5) i- сч со <ип /О .2 3 4 1 6 5 4 7 0 3 9 7 ,1 .0 2 5 3 9 8 2 7 0 3 7 , О .5 0 6 1 3 1 4 9 0 3 4 2 ,- О .3 5 5 6 3 8 3 0 8 1 6 5 , О .0 7 1 8 4 6 2 2 3 8 7 1 7 / ,QC1 ) , G ( 2 ) , Q C 3 ) , Q ( 4 ) ,Q C 5 )/ 0 .0 7 6 3 3 3 8 8 3 3 3 8 9 , -O .3 2 3 3 9 1 3 1 2 8 6 5 ,- 0 .8 0 2 9 9 7 0 7 6 0 2 3 f О . 5 5 , О . 0 3 6 3 6 3 6 3 6 3 6 3 6 / IE R R = BULHM О = .F A L S E . BULH = .T R U E . EPS1 = E PS /32. IF C -JSTART . EQ. - 1 ) DCi = M 10 I YP C l) 250 1, = Y X C I) GO TO 20
10 C O N T IN U E ХР = X CALL 20 F C X P ,Y P ,D Y ,M ) C O N T IN U E HR = DO M U 1C1)*H 30 I = Y X ( I ) 30 1, - M Y P ( I ) + H R * D Y (I) C O N T IN U E CALL FCXP HR = M U C 2 )*H DO 40 I - H R ,Y X ,R 1 ,M ) 1, Y X C I ) 40 + = M Y P C I ) + HR*CDYC1) + 3 . * R 1 ( I ) > + MUC4) C O N T IN U E CALL FCXP HR = M U C 3 )*H DO 50 I + = Y X C I) 1, = M Y P C I ) 1 5 0 MU1 C 2 ) * H , Y X , R 2 , M > + * R 1 ( I ) H R * CD Y C l ) -*• M U (5 )* R 2 C I )) C O N T IN U E C ALL FCXP HR = M U C 6 )*H DO 60 I + = Y X C I ) 1, = M Y P C I ) 1 + * R 1 C I) 2 6 0 MU1 C 3 ) * H , Y X , R 3 , l i ) H R * CD Y C l ) + + MUC7) M U C8 ) * R 2 C l ) + MU ( 9 ) * R 3 C I ) ) C O N T IN U E C ALL FCXP HR = -M U C 1 0 )*H DO 70 I + - Y X C I) 1, = M Y P C I) 1. H R * C —D Y ( I ) + * R 1 C l) 2 70 H ,Y X ,R 4 ,M ) + + MU С1 1 ) * MU C1 2 ) * R 2 C l ) MU C 1 3 ) * R 3 C l ) + + M U C 1 4 )*R 4 C I) ) C O N T IN U E C ALL FCXP HR A L P C 3 )*H = HR1 DO = + 0 .5 * H ,Y X ,R 1 ,M ) H *Q C 5) 90 I = Y X C I ) 1, = M Y P C I ) + H R * C A L P C 1 ) * D Y СI ) 1 A L P C2 ) * R 2 C l ) 2 * R 4 C I) Z = 1 + IF Z IF + + A L P C4 ) Q C 2 )*R 2 C I) Q C 4 )*R 4 C I) -G 7. CA B S C Y X C l ) ) = R 3 C I) A L P C5) *R1 C D ) H R 1 * CQ С 1 ) * D Y C l ) Q C 3 )* R 3 C I) + + P ) Z = + + R l СI ) ) Z/YX C I) A B S CZ ) CZ .L E . IF (B U L H M ) H = BUL BULH E PS ) GO GO TO TO SO 100 H * 0 .5 - .F A L S E . = .F A L S E . 251
IF (ABSCH ) 1 GO H 80 TO = .G T. ABS C H M IN )) 20 S IG N (H M IN ,H > BULHM - GO 20 TO .T R U E . C O N T IN U E IF (Z .L T . BULH C O N T IN U E 90 X lO O = XP + = E P S 1 ) GO TO 90 .F A L S E . H IF (B U L H ) GO TO H = H + H 110 C O N T IN U E IE R R = 65 CALL LOADGO< IE R R ,1 5 ,6HUTDE16) C O N T IN U E 110 J S T ART = 1 RETURN END 2.5. Интегрирование системы методом Фельберга 5=го порядка S U B R O U T IN E D E 1 6 R (F ,M ,X N ,Y N ,X K ,H M IN ,E P S , 1 Y ,R A B ,IE R R ) IN T E G E R REAL IERR,M E P S ,H ,H M IN ,P ,R A B ,X K ,X N ,Y ,Y N D IM E N S IO N EXTERNAL IN T E G E R REAL DO A B S ,H I,H S ,S IG N ,X lO = 10 BUL О I * 1, M Y ( I ) = Y N ( I ) C O N T IN U E X IF = XN (X N .E G !. MP2 - M XK) + = MP2 М3 = М2 + M M4 - М3 + M M5 = M4 + M = BUL GO TO 50 2 М2 H + M S IG N C H ,X K -X N ) = .F A L S E . JSTAR T 2 0 D E 1 5 R ,L O A D G O I , J S T A R T ,М 2 ,М 3 ,M 4,M 5,M P2 L O G IC A L IE R R R A B < 1 ) , Y C M ), YNCM) = О C O N T IN U E IF C .NO T. H = HS BU L) GO TO 3 0
GO TO 50 C O N T IN U E 30 HI = XK - X IF CABSCHi) .G T. A B S C H )) GO TO 40 HS = H H = HI BUL = .T R U E . C O N T IN U E C A LL D E 1 5 R C F , M , J S T A R T , H M I N , E P S , P , Y , X , H, 40 1 2 3 B U L , R A B < 1 > , R A B < 2 ) , R A B CM R 2 ) , R ABCM 2),RABCM 3),RABCM 4>, RABCM 5). IE R R ) IF 50 CIERR .L T . 6 5 ) GO T O 2 0 CALL L O A D G O C IE R R ,1 6 , 6H U TD E1 6 ) RETURN END 2.6. Построение начальных значений при интегрировании системы методами Адамса S U B R O U T IN E D E 3 2 R C F ,М , IO R D E R ,X N ,Y N ,H M IN ,E P S , 1 P , H , D F, X , Y , BUL, R S, R F , R , 2 IE R R ) IN T E G E R REAL IE R R , IORDER, M D F , E P S , H , H M IN , P , R , R F ,*R S , X , XN, Y , YN L O G IC A L BUL D IM E N S IO N D F CM, 1 > , R C M ) , R F C M ) , R S C M > , 1 X C IO R D E R ), Y C M ,1 ) , YNCM) EXTERNAL IN T E G E R REAL A B S ,D E 2 S R S ,L O A D G O ,S IG N I , 1 0 ,J , J 1 , K , K 1 , L A B S ,C ,D ,R 1 , S IG N L O G IC A L BUL1 D IM E N S IO N DATA 1 2 C C IO ),D C 4 5 ) D C 1 ) , D C 2 ) , D C 3 ) , DC4 ) , D C S ) , D < 6 > , D C 7 > , D C S ) , D C 9 ) , D C l O ) , DC 1 1 ) , DC 1 2 ) , DC 1 3 ) , 4 D C 1 4 ) , D C 1 5 ) , DC 1 6 ) , DC 1 7 ) , D C 1 8 ) D C1 9 ) DC20) , DC21) DC22) DC23) DC 2 7 ) DC24) DC 2 5 ) , D C 2 6 ) DC 2 8 ) 5 DC29) DC30) , D C31) DC32) DC 3 3 ) 6 DC 3 4 ) D C 3 5 ) , DC3 6 ) DC 3 7 ) D O S ) 7 DC39) D C4 0 ) , D C 4 1 ) D ( 42 > 8 D ( 4 4 ) . D C 4 5 ) / 1 . , 11 .. , - 2 . 3 9 -4 . i —A ... I < - 3 5 . , 3 5 . , - 2 1 . , 7 . 6 . , —4 . , 1 . , —5 .•,91 0 , 15. , -2 0 . , 15. 7 0 . , - 5 6 . , 2 8 . , - 8 . 126. ,-1 2 6 ,. , 8 4 . 9 9 1. . 1. ,- 3 6 . 9 —3 . , 3 . ■t—10. ,5. , 1. , DC 4 3 ) , ,5, ., — / .,2i.e —3 . , 2 8 . , —5 6 . , —9 . , 3 6 . , —8 4 • , ,9 . / 253
1 DATA C ( 1 > , C ( 2 > , C < 3 > , C ( 4 > , C < 5 ) , C ( 6 ) , C ( 7 ) , C ( 8 ) , C ( 9 ) , C ( 1 0 > / 1 . , 0 . 5 , 2 О . 4 1 6 6 6 6 6 6 6 6 6 6 ,0 .3 7 5 , 3 O .3 4 8 6 1 1 1 1 1 1 1 1 ,0 .3 2 9 8 6 1 1 1 1 1 1 1 , 4 0 .3 1 5 5 9 1 9 3 1 2 1 7 ,0 .3 0 5 2 6 6 2 0 3 7 0 4 , О .2 9 4 3 6 8 0 0 0 4 4 1 ,0 .1 4 9 1 8885 0 3 0 9 / 5 IE R R = 10 IO R D E R я BU LI IF Ю О = .F A L S E . (IO R D E R IE R R = IO * 10 20 I = 1, = M Y N < I ) = CALL XN F ( X ( l > , Y ( i , 1 ) , D F ( 1 , 1 ) , M ) C O N T IN U E 40 I = 1, M D F ( 1 , 1 ) = R S ( I > D F( 1 , 1> = DF С1 , 1 > * H C O N T IN U E (IO R D E R .E Q . 1> GO TO 190 C O N T IN U E DO 6 0 К Х (Ю 60 Ю X ( 1) IF 50 ТС C O N T IN U E DO 40 GO 1 Y < I , 1> 30 iO> C O N T IN U E DO 20 .L E . = 2 , = X (K -1 > 10 + H C O N T IN U E DO 140 J *J 1 - = DO = J 2 , - 100 1 К K1 = DC 80 10 = К 2 , - I J 1 = 1, M Y ( I , К ) = Y ( I , K 1 ) DO 7 0 L = 1, 31 Y ( I , K> = Y ( I , Ю + D F( I , L ) *C (L > C O N T IN U E 70 SO C O N T IN U E CALL DO F ( X ( K ) , Y ( 1 , K ) , R F , Ii > 90 I = RF ( I ) 9 0 IF R F ( I -) * H (K .E Q . J> vJl 130 DO = J D E 2 8 R S ( M, J 1 , R F , DF , R ) C O N T IN U E DO I = 120 R 1 254 = M C O N T IN U E CALL lOO 1, 1, L — О . M 2 , J
DO П О К К1 « = L, CJ 1 - J I)*CJ - 2>/2 + К - L. ■*- 1 R l 1 10 - R l + B F C I,K )*D C I? D C O N T IN U E DF СI , L ) 120 * Rl C O N T IN U E D F C I , 1 ) 130 « RS < I ) C O N T IN U E C O N T IN U E 140 DO 160 I R C I) IF = = 1, DF C l , 1 0 ) CABSCYCI, 1 0 ) ) R C I) 150 M = .L E . P> GO TO 150 R C I ) / Y < I , IO) C O N T IN U E R C I) = R C I)*C C IO > IF CABSCRCI)) C O N T IN U E 16 0 GO 170 TO GO E PS ) GO TO 170 GO TO 30 190 C O N T IN U E IF C .NO T. IERR .G T. - TO BU L1) GO TO 130 65 190 C O N T IN U E 130 H = H *0 .5 BUL IF = .F A L S E . (ABSCH ) H = GO AB SC H M IN )) S I G N СНМI N , H ) B U L1 190 . GT. = TO .T R U E . 30 C O N T IN U E IF 1 (IE R R CALL .NE. 0 ) LOADGO СIE R R , 3 2 , 6 H U T D E 1 2 ) RETURN END 2.7о Один шаг метода Адсмга 5-го порядка SUBROUT I NE D E 2 S R СF , М , J S T A R T , Н М I N , Н М А Х , E P S , Р , 1 У X , X , Н , B U L , D E L T Y , D F , RF , Y P , 2 R Y ,R F N ,IE R R ) I NT E G E R REAL 1 IE R R , J S T A R T , M D E L T Y , D F , E P S , H , НМA X , НМI N , P , R F , R F N , R Y , X, Y P ,Y X L O G IC A L BUL D IM E N S IO N 1 EXTERNAL 1 D E L T Y C M ), DF CM,5 ) , R F ( M > , RFNCM) R Y C M, 5 ) , Y P C M ) 5YXCM ) A D S , D E 2 S R P , D E 2 8 R S , D E 3 2 R , LOADGO » S IG N 255
IN T E G E R REAL I , IM ,IO R D E R ,J E R ,К ,К 1 ,L A B S , A L P , С 1 , C 2 , C 3 , C4 , C 5 , C 6 , EPS 1 , E P S 2 , 1 H NEW ,H O LD ,RX,SIG N,XO LD L O G IC A L B U L1 , BUL2 D IM E N S IO N DATA R X (5 ) C l,C 2 ,C 3 ,C 4 ,C 5 ,C 6 / C .5 , 1 0 . 4 1 6 6 6 6 6 6 / 5 .6 6 6 , О . 3 7 5 , 2 - О .0 2 6 3 8 8 8 8 8 8 8 8 8 ,1 4 .2 1 0 5 2 6 3 1 5 8 , 3 О .03125/ L = 1 B U L1 - .F A L S E . EPS1 = C 5*E PS EPS2 = C6* EPS IF (J S T A R T .GE. O) GO TO 40 IM = О IF (IE R R IE R R GO ю -EQ. = TO TO 10 О 60 1 = (A LP .EQ . CALL D E 2SR P( M, I ORDER, A L P , DF) HNEW *= 30 0 . 5 ) HOLD К = K1 >1 DO HOLD/HNEW DO 20 1, 4 + IF I = 1 , D F ( I , K) 20 = M D F ( I , К ) C O N T IN U E 30 C O N T IN U E GO TO 60 C O N T IN U E 40 XOLD DO = 50 X 1 = 1 , Y P ( I ) 5 0 = M Y X ( I ) C O N T IN U E IE R R IF = О (J S T A R T IM - .NE. O) GO TO 60 О IO R D E R = 5 C ALL F ( X , Y X , R F , M) CALL D E 3 2 R (F ,M ,IO R D E R ,X ,Y X ,H M IN ,E P S ,P , 1 H , D F, R X , R Y , BUL, RFN, R F , 2 IF (J E R D E LTY,JE R ) .EQ. O) GO TO IE R R = GO TO 66 280 C O N T IN U E IF <H ALP 256 GO C O N T IN U E ALP <5.0 O) .E Q . = HNEW) H/HNEW GO TO 70 70
CALL 70 D E 2 8 R P СM , I O R D E R , A L P , D F ) CO N TIN U E DO 80 I = YX < I > 1, “ 1 RF C l) = Y P C I) + *C1 DF ( 1 , 3 ) * C 2 + DF С1 , 1 ) DF С1 , 1 ) 1 80 M + DF ( 1 , 2 ) + DF ( 1 , 2 ) D F( 1 , 4 ) * C 3 . + D F C I,3 ) +' D F(1 ,4 ) C O N TIN U E X 90 = XOLD + H CO N TIN U E DO lO O I = 1, D E LTY( I ) 100 И = - R F (I )* C 3 C O N TIN U E CALL F ( X , Y X, R F , M) BUL2 = DO .TR U E . 120 I = 1, M RFC I ) = R F C I)*H D E L T Y СI ) = DELTY ( I ) + RF ( I >*C 3 Y X C I) = DELTY C l) + Y X C I) IF CABSCYX C l ) ) D E L T Y СI ) 110 (A B S (D E L T Y ( I ) ) 1 BUL2 CBUL2) GO TO H O .G T . EPS) .G T. E PS1) .F A LS E . GO TO 190 (1 3 0 ,1 5 0 ),L DO = 140 IF 1 1, Г. C A B S CD E L T Y C l ) ) GO TO 150 * C O N TIN U E L « GO 2 TO 90 C O N TIN U E IF C .N O T. IE R R GO 160 = GO TO C O N TIN U E 140 150 P ) C O N TIN U E IF 130 . LE. DELTY C l)/ Y X ( I ) C O N TIN U E IF 120 = = TO BUL1) GO TO 160 65 280 C O N TIN U E H = H *0 .5 BUL = .F A L S E . IF CABSCH) .G T . A B S C H M IN )) GO TO 170 BUL1 = .TR U E . ALP = S IG N C H M IN ,H )*0 .5 / H H = S IG N (H M IN ,H ) GO TO 180 170 C O N TIN U E ALP 180 CALL J Зак. 217 = 0 . 5 C O N TIN U E D E 2 8 R P СM , I O R D E R , A L P , D F ) 2571
IM = GO TO 2 70 C O N TIN U E 190 200 CALL D E 2 S R S СM , I O R D E R , R F , D F , D E L T Y ) HOLD = H C O N TIN U E DO 210 220 210 I = 1, M DELTY C l) = D F C I,5 )*C 4 Y X C I) = Y X C I) + DELTY C l) C O N TIN U E C O N TIN U E DO 240 I = 1, M DELTY C l) = D F C I,5 )* C 4 IF C A D S CYX СI ) ) .L E . P ) DELTY C l) = TO 230 DELTY C l)/ Y X C l) C O N TIN U E IF CA B S CD E L T Y C l ) ) 230 GO .G T . E PS2) GO TO 270' C O N TIN U E 240 IM = IF IM + CIM .N E . H H *2. = B U L1 IF = 3 ) GO TO 230 .F A LS E . CABSCH) -LE . A B S С И М А Х )) ALP = H S IG N C H M A X ,H ) - GO 250 1 TO GO TO 250' S I G N C H M A X , H ) * 2 . /Н 260 C O N TIN U E ALP “ 2. C O N TIN U E 260 CALL D E 2 S R P C M ,IO R D E R ,A LP ,D F ) IM = О GO TO 220 270 C O N TIN U E 280 C O N TIN U E IM IF = О СI E R R .N E . O) C A L L L O A D GO, С I E R R , 2 S , 6 H U T D E 1 2 ) .JSTART = 1 HNEW = H RETURN END 2.b. Интегрирование системы методом Адамса 5-L.ro порядка SU B R O U TIN E DE29R C F ,М ,X N ,Y N ,X K ,H M IN ,НМАХ, E PS, P ,H ,Y ,D E L T Y ,D F ,R F ,Y P ,R Y „ ! R F N ,IE R R ) IN TE G E R 258 IE R R ,M
REAL D E L T Y , D F , E P S , H , НМАХ, НМI N , P , R F , RFN, R Y ,X K ,X N ,Y ,Y N ,Y P 1 D IM E N SIO N D E L T Y C M ), D F (M ,5 ) , R F C M ), RFNCM) , 1 R Y C M , 5 ) , Y C M ) , Y N C M ) , Y P CM) EXTERNAL A B S ,D E 28R ,LO A D G O ,S IG N IN TE G E R I,J S T A R T REAL A B S ,H I, H S ,S IG N ,X LO G IC A L BUL IE R R DO 1О = 10 О I = 1, M Y C I) - YN C l) C O N TIN U E X = XN IF CXN . EQ. H S IG N C H ,X K -X N ) ^ BUL 2 0 - XK) GO TO 60 .F A LS E . C O N TIN U E JSTART 30 = О C O N TIN U E IF C .N O T. H = GO 4 0 BUL) GO TO 40 HS TO 60 C O N TIN U E HI = IF XK X C AB SC H I) HS = BUL H = 5 0 - .G T . A B S C H )) GO TO 50 H = .T R U E . HI C O N TIN U E CALL D E 28R C F, M , J S T A R T , НМI N , HM AX, E P S , P , Y , 1 2 X ,H ,B U L ,D E L T Y ,D F ,R F ,Y P ,R Y ,R F N , IE R R ) IF СIE R R CALL RETURN 6 0 .E Q . O) GO TO 30 LO A D G O C IE R R ,2 9 , 6H U TD E12) END 2.9. Один шаг метода рациональной экстра­ поляции Грэгга-Булирша-Штера перемен­ ного порядка SU B R O U TIN E D E 2 0 R СF , М , I O R D E R , Ш 1 2 , J S T A R T , НМIN , E P S ,X , Y X ,Н , B U L,Y P M ,D E LT Y , FsAB, I E R R ) IN TE G E R REAL IE R R , IO R D E R , I U , J S T A R T , M D E L T Y , E P S , H , H M I N , R A B , X , Y P M , YX LO G IC A L BUL D IM E N S IO N EXTERNAL D E LTY C M ), R A B C 1 ) , Y P M C M ), YXCM) LOADGO 259
INTEGER 1 2 3 REAL 1 2 I , I d , 17, I J d , IJ 7 , IJK1 , IJ K 2 , IJ K 3 , I J K 4 , I J K 5 , I J K d , I.JK7, I J K © , I K S , I P S , J , J J , J M A X , » J R , J S , К , K H , L , MC , N 2 , N2P1 ,N 3 ,N3P1 ,N 4 ,N 5 ,Nd,N 7 ,N 3 ,N3P1 A , AES, E , E 1 ,C , D, DS1 3 ,FC , FLOAT, G, HALF, S IG N ,S Y S 0 2 9 , T A , TO LD , U , U S T , V , XU, ZOTUP L O G IC A L E H , B O , KO N V, KONVF D IM ENSIO N D (7 ) DATA H A L F / .5 / , D S 1 8 / 2 6 2 1 4 4 . / , S Y S 0 2 9 /О .707106731187/ 1 IERR = О ZOTUP = DS1S N2 = M + M N3 = N2 + M N4 = N3 + M N5 = N4 + M Nd ~ N5 + N5 + N2 N7 = Nd + N5 + N3 N3 = N7 + N5 + N3 N2P1 = N2 + 1 N3P1 = N3 + 1 N 8 P 1 = NS + 1 IF (IO R D E R .G T. О 1 lO GO T O 1 0 IERR 1 IO RD ER = d CONTINUE UMAX = I O R D E R IF DO 20 30 40 20 I = RAB( I ) IJK 4 = RAB( IJ K IORDER 4 O) GO TO 270 1, M = YX < П IJK 4 + 1 4 ) = YPM( I > CO NTINUE C A L L F ( X , Y X , R A B ( N 3 P 1 ) , M) CO NTINUE EH = .FALSE . KONVF = .T R U E . CO NTINUE A = H + X BO = .FA LSE . MC = 1 JR = 2 JS « 3 JJ = О IJ d 260 + (JS TA R T .N E . TOLD = X I J K 4 = N4 .AND . - Nd - M .LE . d)
IU 7 = N7 - M 1 16 = I J6 17 = IU 7 DO 250 U = I.J6 IU 7 = - I U6 I.J7 JMA X 4 M 4 M C . N O T . :B O ) GO TO 5 0 D f 2) = l .7 7 7 7 7 7 7 7 7 7 8 D C4 ) = 7 .11111111111 DC 6 ) = •5 J— 8 . 4 4 4 4 4 4 4 4 4 4 IF GO TO 6 0 CONT I NUE _ — JL Ш 2 5 D C2 ) DC 4 ) = 9. 50 DC6) = 36. CO NTINU E KONV = .TR U E . АО IF <J .LE . (. I O R D E R / 2 ) > IF <J . L E . C lO RD ER L = IORDER ♦ 1 + KONV 1>> = GO TO FALSE. 70 DCL) = 4 .*D C L -2 > FC = S Y S 0 2 9 *F C GO T O 8 0 70 CO NTINU E L = J 1 80 FC = 1 . 0 + F L O A T C I O R D E R + 1 —J > * O . 166666666667 DCL) = FLOATCM C*M C) CO NTINU E MC = G В IF = « MC + MC H / F L O A T CMC) G + G CC . N O T . BH) .O R . 1 )> > GO T O 1OO IU K 1 = M I -JK2 IU K 6 = = N2 IU 6 IJK 7 = IU 7 DO 90 I = 1, I UK 2 IU K 7 = = I UK 2 IU K 7 IU K 6 = 90 100 .G E . ( .■MAX - M R A B СI U K 2 > = IUK1 = IU K1 IU K 6 R A B СI U K 1 ) <J = + + 1 1 RА В < IU K 7 ) + 1 + 1 R AB C IU K 6) CO NTINU E GO TO CO NTINU E IU K1 = 150 - L I M 261
IJK 2 I.JK3 DO 1 10 = = N2 N3 Н О I = 1, M I .JK1 = IJ K 1 R A B C IJ K l) = I.JK2 = IJK 2 + 1 R A B C I) + 1 I.JK3 = IJK 3 RAB < I.JK2) = CO NTINU E KH = MC/2 + 1 RAE ( I ) XU DO * X 140 К XU = CALL IJ K 1 = 2, MC N2 N8 I = 1, M IJK 1 = IJK1 + U K © = IJK © + U = R A B (. I J K 1 J IJK 2 = IJK 2 RAE СI J K 1) = R A B O JK 2 ) CO NTINU E IF = CCK . N E . KH) GO T O 1 4 0 1 G *RAB C IJK3> XU + G F (X U , RAE ( N 2 P 1 ) , RAE iN 8 P 1 ) , M) = M IJK 2 = IJK 3 = DO 1 2 0 120 + JJ = 1 16 - 16 17 = IJK 1 IJK 2 IJK 6 IJK 7 DO + B* RAE CI J K S ) + 1 RAE < IJ K 2 ) U .O R . (K .E Q . .JJ + M 17 + M = = = = 1 1 + M N2 16 17 130 I = 1, M IJ K 2 = IJK 2 + 1 IJK 7 = IJ K 7 .+ 1 RAB( IJK 7) = RAB( IJK 2 ) IJK 6 = IJK 6 + 1 IJK1 = 130 140 150 R A B C IJK 6) CO NTINU E CO NTINU E CO NTINU E = 1 R A B ( I J K 1) CALL IJK 1 F = ( A , R A E ( N 2 P 1 ) , R A E <N O P 1 ) , M ) M IJK 2 IJK S = = N2 N5 IK S 262 IJK1 + = N5 3 ))
IJK 8 = DO 2 3 0 N3 I = 1, I JK 1 IJK 2 = “ I -JK1 I.JK2 + + 1 1 IJK 5 = IJK 5 ■+ 1 M IK S = IK S V = R A B СI O TJK8 = IJK R A B CI J K 5 ) + 1 K5) 8 + 1 “ ( R A B ( I JK. 2 ) + R A B < I J K 1 ) + G*RAB C IJ K 8 ) ) * HALF 1 C = ТА IF RAB ( I J K S ) - C ( L .L T . 2 ) GO TO 130 IF ( CA B S г V ) * Z О T U P . L T . 1 о 3 ) .AN D . CJ .О Т. GO TO CH .N E . A B S <C ) H M IN ) IO RD ER/2 + .A N D . 1) ) 260 IPS = IK 5 DO 1 7 0 К = 2 , L IPS = IPS + M E l = D (K )*V В U “ = IF 1‘6 0 B1 V СВ - C . EQ. О . ) В = CC U = C*B - C = B1*B GO TO 160 = LIST = EPS V )/ B C O N TIN U E V = RAB( IP S ) RAB CI P S ) % ТА ~ LI + 1 7 0 = IJ ТА CO N TIN U E 1 3 0 CO NTINU E GO TO C1 9 0 , 2 0 0 , 2 1 0 ) , IU C O N TIN U E UST = AB SСТА) 190 IF (U ST .G T. YPM C l ) ) YPM C l ) GO TO 2 2 0 CO NTINUE 200 YPM C l) GO 210 TO = A B S C Y X C I)) 220 C O N TIN U E YPM C l) 220 = 1. C O N TIN U E J. DELTY C l) = Y X C I) = ТА A B S (Y X C I) - IF CY P M C l ) .L T . YPM C l ) IF (D E LTY C l) KONV = EPS) .G T. ТА) E P S *Y P M (I> > .F A LS E . 263
CO N TIN U E 230 IF CKONV) GO D (3 ) = 4. D (5 ) = 16. DO = I J KA C = .N O T. N4 DO 310 BO) 240 I = 1, M IJK 4 « IJK 4 + Y P M СI > = MC JR = = JR JS JS = MC + MC CO N TIN U E 250 BH = ( .N O T. C O N TIN U E IF CABSCH) .LE . H = H*HALF BH) H M IN ) BUL “ .F A LS E . IF CABSCH) .G E . H = GO 270 230 1, 300 GO TO Y X C I) = R A B C l) M - C O N TIN U E I J K 4 = N4 290 I = 1, M IJ K 4 = IJK 4 + = 1 R A B СI J K 4 ) C O N TIN U E X = TOLD GO TO 30 C O N TIN U E KONVF 310 H M IN ) TO 30 = YPM C l ) 300 GO S I G N СНМI N , H ) TO C O N TIN U E DO 2 8 0 I DO 290 1 R A B C IJK 4) C O N TIN U E 240 260 TO = . FALSE* C O N TIN U E H X IF = - FC*H A CKONVF) GO ERR = 65 TO 320 O) GO jI 320 CO N TIN U E 330 CO N TIN U E IF СI E R R CALL 340 TO 340 L O A D G O СI E R R , 2 0 , 6 H U T D E 1 0 ) RETURN END .E Q . 40
2.10. Интегрирование системы методом раци­ ональной экстраполяции ГрэггаБулирша-Штера переменного порядка SU B R O U TIN E D E 2 2 R (F , М ,X N ,Y N ,Х К ,H M IN ,E PS , 1 • IO RD ER, I U , H , Y , V P M , D E L T Y , 2 R A B ,IE R R ) I N TEGER REAL IE R R , IO R D E R , I U , M D E L T Y ,E P S ,H ,H M IN ,R A B ,X K ,X N ,Y ,Y N ,Y P M D IM E N SIO N D E L T Y (M ) , RAB С1 > , Y C M ), Y N ( M ) , 1 Y P M CM) EXTERNAL IN TE G E R D E 20R ,LO AD G O I REAL A B S ,H I,H S ,S IG N , X LO G IC A L BUL IE R R DO 10 - 10 O I « 1, Y ( I ) = YN C l) C O N TIN U E IP (X N X = .E Q . XN H S IG N (H ,X K -X N ) - BUL IF = (IU 2 0 XK) GO TO 90 .F A L S E . DO .N E . 3 ) 20 I — YPM ( I ) GO TO 30 1 , Ii = 1. C O N TIN U E GO 3 0 TO 50 C O N TIN U E DO 40 I = 1, YPM ( I ) 40 C O N TIN U E 50 C O N TIN U E I 60 = = M . Y N ( I ) О C O N TIN U E IF ( H .N O T . = GO 70 BUL) GO TO 70 HS TO 90 C O N TIN U E HI IF = XK = BUL H = SO - X (A B S C H I) HS .G T . A B S C H )) GO TO 30 H = .TR U E . HI C O N TIN U E CALL D E 2 D R ( F , M, 1O R D E R , I U , 1 , НМI N . E P S , X , Y , • H ,B U L ,Y P M ,D E L T Y ,P A D ,IE R R ) IF 90 M U E k R .E Q . 1 .O R . IE R R .E D . O) GO *0 60 C O N TIN U E 265
IF 100 (IE R R -EQ. О) GO Т О l O O C ALL LOADGO( IE R R , 2 2 , 6HUTDE10) RETURN END 2.11. Один шаг многозначного метода Гира переменного порядка SU BRO U TINE 1 2 1 D E 21R C F,М , IS T IF J ,Iu ^ O E R ,J S T A R T , H M IN ,Н М АХ,E PS , 'X , Х , Н , BUL, YPM , D E LTY, RAB, Y P , IE R R ) IN TE G E R IE R R , IO RD ER, I S T I F J , J S T A R T , M R E A L D E L T Y , E P S , H , НМАХ, НМI N , R A B , X , Y P , Y P M , YX L O G IC A L BUL D I M E N S I O N D E L T Y CM) , R A B ( Ю , 1 ) , Y P ( 8 , 1 ) , 1 Y P M C M ) , YX <M) EXTERNAL 1 * со ю IN TE G E R A B S ,A M A X 1 , A M I N I , D E21R P,D E 21R U , LOADGO I , ID O U B ,IN D 1, IN D IO ,IN D 2 ,IN IG O LD , I R , I R E T , I R E T 1, I W E V A J 2 , JER, К , KER, KFLAG, L , MTYP, N 1,N 1 0 ,N 1 1 ,N 1 2 ,N 1 3 ,N 2 ,N 3 ,N N 6 , N 7 , N 8 , N 9 , N D I G , N E W I, NT A B S ,A M A X 1 , A M I N I , B N D ,C ,C O E F ,D ,D I, D2, E ,E D W N ,E N Q 1, E N Q 2,E N Q 3,E U R ,H ALF,H N E W , (0 10 м REAL H O L D , H O L D 1 , O N E , O N E P , P , F’E P S H , P R 1 , P R 2 , P R 3 , R , R l , R A C U M ,SIG N ,TO LD ,X K ,ZE R O м D IM EN SIO N C C S ), COEF( 7 , 2 , 3 ) ,P (4 2 ) EQ U IVALENCE СP ( 1 ) , C O E F ( 1 ) ) DATA C ( 2 ) , Z E R O ,H A LF,O N E ,O N E P,N D IG / - 1 . , 0 . , . 5 , 1 . , 1 .0 0 0 0 0 1 ,0 / PC 1 ) , P C 2 ) , P C 3 ) , P C 4 ) , P C 5 ) , P ( 6 ) , P ( 7 ) , P C S ), P ( 9 ) , P C IO ),P (1 1 ) , P ( 1 2 ),P C 1 3 ), P C 1 4 ) , PC 1 5 ) , PC 1 6 ) , P ( 1 7 ) , P ( 1 3 ) , да V) Gv (Л 4> « К) М DATA PC 1 9 ) , P C 2 0 ) , P C 2 1 ) , P ( 2 2 ) , P C 2 3 ) , PC2 4 ) ,P C 2 5 ),P C 2 6 ),P (2 7 ),P C 2 S ), 'С P P P 7 C2 9 ) C34) C 39) .3 3 3 ,P , P , P ,1 C 3 0 > ,P (3 C35) , PC3 C4 0 ) , P ( 4 0 .4 2 ,1 3 . 1 ) 6) 1) 7 , , , , 1 P C3 РС3 PC 4 7 .1 2 ) , P C3 3 ) , 7) ,P (3 3 ), 2 ) /2. ,4 .5 , 5 ,1 .,2 .0 ,1 2 .0 , ; 2 4 .0 ,3 7 .3 9 ,5 3 .3 3 ,7 0 .0 8 ,8 7 .9 7 ,3 .0 , 6 .0 ,9 .1 6 7 ,1 2 .5 ,1 5 .9 8 ,1 .0 ,1 .0 ,1 2 .0 , 2 4 .0 ,3 7 .8 9 ,5 3 .3 3 ,7 0 .0 8 ,8 7 .9 7 ,1 .0 , < = > 1. , 1. , 0 . 5 , 0 . 1 6 6 7 , 0 . 0 4 1 3 3 , 0 . 0 0 8 2 6 7 , 1 . 0 , 1 . 0 , 1 . 0 , 2 . 0 , 1 . 0 , . 3 1 5 7 , .0 7 4 0 7 , .0 1 3 9 / t IE R R JER = HGLD1 266 D 9 ,IO , L,J,J1 , MXDER, 4 ,N 5 , = О О = H
RACUM = ONE N4 * M*M (IS T IF J IF о . EQ. + 1 N1 N2 N3 = = = M *10 N1 + N5 = N1 + M N6 N7 = = N5 N6 + + 1 M N4 M + M N 7 -*- M NS + M N 1 0 =: N S 1 1 I ND1 = N4 + IN D 2 = N4 + 2 IN D 9 = N4 + 9 I N D I O i = N4 - * - 1 0 I RET = 1 NS N9 = = KFLAGi = MXDER: = 10i DO I = 1, м (Y P M (I) .E Q . IF ю 1 IORDER (IS T IF J IF (IO R D E R JER = 1 MXDER = 6 GO TO . EQ..LE . GO GO TO TO 1 = (J S T A R T 30 .LE . 0> GO TO 9 0 = Y P ( J ,I> CO NTINU E H O L D = HNEW CH .E Q . HOLD) CO NTINU E RACUM = H/HOLD IR E T 1 = 1 GO T O S S O CO NTINU E IO OLD TOLD = 1 0 = X 30 7 RAD( IR ,I> C O NTINU E IF 20 TO CO NTINUE DO 6 0 I = 1, M DO 5 0 J = 1, К IR = N4 + J SO 6> GO 40 IF O) 7) CO NTINUE 70 lO O .LE . 30 60 TO 30 C O NTINU E IF (IO R D E R JER = MXDER 50 GO C O NTINU E IF 20 O.) GO TO SO
IF 1 CABSCH) f.JSTART GO TO (E PS KFLAG GO TO AB S(H > O) GO TO 320 + 1 .E Q . O .> O) GO GO TO TO 140 1Ю “ -6 940 CO NTINU E KFLAG = -7 GO TO 9 4 0 110 C O NTINU E DO 1 2 0 I YPC 1 ,1 ) — 1, M = Y X ( I ) CO NTINU E ID = CALL 1 FC X , YX,F:ABCN2, 1 > ,M ) DO 1 3 0 N1 1 = 140 .G T. .N E . 100 130 .AND . 150 CO NTINU E IF (J S T A R T IF 120 A B S (H M IN ) .LE . ABS С И М АХ)) H *= H 0 L D 1 RACUM = S IG N CONE,RACUM ) IF 90 .G E . I = 1, M1 + I Y P (2 ,I> CO NTINU E HNEW = H = M RAB(N 1 1 ,1 )*H К = 2 GO TO 4 0 CO NTINU E IF CIO .E Q . X ~ TOLD I GOLD) JSTART = 1 • 10 = I GOLD К = I О + l GO 150 TO 70 CO N TIN U E IE <IS T IF J . EQ. O) GO ISO 160 GO T О < 2 4 0 , 2 5 0 , 2 6 0 , 2 7 0 , 2 S O , 2 9 0 > , I О CO NTINU E 170 GO T O ( 1 7 0 , 1 8 0 , 1 9 0 , 2 0 0 , 2 1 0 , 2 2 0 , 2 3 0 ) , ID C O NTINU E С С1 ) GO 130 190 - TO -ONE 300 CO NTINU E C (l> = -H ALF C<3) “ -H ALF GO TO 3 0 0 CO NTINU E C C D 0 (3 ) = = -O . 416666666667 -0 .7 5 0 (4 ) “ —О . 1 6 6 6 6 6 6 6 6 6 6 7 GO T O 3 0 0 368 TO J4
2 0 0 C O N TIN U E С (1> = - 0 .3 7 5 С (3 ) = -0 .9 1 6 6 6 6 6 6 6 6 6 7 С (4 ) = -0 .3 3 3 3 3 3 3 3 3 3 3 3 С С5 ) = - 0 .0 4 16666666667 GO 2 1 0 ТО С <1) - - О . 348611111111 ССЗ) - -1 .0 4 1 6 6 6 6 6 6 6 7 С (4 ) - -0 .4 8 6 1 1 1 1 1 1 1 1 1 С С5 ) = -0 .1 0 4 1 6 6 6 6 6 6 6 7 С С6) = -0 .0 0 8 3 3 3 3 3 3 3 3 3 3 3 GO 2 2 0 ТО 300 C O N TIN U E С С1 > = - О . 329861111111 ССЗ) - -1 .1 4 1 6 6 6 6 6 6 6 7 С С 4) = - 0 .6 2 5 С С 5) * - О . 177083333333 СС6) = - 0 .0 2 5 С С7 ) - - 0 .0 0 1 3 8 8 8 8 8 8 8 8 8 9 Gu 2 3 0 300 C O N TIN U E ТО 300 C O N TIN U E СС1> = -0 .3 1 5 5 9 1 9 3 1 2 1 7 ССЗ) = - 1 .2 2 5 С С4 > = - 0 .7 5 1 8 5 1 8 5 1 8 5 2 С (5 ) = -0 .2 5 5 2 0 8 3 3 3 3 3 3 С С6) - - 0 .0 4 8 6 1 1 1 1 1 1 1 1 1 СС7) = -.4 8 6 1 1 1 1 1 1 1 1 1Е -2 С (8 ) = -.1 9 8 4 1 2 6 9 8 4 12Е -3 GO ТО 300 2 40 C O N TIN U E 2 5 0 GO ТО 3 0 0 C O N TIN U E С <1 ) 2 6 0 = -O NE С С1 ) — —О . 6 6 6 6 6 6 6 6 6 6 6 7 С С3 > = - 0 .3 3 3 3 3 3 3 3 3 3 3 3 GO ТО 3 0 0 C O N TIN U E C d ) - -0 .5 4 5 4 5 4 5 4 5 4 5 5 ССЗ) « C ( l > СС4) = -0 .0 9 0 9 0 9 0 9 0 9 0 9 1 GO TO 3 0 0 2 7 0 C O N TIN U E C C l) = CCS) = - 0 . 7 C (4 ) « - 0 . 2 C C5) = - 0 .0 2 GO 2 8 0 TO - 0 .4 8 300 C O N TIN U E
’ С < 1 ) = -0 .4 3 7 9 5 6 2 0 4 3 8 0 ССЗ) С С4 ) = - -0 .8 2 1 1 6 7 8 8 3 2 1 2 -0 .3 1 0 2 1 8 9 7 8 1 0 2 С <5 > С (6 > = = -0 .0 5 4 7 4 4 5 2 5 5 4 7 4 -0 .0 0 3 6 4 9 6 3 5 0 3 6 5 0 GO 29 0 30 0 ТО 300 C O N TIN U E С<1> = -0 .4 0 8 1 6 3 2 6 5 3 0 6 ССЗ) = -0 .9 2 0 6 3 4 9 2 0 6 3 5 С С 4) = -0 .4 1 6 6 6 6 6 6 6 6 6 7 С С 5) = -0 .0 9 9 2 0 6 3 4 9 2 0 6 3 С С 6) = -0 .0 1 1 9 0 4 7 6 1 9 0 4 7 С С 7) - - О . 0 0 0 5 6 6 8 9 3 4 2 4 0 3 6 C O N TIN U E К = IO + ID O U B = С4 ENQ1 = H A LF /C IO ) ENQ2 = H A LF /C IO + 1) ENQ3 = H A LF/C IO + 2 ) - = EUR * COEFC1 0 ,M T Y P ,2 >*P E P S H E C O E F C IO ,M T Y P ,1 ) *PEPSH = = = EPS C O E F C IO ,M T Y P , 3 ) *PE PSH EPS*ENQ 3/M C O N TIN U E IW E V AL GO TO = IS T IF J ( 3 2 0 , 8 0 0 ) , IR E T C O N TIN U E X . * DO X + 350 DO H J 340 *= 2, J1 J 2 — DO 330 К 3 3 0 350 — J 1 I = 36 0 J = - 1 M Y P C J 2 ,I) + Y P C J 2 + 1 ,I> I = - 1, = M ZERO Y P C I , I ) C O N TIN U E DO 530 CALL IF L - 1, 3 F C X ,Y X ,R A B C N 2 ,1 ) ,M ) C IW E VAL .L T . 1) GO C O N TIN U E DO 380 I = 1, R A B (IN D 9 ,I) 270 + 1, C O N TIN U E Y X C I) 330 К C O N TIN U E DELTY C l) 370 J, C O N TIN U E DO 360 К = Y P CJ 2 , I ) 340 I S T I F J ) /2 PEPSH END 320 К MTYP EDWN 3 10 = 1 C O N TIN U E M = Y P C I , I ) TO 440
DO 410 R - = 1, M EPS-» AMAX 1 ( E P S , A B S ( RAEC I N D 9 , J ) ) > IF CR X 3 9 0 J = .N E . O . > KFLAG = GO 5 6 0 TO = - 5 = DO + Y X (J > F < X , Y X , R A B (N 6 , 1 > ,M ) 400 I = + 1, M (J - N11 = I N12 « N5 + I N13 = N1 + I F^AB ( N 1 1 , l ) - R A B ( N 1 3 , 1 >* C O N TIN U E = 410 C O N TIN U E 420 C O N TIN U E R A B (IN D 9 ,J > N11 = N3 N12 = M * N 11 DO 430 + I 430 1 - = RAB C l, 1 > N3 1, =* N 12, N11 R AB С1 , 1 > + ONE C O N TIN U E IW E VAL = - I IF CM . E Q . CALL 1) GO TO 440 D E 2 1RUC R A B , R A B , M , N 3 , N D I G , D 1 , D 2 , 1 R A B ( N 7 , 1 ) , R A B CN S , 1 ) ^ R A B CN 9 2 1 ) , KER) IF CK E R ) 440, 440, 540 C O N TIN U E IF C IS T IF J DO 450 N11 I = .N E . * N1 1, + O) GO TO 460 M I R A B < IN D 9, I ) = Y P ( 2 , 1 ) - R A B C N l1 , 1 ) *H. C O N TIN U E GO TO 510 C O N TIN U E DO 470 I = 1, N1 1 = N5 -»• I N12 = N1 + I R A B C N l1 ,1 ) = M Y P ( 2 , 1 ) - R A B ( N 1 2 , 1 ) *H C O N TIN U E IF CM .G T . R A B C N 3 ,1) 48 0 - >*D Y X (.J ) 470 1 )*N 3 CRAB ( N 1 2 , 1 > 1 400 R C (1 > *H / R CALL 460 390 C O N TIN U E D 450 TO TOLD YX C J) 440 GO GO TO 490 C O N TIN U E 1) - GO TO 430 R A B C N 6 ,1 ) /R AB (1 , 1 )
CALL D E 2 1 R P C R A B ,R A B C N 6 ,X > , R A B <N7, 1 ) ,M , 1 N 3 ,R A B (N 3 ,1 )) 490 C O N TIN U E DO 5 0 0 I IR = = N10 1, + I R A B (IN D 9 ,I) 50 0 C O N TIN U E 510 C O N TIN U E NT = DO 520 1, VP ( 1 , 1 ) Y P ( 2 , 1 ) = ** VP Cl, I ) Y P ( 2 , I ) Y X C I) Y P C I , I ) I = NT = C O N TIN U E IF (N T .L E . 530 C O N TIN U E i + R A B (IN D 9 ,I) .L E . (B N D *Y P M ( I ) ) ) 1 O) 00 TO 600 H .L E . C CIW EVAL - IF ССIS T IF J RACUM IW E VAL TO = = IRET 1 = GO ( A B S ( H M IN )*O N E P ) ) M TYP) . EQ. О ) .L T . . OR. I R ) ) GO ( IW EVAL R A C U M - k- 0 . 2 5 IS T IF U 2 SSO C O N TIN U E KFLAG .= -3 C O N TIN U E DO 5S0 DO I 570 IR ~ YP ( J, 57 0 = 1, M J = 1, N4 + J К I ) =■ RABC I R , I ) C O N TIN U E C O N TIN U E DO 590 I “ Y X ( I ) = Y P ( 1 , 1 ) 1, M C O N TIN U E H = I О HOLD = IO O LD USTART GO 600 - (C A B S C H ) 1 5 90 C C 1 )*R A B < IN D 9 , I ) R A B ( IN D 9 ,I) C O N TIN U E IF 580 -*- D E LTY( I ) NT- 520 X X ~ IR = -1 TO = 10 9 30 C O N TIN U E D = DO D 272 = M (A B S C R A B C IN D 9 ,I) ) 1 5 6 0 R A B ( I R ,1> = IF 5 5 0 = M D E LTY ( I ) 5 4 0 M ZERO 610 I ~ *= + ( (D E LTY C I ) /Y P M ( I ) ) / E ) * * 2 D 1, M .A N D . TO 550 . N E . CO >
61 0 C O N TIN U E IW E VAL IF CD IF = 0 . G T. 1. ) CABSCH) 1 BUL IF <K * GO .L T . TO 660 ABSCHOLD1 )> .F A LS E . .L T . 3) GO TO 640 DO 6 3 0 J = 3, К DO 6 2 0 I — 1, M Y P C J ,I> 6 2 0 C O N TIN U E 630 C O N TIN U E 640 = Y P ( J , I ) C (J )* D E L T Y < I) C O N TIN U E KFLAG HNEW IF = “ +1 H CIDOUB 1D0UB IF .L E . 1> = • ID O U B CIDOUB DO 650 I - 6 5 0 GO 1) = M 1, TO 670 1 .G T. R A B CI N D I O , I > = GO TO ©30 D E L T Y (.l j C O N TIN U E GO 6 60 TO S30 C O N TIN U E KFLAG IF GO X 67 0 = KFLAG CABSCH) 1 = TO - .L E . 2 CA B S С H M I N ) * O N E P ) > 870 TOLD IR = -9 IF CKFLAG .L E . IR ) GO TO ©50 C O N TIN U E PR2 = D **E N 0 2 *1 .5 PR3 - 1. E+ IR = IF CCIO I R ) ) 1 D D .G E . MXDER) GO T O 6 9 0 .O R . CKFLAG . I E . ZERO 680 I = - + С С C D E L T Y C l ) —R A B С I N D 1 0 , I ) ) / D 1 680 S -1 - DO 1, M Y P M C I)> / E U P > **2 C O N TIN U E PR3 = D **E N Q 3 *1 .7 5 C O N TIN U E 69 0 PR1 IF = l.E + 1 8 CIO . LE. 10 GO TO 710 = IF CC O E F С I R , M 7 Y P , 3 ) * E P S GO D = DO D - 1) IR 1 ► Зак. 217 + TO 1 . EQ. O . ) 710 ZERO 700 I = + D = 1, M С C Y P СК , I ) / Y P M C D ) / E D W N > * * 2 273
C O N TIN U E 700 PR1 = 710 IF <P R 3 R = P R O TO GO 770 TO 780 = 10 - 1 C O N TIN U E 730 ID O U B IF = 10 СCKFLAG .E Q . ( 1 . 1 ) ) ) GO ( NEWI .L E . IF XK « DO 740 1) TO .A N D . (R 10) GO TO 750 ONE/К I = 1, M Y P C N E W I+ l, I ) = D E L T Y C I)* C (K )* X K C O N TIN U E К = NEWI IF + (K F LA G 1 .E Q . 1) RACUM “ RACUM *R I R E T1 = 3 GO 880 TO GO TO 790 C O N TIN U E 760 IF (N E W I I О GO 770 .E Q . 10) GO TO 320 = NEWI TO 150 C O N TIN U E IF CPR2 NEWI R GO 730 .G T. = = P R 1) GO TO 720 10 1 . 0 / A M A X 1 < P R 2 , 1 . E —3 ) TO 730 C O N TIN U E R * 1 .O / A M A X l(P R 3 ,1 . E -3 ) NEW I GO =■- TO 10 + 1 730 C O N TIN U E IR E T R H = = = IF 2 A M I N I ( R , A E S <Н М А Х / И ) ) H* R HNEW = H <10 I О = GO TO . EQ. NEW I) NEWI 150 C O N TIN U E R 1 = DO 82 0 ONE J R 1 = DO 8 1 0 = 2, К R 1 *R I .L T . 83 0 C O N TIN U E 7 4 0 750 274 .L T . GO 1 .0/A M A X 1C PR 1, l . E - 3 ) NEWI 80 0 P R 3 ) C O N TIN U E 72 0 790 D **E N G 3 *1 .6 C O N TIN U E IF CPR2 .L E . - 1, M GO TO 800
YP ( J, I ) 810 820 C O N TIN U E C O N TIN U E ID O UB = К 830 C O N TIN U E DO 8 4 0 I = = YPM Cl) = C O N TIN U E 840 JSTART GO 850 TO = 1, 10 930 CALL = DO M ANAX 1 ( Y P M ( I ) , A B S ( Y P ( 1 , 1 ) ) ) C O N TIN U E IF CIO .E Q . R VP ( J, I )*R 1 1) GO TO 920 F СX , Y X , P A D < N 2 , 1 > , M ) H/HOLD 860 I = 1, M Y P C I , I ) = RAB( IN D 1,1) YX C I) ~ YPC 1 , I ) N11 “ N1 + I R A B СI N D 2 , I ) H O L D * R A B C N1 1 , 1 ) Y P C2 , I ) = R A B СI N D 2 , I ) * R 860 C O N TIN U E I О = 1 KFLAG = GO 870 TO 150 C O N TIN U E KFLAG HNEW = = GO TO -1 H JSTART 940 R A C UM = S I O N CA N A X 1 c. A B S С HM I N / H O L D ) . RACUM = S I G N C A M I N 1 C A B S CR A C U M ) , A B S ( U M A X / 1 A B S (R A C U M )) , RACUM) 1 H O L D ;) , RACUM) R l DO = ONE 900 J R l = DO 890 2, К R 1* RACUM I = 1, + J Y P CJ , I ) = RAB СI R , I ) * R 1 - M C O N TIN U E 090 CON I IN U E H DO 10* = N4 IR 910 10 C O N TIN U E 880 900 1 = HOLD*RACUM 910 I “ Y P С1 , I ) Y X C I) = C O N TIN U E 1, M = RAB( IN D 1 , I ) Y P ( 1 , I ) ID O U B -- GO (8 0 ,3 2 0 ,7 6 0 ), TО К IR E T 1 275
9 2 0 CONT I NUE KFLAG = ~4 GO 9 3 0 TO 560 C O N TIN U E IF (K F L A G 9 4 0 .E G . 1) GO TO 950 C O N TIN U E IE R R 95 0 = 64 - KFLAG C O N TIN U E IF (J E R .N E . 0> C A LL L O A D G O (J E R ,2 1 , 6HUTDE12) IF (IE R R .GT. 6 5 ) IF (IE R R .N E . O) 1 1 IE R R = IE R R - 1 C A L L LO A D G O ( I E R R , 2 ! ,6H U TD E 12> IF ( ( I E R R 1 .EC!. IE R R = 9 6 0 O) .A N D . (J E R .N E . O) > JER C O N TIN U E END END 2.12. Интегрирование системы многозначным методом Гира переменного порядка SUBROUT IN E D E 2 3 R ( F , М, X N , Y N , Х К , Н М IN , НМАХ, E P S , 1 IS T IF J ,IO R D E R ,IU ,H ,Y ,Y P M , 2 D E L T Y , R A B , Y P , IE R R > IN TE G E R REAL IE R R ,IO R D E R ,IS T IF J ,IU ,M D E L T Y ,E P S ,H ,H M A X ,H M IN ,R A B ,X K ,X N ,Y , 1 Y N ,Y P ,Y P M D IM E N S IO N D E L T Y (M ), R A B ( 1 0 , 1 ) , Y ( M ) , Y N ( M>, 1 Y P ( Q , 1 ) , YPM(M) EXTERNAL IN TE G E R REAL I , IH ,IO R D ,J S T A R T A B S ,H I,H S ,S IG N ,X LO G IC A L IE R R = IH = О DO 10 I X IF = = M = Y N ( I ) IO RD ER (X N .E Q . H S IG N (H ,X K -X N ) = = XK) GO TO 120 .F A LS E . C O N TIN U E JSTART = О C O N TIN U E IF ( H 276 1, XN BUL 30 = C O N TIN U E IO RD 2 0 BUL О Y ( I ) 1О D E 2JR ,LO A D G O .N O T. = HS BUL) GO TO 40
GO 4 0 TO 120 C O N TIN U E IF (IU DO .NE. 50 I 3) = YPM ( I ) 50 GO 1, TO 60 TO 90 M = 1. C O N TIN U E GO TO 60 C O N TIN U E 70 C O N TIN U E IF DO (IU .N E . 30 I = Y P M (I) IF GO 9 0 lO O 2 ) GO 1, M = A B S( Y ( 1) > (Y P M ( I ) TO lO O .L T . E PS) YPM ( I > = EPS C O N TIN U E IF lO O (IH . FQ. IH — GO TO TO lO O 70 - X (A B S (M l > .GT. ABS ( H ) ) GO TO 1 Ю = H HS 110 GO 1 C O N TIN U E HI = XK IF 1) BUL = H HI = .TR U E . C O N TIN U E CALL 1 D E 2 1R ( F , M , 1 S T I F J , I O R D , J S T A R T , H M IN ,H M A X ,E P S ,Y ,X ,H ,B U L V 2 IF (IE R R IF Y P M ,D E L T Y ,R A B ,Y P ,IE R R ) .E Q . O) GO T O 3 0 (IE R R CALL IO RD IF GO 120 .GT. 6 4 ) GO TO 120 L O A D G O ( I E R R , 2 3 , 6 H U T D F 12> = 7 ( I S T I F J TO 3 0 .N E . . EQ. GO 0 ) IO RD = 6 C O N TIN U E IF (IE R R CALL RETURN 130 0 ) TO 130 LOADGO( IE R R ,2 3 , 6HUTDE12) END 3. Решение задачи Коши для системы уравнений второго порядка 3.1. Построение начальных значений при интегрировании системы методом Штермера без и с контролем точности SUE:ROUT I NE D E 3 4 R ( F , M , I O R D E R , X N , Y N , D Y N , HM I N 1 E P S , P , H , X , Y X , D Y , D F , R F N , RF 2 R ,IE R R )
IN TE G E R REAL I E R R , IO R D E R ,M D F , D Y , DYN, E P S , H , HMIN , P , R , R F , R FN , X , 1 X N ,YN ,YX D IM E N S IO N D F C M , 5 ) , D Y C M ) , D Y N C M > , R СM ) , 1 R F C M ), RFN CM ), Y N C M ), YXCM) E XTERNAL IN TE G E R REAL D E 2 S R S , LOADGO I , J ,.J 1 , К , К 1 , L A , A B S , D , R 1 , RH, SIGN l _O G I C A L BUL, BUL1 D IM E N SIO N DATA AC 1 ) , A ( 2 ) , A < 3 5 , A C 4 > , A C S ) , A < 6 > 1 2 / 6 . ,2 .,1 .5 ,1 .2 6 6 * 6 6 6 6 6 6 6 ,1 .1 2 5 , O . 9 5 / , DC 1 ) , D C 2 ) , D C S ) , D C 4 > / 1 . , - 4 . S 6 a , = О B U L1 = .F A LS E . * H **2 / 1 2 . C O N TIN U E CALL DO FCXN, Y N ,R F N ,M ) 20 I * 1, RFN ( I ) 20 = R F N C l ) «-RH “ H *D YN C I) Y X C I ) = YN C l ) + + A С1 ) * R F N ( I ) DY C l ) C O N TIN U E X DO 3 0 = XN 30 + H F C X ,Y X ,D F C 1 , 1 ) ,M) I = 1, M DF СI , 1 ) = DF СI , 1 ) * R H DF СI , 2 ) = DF СI . 1 ) Y X C I ) Y X C I) = - RFN СI > D Y C I) + 12. *DF Cl, 1> C O N TIN U E X = X + H CALL DO 40 F C X ,Y X ,R F ,M ) I = RF C l) 4 0 1, = M R F СI ) * RH C O N TIN U E u i = CALL DO 50 3 D E jZ У R S C M , . J 1 , R F , D F , R ) I = 1, M D F C I , 2 ) = Y X C I) YN C l) = 1 D F C I , 2 ) + C O N TIN U E X = XN + CALL DO 278 M DY C l ) CALL 5 0 , 4 ./ IE R R RH 1О A C 6 ),D < 4 ) 60 + - 2 .* D F C I,3 > H * D Y N (I) A C 2 ) * D F C I , 2 ) + + H F C X , Y X , D F C 1 , 1 ) ,M> I = 1, M D F C I, 1 ) = D F C I, 1 )*R H D F C I , 2 ) = DFC1 , 1 ) D Y C I) Y X C I ) = - - RFN C l) Y N C I) A (1 )* R F N C I> A C 3 )* D F C I,3 >
60 C O N TIN U E DO 90 X J a DO - 2, X + H 70 I = D Y C I) 4 1, = D Y C I) 1 + 12. *DF ( 1 , 1 ) DFC1 ,3 ) Y X C I ) 70 = Y X C I) + D Y C I) C O N TIN U E CALL DO FCX, Y X ,R F ,M ) 3 0 I = RFC I ) 1, = M R F C I)* R H C O N TIN U E SO J1 - .J CALL *90 M + 1 D E 2 8 R S C M ,J 1 ,R F ,D F ,R ) C O N TIN U E DO 130 I DO = П О R l = DO lOO 1, L M = 2, 5 O. lO O К - K1 “ К R l * R l L , 5 L + + 1 D F C I,K )*D C K 1 ) C O N TIN U E DF СI , L ) 1 10 = Rl C O N TIN U E D F C I , 1 ) = D Y C I) HXDYNCI) + A C 1 )* R F N C I) * D F C I , 2 ) + A C 3 )* D F C I ,3 ) = R F N C I) A C4 ) * D F С 1 , 4 ) Y X C I ) DO 120 130 YN C l ) К = 1, 5 - К DF СI , L ) = L 120 = = + + A C 5 )* D F C I ,5 ) + D F ( I , L + 1 ) D Y C I) 4 DF СI , L ) C O N TIN U E DO = XN + 150 I R C I ) IF H = = 1, 140 M D F C I ,5 ) CAD S CYX СI ) ) R C I ) = .L E . P ) GO TO 140 R C D / Y X C I ) C O N TIN U E R C I ) IF 150 = R C I ) * A < 6 ) C AB SC RC I)) .G T. E PS) GO TO 160 C O N TIN U E GO TO 180 C O N TIN U E IF C .N O T. IE R R GO 170 A C2) C O N TIN U E X 160 + + TO = BUL1) GO TO 170 65 180 C O N TIN U E 279
Н = BUL RH Н * 0 .5 = .F A L S E . = IF RH/4. CABSCH) H = RH » SO A B S (H M IN )) GO TO Ю H **2 / 1 2 . BIJL1 GO .GT. S IG N (H M IN ,H ) = TO .T R U E . 10 C O N TIN U E IF (IE R R 1 .N E . CALL O) LOADGO( IE R R ,3 4 , 6HUTDE12) RETURN END SU B R O U TIN E D E 3 5 R C F ,M ,IO R D E R ,X N ,Y N ,D Y N ,H ,X 1 Y X , D Y ,D F ,R F N ,R F ,R ) IN TE G E R REAL IO R D E R ,M D F ,D Y ,D Y N ,H ,R ,R F ,R F N ,X ,X N ,Y N ,Y X D IM E N SIO N D F ( M, 5 ) , DY C M ) , D Y N ( M ) , R ( M ) , 1 R F ( M) , RFN C M ) , Y N ( M ) , Y X ( M ) EXTERNAL IN TE G E R REAL DE2SRS I , J , J 1 , K , K 1 , L A , D , R 1 , RH D IM E N S IO N DATA A ( 1 ) , A ( 2 ) , A < 3 ) , A ( 4 ) , A C5 ) , A ( 6 > 1 /6. ,2 . 2 O . 9 5 / , DC 1 ) , D ( 2 ) , D ( 3 ) , D ( 4 ) / 1 . 3 6 . , - 4 . / RH 10 = DO . , 1 . 1 2 5 , , —4 . , F C X N ,Y N ,R F N ,M ) 20 I = D Y C I) 1, = M RFN C l)* R H *= H *D Y N C I) Y X C I ) C O N TIN U E = Y N ( I ) X H = XN CALL DO + + 30 I = 1, = D F C I , 1 ) *RH D FC 1 ,2 ) = D F ( 1 , 1 ) Y X C I) Y X C I ) = X CALL DO + = + I C O N TIN U E = H F СX , Y X , R F , M ) 40 R F СI ) J1 D Y C I) M C O N TIN U E X A С1 ) * RFN C l ) F C X , Y X , D F C I , 1 ) , M ) D F C I , 1) 40 1 H **2 / 1 2 . RFN C l) 3 0 , 1 .5 , C O N TIN U E CALL 20 A C 6 ),D C 4 ) 3 * 1, = И R F ( I ) *RH - RFN C l) D YCI) + 1 2 .* D F C I,1 >
CALL DO D E 2 8 R S C M ,J 1 ,R F ,D F ,R ) 50 I = 1, D F C I,2 ) = Y X C I ) = M D F ( 1 , 2 ) Y N C I) 1 + 2 . * D F ( 1 , 3 ) H *D Y N C I) A C 2 ) * D F C I , 2 ) + + A ( 1 H R F N ( I ) A C 3 )* D F C I,3 > C O N TIN U E 5 0 X = XN CALL DO + H F C X , Y X , D F C I , 1 ) f M) 60 I - 1, D F C I, 1 ) 6 0 M « D F C I, 1 )*R H DF С1 , 2 > - D F C I , 1 ) D Y C I) Y X C I) ~ C O N TIN U E DO 9 0 J “ X = DO 2, - - R FN СI ) YN Cl) 4 X + H 70 I = D Y C I) 1, - M D Y C I ) 1 + 1 2 . * DF СI , 1 ) + DFC1 ,3 ) Y X C I) - Y X C I ) + D YCI) C O N TIN U E 7 0 C ALL DO F C X ,Y X , R F ,M ) SO I = RF C D 1, = M R F СI >* R H C O N T 1NUE 3 0 J1 = J CALL + 1 D E 2 S R S СM , J 1 , R F , D F , R ) C O N TIN U E 9 0 DO 130 DO I = 110 1, L M = 5 2, R l = 0. DO 100 К К 1 - К F I = = R l 1—» L + 5 + 1 D F ( I , К > * D СК 1 ) C O N TIN U E lO O D F C I,L > 1 lO - Rl C O N TIN U E D FC1 , 1 ) = DY C l ) H*DYN C l) + A CD * D F СI , 2 ) + A C3 ) * D F С 1 , 3 ) = 1 2 RFN C l) A C 4 ) « D F C I , 4) Y X C I ) UJ 120 .130 + - = 120 Y N C I) К ® 1, L = 5 - К DF СI , L ) = *b иR F N C D + A C2 ) + + A C 5 ) * D F ( I , 5 ) + DF СI , L + l ) D Y C I) 4 D F СI , L ) C O N TIN U E C O N TIN U E X = XN + H RETURN END 281
SU B R O U TIN E D E 1 8 R (F , M ,IO R D E R ,X N ,Y N ,D Y N ,H M IN , 1 2 E P S , P , H , X , Y X , Z , DF, R F N ,R F , R, IE R R ) IN TE G E R REAL IE R R , IO R D E R , M D F , D Y N , E P S , H , H M I N , P , R , R F , R F N , X , XN, Y N ,Y X ,Z D IM E N SIO N D F C M , 5 ) , D Y N CM) , R C M ) * , R F C M ) , R F N C M ) , Y N C M ) , Y X C M ) , Z CM) EXTERNAL IN TE G E R REAL LOADGO I A B S , CENT 1 , C F N T 2 , CO EF, H A L F , R H , RH 1, S IG N ,TW O LO G IC A L B H M IN 1 D IM E N SIO N CQEFC5) DATA H A L F , TW O ,C FN T1 , C F N T 2 / 0 .5 , 2 . , 0 . 0 8 3 3 3 3 3 3 3 2 3 3 3 , 1 . 1 2 5 / , COEF C l ) , 2 COEFC2 ) , C O E F < 3 ), COEF( 4 ) , CO EF(5 ) 3 / £ . , 1 . 5 , 0 . 2 3 3 3 3 3333333, 4 0 . 1 4 1 66666<S<S<S7 , 1 2 . / IE R R = B H M IN CALL RH .F A LS E . FC X N ,Y N ,R F N ,M ) = RH1 О = C F N T 1*H = CFNT 2* H 10 I = DO M R F N СI ) 10 20 R H *R F N СI ) C O N TIN U E C O N TIN U E DO 30 I = 1, R C I ) = D Y N C I) - : Y X C I ) 30 = M Y N C I) + + COEF C l ) * R F N C l ) H*R СI ) C O N TIN U E X = XN + H CALL F C X , Y X , D F C I , 1 ), M ) DO 40 I = M DF СI , 1) - R H * DF СI D F C I , 2) = DFCI , 1 ) Z СI ) = Y X C I ) 4 0 1 R C I ) = + Y X C I) - RFN СI ) COEF C 5 ) * D F СI + 1) H *Z C I) C O N TIN U E X = X CALL DO 50 + H F C X , Y X , R F , M) I = 1 M R F СI ) = R H * R F СI ) RF СI ) = RF СI ) D FC1 , 3 ) RFC I ) = Z C I ) = - = RFC I ) D F C I ,2 ) R C I) + D F C I,3 ) 282 , DF С1 , 1 ) - D F C I , 2) DFC1 ,3 ) TW O*RFCI) + C O E F C2 > *
Y X C I ) 5 0 = Y N C I) ч H * Z C I) C O N TIN U E X — XN COLL DO + H F C X ,YX ,D F Cl, 60 I = 1, M D F СI , 1 ) = RH* D F СI , 1) DF СI , 2 ) = DF СI , 1 ) Z ( I ) = Z СI ) 1 + - RFN СI ) COEF C5) *DF 0 , 1 ) + DF С1 , 3 ) Y X C I ) 6 0 1 ) , M) = Y X C I) + H * Z СI ) C O N TIN U E X ™ X C ALL DO + H F C X ,Y X ,R F ,M ) 70 I = RF C l) 1, - M R M « R F СI ) D FC 1 ,3 ) = RFC I ) - DF С1 , 1) D F C I , 4) = D F ( 1 , 3 ) D F C I , 2) Z C I ) = Z C I) + C O E F C5 ) * R F C l ) Y X C I ) = Y X C I) + H * Z C I ) 70 + D F СI , 4 ) C O N TIN U E X = X CALL DO + H F C X , Y X , D F C 1 , 5 ) , M> 80 I - 1, M D F C I , 5 ) = RFC I ) DF СI , 5 ) - RF СI ) = - DFC1 ,3 ) = D F C I , 3) Z C I ) = R H * D F C I,5 ) RFC I ) Z C I ) + C O E F C 5 )*D F O ,5 ) + DF СI , 3 ) Y X C I ) - Y X C I) + H * Z C I) C O N TIN U E X »= X + H C ALL DO F C X , Y X , Z , M ) 90 I = 1, Ii D F C I, 5 ) = R H * Z C I) - DFC1 ,5 ) D F C I , 5 ) = DFC I , 5 ) - RF C O RFC I ) DF 0 , 3 ) = D FCI, 4 ) D F C I, 5 ) = D F C I , 5 ) - DF СI , 3 ) D F C I, 5 ) = D F C I , 5 ) - RFC I ) D F C I ,3 ) = D F C I , 4 ) - RF C l) D F C I , 4 ) = R F C ! ) T W 0 *D F C I,5 ) Z C I ) R C I ) = + 2 - T W O * D F С1 , 2 ) DFC1 ,3 ) - + - D F C 1 ,5 ) H ALF* C O E F C3 ) * D F С I , 4 ) - C O E F C4 ) * D F С I , 5 ) Y X C I ) R C I ) IF 1 = = Y N C I) + H * Z C I) RH 1*D F С1 , 5 ) C A B S CYX C l ) ) R C I ) IF 9 0 - = .G T . P ) R C I ) / Y X C I ) C ABSCRCI)) .G T. E PS) GO TO lO O C O N TIN U E 283
х = GO XN TO + Н 140 C O N TIN U E 100 IF C .N O T . IE R R GO 110 B H M IN ) “ TO GO TO 1 Ю 65 140 C O N TIN U E H HALF*H IF <A B S ( H ) H = A B S (H M IN )) GO TO 120 S IG N (H M IN ,H ) B H M IN 120 .GT. = .T R U E . C O N TIN U E RH = H A L F * R H RH1 DO = HALF*RH1 130 I “ R F N ( I ) 130 1, = M HALF * R F N ( I ) C O N TIN U E GO 140 TO 20 C O N TIN U E IF (IE R R 1 CALL . N E . О LOADGO( IE R R , 1 3 , 6HUTDE16) RETURN END SUBROUT IN F D E 3 S R CF , M , I O R D E R , X N , Y N , D Y N , H M I N , 1 E P S , P , H , X , Y X, DYX, Z , D F, RFN, 2 R F , R , IERR) IN TE G E R REAL 1 IE R R , I ORDER, M D F , D Y N , DY X , E P S , H , HMI N , P , R , R F , R F N , X , XN, Y N ,Y X , Z D IM E N S IO N D F ( M, 5 ) 1 , D YNCM ), D Y X (M > ,R (M ) , R F C M ) , R F N CM) , Y N C M ) , Y X C f l ) , Z C M ) EXTERNAL IN TE G E R REAL 1 LOADGO I A B S ,C F N T 1 , C F N T 2 , CO EFA, C O E F S ,H A LF , RH , R H 1 ,S IG N ,T W O LO G IC A L BH M IN D IM E N S IO N DATA CO EFAC5 ) , COEFSC 4 ) H A LF ,T W O /0 . 5 , 2 . / , C F N T 1 ,CFNT2 1 / 0 .0 8 3 3 3 3 3 3 3 3 3 3 3 ,1 .1 2 5 / , CO EFS(1 ) 2 C O E F S C2 ) , C O E F S C 3 ) , C O E F S C 4 ) / 6 . , 1 . 3 ~ 0 .2 3 3 3 3 3 3 3 3 3 3 3 ,-0 .1 4 1 666666667/ 4 C O E F A C l),C O E F A ( 2 ) , COEFA( 3 ) , C O E F A C4 ) , C O E F A C 5 ) / 1 2 . , 6 . -0 .3 1 6 6 6 6 6 6 6 6 6 7/ IE R R B H M IN 284 = О » .F A LS E . CALL F CX N , Y N , D Y N , R F N , M ) RH C F N T 1*H - ,5 . , 4 . 5 , *
R H 1 DO - CFNT2 * H 10 I = 1, R F N ( I > io C O N TIN U E 20 C O N TIN U E DO 30 I R C I ) = * = Y X C I ) 3 0 R H *R F N < I> 1, И DYN t I ) + C O E F S С1 ) * R F N < I ) YNCI) + H*F: СI ) = DYX C l ) M = DYN C l ) + COEFA C l ) * R F N C l) C O N TIN U E X = XN CALL DO + H F C X ,Y X ,D Y X ,D F C I,1 ),M ) 40 I = 1, D F СI , 1 ) = RH* D F СI , 1) D F C I , 2 ) = D rC 1 ,1 ) DYX C l ) 40 M = DYX C l ) - + RFN C l) C O E F A C 2 ) * D F СI , 2 ) C O N TIN U E CALL DO F СX , Y X , D Y X , DF С1, 1 ) , M) 50 I = 1, DFC I , 1 ) = M F'H *D F C1 , 1 ) DF С1 , 2 ) D F С I , 1> = Z C I ) = R C I ) + Y X C I ) = Y X C I) DYX СI ) = R F N СI ) COEFA С1 > * D F СI , 1 ) + H * Z C I ) DYX C D Л 50 - + C O E F A С1 > * D F СI , 1 ) + COEFAC2 ) * D F C I,2 ) C O N TIN U E X = X CALL DO + H F C X ,Y X ,D Y X ,R F ,M ) 60 I = 1, M RF C I) = R H * R F СI ) R F C !) = RF СI ) - DF СI , 1 ) DFC1 ,3 ) = RFC I ) - D F C I ,2) R F C !) DFC1 ,2 ) - DFC1 ,3 ) Z C I) = = R C I) 1 + TW O*RFCI) + COEFSC2>~ D F C I , 3 ) • D F C I , 5) DYXCI) = = 1 Y N C I) + H * Z C I ) D YNCI) + C O E F A С1 ) * R F N СI ) C O E F A C2 ) * R F С I ) + + COEFA C 3 )* D F C I,3 ) 60 C O N TIN U E X = XN CALL DO 70 + H F C X ,D F C 1 , 5 ) , D Y X , D F C I , 1 ) ,M) I - 1, M DF СI , 1) = RH* DF СI , 1) D F C I , 2 ) = DF СI , 1 ) Z C I ) = 1 Z C I) + - RFN C I) C O E F A С1 ) * D F СI , D D F C I , 3 ) R C I ) = DYX СI ) D F C I,5 ) = D YXCI) + H *ZC I> + C O E FA C l ) * D F СI , 1 > ♦ 285
1 C O E F A ( 2 ) -w-DF ( 1 , 2 ) 2 DF C I , 3 ) 70 + C O E F A C 3 )* C O N TIN U E X = X CALL DO + H F СX , R , D Y X , R F , M ) 8 0 I = 1, N RF < I > = R H *R F C I) DF СI , 3 > = RF CI ) D F C I , 4) * D F ( 1 , 3 ) Z C I ) = Z C I ) + - DF СI , 1 ) - D F C I ,2) C O E F A C l ) * R F СI ) + D F C I,4 > Y X C I ) “ R C I ) + H * Z СI ) DYX СI ) = DYX СI ) + C O E F A С1 ) * R F < I ) 1 COEFA C 2 )*D F СI , 3 ) 2 D F C I , 4) SO = X CALL DO + COEFAC3> * - DFC1 ,3 ) И FCX, Y X , D Y X , D F C I , 1 ) ,M) 90 I * 1, M DF С1 , 1 ) * R H- m- D F С I , i ) DFC1 , 3 ) = DF Z C I ) = Z C I ) 1 С1 , + 1) - = Y X C I) D FC 1 , 3 ) C O E F A С1 ) * D F СI , 1 ) = + + H * Z C I) DFC1 , 3 ) - D F C I , 4 ) = D F C I , 4 ) DYX СI ) = D YN C I) + 1 D F C I , 4) DFC1 ,3 ) C O E F A С1 ) * R F N C I ) C O E F A C 2 ) * CDF СI , 2 ) 2 ) 3 D F ( 1 , 3 ) ) 90 RFC I ) DFC1 ,3 ) Z C I ) - D F C I , 4) •+■ C O E F A C 3 ) * C D F С 1 , 4 ) + + - C O E F A C 4 )*D F < 1 ,3 ) C O N TIN U E X — XN CALL DO + H F C X , D F C 1 , 5 ) , D Y X , D F C I , 1 ) , M) 100 I = 1, M D F C I , 1) = R H *D F C I,1) D F C I , 2 ) = DF СI , 1 ) DYX СI ) = D YX СI ) - + R F N СI ) C O E F A C l ) - * D F С1 , 1 ) 1 C O E F A C 2 ) * D F С1 , 2 ) 2 D F C I , 4 ) 1 OO + + + C O E F A C 3 ) *• C O E F A C 4 )*D F C I,3 ) C O N TIN U E X = X CALL DO + H F СX , R , D Y X , R F , M ) 110 I RFC I ) = 1, = R H *R F C I) DF С1 , 4 ) R C I ) = DYX СI ) 1 - M RF < I ) D F C I , 4 ) = - DYX СI ) DF С1 , 1 > D FC 1 ,2 ) + COEFA C l ) * R F СI ) . C O E F A C2 ) * D F С 1 , 4 ) 2 286 + C O N TIN U E X 110 + R C I ) C O N TIN U E + + + COEFA( 3 ) * C O E F A C 4 )*D F C 1 ,3 )
X « X + н CALL DO FCX, Y X ,D Y X ,D F U 120 I = 1, DFC 1 , 3 ) = R F C I ) = R H *D F O .,3 > DF ( 1 , 3 ) - R F C I) D F C I , 4) ~ R F C I) - DFCJ, 4 ) Y X C I ) DF ( 1 , 4 ) - ^CJ> DYXCI) ♦ C iJ L F A U > *0 F < l.,3 > = DYX СI ) * 1 C O E F A C2 ) * R F ( I ) 2 •DF С 1 , 4 ) 120 X “ X 'D O + C O E F A ' 2 > *• I ) H 130 I X = R H *D F C I,5 ) X * X - R F C I) X = X - D F C I ,4) * 1, M « X D FC1 ,4 ) = YX C I) = R C I ) = - - D F C I , 5 ) Z C I) DFC1 ,3 ) YX C I) D YN C I) 1 2 3 - + DFC 1 , 2 ) T W 0 *D F <I,5 > Y X C I) + DFC1 ,5 ) COEFSC1> *R F N C I) - H A L F *D F C I,3 > C O E F S C3> * D F С 1 , 4 ) + + TWO* + COEFSC 4 ) * DF < I , 5 > Y X C I ) R C I ) IF <= = YNCI) + R C I ) IF H *ZCI> R H 1-*D F <I,5> <A B S ( YX СI ) ) 1 = .G T . P ) R C I ) / Y X СI ) C A B S C R СI ) ) .GT. ЕРЧ5) GO TO 150 C O N TIN U E 130 DO 140 I « D YX C I) 1, « 1 M D YNCI) + 2 + 3 C O E F A C l ) * R F N СI > C O E F A C 2 )*D F C I,2 ) DFC1 , 3 ) - - M A L F *D F СI , 4 ) + COEFAC5 ) * D F C I,5> 140 C O N TIN U E X = GO XN TO + H 190 C O N TIN U E IF C .N O T. IE R R GO = TO B H M IN ) GO TO 160 6 5 190 C O N TIN U E {-$ IF H*HALF sz. CABSCH) H * .GT. AB SC H M IN ) ) GO TO 170 S IG N C H M IN ,H > B H M IN 170 + C O E FA 14 > * Y X F СX , Z , D Y X , D F С 1 , !?> , M ) DFC1 ,3 ) 160 + + C O N TIN U E CALL 150 , 3 > .M> M ^ .T R U E . C O N TIN U E RH » HALF*RH 281
RH _ DO 1G0 = HALF*RH1 100 I = 1, M R F N C I) = H A LF*R FN C I> C O N TIN U E G J TO 20 190 C O N TIN U E IF 1 ( IE R R CALL . NE. O) LO A D G O C IE R R ,3 8 , &HUTDE16) RETURN END 3.2. Один таг метода Штермера без и с контролем точности, когда правая часть системы не зависит ст про из водной SU B R O U TIN E D E 4 0 R C F ,М ,J S T A R T ,Y X ,X , D Y ,Н , DELTY, 1 D F , R F N , R F , Y P , D YP, IE R R ) xNTEGER REAL IE R R , JS T A R T , M D E L T Y , D F . D Y , D Y P .Ы ,R F ,R F N ,X , Y P ,Y X D I M E N S I ON D E L T Y C M ), DF CM,5 ) , D YCM ), D Y P ( M> , 1 R F C M ), R F N C M ), YPCM >, YXCM) EXTERNAL IN TE G E R REAL D E 2 3R S ,D E 35R ,D G 42R P,LO A D G O I , IM A X ,IO R D E R ,К , К 1 A B S ,A L P ,C l, C 2 ,C 4 , E PS ,H O LD ,P ,R H ,X O LD LO G IC A L DATA BUL2 C l,C 2 ,C 4 / 1 2 .,0 .0 0 3 3 3 3 3 3 3 3 3 3 3 ,-0 .0 5 / , 1 IM A X / 6 / , P / О . O l / , E P S / О . O O O O O O l/ IF (J S T A R T IF .G E . (IE R R 0> .E Q . GO O) TO GO 50 TO 10 IE R R = О GO TO 7 0 10 C O N TIN U E DO 30 К » l j ki - к + i DO 20 I 4 ■ 1, DFC 1 , 1 0 2 0 3 0 C O N TIN U E 40 i * D Y C I) M D Y P C I) TO 70 C O N T IN U E XO LD * X DO 60 I » Y P C I) D Y P C I) 288 1, «= C O N TIN U E GO 5 0 DF ( X, Ю C O N TIN U E DO 4 0 = M 1, = M Y X C I ) = D Y C I) ' - DF ( I ,К 1)
C O N TIN U E 60 IE R R IF = О (J S T A R T IO R D E R -NE. = 5 CALL D E 3 5 R (F ,M ,IO R D E R ,X O L D ,Y P ,D Y P ,H ,X TO 190 C O N TIN U E CH .E Q , ALP = CALL 80 HOLD) 1, RF СI > = Y X C I) “ 80 M DFCI, 3 ) + Y P C I) 4 DF СI , 4 ) D YC I) + C 1 *D F СI , 1 ) R F C I) R F C I) C O N TIN U E RH X DO = = = 4 R F СI ) DF ( I , 1 ) + DF С I , 2 ) C 2 *H **2 XOLD 140 К BUL2 1 00 TO DE42RP C M ,IO R D E R ,A LP ,D F ,D Y ) C O N TIN U E DO 9 0 I = 90 GO H/HOLD 1 = + H - 1, IM AX .TR U E . C O N TIN U E DO 1 lO M 110 I = 1, DELTY C I) = -R F <I ) C O N TIN U E CALL DO F СX , Y X , R F , M ) I = 1, R F C I) 130 = R F C I X R H D E L T Y СI ) Y X C I) IF = M = DELTY <I ) D E LTY СI ) C A B S (Y X C I)) D ELTY СI ) 120 = + + R F C I) Y X C I) -LE . P ) GO TO D E L T Y ( I ) / Y X СI ) C O N TIN U E IF <ABS<DELTY< I ) > 1 BUL2 = -GT. EPS) .F A LS E . C O N TIN U E IF CBIJL2) GO TO 160 C O N TIN U E IE R R DO 150 70 Y X , D Y, D F, R F N ,R F , D E LTY' IF 140 TO F ( X , Y X , R F , M) GO 130 00 CALL 1 70 O) = 150 65 I = 1, M Y X C I) ~ Y P C I) C O N TIN U E X GO = XOLD TO 190 160 C O N TIN U E 170 CALL D E 2 S R S C M , 1 O R D E R , R F - , U P , D E L i V ./ C O N TIN U E 120 4
DO 180 I = D Y P ( I ) 1, = D Y C I) = D Y C I) Y X C I) D E L T Y C I) Y X C I) C O N TIN U E 190 C O N TIN U E IF 1 = = 130 С I ERF: M - Y P C I) DF СI , 5 ) * C 4 Y X C I) .NE. + D E LTYC I) O) CALL LOADGOСI E R R ,4 0 , 6HUTDE12) JSTART 1 HOLD = H P E TURN END SUBPOUT IN E D E 4 2 R C F , M, J S T A R T , H M IN , UM AX, E P S , P , 1 YX , X , D Y , H , B U L , D E L T Y , D F , R F N , 2 R F ,Y P ,D Y P ,IE R R ) IN TE G E R REAL IE R R , JS T A R T , M D E L T Y , D F , D Y , D Y P , E P S , H , UM AX, HMI N , P , 1 R F ,R F N ,X ,Y P ,Y X LO G IC A L BUL D IM E N SIO N 1 RF C M ) , RFNCM ) , YP C M ) , YXCM) EXTERNAL IN TE G E R REAL D E 2 8 R S , D E 3 4 R , DE4 2 R P , I OADGO I , IM , I N, I O RD ER, J E R , К , К 1 , L A B S , A L P , С 1 , C 2 , C 4 , C 5 r C6-, E P S 1 , E P S 2 , 1 H N E W , H O L D , R H , S I O N , XO LD L O G 1C A L DATA B U L1 , EUL2 C 1 ,C 2 ,C 4 , C 5 , C 6 / 1 2 . , О .0 3 3 3 3 3 3 3 3 3 3 3 3 , 1 - 0 . 0 5 , 2 0 . ,0 .3 1 2 5 / L = 1 B U L1 = .F A LS E . E P S 1 = C 5*E PS EPS2 = C 6*E PS IF CJSTART . GE. IM = IF C IE R R GO IF 1 = TO 50 .E G . = TO 0> • TO 10 О 70 HOLD/HNEW CALF* . EQ. CALL HNEW DO = 0 . 5 ) D E 4 2 R P С M , I C R D ; * . R, A L P , D F , D Y ) HOLD 30 К = 1 , 4 K1 = К DO 20 + I 1 = D F ( I , Ю 290 GO C O N TIN U E ALP 2 0 O) О IE R R 10 D E L T Y C M ) , D F СM , 5 ) , D Y C M ) , D Y P C M ) , C O N TIN U E 1, = M D F C I ,К ) - D F '> ,K 1 )
30 C O N TIN U E DO 40 I - D YC I) 40 C O N TIN U E 50 GO TO 7 0 C O N TIN U E XOLD DO = 60 1, - D Y P СI ) X I = Y P C I) 1, = DYP ( I > 60 M M YX ( I ) = D Y СI > C O N TIN U E IE R R = О IF (.JSTAR T IM = .N E . « 5 CALL D E 3 4 R C F ,M ,IO R D E R ,X O L D ,Y P ,D Y P , H M IN ,E P S ,P ,H ,X ,Y X ,D Y ,D F , R F N ,R F ,D E L T Y ,J E R ) CJER .N E . TO 2 3 0 CH .E Q . ALP = CALL 80 IE R R = 66 HNEW) GO TO 30 H/HNEW D E 4 2 R P ( M, IO R D E R , A L P , D F , D Y) C O N TIN U E DO 90 I ** 1, M R F C I) - DFC1 ,3 ) + Y X C I) = Y P C I) + D Y C I) + DF СI , 1 ) 1 D F C I,4) + C 1 * D F С1 , 1 ) R F ( I ) R F C I) = R F C I) + D F C I,2 ) C O N TIN U E RH ~ C 2 *H **2 IN = О X = XOLD + H = 1, C O N TIN U E DO П О I D E LTYC I) C O N TIN U E = M - R F C I) CALL F C X ,Y X ,R F ,M ) BUL2 = DO 130 .TR U E . I = 1, R F СI > - R F C I)*R H D E L T Y СI ) Y X C I) IF = = M D E L T Y СI ) D E LTYC I) CABSCYXCI)) D E LTYC I) 120 O) C O N TIN U E IF 1 10 70 F ( X , Y X, R F , M> IF GO 100 TO CALL 1 2 90 GO О IO RD ER 70 O) = + + R F C I) Y X C I) .L E . P ) GO TO D E L T Y СI ) / Y X СI ) C O N TIN U E IF C A B S C D E L T Y СI ) ) . G T . EPS) 120 +
1 13 0 BUL2 = . C O N TIN U E IF <B U L 2 ) DO GO TO 1 GO TO IN = IF ( I N - . L T . IN + ( GO 2 ) GO TO 100 = TO B U L 1> GO TO 160 65 230 C O N TIN U E 160 H = H * 0 .5 BUL IF = .F A LS E . (A B S (H ) B U L1 = = .G T. A B S (H M IN )) = H S I G N <H M I N , H > = GO TO 170 .TR U E . A LP GO C O N TIN U E ALP S 1 G N C H M I N , H ) * 0 . 5/* TO ISO 0 .5 C O N TIN U E CALL D E 4 2 R P ( M, IO R D E R , A L P , D F , DY) IM = GO TO 2 SO C O N TIN U E CALL D E 2 S R S (M ,IO R D E R ,R F , D F ,D E LT Y ) HOLD = H C O N TIN U E DO 210 * I = D Y P ( I ) D Y C I) 1, = “ Y X C I) 210 C O N TIN U E 220 C O N TIN U E DO 2 40 I Y X C I) = Y X C I) = 1, = 240 C O N TIN U E I F IM IF + D E LTYC I) D F C I , 5 ) * C 4 D E L T Y C I) C O N TIN U E Y P C I) M C AB SC YX C I)) 230 - D F ( 1 , 5 ) *C4 - D E L T Y C I) IF M D Y C I) D E L T Y C I) = .L E . = IM (IM H = + GO . GT . 3 ) TO E PS2) 1 .N E . GO H *2 . = P ) 230 D E L T Y СI ) /YX СI ) CA B S C D E L T Y C D ) B U L1 292 1 .N O T. IE R R 200 E PS1) C O N TIN U E IF 190 .G T . 150 C O N TIN U E 150 130 190 140 I = 1, M IF ( A B S ( D E LTY ( I ) ) 140 170 FALSE .F A LS E . TO 230 GO TO 270
IF (A B S (H ) ALP H = = GO .L E . A B S (H M A X )) GO TO 250 S I G N С И М А Х , H> * 2 . /Н S IG N (H M A X , H) TO 260 C O N TIN U E 250 A LP = 2. C O N TIN U E 260 CALL D E 42 R P C M ,IO R D E R ,A LP ,D F ,D Y > IM = О GO TO 220 C O N TIN U E 270 IM = О C O N TIN U E 230 IF (IE R R .N E . O) CALL L O A D G O ( I E R R , 4 2 , 6 H U T D E 12> JSTART = HNEW H = 1 RETURN END SU B R O U TIN E D E 4 S R C F ,M ,J S T A R T , H M IN , UMAX, E P S , P 1 Y X , X , Z , H , B U L, D ELTY, D F, R FN , 2 R F ,Y P , Z P , I E R R ) IN TE G E R REAL IE R R , J S T A R T , M D E L T Y , D F , E P S , H , НМ АХ, HMI N , P , R F , R F N , X 1 Y P , Y X , Z , Z P LO G IC A L BUL D I M E N SIO N D E L T Y < M ) , D F ( M , 5 ) , R F ( M ) , R F N CM > , 1 Y P ( M > , YX C M ) , Z C M ) , ZPCM) EXTERNAL COMMON IN TE G E R REAL I , I N , IS T A R T , J E R , К , K P 1 A B S ,A L P ,C F N T 1 ,C F N T2, C F N T3, C F N T4, 1 C F N T 5 , E P S 1 , E P S 2 , H A L F , HNEW, H O LD , R H , 2 S IG N ,T W O ,X O LD LO G IC A L DATA BOOR, B H M IN H A LF ,T W O /O .5 , 2 . / , C FN T1 , C F N T 2 ,C F N T 3 , 1 2 CFNT 4 , C F N T 5 / 0 .0 3 3 3 3 3 3 3 3 3 3 3 3 , O .0 1 5 6 2 5 , 1 2 . , 2 0 . , - O . 05/ EPS1 = CFNT4 * EPS EPS2 - C FN T2*E PS B H M IN IS TA R T IF = .F A LS E . = 1 (J S T A R T IF .G E . (IE R R IF .L T . (A B S (H ) H 10 D E 1 8 R ,D E 2 3 R S ,D E 4 8 R P , LOADGO / C O M 4 8 R / H O L D ,H N E W ,X O L D ,1S T A R T = = GO 6 5 ) TO GO .L T . HNEW *HALF C O N TIN U E IE R R O) О 50 TO 20 A B S (H N E W )) GO TO Ю
GO 20 TO 80 C O N TIN U E IF (H O LD *T W O 1 DO .E Q . D E 4 3 R P ( M, 5 , HALF t D F , Z , Z P ) 40 = К K P i = DO 3 0 1 , к I 4 + = i 1, D F C I,K ) ALP = IE R R GO TO DO О 90 = X 60 I « 1, M Y P C I ) = Y X C I) ZP C I ) 60 = Z C I) (J S T A R T .GT. C O N TIN U E IE R R = О IF O) GO TO 70 C ALL F C X ,Y X ,R F ,M ) CALL D E 13 R ( F , M, 5 , X O L D , Y P , Z P , H M I N , E P S , P , H , X, Y X , Z , D F , F-:FN,RF, D E L T Y , JER > 2 IF (JE R HOLD GO = TO 70 C O N TIN U E 8 0 C O N TIN U E IF CH ALP .N E . O) IE R R = TO 100 66 H 280 .E Q . = HNEW) GO H/HNEW C O N TIN U E CALL D E 48R PC M ,5 , A L P , D F , Z P , Z ) C O N TIN U E DO 110 I = 1, R F C I) - DF СI , 3 > Z C I) = Y X C I) M Z P C I) = + Y P C I) D E L T Y C I) = + “ CFNT1*H IN = 1 = XOLD + + H C O N TIN U E = CALL F C X , Y X , R F , M) DO 140 + -TRU E. I = 1, R F C I) = R H *R F C I) M R F C I) H * Z C I) - R F C I ) BCOR DFC1 ,4 ) C F N T 3 *D F C I,1) C O N TIN U E RH X 294 D F C I,K P I) H/HOLD = XOLD 120 - C O N TIN U E 50 1 10 D F ( I , К ) C O N TIN U E 40 100 = M C O N TIN U E 30 90 HNEW) CALL - D F СI , 1) - DFC1 , 2 )
» D E L T Y C I) Z C I ) * - Z C I) D E L T Y C I) Y X C I) IF = “ + Y X C I) + = D E LTYC I) .GT. C AB SC D E LTYC I)) 1 BOOR = GO IF . EQ. C IN TO 150 IF 210 2 ) I = 150 GO 1, 170 M TO .GT. E PS1) 170 C O N TIN U E IN = DO IN 160 + I 1 = D E L T Y C I) 160 1, = M - R F C I) C O N TIN U E GO 170 TO 120 C O N TIN U E IF C .N O T. IE R R GO C O N TIN U E H = IF = TO B H M IN ) GO TO ISO 65 230 H ALF*H BUL = .F A L S E . CABSCH) RH = = H RH = .GT. A B S C H M IN )) GO TO 190 S IG N (H M IN ,H ) ALP RH*HALF/H B H M IN - GO 200 TO .T R U E . C O N TIN U E A LP = HALF C O N TIN U E C ALL GO D E 48R PC M ,5 , A L P ,D F , ZP, Z) TO lO O C O N TIN U E CALL DO 2 2 0 TO (A B S (D E L T Y C I)) GO 210 E PS) .F A L S E . CBCOR) DO 200 .G T . C O N TIN U E IF 190 P ) D E L T Y СI ) / YX СI ) C O N TIN U E IF IS O R F C I) H * D E L T Y СI ) D E LTY C I) 130 + D E LT Y C I) CA B S ( Y X C I ) ) 1 140 D E L T Y C I) F СX , Y X , R F , M) 2 2 0 I = 1, M RF СI ) C O N TIN U E = RH*RF СI ) CALL D E 2 8 R S СM , 5 , R F , D F , D E L T Y ) HOLD = H 2 30 I DO = 1, D E L T Y C I) Z C I ) = - Z C I) M C F N T 5 *D F (1 , 5 ) + D ELTYCI) 295
D E L T Y C I) Y X C I) 230 C O N TIN U E 2 4 0 C O N TIN U E DO 250 IF I « H *D E LT Y C I) = Y X C I) = 1, + M C AB SC YX C I)) 1 D E LTYC I) D E LTY C I) - .GT. D E L T Y СI ) / Y X ( I ) IF C A B S (D E L T Y C I)) C O N TIN U E 250 H “ = E PS2) GO TO 280 2 CABSCH) .L E . A B S C H M A X )) ALP = H SIG N C H M A X ,H ) = GO 260 .GT. 7W G*H ISTA R T IF P ) TO GO TO 260 ' S IG N C H M A X ,H )*T W O /H 270 C O N TIN U E A L ° = TWO 270 C O N TIN U E 230 CALL D E 4 8 R P СM , 5 , A L P , D F , Z , Z P > C O N TIN U E IF 1 СIE R R . NE. O) CALL LOADGO JSTART 1 HNEW CI E R R , 4 8 , 6H IJTD E16) == H RETURN END 3.3, Один шаг метода Штермера с контролем точности, когда правая часть зависит от производной SU B R O U TIN E D E 4 6 R СF , М , J S T A R T , Н М I N , Н М А Х , E P S , Р , 1 YX , D Y X , X , Н , B U L , Z , D E L T Y , D F , 2 R F N ,R F ,Y P ,D Y P ,Z P ,IE R R ) IN TE G E R REAL 1 IE R R , JS T A R T , M D E L T Y , D F , D Y P , D Y X , E P S , H , НМАХ, ИМI N , P , R F , R F N , X , Y P , Y X , Z , Z P LO G IC A L BUL D IM E N SIO N 1 RF C M ), R F N C M ) , Y P C M ) , Y X C M ), Z CM ), 2 ZPCM) EXTERNAL COMMON IN TE G E R REAL D E 2 S R S , D E 3 S R , D E 4 S R P , LOADGO / C O M 4 8 R / HOL D , H N E W , X O L D , I S T A R T I , I N , IORDER, IS T A R T , J E R , К , K P 1 A B S , A L P , C FN T1 , C F N T 2 , C FN T3, COEFA, 1 E P S 1 , E PS 2 , H A LF ,H N E W ,H O LD ,R H ,S IG N , 2 TW O ,X O LD LO G IC A L 296 D ELTY C M ) , D F C M , 5 ) , DYPCM) , DYXCM) , B C O R , BHMI N
D IM E N SIO N DATA C O E F A (6 > H A L F , TW O /O .5 , 2 . / , C F N T 1 , C FN T2 1 / 2 0 . , 0 . 0 15 6 2 5 / , C O E F A ( 1 ) , C O E F A C 2 ) , 2 C O E F A ( 3 > , C O E F A ( 4 ) , C O E F A <5 ) , 3 COEFA( 6 ) / 1 2 . , 6 . , 5 . , 4 . 5 , - O . 05, -0 .3 1 6 6 6 6 6 6 6 6 6 7 / , I ORDER/5 / , 4 CFNT 3 /О . О3 3 3 3 3 3 3 3 3 333/ B H M IN E P S 1 = .F A L S E . = C F N T1 * EPS E PS2 = ISTA R T CFNT 2 * EPS = 1 IF (J S T A R T IF . GE. (IE R R I F lO 0> . LT. GO 6 5 ) TO GO 50 TO 20 t; A B S ( H ) . L T . A B S CH N E W ) ) H “ HNEW *HALF GO iО 10 C O N TIN U E IE R R GO 20 = TO О lO O r O N TIN U E I F 1 <H O L D * TWO CALL DO К А О . FQ . 11NE W ) DF 4 G R P < M , I O R D E R , H A L F , D F , Z , Z P ) = 1 , 4 K PI = D O GO + = К I 1 1, D FC I, I > M - D F C I,K ) - D F C l , 13 1 ) C O N TIN U E 30 40 C O N T 1NUE AL P = IE R R GO 50 H/HOLD = TO О H O CON I IN U E IE R R = О XOLD = X IF (J S T A R T DO 60 I . ОТ. О» - M Y P C I) 1, = D Y P C I) 60 GO TO 70 Y X C I) = DYX ( I ) C O N TIN U E СX CALL F , Y X , D Y X , R F , M> CAl. L DE3SR CF 1 , M , I O R D E R , X 01. D , Y F ' , D Y P , H M I N , E P S , P , H , X , Y X , DY X , Z DF t R FN , R F , D ELTY,JER) IF (J E R . NE. HOLD = H GO 7 0 TO c o n t i n u e DO 30 I О) I EPF: = 66 GOO : - Y P C I ) DYPCI) 1 , ~ M YXCI.) - [J V X <1 ) 297
Z P C I) - SO C O N TIN U E 9 0 C O N TIN U E IF 1 OO CH z c n . EQ. HNEW) GO TO 120 C O N TIN U E ALP = H/HNEW 110 C O N TIN U E CALL D E 4 S R P СM , I O R D E R , A L P , D F , Z P , Z ) 120 C O N TIN U E DO 130 I R F C I) Z C I ) = = - ZP СI ) R F СI ) 1 У X СI ) 1, N DFC1 ,3 ) = Y P C I) D E L T Y C I) = C O N TIN U E DO 140 I = i, 130 D YX C I) + e + D F C I,4 ) C O E F A С1 ) * D F СI , 1 ) + H * Z C I) -R F C I) - DF СI , 1 ) D Y P СI ) + C O E FAC 2 ) * DF СI , 2 > DFC1 ,3 ) + RH « CFNT3*H IN = 1 = XOLD + C O N TIN U E = CALL FC X ,Y X ,D Y X ,R P,M > . TRUE. 160 I = 1, M R F C I) = R H * R F СI ) DELTY C I) DELTY СI ) Z C I ) = Z C I) RFN СI ) Y X C I ) = - D YX C I) IF 1 1 160 D E LTYC I) Y X C I) = + R F N C I) D YXCI) CA B S C Y X С I ) > - + = C O EFAC 4 ) * D E L T Y СI ) . О T . P ) RFN C D / Y X C I ) CA D S CR F N C D ) BCOR RF СI ) H *D E LTYC I) R F N C I) IF + + . GT . EPS ) . F A LS E . C O N TIN U E IF (B C O R ) GO IF . EQ. C IN DO 170 IF 1 TO I 230 2 ) = GO 1, 190 M CABSCRF N C I ) ) GO TО ISO I . GT . 190 C O N TIN U E IN = IN + DO TO 1 = D E L T Y C I) C O N TIN U E 1, = M - R F C I) + C O E F A C 3 )* H BCOP DO 298 + C O E F A C4 ) * D F ( 1 , 4 ) C O N TIN U E 150 IS O DFC 1 , 2 ) * C O E F A С 1 ) * DF СI , 1 ) 1 X 170 - м 2 140 + E PS 1)
GO 190 TO C O N TIN U E IF ( .N O T. IE R R GO 200 B H M IN ) = TO 150 GO TO 200 65 300 C O N TIN U E H = H ALF *H BUL IF = .F A L S E . CABSCH) PH 210 = A B S (H M IN )) GO TO 210 S IG N (H M IN ,H ) ALP = H RH = .GT. RH *H Al_F/H BH M IN = GO 220 TO .T R U E . C O N TIN U E ALP 220 = HALF C O N TIN U E CALL GO D E 43R P( M, IO R D E R ,A L P ,D F ,Z P ,Z ) TO 120 C O N TIN U E 230 CALL DO 240 Co F СX , Y X , D Y X , R F , M ) 2 40 I - 1, M R F C I) = R H *R F ( I ) n t i n u e CALL D E 2 8 R S ( M, IO R D E R , R F , D F , D E LT Y ) HOLD - H 250 I DO = 1, D E L T Y ( I > Z C I ) = = M C O E F A C 5 ) * D F СI , 5 ) Z C I) + D E LTYC I) D E L T Y C I) = H *D E LT Y C I) Y X C I ) = Y X C I) + D ELTYCI) D Y X C I) 250 C O N TIN U E 260 C O N TIN U E DO 270 IF 1 = 1 , 270 COEFAC6) *D F ( I, 5 ) M D E LTY C I) IF = .GT. P ) D E L T Y С I ) / Y X СI ) C AB SC D E LTYC I)) .GT. EPS2 ) GO TO 300 C O N TIN U E H = TUO*H IS TA R T IF = 2 CABSCH) ALP H - GO = .L E . A B S C H M A X )) GO TO 230 S I G N C H M A X , H ) * T WO/ H SIG N C H M A X ,H ) TO 29 0 C O N TIN U E A LP 290 D YXC I) C AE SC YX C I)) 1 230 = = TWO C O N TIN U E CALL D E 4 8 R P СM , I O R D E R , A L P , D F , 2 , Z P ) 299
300 C O N TIN U E IF (IE R R 1 CALL .N E . O) LOADGO( IE R R ,4 6 ,6HUTDE16) JSTART = HNEW = RETURN H 1 END 3,4. Интегрирование системы с правой частью* независящей от производной* методом Штермера без и с контролем точности CU B R O U TIN E D E 4 1R ( F , М , X N , Y N , 1 ХК, Н , Y , DY, D E L T Y ,D F ,R F N ,R F ,Y P ,D Y P , 2 IE R R ) IN TE G E R REAL M D E L T Y ,D F ,D Y ,D Y N ,D Y P ,H ,R F , RFN,XK,XN, 1 Y , Y N ,Y P D IM E N SIO N D E L T Y ( M ) , DF C M , 5 ) , D Y ( M ) , D Y N C M ) , 1 D Y P ( M> , R F ( M ) , R F N C M ) , Y C M ) , Y N C M ) , 2 YPCM) EXTERNAL A B S , DE4QR, LOADGO, SIG N IN TE G E R REAL I,J S T A R T A B S , H I , H S ,S IG N ,X LO G IC A L DO lO BUL 10 I = 1, M D Y C I) = DYNCI) Y C I ) = Y N C I) C O N TIN U E X IF = XN CX N . EQ. H SIG N C H ,X K -X N ) = BUL 20 = XK) GO TO 60 .F A LS E . C O N TIN U E JSTART 30 = О C O N TIN U E IF C .N O T. H = HI IF = TO 40 .GT. ABSCH)) GO TO 50 H BUL = H N1 = GO 6 0 = XK X CABSCHI) HS 50 BUL) HS GO TO C O N TIN U E 40 .T R U E . C O N TIN U E CALL 1 300 DYN , DE40RC F , M, J S T A R T , Y , X , D Y , H , D E L T Y , D F , RFN, R F , Y P , D YP, IERR)
IF (IE R R .E Q . CALL 6 0 O) GO TO 30 LOADGO( IE R R , 4 1 , 6HUTDE12) RETURN END SU B R O U TIN E D E 4 3R C F,M ,X N ,YN ,D YN ,X K ,H M IN ,H M A X , 1 2 E P S , P , H , Y , D Y, D ELTY, DF, RFN, R F , Y P , D Y P , IE R R > IN TE G E R REAL 1 IE R R ,M D E LT Y ,D F ,D Y ,D Y N ,D Y P ,E P S ,H ,H M A X ,H M IN , P ,R F ,R F N ,X K ,X N ,Y ,Y N ,Y P D IM E N SIO N D E L T Y (M ), DF CM,5 ) , D Y ( M > , DYN CM ), 1 D Y P (M ), RF C M ) , R F N ( M ) , Y C M ), Y N C M ), 2 Y P (M ) A B S ,D E 4 2 R ,LO A D G O ,S IG N EXTERNAL IN TEG ER REAL I,J S T A R T A B S ,H I,H S ,S IG N ,X LO G IC A L IE R R = BUL DO = .F A LS E . lO I “ D Y C I) Y C I ) 10 BUL О 1, = = M D YNCI) Y N C I) C O N TIN U E X IF = XN (X N H . EC?. « C O N TIN U E 30 JSTART C O N TIN U E 40 TO 60 О C . NQ T. H = GO GO S IG N C H ,X K -X N ) 20 IF XK) BUL) GO TO 40 HS TO 60 C O N TIN U E HI IF = XK X (A B S C H I) HS 50 - = BUL = H HI = .GT. A B S C H )) GO TO 50 H .TR U E . C O N TIN U E CALL D E42R ( F , M, J S T A R T , H M IN , HMAX, E P S , P , Y , 1 X, DY, H , BU L, D ELTY, DF, R FN , R F , Y P , 2 D Y P ,IE R R ) IF (IE R R CALL 6 0 .E Q . O) GO TO 30 LOADGO C IE R R ,4 3 , 6H U TD E 12) RETURN END SU B R O U TIN E 1 DE49R C F ,M ,X N ,Y N ,D Y N ,X K ,H M IN ,H M A X E P S ,P ,H ,Y ,D Y ,D E L T Y ,D F ,R F N ,
2 R F , Y P , D Y P , IE R R ) IN TE G E R IE R R , M REAL D E L T Y , D F , D Y , DYN , D Y P , E P S , H , HMAX, H M IN, 1 P ,R F , R F N , X K , X N , Y , Y N , Y P D IM E N S IO N D E L T Y C M ) , D F CM, 5 ) , D Y C M ) , D Y N C M ) , 1 D Y P C M ),R F (M ), RFNCM ), Y C M ), Y N C M ), 2 Y P CM) EXTERNAL IN TE G E R REAL I,J S T A R T A B S ,H I,H S ,S IG N ,X LO G IC A L IE R R DO = 10 BUL О I = D Y C I) 1, * Y C I ) = C O N TIN U E ID IF 20 30 A B S ,D E 4 S R ,LO A D G O ,S IG N M D YNCI) Y N C I) CXN X = .E Q . XN H S IG N C H ,X K -X N ) = XK) BUL = C O N TIN U E .F A LS E . JSTAR T О = GO TO 60 C O N TIN U E IF C H .N O T . = HS GO 40 TO BUL) GO TO 40 60 C O N TIN U E H I = IF CABS C H I ) HS = H H XK = BUL 50 - X .G T. AB SC H )) GO TO 50 HI = .T R U E . C O N TIN U E CALL D E 4 3 R C F ,M ,J S T A R T , H M IN ,H M A X , E P S , P , Y , 1 2 IF (IE R R CALL RETURN 6 0 X , D Y, H , B U L, D ELTY, D F, RFN, R F , Y P , D Y P ,IE R R ) .E Q . O) GO T O 3 0 LO A D G O СI E R R ,4 9 , 6H U T D E 1 6 ) END 3.5. Интегрирование системы с правой частью, зависящей от производной, методом Штермера с контролем точности S U B R O U TIN E 1 E P S , Р , Н , Y , D Y ,Z ,D E L T Y , DF, 2 R F N ,R F ,Y P ,D Y P ,Z P ,IE R R ) IN TE G E R 302 DE47R C F,М , X N ,Y N ,D Y N ,ХК, H M IN ,НМАХ, IE R R , M
REAL D E L T Y ,D F ,D Y ,D Y N ,D Y P ,E P S ,H ,H M A X ,H M IN , P , R F , R F N , X K , X N , Y , Y N , Y P , Z , Z P 1 D IM E N SIO N D E LTY C M ) , D F C M , 5 ) , DY C M ) , DYN C M ), 1 D Y P CM > , R F C M ) , R F N C M ) , Y C M ) , Y N C M ) 2 Y P CM) , Z C M ) , ZF’ CM ) EXTERNAL IN TE G E R REAL I,U S T A R T A B S ,H I, HS, S IG N , X LO G IC A L IE R R DO = 10 BUL О I = 1, Y C I ) = Y N C I) D Y C I) 10 A D S ,D E 4 6 R ,LO A D G O ,S IG N = M DYNCI) C O N TIN U E IF CX N .E Q , X = XN H = S IG N C H ,X K -X N ) BUL 20 = XK) GO TO 60 .F A LS E . C O N TIN U E •JSTART 30 = О C O N TIN U E IF C H .N O T. = GO 40 BUL) GO TO 40 HS TO 60 C O N TIN U E HI = IF CABS C H I) XK HS H = — BUL 50 — X .GT. AB SC H )) GO TO 50 H HI = . TRUE. C O N TIN U E CALL D E 4 6 R C F ,M ,J S T A R T ,H M IN ,H M A X ,E P S ,P ,Y * 1 D Y ,X ,H ,B U L ,Z ,D E L T Y ,D F ,R F N ,R F , 2 IF CALL 60 Y P ,D Y P ,Z P ,IE R R ) . EQ. O) GO T O 30 СI ERR LO A D G O C IE R R ,4 7 , 6H UTD E16) RETURN END 4. Решение задачи Коши для жесткой системы уравнений 4.1. Один шаг многозначного метода Гира переменного порядка точности SU B R O U TIN E 1 D E 2 4 R C F ,F J,M ,IO R D E R ,JS T A R T ,H M IN , H M A X ,E P S ,Y X ,X ,H ,B U L ,Y P M , 2 D E L T Y ,R A B ,Y P ,IE R R ) IN TE G E R IE R R , IO R D E R , J S T A R T , M 303
REAL 1 1 1 '■6 CO sj L>. СП -F СО К) м 00 К) F со м 1 D E L T Y ,E P S ,Н ,Н М А Х ,Н М I N ,R A B , X ,Y P * Y P M , YX L O G I C A L BUL D I M E N S I O N D E L T Y CM!) , R A B C 10, 1 ) , Y P C S , 1 ) , YPMCM),YXCM) E X T E R N A L A B S , A M A X 1,A M I N 1,DE21RP,DE21RU, LOADGO I N T E G E R I , I D O U B , I N D 1 , I N D I O , I N D 2 , I N D 9 , 10, I G O L D , I R , I R E T , I R E T 1 , IWEVAL,J,J1, J 2 ,J E R , К ,K E R ,K F L A G ,L ,M T Y P ,M X D E R , N1,N1 О ,N11,N12,N2,N3,N4,N5,N6,N7, N S , N 9 , N D I G ,N E W I ,N T R E A L A B S ,A M A X 1 , A M I N 1 , B N D ,C ,C O E F ,D ,D 1 , D 2 , E , E D W N , E N Q 1 ,E N Q 2 ,E N Q 3 ,E U R ,H A L F , H N E W , H O L D , H O L D 1 , O N E ,O N E P ,P ,P E P S H ,P R 1 , P R 2 , P R 3 ,R ,R 1 , R A C U M ,S I G N ,T O L D , X K , Z E R O D I M E N S I O N С CS ) ,C O E F C 7 , 2 , 3 ) , P C42) E Q U I V A L E N C E СP C l ) , C O E F C l ) ) D A T A С C2) , Z E R O ,H A L F ,O N E ,O N E P ,N D I G / — 1 . , 0 . , . 5 , 1 . , 1 . O O O O O 1 ,0 / D A T A P С 1 ) , P C2 ) , P C3 ) , P C4 ) , P C5 ) , P C6 ) , P C7 > , P C S ) , P C 9) ,P C l O ) ,P С 1 1 ) , P C 1 2 ) , P C 13), P С 14 ) , P C 15 ) , P С 16) , P С 17 ) , P С 18 ) , P С 1 9 ) , P C 2 0 ) , P C2 1 ) , P C2 2 ) , P C23), PC 24) ,PC 25) ,PC 2 6 ) , P C2 7 ) , P C28), PC 2 9 ) , P C3 0 ) , P C3 1 ) , P C 3 2 ) , P C33), PC 34) ,P C3 5) ,P C3 6 ) , PC 3 7 ) , P C38), P C3 9 ) , P C4 0 ) , P C4 1 ) , P C4 2 ) / 2 . ,4.5, 7 . 3 3 3 . 1 0 . 4 2 . 1 3 . 7 . 1 7 . 1 5 . 1 . . 2 . 0 . 1 2 . 0, 24.0. 87,• 8 9 , 5 8 . 8 8 , 7 0 . 0 * 8 6 . 0 . 9 . 1 6 7 . 1 2 . 5 . 1 5 . 9 8 . 1 . 0 . 1 . 0 . 12.0, ■ 1 < У 1 . , О. 5 , О. 16677 4 / *4 /*. 4 У У— T . Л . . . 0 . . 1 .0 , Л Л 1 . 0 , 1 . О , 2" . 0~, 1 . 0 , . 3 1 5 7 , . 0 7 4 0 7 , 9/ s!4 М 304 . 0 ,3 7 .8 9 ,5 3 .38 3 , 7 0 . 0088 8 7 9 7 0 4 1 3 3 .
IND1 = N4 + 1 IN D 2 = N4 + 2 IN 0 9 = N4 + 9 I N D I O = N 4 + 10 IR E T = 1 KFLAG = 1 MXDER = IORDER M DO 1 0 I = 1, lO 20 30 40 50 60 70 SO 90 100 1 10 11 Зак. 217 IF (YPM ( I ) C O N TIN U E IF ( IO RD ER . E U . 0. . LE . 6) ) GO GO TO TO 90 20 .JER = 1 MXDER = 6 CONTINUE IF ( J S T A R T .LE. O) G O T O S O CONTINUE D O 5 0 I = 1, M DO 4 0 J = 1, К IR = N4 + J R A B С I R , I ) = Y P CJ, I ) CONTINUE CONTINUE HOLD = HNEW IF CH .EQ. H O L D ) G O T O 7 0 CONTINUE RACUM = H/HOLD IRET1 = 1 GO TO 730 CONTINUE I O O L D = 10 TOLD = X RACUM = SIGN(ONE,RACUM) IF ( J S T A R T .GT. O) G O T O 2 3 0 G O TO 140 CONTINUE IF ( J S T A R T + 1 .EQ. O) G O T O IF ( E P S .NE. O . ) G O T O 100 K F L A G = -6 G O TO 790 1 30 C O N TIN U E KFLAG = - 7 GO T O 7 9 0 C O N TIN U E DO 1 1 0 I = 1, M = Y P (1 ,1 ) YXCI) C O N TIN U E I О = 1 C A L L F C X , Y X , R A B CN DO 1 2 0 I — 1 , M N11 = N1 + I 305
V P C 2 , I > 1 2 0 К - = H 2 GO TO 30 C O N TIN U E IF X C IO = . EQ. IG O LD ) JSTART ~ К = CO I Ci + TO 1 60 C O N TIN U E 350 GO T O Cl 5 0 , C O N TIN U E C C D GO = TO 1 6 0 ,1 7 0 ,1 S O , 1 9 0 ,2 0 0 ), -O NE 210 C O N TIN U E C C l ) = - O . 6 6 6 6 6 6 6 6 6 6 6 7 CCS) = -0 .3 3 3 3 3 3 3 3 3 3 3 3 GO TO 2 1 0 C O N TIN U E CCl> = -0 .5 4 5 4 5 4 5 4 5 4 5 5 CCS) = C C D С C4 ) - GO 1SO TO 190 C C D - -O . 48 CCS) CC4) = ^ - 0 . 7 - 0 . 2 CC5) = - 0 .0 2 TO 210 210 C O N TIN U E C C D = -O . 4 3 7 9 5 6 2 0 4 3 8 0 С C3 ) = - O .8 2 1 1 6 7 8 3 3 2 1 2 С C4 ) = -0 .3 1 0 2 1 8 9 7 8 1 0 2 CC5) = -0 .0 5 4 7 4 4 5 2 5 5 4 7 4 CC6> = GO 200 TO - O . 0 0 3 6 4 9 6 3 5 0 3 6 5 0 210 C O N TIN U E C C D = -O . 4 0 8 1 6 3 2 6 5 3 0 6 CCS) CC4) = = -0 .9 2 0 6 3 4 9 2 0 6 3 5 - O . 4 1 6 6 6 6 6 6 6 6 6 7 С C5 ) = - 0 .0 9 9 2 0 6 3 4 9 2 0 6 3 CC6) = -0 .0 1 1 9 0 4 7 6 1 9 0 4 7 CC7) ~ - O . 0 0 0 5 6 6 8 9 3 4 2 4 0 3 6 C O N TIN U E К - 10 ID O U B MTYP 306 - 0 .0 9 0 9 0 9 0 9 0 9 0 9 1 210 C O N TIN U E GO 1 IG O LD 140 170 = TOLD ID 160 R A B C N l1 , 1 )* H C O N TIN U E H N E l' 13 0 - + = = 1 К 1 ID
ENQ1 * ENQ2 = H A LF/C IO + 1 ) ENQ3 = H A LF/C IO + = EUP = COEF C IO ,M T Y P ,2 ) *PE PSH E C O E F C IO ,M T Y P ,1 >*P E P S H = BND » * EPS COEF C I O , M T Y P , 3 ) *P E P S H EPS*ENQ3/M C O N TIN U E IW E V A L GO 230 = TO 1 ( 2 3 0 , 6 5 0 ) , IR E T C O N TIN U E X = X + H DO 26 0 DO 0 = 2 , 250 J i 240 250 К = J, J 2 = К - 01 DO 240 I = YPC 02, I ) К + 0 1, = - 1 M Y F ’ C.J2, I ) + Y P C J 2 + 1 ,I> C O N TIN U E C O N TIN U E 260 C O N TIN U E DO 270 I = D ELTY СI ) YX СI ) 27 0 IF 1, = = C O N TIN U E DO 3 8 0 L CALL ZERO Y P C I, I ) = 3 1, C IW E V AL R » DO -L T . 1) GO TO 310 F J ( X , Y X , R A B ,N 3 > C C 1 )*H 280 I = *1, RABC1 ,1 ) 280 M F C X , Y X , R A B C N 2 , 1 ) , M> CALL = N4 R A B ( 1 , 1 ) *R C O N TIN U E 290 C O N TIN U E N11 = N3 N12 = I i * N 11 DO 300 + 300 1 - N3 1 = 1 , RAB С1 , 1 ) = N 12, N11 R A B С1 , 1 > + ONE C O N TIN U E IF CM .E Q . CALL 1) GO TO 310 D E 2 1 R U CRAB, R A B , M, N 3 , N D IG , D I , D 2, 1 2 310 2 ) PEPSH EDWN 2 2 0 H ALF/ <10) R A B C N 7 , 1 ) , R A B C N 3 , 1 ) , R A B CN9 1 > , KER) IF CKER) C O N TIN U E DO 320 N11 N12 = = I N5 N1 3 1 0 , = 1, + + R A B C N l1 , 1 ) 3 1 0 , 390 M I I = YP C2, I ) - R A B (N 1 2 , 1 ) *H
320 CONTINUE I F CM .G T . 1) G O T O 3 3 0 R A B C N 3 , 1 ) = R A B C N 6 , 1 ) / R A B C 1,1) G O TO 340 330 CONTINUE C A L L . D E 2 1 R P C R A B , R A B C N6, 1 ) , R A B C N7, 1 ) , M, 1 N 3 , R A B CN 8 , 1 ) ) 340 CONTINUE DO 3 5 0 I = 1, M IR = N I O + I R A B C I N D 9 , I ) = R A B С I R , 1) 350 CONTINUE 360 CONTINUE NT = M D O 3 7 0 I = 1, M Y P C I , I > = YPCI,I) + C C 1)*RABCIND9,I> Y P C 2 , I ) = Y P (2,1) - R A B С I N D 9 , I ) Y X C I ) = Y P (1,1) DELTYCI) = DELTYCI) + RABCIND9,I) I F C A B S C R A B C I N D 9 , I ) ) .LE. C B N D * Y P M С I ) )) 1 NT = NT - 1 370 CONTINUE I F C N T .LE. O) G O T O 4 5 0 330 CONTINUE 390 CONTINUE X = X - H I R = -1 IF C C A B S C H ) - LE . C A B S C H M I N ) * O N E P ) ) .A N D » 1 CCIWEVAL - MTYP) .LT. IP.) ) G O T O 4 0 0 IF C I W E V A L . NE . O) R A C U M = R A C U M * 0 . 2 5 IWEVAL = 1 IRET1 = 2 G O TO 730 400 CONTINUE KFLAG = -3 410 CONTINUE DO 430 I = 1, M D O 4 2 0 .J = 1, KIR = N4 + J Y P C J , I ) = R A B С IR, I > 420 CONTINUE 430 CONTINUE D O 4 4 0 I = 1, M Y X C I ) = Y P C 1 , I) 440 CONTINUE H = HOLD IО = IGOLD J S T A R T = ID G O TO 7 SO
450 460 1 470 480 490 500 510 1 520 1 1 530 540 CONTINUE D = ZERO D O 4 6 0 I = 1, M D « D 4- C C D E L T Y C I ) / Y P M C I ) ) / E ) * * 2 CONTINUE IWEVAL = О IF CD .GT. 1.) G O T O -510 IF C A B S C H ) .LT. A B S CH O L D 1)) B U L = .FALSE. I F CK .LT. 3) G O T O 4 9 0 DO 430 J = 3, К D O 4 7 0 I = 1, M Y P CJ , I ) = Y P CJ, I ) •+■ CC.J) * D E L T Y C I ) CONTINUE CONTINUE CONTINUE K F L A G = +1 HNEW = H IF C I D O U B .LE. 1) G O T O 5 2 0 IDOUB = IDOUB - 1 I F C I D O U B .GT. 1) G O T O 6 3 0 D O 5 0 0 I = 1, M R A B С I N D 10 , I ) = D E L T Y С I ) CONTINUE GO TO 680 CONTINUE KFLAG = KFLAG - 2 IF C A B S C H ) .LE. CABS CHMIN) *ONEP) > GO TO 720 X = TOLD IR = -9 I F C K F L A G .LE. IR) G O T O 7 0 0 CONTINUE PR2 = D**ENG2*1.S P R 3 = 1 . E + 18 IR = -1 IF C C I O .GE. M X D E R ) .OR. C K F L A G .LE. ' IR)) G O T O 5 4 0 D = ZERO DO 530 I = 1, M D = D + С C C D E L T Y C I )- R A B C I N D I O , I ) ) / Y P M C I ))/EUP)*^2 CONTINUE P R 3 = D * * E N Q 3 * 1.75 CONTINUE F’Rl = l . E + 1 8 I F ч C I O .LE. 1) G O T O 5 6 0 IR = 10 - 1 IF CCOEFCIR,MTYP,3)*EPS .EQ. O.) 309
1 GO D = TO 560 ZERO DO D 550 = D I + — 1, M < C Y P (K , I )/ Y P M (I ))/ E D W N > * * 2 C O N TIN U E P R 1 = D * * E N Q 3 * I.6 5 5 0 C O N TIN U E 56 0 IF (P R 2 IF .L E . (P R 3 PR 3) .L T . GO P R 1) TO GO 620 TO C O N TIN U E 57 0 R * 1 .0 / AMAX1 ( P R ! , 1.Е -З Э NEWI = 1 0 - 1 C O N TIN U E 5 8 0 ID O U B = lO IF < CKFLAG 1 59 0 .E Q . С1 . 1 ) > ) GO CNEWI .L E . IF XK = DO 59 0 1) TO .A N D . 10) GO TO N YPCNEWI + 1 ,1 ) = I NEWI IF = 61 0 + (K F L A G RACUM D E L T Y СI ) * C ( K ) * X K 1 .E Q . 1) = RACUM *R IR E T 1 = 3 GO 730 TO GO TO 640 C O N TIN U E IF (N E W I .E Q . IO = NEWI GO 62 0 TO IO ) GO TO 230 140 C O N TIN U E IF (P R 2 NEWI .G T. = P R 1) GO TO 570 I О R = 1 . 0 / A M A X 1 ( P R 2 , 1 . E —3 ) GO TO 5 8 0 63 0 C O N TIN U E R = 1 . 0 / AMAX1 ( P R 3 , i . E - 3 ) NEWI GO = TO 1 0 + 1 58 0 C O N TIN U E IR E T R H = = = IF 2 A M IN 1 <R ,A B S C H M A X /H )> H*R HNEW 310 600 ONE/K 1, = = (IO IO = GO TO H .E Q . NEWI 140 C O N TIN U E .LT . 680 C O N TIN U E К 6 5 0 CR C O N TIN U E 60 0 64 0 630 NEWI) GO TO 650
Rl = ONE DO 670 J = 2 , к Rl = RlHR DO 660 I = 1, M YPCJ,I) = YPCJ,I)*R1 CONTINUE 660 CONTINUE 670 IDOUB = К CONTINUE 630 DO 690 1 = 1 , M YPM С I) = AMAX1(YPMCI),ABSCYPC1, I))) CONTINUE 690 JSTART = IO GO TO 780 CONTINUE 700 IF CIO -EQ. 1) GO TO 770 CALL F СX ,Y X ,RAB (N2, 1 ) ,M > R = H/HOLD DO 710 I = 1, M YPCI , I> = RABCINDl, I) YXCI) = YPCI,I) N11 = N1 + I RAE С IND2, I) = HOLD*RABCNll,1) Y P (2,1) = RABCIND2,I)*R 710 CONTINUE IO = 1 KFLAG = 1 GO TO 140 720 CONTINUE KFLAG = -1 HNEW = H JSTART = 1 0 GO TO 790 730 CONTINUE RACUM = 3IGNCAMAX1(AESCHMIN/HOLD), 1 ABS CRACUM)),RACUM > RACUM = SIGN CAMINI CABS(RACUM),ABS(HMAX/ 1 HOLD)),RACUM) Rl = ONE DO 750 J = 2, К Rl = Rl*RACUM DO 740 I = 1, M IR = N4 +• J Y P (J,I) = R A B (IR,I)*R1 740 CONTINUE 750 CONTINUE H = HOLD*RACUM DO 760 I = 1, M YPCI,I) = RABCINDl,I)
Y X C I ) 760 « V P ( 1 , 1 ) C O N TIN U E ID O U B = К GO TO ( 7 0 , 2 3 0 , 6 1 0 ) , IR E T1 C O N TIN U E 770 KFLAG = -4 GO T O 4 1 0 C O N TIN U E 780 IF 790 (K F L A G . EQ. 1) GO TO 800 C O N TIN U E IERR 800 = 64 - KFLAG C O N TIN U E IF 1 (JE R .N E . CALL L O A D G O ( J E R , 2 4 , 6 H U T D E 12 > IF (IE R R .GT. 6 5 ) IF (IE R R .NE. O) 1 CALL IF 1 810 O) IERR = IERR - 1 LOADGO( I ERR, 2 4 , 6HUTDE12) (( I E R R . EQ. IERR JER = O) .A N D . (JE R . NE. 0>> RETURN END 4.2. Интегрирование системы многозначным методом Гира переменного порядка точности SUBROUTI N E D E 2 5 R СF , F J , М , X N , Y N , Х К , Н М I N , Н М А Х , 1 E P S , IO R D E R , I U , Н , Y , Y PM , 2 D E L T Y ,R A B ,Y P ,IE R R ) IN TE G E R REAL IE R R ,IO R D E R .IU ,M D E L T Y ,E P S ,К , HMAX, H M IN ,R A B ,X K ,X N ,Y , 1 Y N ,Y P ,Y P M D IM E N SIO N D E L T Y (M ), RABC1 0 , 1 ) , Y C M ), YN C M ), Y P C 8 , 1 ) , Y P M CM) 1 EXTERNAL IN TE G E R REAL I , IH , IORD, JSTART A B S ,H I,H S ,S IG N ,X LO G IC A L IO IE R R = IH = О DO 10 О I * 1, Y ( I ) = Y N C I) ” M XN IO R D IF * (X N H * BUL IO RD ER .E Q . XK) GO TO S IG N C H ,X K -X N ) * .F A LS E . C O N TIN U E JSTART 312 BUL C O N TIN U E X 2 0 D E 24R ,LO A D G O a О 120
C O N TIN U E 3 0 IF ( .N O T. H = GO BUL) GO TO 40 HS TO 120 C O N TIN U E 40 IF (IU DO .N E . 50 3 ) I = GO 1, YPM ( I ) = TO 60 TO 90 M 1. C O N TIN U E 5 0 GO TO lO O C O N TIN U E 60 IF (IU .N E . 2 ) GO C O N TIN U E 7 0 DO SO I = 1, M Y P M ( I ) = A B S C Y ( I ) ) IF (Y P M ( I > .L T . E PS) GO TO C O N TIN U E IF (IH .E Q . 90 YPM ( I ) = EPS iO O IH = GO TO 1) GO TO IO O 1 70 C O N TIN U E lO O H I = IF ( ABS (H I ) XK HS 1 IO - = .G T. ABS ( H ) ) GO TO H O H BUL = H HI = X -TRU E. C O N TIN U E CALL D E 2 4 R C F ,F J,M , IO R D ,J S T A R T ,H M IN , HMAX, E P S , Y , X , H ,B U L,YPM , ! D E L T Y ,R A B ,Y P ,IE R R ) IF (IE R R IF O) .G T. GO 6 4 ) TO GO 30 TO 120 CALL LOADGO<IE R R ,2 5 , 6HUTDE12) IO R D = GO 120 .E Q . (IE R R TO 6 30 C O N TIN U E IF (IE R R CALL 130 .E Q . O) GO TO 130 LOADGO( IE R R ,2 5 , 6HUTDE12) RETURN END 4.3. Один шаг интегрирования линейной системы неявным методом Рунге-Кутта 6-го порядка с контролем точности D E 3 6 R СF A , F I , М , J S T A R T , Н М I N , E P S , fl. N SU B R O U TIN E Y X , X , H , B U L , Х Р ,Y P , I R , R l , R R 3 ,R 4 ,R 5 ,IE R R )
IN TEG ER REAL IE R R ,IR ,J S T A R T ,M E P S , H M I N , P , R l , R 2 , R 3 , R 4 , R 5 , X , X P ,Y P , 1 YX LO G IC A L BUL D IM E N SIO N IR С1 ) , R 1 ( 1 > , R 2 ( 1 ) , R 3 ( M , M ) , 1 R 4 (M > ,R 5 < M > , Y P ( M ) , YX(M ) EXTERNAL COMMON A S 0 8 R , LOADGO / C G M 3 6 R / M 3 ,M 3 P 1 , М З З ,М Р 1 , M 2 P 1 , M4, 1 E PS 1 , EPS2 I NTEGER I , I S T R , .J, J 1 , J 2 , J U M P , J U M P 1 , L , M 2 P 1 , 1 М 3, M 33, M 3P1 ,M4, MP1 REAL A B S , CMU, E P S 1 , E P S 2 , H 1 , MU, S IG N , W, W1 , W2,W3,W4 1 LO G IC A L B U LH ,B U LH M D IM E N SIO N DATA M U C 1 ) , M U C2 ) , M U ( 3 ) , M I J ( 4 ) , M U < 5 > , 1 2 M U С 1 1 ) , M U С 1 2 > , M U (. 1 3 ) , M U < 1 4 ) , M U ( 1 5 ) 3 /О. 1 12701 < £ 6 5 3 7 9 ,0 .5 ,0 .3 8 7 2 9 8 3 3 4 6 2 1 , 4 O .1 3 8 S S 8 8 8 8 8 S 9 ,-0 .0 3 5 9 7 6 6 6 7 5 2 4 9 , M U C 6 ) , M U ( 7 ) , M U C 8 ) , M U < 9 ) , MUC 1 0 ) , 5 O . 9 7 8 9 4 4 4 0 1 5 3 1 E —2 , 0 . 3 0 0 2 6 3 1 9 4 9 8 1 , 6 О .2 2 2 2 2 2 2 2 2 2 2 2 ,- О .0 2 2 4 8 5 4 1 7 2 0 3 1 , 7 О .2 6 7 9 8 8 3 3 3 7 6 2 ,О .4 8 0 4 2 1 1 1 1 9 6 9 , 8 О . 1 3 8 8 8 8 8 8 8 8 8 9 ,0 .2 7 7 7 7 7 7 7 7 7 7 8 , 0 .4 4 4 4 4 4 4 4 4 4 4 4 ,0 .2 7 7 7 7 7 7 7 7 7 7 8 / 9 IE R R DO = 10 О I = 1, CMU С I ) 10 = BULH IF = = » .F A L S E . .T R U E . (J S T A R T IF .E Q . (J S T A R T MP1 = M = М3 M *3 = M33 M4 20 MP1 = = = - 1 ) .E Q . + 1 M 2P1 M3P1 М3 + + 30 I M 1 M 3*M 3 M *M 3 Y P C I ) 30 = 1, = XP = X C O N TIN U E JUMP1 = 1 EPS1 = E PS*6 3 . EPS2 - E P S 1/128. GO TO 120 M Y X C I) C O N TIN U E GO 1) C O N TIN U E DO 314 15 MU( I ) *Н C O N TIN U E BULHM 40 CMUC1 5 ) ,M U C 15) TO GO 290 TO 20
5 0 C O N TIN U E DO 60 I - R 4 C I) = 60 C O N TIN U E 70 C O N TIN U E DO SO 1 , I = = = DO 90 = H * 0 . 5 I = = GO 120 TO 110 = = 1, 2 I M Y X C I ) X + HI = 3 C O N TIN U E = X + CMU < 1 ) ~ C M U (4) W2 * CMU(5 ) W3 = C M U C6 ) IS T R = 1 JUMP = 1 GO TO 150 C O N TIN U E W = X + CMU(2 ) W1 = C M U (7) W2 = CMU (S ') W3 = C M U (9) ISTR = MP1 JUMP = 2 GO TO 150 CONTINUE W = U'l 150 Y P C I) JUM P1 W1 140 = R 5 C I) C O N TIN U E W 1.30 M C O N TIN U E X 120 1, XP JUMP1 DO H O CMU( I ) * 0 . 5 C O N TIN U E X 100 15 C O N TIN U E HI Y X C I ) 9 0 Y X C I ) 1 , CMU C I ) 80 M X = + C M U <3 ) CMU C I O ) W 2 = сми c m W3 = C M U (12) ISTR = M 2 P 1 JUMP = 3 CONTINUE CALL F A C R 3 , Ul, M ) CALL F IC R 2 ,W ,M ) J DO = IS T R 170 I - 1 - 1, M 315
J = J W = + 1 0.0 J1 = J - DO 160 М3 L = 1, M J1 = J1 + W4 = R 3 C I,L > R l <J 1 ) J2 = = J1 = = J2 = M4 W 4*W 2 + R 1 (J 2 ) W W 4*W t + R lC J 2 ) J2 М3 = W + M4 W 4*W 3 W 4*YXCL) C O N TIN U E 160 L = M33 R 1 CL) + = J - R 2 C I ) W - C O N TIN U E 170 GO C1 3 0 , 1 4 0 , 1 3 0 ) , JUMP TO C O N TIN U E 130 DO 190 190 I = 1, R l C I ) = R l C I ) M3P1 M 33, - 1 . 0 C O N TIN U E C ALL DO A S 0 3 R C M 3 ,0 ,M 3 ,R 1 ,R 2 ,IR ) 200 J = <J1 I I - = + J Y X C I ) 1, M + M = 1 2 0 0 M ' Y X C I) + CMU C1 3 ) * R 2 С I ) C M U C 1 4 )*R 2 C J ) + + CMUC1 5 ) *R 2 C J1) C O N TIN U E GO 2 1 0 TO <50, 1 0 0 ,2 1 0 ),.JUMP1 C O N TIN U E DO 230 W = IF W IF I = 1f M Y X C I ) - R 4 C I) C A B S C Y X СI ) ) = .G T. P ) W = GO TO 220 TO 310 W /YXCI) A B S C W) CD .L E . IF CBULHM) E P S 1) GO H = HI BUL = BULH IF 1 GO TO = .GT. ABSCH M IN)) 240 S IG N CHMIN,H) BULHM = GO 260 CW TO .L T . BULH C O N TIN U E X = X + HI 316 .F A L S E . .T R U E . C O N TIN U E IF 23 0 = CABSCH) H 22 0 .F A LS E . = E P S 2 ) .F A L S E . GO TO 230
^ 24 0 IF (B U L H ) GO ТО Н н + н = 320 C O N TIN U E DO 250 I = 1, R 4 C I ) = R 5 ( I ) I = 1, Y X C I ) = Y P C I ) 2 5 0 C O N TIN U E 2 6 0 GO TO 7 0 C O N TIN U E DO 27 0 270 М M C O N TIN U E DO 280 1 = 1 , CMUCI) 2 3 0 = 15 M U C I)*H C O N TIN U E X = XP GO 2 9 0 TO 40 C O N TIN U E DO 300 I = 1, Y X C I ) 30 0 = Y P C I > M C O N TIN U E X = GO 31 0 XP TO 40 C O N TIN U E 320 IE R R = 65 CALL LOADGO СI E R R , 3 6 , 6 H U T D E 1 6 ) C O N TIN U E JSTAR T = 1 RETURN END 4.4. Интегрирование линейной системы неявным методом Рунге-Кугта 6-го порядка с контролем точности SU B R O U TIN E D E 3 7 R C F A ,F I , М ,X N ,Y N ,Х К ,H M IN ,E P S , 1 P , H , Y , R A B , I R TIERR) IN TE G E R REAL IE R R , I R , M E P S , F A , F I , H ,H M IN ,P ,R A B ,X K ,X N ,Y ,Y N D IM E N S IO N EXTERNAL IN TE G E R 1 D E 36R ,LO A D G O I , J S T A R T , M 2 2 , М 3 , NJR1, N R 2 , N R 3 , N P 4 , NR5 REAL IO I R C 1 ) , R A B ( 1 ) , Y СM ) , Y N C M ) A B S ,H I,H S ,S IG N ,X LO G IC A L IE R R = О BUL DO IO I = 1, M Y C I ) = Y N C I) C O N TIN U E X = XN 317
. EQ. CX N М3 =' M22 3*M M*M 2 ч - = = NR1 GO TO NR2 NR3 = NR 1 M + = NR2 + М3 NR4 NR3 NR 4 + M22 NR5 = = + M H S IG N C H ,X K -X N ) = BUL = M 3*CM 3 50 + 1) .F A L S E . JSTA R T 2 0 XK) = 0 C O N TIN U E IF (. И .N O T . = HS GO 30 TO BUL) GO TO 30 50 C O N TIN U E H I = XK - X IF ( A B S <H I ) .G T . A B S (H )) HS H H = Hi BUL 40 - TO 4Г ' .T R U E . C O N TIN U E CALL D E 3 6 R C F A ,F I, M ,J S T A R T ,H M IN ,E P S ,P ,Y ,X r 1 H , B U L , R A B C l ) , R A B C2 ) , I R , 2 R A B CN R 1 ) , R A B C N R 2 ) , R A E : CN R 3 ) , 3 RABCNR4) , R A B C N R 5 ), IE R R ) IF C IE R R CALL 50 GO .E G . O) GO TO 20 L O A D G O C IE R R ,3 7 T6H U TD E 16) RETURN END 4.5. Интегрирование линейной однородной устойчивой системы с переменными коэффициентами экспоненциальным методом без контроля точности SU B R O U TIN E D E 3 I R СF A , М , X N 4 Y N , Х К , N , N S , Y , А , Е , R , 1 R 1 , R 2 , R 3 , I E R R ) IN TE G E R REAL IE R R ,M ,N ,N S A , E , R , R 1 , R 2 , R 3 , X K ,X N ,Y ,Y N D IM E N S IO N A C M ,M ),E C M ,M ),R C M ),R 1 C M ,M ), 1 R 2C M ,M ) , R 3 < ri> ,Y C M ) , YNCM) EXTERNAL IN TE G E R C i D 7 , D L „ D L 1 , F L O A T , H , R A ,X DATA C 1 D 7 / 0 .1 4 2 8 5 7 1 4 2 8 5 7 / ,C7M1/6/ IO - О I Y C I ) 318 B , C 7 M l , 1 , 1 1 , I S , J , L , N O REAL IE R R DO LOADGO = 1, M = Y N C I)
I O C O N TIN U E IF ( XN IF .E Q . XK> GO (N .L T . 1) IF (NS .L T . DL ~ = X XN = DO 420 GO - TO X N )/ F L O A T (N S ) IS CALL = 1, NS F A (A ,X = + 30 I = DO 20 1, .J M = 1, A ( I , J ) C O N TIN U E 2 0 D L 1 , M) D L / F L O A T (N ) DO 3 0 50 I DO = - 1, 40 40 J = 1, RA = C1D7 11 = C7M1 C O N TIN U E 80 I = DO 70 1, J M = 1, E ( I , J ) 70 = M E ( I , J ) » R A C O N TIN U E E ( I , I ) = E ( I , I ) + 1. C O N TIN U E DO 120 DO 90 L - 1, M IO O I = RA = O. 1, DO 90 J = RA = RA M 1, M + A ( I , U > * E ( J , L ) C O N TIN U E R C I ) IOO = RA C O N TIN U E DO 110 Н О I E d , L ) - 1, = M R ( I ) C O N TIN U E C O N TIN U E R A = 1 . /FLOAT ( I D 11 = 11 IF d l - 1 .N E . O ) GO TO 60 + 1. C O N TIN U E DO 140 E d , 140 M A (I , J ) C O N TIN U E DO 130 - C O N TIN U E 5 0 120 A ( I , J ) * H M E d , J ) 8 0 M C O N TIN U E DO 6 0 430 0 .5 *D L 410 H 450 TO 1) (XK DL1 TO GO I I ) C O N TIN U E В = N “ 1, = M E d , I )
NO « N DO 160 DO J = 150 1, I M - 1, R 1 ( I , J ) R 1 <J , J > ~ GO TO 260 TO (1 8 0 ,2 2 0 ),1 1 C O N TIN U E DO 2 1 0 DO L = 200 RA DO 1, I M = 1, O. 190 J = RA = RA R 2 ( I , L ) GO 2 TO 260 250 DO L = 240 1, I = 1, RA - DO 23 0 J = RA = RA M 0. E ( I , L X 1, M + R 2 C I , J ) * R 2 ( J , L ) = RA C O N TIN U E 24 0 C O N TIN U E 11 = 1 C O N TIN U E NO = IF (B - GO TO B/2 2*NO -EQ . O) GO TO 370 (2 7 0 ,3 2 0 ),1 1 C O N TIN U E DO 3 1 0 DO J = 290 RA DO 1, I = M = 1, M 0. 280 RA L = = RA 1, C O N TIN U E DO 3 00 I = R l < I , J ) 1, = M -s* E ( I , L ) * R 1 ( L , J ) C O N TIN U E R C I ) = RA 280 320 M C O N TIN U E 2 3 0 290 RA C O N TIN U E DO 27 0 = C O N TIN U E 1 1 — 26 0 1, M + E< I , . J ) * E ( J , L ) C O N TIN U E 20 0 2 5 0 M C O N TIN U E 190 2 20 1. C O N TIN U E GO 210 = C O N TIN U E 11 = 1 160 ISO 0. C O N TIN U E 150 170 = M N R C I )
CONTINUE CONTINUE GO ТО 370 CONTINUE DO 360 . J = 1, M DO 340 1 = 1, M RA = 0. DO 330 L = 1, M RA - RA + R 2 СI,L }* R 1 CL,J> CONTINUE RCI} = RA CONTINUE DO 350 1 = 1 , M R1CX.J) = RCI} CONTINUE CONTINUE CONTINUE В = NO IF CB .NE.. O) GO TO 170 DO 390 1 = 1 , M RA = O. DO 380 J = 1, M RA = RA + R1CI,J}*YCJ> CONTINUE R3 (I> = RA CONTINUE X = X + DL DO 400 1 = 1 , M YCI) = R3CI) CONTINUE CONTINUE GO TO 450 CONTINUE IERR = 65 GO TO 440 CONTINUE IERR = 66 CONTINUE CALL LOADGOCIERR,31 ,6HUTDE10) RETURN 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 END .4*6. Интегрирование линейной однородной устойчивой системы с постоянными коэффициентами экспоненциальным методом без контроля точности SU B R O U TIN E 1 D H 3 0 R C N ,X N „ Y N ,ХК IERR} N, А, У ,Е R , Ы1 I
IN TE G E R REAL IE R R ,M ,N A ,E ,R ,R 1 ,R 2 ,X K ,X N ,Y ,Y N D IM E N SIO N A (M ,M > ,E (M ,M ),R (M > ,R 1 < M ,M > , 1 R 2 <M ,M >, Y < M ),Y N C M ) EXTERNAL IN TE G E R REAL C lD 7 ,D L ,F L O A T ,H ,R A DATA C 1 D 7 / 0 .1 4 2 3 5 7 1 4 2 3 5 7 / ,C7M1/6/ IE R R IF LOADGO B f C 7 M l , I , I I , J , L , N O = О (N .L T . 1) DL = XK — XK = XN H = DO GO DL/FLO AT<N) 20 I = DO IO 1, J M = 1, 40 I = 1, DO 30 J E C I,J ) M 1, M = A ( I , J ) C O N TIN U E C O N TIN U E RA = C1D7 I I = C7M1 C O N TIN U E DO 70 I = DO 60 1, J M — 1, E <I , J ) 60 = M E C I,U )* R A C O N TIN U E E < I f I ) = E C I, I ) + 1. 110 DO SO L = 1, M 90 RA I = = 1, O. DO 80 J = RA = RA M 1, M + A ( I , J ) * E <J , L ) C O N TIN U E R C I) 9 0 = RA C O N TIN U E DO IO O I = E ( I , L ) C O N TIN U E 1 OO 1, = M R < I ) C O N TIN U E RA * 1 . / F L O A T (II) 1 1 = 1 1 - 1 IF 120 ( I I .N E . O) GO C O N TIN U E DO 3 22 - C O N TIN U E DO H O f t ( I , J ) * H C O N TIN U E 30 40 70 = M C O N TIN U E DO 50 390 XN A C I ,J ) 10 20 TO 130 I = 1, M TO 50
Е ( I , 130 I) = Е СI , I ) NO DO = N — N 150 DO J = 140 1, I M = 1, R 1 (I ,J > 150 160 170 130 190 200 210 220 230 = 1 C O N TIN U E IF = B/2 CB - GO TO 2*NO .E Q . O) GO TO 360 (2 6 0 ,3 1 0 .) , 11 C O N TIN U E DO 300 DO 270 = RA C O N TIN U E NO 260 O. C O N TIN U E II 250 = M CONTINUE R l (J,J) = 1. C O NTIN U E 11 = 1 G O TO 2 5 0 C O NTIN U E G O TO ( 1 7 0 , 2 1 0 , 11 CO NTINUE DO 2 0 0 L = 1, M M DO 1 9 0 1 = 1 , RA = 0 . DO I S O J = 1 , M R A = RA + ЕС I , J ) * E < J , L > C O NTIN U E R 2(I,L) = RA CO NTINUE CO NTINUE 1 1 = 2 G O TO 2 5 0 CO NTINUE DO 2 4 0 L = 1, M M DO 2 3 0 1 = 1 , RA = 0 . DO 2 2 0 J = 1 , M R A = RA + R 2 ( I , J ) * R 2 ( J , L ) C O NTIN U E E ( I , L) 240 1. C O N TIN U E В 140 + U = 2 8 0 1 , M - 1, I RA = DO 270 O. L = RA = RA C O N TIN U E R ( I > M = 1, + M E < I , L ) * R 1 ( L , J ) RA 323
230 290 300 310 3 2 0 3 3 0 34 0 35 0 360 3 7 0 330 390 400 • CO NTINUE DO 2 9 0 I » 1, M R 1 C I , J ) = RC I > CO NTINUE C O NTIN U E G O TO 3 6 0 C O NTIN U E D O 3 5 0 J = 1, M M DO 3 3 0 1 = 1 , RA = О . DO 3 2 0 L = 1 , M RA = RA + R 2 < I , L > * R 1 C L , CO NTINUE PCI) = RA C O NTINUE M DO 3 4 0 1 = 1 , Rl<I , J ) = 1 R ( I > C O NTINUE CO NTINUE CO NTINUE В = NO IF <B . N E . 0) GO T O 1 6 0 M DO 3 S 0 1 = 1 , R A = O. DO 3 7 0 J = 1 , M RA = RA + R l С I , U > * Y N ( J ) CO NTINUE V ( I ) = RA CO NTINUE XK = XK + D L G O TO 4 0 0 . C O NTIN U E IERR = 65 C A L L L O A D G O C I E R R , 3 0 , 6 H U T D E 1O ) RETURN END 5. Вспомогательиыэ подпрограмм! SUBROUT IN E IN TE G E R REAL D E 2 1R P ( A , В , I P V T , N , I A , X ) I A , N A ,B ,IP V T ,X D IM E N SIO N А ( 1 А , 1 > , В П ) , I P V T C 1 ) , X ( 1 ) I N T E G E R I , I B , IM1 , I P , I P 1 , I W , . J R E A L SU M DO I O I = 1, N X<I > = В ( l > 10 C O N TIN U E IU 324 - О
DO 40 I IP = SUM = N I P V T (I ) = X C IP> X ( I P ) IF 1, = X ( I ) (IW .E Q . IM1 = DO 1 20 *.J SUM 20 O) - GO TO 30 1 = «= IW , SUM IM1 - A ( I , J ) *X ( J ) C O N TIN U E GO TO C O N TIN U E 30 IF 40 X ( I ) DO (SU M = 60 40 .N E . IB = 1, * N ♦ 1 IP1 = 1 I IW = I + N - IB 1 SUM = X (I> IF (IP 1 .G T . DO 50 J SUM 50 0 . 0 ) SUM = = N) GO IP 1 , SUM - TO 60 N A (I,.J )* X (J > C O N TIN U E 6 0 X ( I ) = SUM /A( I , I ) RETURN END SU B R O U TIN E D E 2 1R U <A , L U , N , I A , N D I G , D 1 , D 2 , I P V T , 1 E Q U IL ,W A ,IE R R ) IN TE G E R IA ,IE R R ,N ,N D IG REAL A , D 1 ,D 2, E Q U IL , IP V T ,L U ,W A D IM E N SIO N 1 A ( I A, 1 ) ,E Q !J IL ( 1 ) , I PVT ( 1 ) , L U ( I A ,1 ) I N T E G E R * I , I D G T , I M 1 , I MAX , REAL J, -JM1 , J P 1 , К A B S ,A I, B IG ,B IG A ,F O U R ,O N E ,P ,Q ,R N , 1 S I X T H , S I X T N , S U M , T , T E S T , W I , W R E L,ZE R O DATA ZERO, ONE, FOUR, S IX T N ,S IX T H / O .O ,1 .0 , 1 4 . 0 , 1 6 .0 ,0 .0 6 2 5 / ID G T * N D IG IE R R RN = = N О WREL = ZERO D l = ONE D2 = ZERO B IG A = ZERO DO 2 0 I = 1, B IG = ZERO DO P 10 J = 1, = АС I , J ) L U (I,.J > P IF N = = N P A B S (P ) (P .G T . B IG ) B IG = P 325
IO C O N TIN U E IF (B IG .G T . B IG A ) B IG A IF (B IG .E Q . ZERO) GO E Q IJ IL (I) 2 0 = 210 UM1 IF = O N E /B IG J = 1, J - 1 (JM 1 DO 70 = IM 1 = 1) 1, 1 - 0 ) GO TO 50 1) GO TO 40 JM1 .E Q . = ABSCSUM) WI = ZERO IF CIM 1 30 = WI 30 80 1 C ID G T T TO L U ( I , J ) .L T . К = 1, IM 1 LUC I , K ) * L U C K , J ) SUM = = SUM WI - + T A B S (T ) C O N TIN U E LUC I , J ) 40 = SUM C O N TIN U E WI = WI IF (A I TEST 50 + A B S (S U M ) .E Q . = ZERO) A I = B IG A W I/A I IF (T E S T GO TO .G T . WREL) WREL GO 70 = 70 C O N TIN U E IF (IM l DO 60 SUM 60 .L T . К = = 1) 1, SUM TO IM l - LUC I , K ) * L U C K , J ) C O N TIN U E LUC I , J ) 70 = SUM C O N TIN U E C O N TIN U E P = DO ZERO 140 SUM IF I = = .J, N LIJ С I , J ) СI DOT .E Q . A I = ABSCSUM) WI = ZERO IF CJM1 DO T 90 = WI .L T . К = O) GO TO H O 1) GO TO 100 1, JM1 LUC I , K ) * L U C K , J ) SUM = = SUM WI + - C O N TIN U E = T ABS CT) C O N TIN U E L U C I , *J) 326 GO A I DO 100 N .L T . I '= SUM I F 90 B IG 220 C O N TIN U E DO 8 0 = TO SUM TEST
WI = WI IF (A I TEST 110 + . EQ. = (T E S T GO TO 120 .G T . .L T . 120 К = WREL) 1) = 1, SUM - TEST - GO TO 130 JM1 L U ( I , K ) * L U ( K , J ) = SUM E Q IJIL ( I ) * A B S (S U M ) IF (P P = .G E . Q) GO TO 140 Q I MAX “ I C O N TIN U E IF (R N IF + ( J .E Q . .E Q . D l = DO 150 P P GO GO TO TO 220 160 -D l = К = 1, N L U ( IM A X , K ) L U ( J , К ) 150 RN) IM A X ) L U ( IM A X , К ) = = L U (J ,K ) = E Q U IL (J ) P C O N TIN U E E Q U IL (IM A X ) 160 C O N TIN U E IP V T (J ) D l = = IM AX D 1 * L U (J ,J > C O N TIN U E IF (A B S C D 1 ) D l -L E . = D 1 *S IX T H D2 = D2 GO TO + ONE) GO TO 130 FOUR 170 C O N TIN U E IF (A B S (D l) .G E . D l D 1* S IX T N D2 = GO TO D2 - S IX T H ) GO TO 190 FOUR 180 C O N TIN U E JP1 IF =* DO 2 0 0 = J (J P 1 P 2 1 0 = C O N TIN U E Q 190 WREL C O N TIN U E L U ( I , J ) 130 B IG A = 130 (JM 1 SUM 170 A I C O N TIN U E DO 140 ZERO) W I/ A I IF IF 130 A B S (S U M ) + 1 .G T . N ) GO TO 210 L U (.J ,J ) 20 0 I = J P 1 , N L U ( I , J ) = L U ( I , J ) /P C O N TIN U E C O N TIN U E IF P (ID G T = 3 *N .E Q . + 3 O) GO TO 2 4 0 3 27
WA IF = P*W REL (U A + 1 0 . 0 * * ( —I D G T ) IE R R GO 2 2 0 = TO .N E . WA) GO TO 66 230 C O N TIN U E IE R R = D l = ZERO 65 D2 = ZERO 230 C O N TIN U E 240 RETURN END SUBROUT IN E D E 2 S R P ( M, IO R D E R , A L P , D F ) IN TE G E R REAL IO R D E R ,M A L P , DF D IM E N S IO N IN TE G E R REAL DF (M , 1 ) I , J , L , L 1 A 1 ,A 2 ,A 3 ,C ,R D IM E N S IO N DATA A 1 ,A 2 ,A 3 / 0 .3 3 3 3 3 3 3 3 3 3 3 3 , 1 IF CALP IF 1 .5 7 1 4 2 3 5 7 1 4 3 ,0 .5 8 3 3 3 3 3 3 3 3 3 3 / .E Q . 1 . ) GO TO 3 0 (A L P IF .E Q . (A L P C ( l ) IF C C IO ) = 2 . ) GO TO 50 2 ) GO TO .E Q . = —С ( 1 ) * ( A L P C (3 > = C (1 )* A L P (IO R D E R .E Q . - 3 ) 10 1 . ) * 0 . 5 GO TO IO C (4 ) = —C ( 2 ) * ( A L P - 2 . )* A 1 C (5 ) = —C ( 3 ) * ( A L P - 1 .) C (6 > = C (3 )* A L P (IO R D E R .E Q . 4 ) GO TO 10 C (7 ) - —C ( 4 ) * ( A L P - 3 . ) * 0 .2 5 C (S > C (9 ) = = —C ( 5 ) * ( A L P —C ( 6 ) * ( A L P - A 2 )* A 3 1 . ) * 1 . 5 = C (6 )* A L P C O N TIN U E DO 40 I = 1, M D F ( I , 1 ) = D F( I , 1 ) *A L P DO — 2 , 30 R = DO J IO R D E R О 20 LJ R L = (L = » R + CONTINUE D F ( I , J ) 328 60 A L P *A L P C (I O ) 30 40 TO C (2 ) IF 20 GO .EG!. (IO R D E R IF IO 0 . 5 ) CONTINUE C O N TIN U E = J, IO RD ER 1>*<L - 2 ) / 2 DF(I,L)*C(L1) R + J - 1 240
GO 50 TO 80 C O N TIN U E r < 1 > I r - 4 . (IO R D E R .E Q . C (2) = “ 2. ССЗ) = 8. IF (IO R D E R .E Q . C (4 ) = O. CCS) = -8 . CC6 ) * 16. IF (IO R D E R = O. C (8 ) = 2. C (9 ) = -2 4 IF = GO 3 ) .E Q . C ( 7 ) C (1 0 ) 2 ) TO GO 4 ) IO TO GO IO TO IO 32. .E Q . (IO R D E R 5 ) GO TO IO C O N TIN U E 60 DO - 7 0 1, I M DF < I , 5 ) = D F (1 ,5 )* 0 .0 3 1 2 5 D F ( I ,4 ) = D F C I,4 )* 0 .0 6 2 5 + D F C I,5 ) * 1 . 5 1 D F C I,3 ) D F C I , 3 ) * 0 . 125 - 1 2- D F C I,2 ) DFCI И ) + D F C I,5 )* 0 . 2 5 D F C I,2 )* 0 . 2 5 + D FC I, 3 ) * 0 . 5 1 DF СI , 1 ) 70 D F C I,1) * 0 . 5 C O N TIN U E 80 RETURN END SU B R O U TIN E J D E 2 8 R S CM, I O R D E R , F H , D F , R ) IN TE G E R REAL IO R D E R ,M D F ,F H ,R D IM E N S IO N IN TE G E R DO D F C M , 1 ) , F H C M ) , R CM) I , К , К 1 ,K2 60 I IF (IO R D E R IF = 1, M .G E . (IO R D E R IF TO 20 .E Q . 1> GO TO 2 ) GO (IO R D E R .N E . = TO F H C I) - 50 TO IO DF(1 , 1 ) 50 C O N TIN U E R C I) = D F C I,2 ) DF СI , 2 ) = F H СI ) DF СI , 3 > = D F (I,2 > GO 20 GO D F C I,2 ) GO IO 4 ) TO - DF СI , 1 ) - R C I) 50 C O N TIN U E K1 = DO 30 IO RD ER К * 1, - 3 K1 329
К2 = IO RD ER D F С I , K 2 + 1> 3 0 = К D F C I,K 2 ) C O N TIN U E R C I) = D F СI , 2 ) D F ( I ,2 ) = FH СI ) DF СI , 3 ) = D F C I,2 ) DO 40 К = 1, K 2 = К + C O N TIN U E 50 C O N TIN U E DF СI , 1 ) <S0 = DF < 1 , 1 ) - R C I) K1 2 DF СI , K 2 + 1 ) 40 - = D F C I,K 2 ) - D F C I,K 2 + 1 ) F H СI ) CO NT I NUE RETURN END SU B R O U TIN E DE42RP C M ,IO R D E R ,A L P ,D F ,D Y ) IN TEG ER REAL IO R D E R ,M A L P , D F , DY D IM E N SIO N IN TE G E R REAL 1 D F CM, 1 ) , D Y CM) I ,.J ,J 1 ,L ,L 1 A 1 , A 2 , А З , A 4 , A 5 , AB S, A J , A L P 2 , A L P 3 , A L P 4 ,В , B 1 ,C ,D ,D l,E ,R ,S Y S 0 5 3 D IM E N S IO N DATA С C1 0 ) , DCS) S Y S 0 5 3 / 9 . 2 2 3 3 7 2 0 3 6 8 4 6 E 18 / , A I , A 2 , A 3 1 / О .3 3 3 3 3 3 3 3 3 3 3 3 ,1 .5 7 1 4 2 8 5 7 1 4 3 , 2 0 .5 8 3 3 3 3 3 3 3 3 3 3 / ,A 4 ,A 5 3 / 0 . 0 3 3 3 3 3 3 3 3 3 3 3 3 ,О. 00833333333333/' IF CALP IF .E Q . CALP 1 .) .E Q . CALP В = 1 . GO TO 0 . 5 ) CO EQ. 2 . ) /ALP TO GO ALP2 = A L P *A L P ALP3 = A L P 2 *A L P ALP4 » A L P 3 *A L P D l = CALP - 120 TO H O 1 .) C <i ) = A L P *A L P *A L P DC1) DC2) = - 6 . *D1 = 2 . *D 1 * CALP + 1 .) —C C l ) * C A L P - 1 . ) * 0 . 5 CCS) DCS) = CC1)* A L P J3S O .5 *D 1 *C A L P 2 + C C 4) - -C C 2 )*C A L P - 2 . )*A 1 CCS) C (6 ) = —С ( 3 ) * C A L P - 1. ) — С С З )«A LP CC2) DC4) — CC7) — A 4 * - D 1 * CS . * A L P 3 ALP2 330 140 - ALP + - 8 . * 1 2 .*A L P + 3 . ) 3 . )* 0 . 2 5 - —С ( 4 ) * C A L P
C (8 ) *= -C C 5 )*C A L P - A 2 )* A 3 CC 9) - -C C 6 )*C A L P - 1 - ) * 1 . 5 C C 10) DCS) ■ - 1 2 C C 6 )*A L P A 5 *D 1 *C 2 1 „*A L P 4 + 2 1 * A LP 3 + 1 6 .* A LP 10 - 3 9 .* A L P 2 ~ 2. ) C O N TIN U E DO 4 0 I « 1, D P (1 , 1 ) DO 11 « DF < 1 , 1 ) * A L P 2 3 0 J = R = О DO 2 , IO R D E R 20 L « L I « CL 1 J , J R 20 « R + 1 ) * CL - 2 ) /2 + 1 D F С I , L ) * C CL 1 ) “ R C O N TIN U E C O N TIN U E 3 0 40 E = DO 1 0 ./ S Y S 0 5 3 50 I = D Y C I) 1, M = A L P * D Y СI ) = 1, C O N TIN U E 5 0 A J = 1. B1 = 1. J l = 1 DO IO O AJ IF J = IO R D E R A J *A L P CABSCAJ) .L T . B1 =■ B 1*B J l *= J R - DO ♦ 60 E ) GO TO 70 1 B 1*D C J) 6 0 I = D Y C I) 1, * И D Y C I) + R * D F C I,J ) C O N TIN U E GO 70 TO IO O C O N TIN U E R = DO B 1*D C J) 90 I ■ 1, M R = R *D F СI , J ) DO 8 0 R L = — J l , J D Y C I) + R-*B C O N TIN U E 8 0 D Y C I) 9 0 = R C O N TIN U E C O N TIN U E GO 1 10 - C O N TIN U E D F C I, J ) IO O IO R D E R TO 140 C O N TIN U E C C 1) = 8. 331
С (2 ) = -4 . ССЗ) = 16. С ( 4 > = О. С (5 ) = -1 6 . С (6 ) = 32. С (7 ) = О. С (8 ) = 4. С (9 ) = -4 8 . С С 10) В = - 64. 0 .5 01 = 1. 0(1) = -6.• D (2 ) 6. D (3 ) = 2 .5 D (4 ) = 2 .5 DCS) = 3 .1 5 A LP2 = 4. A LP3 = 3. A L P 4 = 16. GO 120 = TO 1О C O N TIN U E DO 130 130 I - 1, M D F ( I ,5 > DF ( 1 , 4 ) = D F C I,5 )* 0 .0 1 5 6 2 5 = D F (1 ,4 )* 0 .0 3 1 2 5 * 1 . 5 D FC1 ,3 ) = D F C I,3 )* 0 .0 6 2 5 D F C I, 5 ) * 0 . 2 5 D F C I, 2 ) D F C I,1 ) = DFC I , 2 ) * 0 . = D F C I , 1> * 0 . 25 D Y C I) 0 . 5 * (D Y ( I ) + DFC1 , 2 ) ) D F C I, 5 ) ) DFC1 ,3 ) = + 125 + + + D F C I ,5 ) D F C I , 4 ) - DF ( 1 , 3 ) * 0 . 5 - 1 2 . * CD F ( 1 , 1 ) - 0 .0 5 * C O N TIN U E 140 RETURN END SU B R O U TIN E IN TE G E R REAL D E 4 S R P C M ,IO R D E R ,A L P ,D F ,Z P ,Z ) IO R D E R ,M A L P , D F , Z , ZF* D IM E N S IO N COMMON IN TE G E R REAL D F (M ,5 ) , Z ( M ) , ZP(M ) /C 0M 48R /HOLD, H N E W ,X O LD ,IS T A R T I , I 1 , I S T A R T ,J ,L A L P 2 ,A L P 3 ,A L P 4 , ALPM 1, C FN T1 ,C F N T2, C F N T 3 , C F N T 4 , C F N T 5 , C F N T 6 , C O EF , COEFH,. : COEF Z , COEF Z G , H A L F , HNEW, H OLD, O N E, R , t S Y S G 3 7 ,T W O ,X O LD D IM E N SIO N DATA 332 C O E F C IO ), COEFH( 5 ) ,C O E FZC 4) , COEFZGC5) H A LF ,O N E ,T W O / 0 . 5 , 1 . , 2 . / ,C F N T 1 ,
1 C F N T 2 / 0 .5 8 3 3 3 3 3 3 3 3 3 3 ,1 .5 7 1 4 2 8 5 7 1 4 3 / , 2 S Y S 0 3 7 / 0 .3 3 3 3 3 3 3 3 3 3 3 3 / ,COEFH( 1) , 3 COEFH( 2 ) , COEFHC3>, COEFH( 4 ) , 4 COEFH( 5 ) / 0 .0 3 1 2 5 ,0 .0 6 2 5 ,1 .5 ,0 .1 2 5 , 5 O .2 5 / , C F N T 3 ,C F N T 4 /6 . , 0 . 0 2 5 / , 6 C O E F Z (l),C O E F Z (2 ),C 0 E F Z (3 ), 7 CGEFZ( 4 ) / 3 . ,0 .3 1 2 5 ,0 .1 5 6 2 5 , 8 0 .0 9 3 4 3 7 5 / DATA C F N T 5 ,C F N T 6 / 0 .0 3 3 3 3 3 3 3 3 3 3 3 3 , 1 О . 0 0 8 3 3333333333/ IF (A L P IF .E Q . (A L P IF ONE) .E Q . CALP GO H ALF) .E Q . 120 GO TWO) = A L F ’* A L F * ALP3 = A L P 2 *A L P ALP 4 = A L P 3 *A L P = COEF<1) COEF(2 ) COEF(3 ) 50 TO 70 ALP ONE — A LP2 -C O E F ( 1 ) *H A LF*A LPM 1 = -C O E F ( 2 ) *S Y S C 3 7 * 1 (A L P COEF(4 ) TO GO ALP2 ALPM1 — - TWO) - C O E F ( 3 ) * C G E F H <5 ) * (A L P ALP3 w COEF(5 ) - 3 . ) C O E F <6> = —A L P 3 * A L F ' l i 1 COEF(7 ) — —C O E F ( 6 ) * C F N T 1 * ( A L P COEF(8 ) — ALP4 COEF(9 ) — ~ A L P 4 *C O E F H ( 3 ) *ALPM 1 - C FN T2) 1 == COEF(1 0 ) 4b TO A L P 4 *A L P C O E F Z G d ') = —A L P M 1 * C F N T 3 C 0 E F Z G (2 ) = A L P M 1 * ( T W O * ALF* + TWO) 1 COEFZG' ( 3 ) = A L P M 1* H A L F * ( - A L P 2 ALP 1 COEFZG(4 ) - + ONE) A LPM 1*C FN TS *( 3 . * 1 ALPS 2 8 . * ALP COEFZG( 5 ) - - 1 2 .*A L P 2 + ALP4 2 3 9 .* A L P 2 ALP 3 40 I DO 10 I I Z P C I) — ** 8 . ) ALPM 1 *C F N T 6 *(-T W O * 1 DO + 1, + 1 6 .* ALPS + - 2 1 .* 2 1 .) M - 1 + 1, 5 Z P C I) + C O E F Z G (Il> * D F (1 ,1 1 ) IO C O N TIN U E D F ( 1 , 1 ). I I ♦ = = ALP*D F ( 1 , 1 ) О 333
30 DO R J = DO = 2, 20 L = II = II + R = R 1 J, + IORDER 1 C O E F ( I I ) * D F C I, L ) 20 C O N TIN U E D F ( I , J ) 30 = R C O N TIN U E 40 C O N TIN U E GO TO 120 C O N TIN U E 50 DO 60 I = M 1 DFCI 1) ;> DFCI 4 ) DFCI A L P *D F (1 ,1 ) C O E F H C l ) * D F СI , 5 ) = COEFHC 2 ) *D F СI , 4 ) 1 + C O E F H (3 )*D F (I, 5) DFC1 , 3 ) = C O E F H C 4 )*D F C 1 ,3 ) 1 D F C I , 4) 2 - + COEFH( 5 ) * D F C I,5 ) DFC1 ,2 ) = C O E F H <5 ) * D F СI , 1 2) HALF* D F C I , 3 ) Z P C I) Z P C I) = + C FN T3*C D F(1 , 1 ) 1 DFC1 , 2 ) ) 2 CFNT 4 *D F (1 ,5 ) 60 + - H A L F *D F C I,3 ) - C O N TIN U E GO 7 0 TO 120 C O N TIN U E DO SO I = M 1, D F C I, 1 ) = A LP*D F СI , 1) D F C I, 2 ) = 4 . *D F СI ,2 J DFC1 ,3 ) = 8 . * CDFC1 ,3 ) 1 80 ) + - T W O * D F СI , 3 ) - D F C I,4) T W O *D F (I,5 ) DF СI , 4 ) = 1 6 . * D F ( I , 4 ) D F C I , 5 ) = 3 2 . * D F ( 1 , 5 ) - 2 4 . *D F С1 , 5 ) C O N TIN U E IF СIS T A R T .E Q . 1) DO - M 90 I Z P C I) 90 1, = GO TO H A L F * (Z C I) IO O + Z P СI ) ) C O N TIN U E GO 100 TO 120 C O N TIN U E DO 110 I = 1, Z P C I) = Z P C I) M - C O E F Z С1) * D F C I , 1) 1 C O E F H C 3 )*D F C I,2 ) 2 DFC1 ,3 ) 3 COEFZ( 4 ) * D F C I,5) 110 C O N TIN U E 120 RETURN END 334 IO R D E R 0 .0 + + + COEFZ(2 )* C O E F Z C 3 )*D F C I , 4 ) +
Л И Т Е Р А Т У Р А 1. Л р т е м ь с в С. С., Д е м и д о в Г. В. A -устойчивый метод типа Розенброка четвертого порядка точности решения задачи Кош и д л я жестких систем обыкновенных дифференциальных уравнений//Некоторые проблемы вычислитель­ ной и прикладной математики. Новосибирск: Н аука, 1975. 2. А р у ш а н я н О. Б., В о л ч е н с к о в а Н. И., К о м а р о в а Т. Н. Система­ тизация машинно-зависимых констант д ля Библиотеки численного анализа и м а ­ тематической статистики Н И В Ц МГУ//Вопросы конструирования библиотек программ. М.: И зд-во Моек, ун-та, 1983. 3. А р у ш а н я н О. Б., З а л е т к и н С. Ф. П акет прикладных программ ре­ шения типовых задач д л я обыкновенных дифференциальных уравнений//Вопросы конструирования библиотек программ. М .: И зд-во Моек, ун-т,а, 1985. 4. А р у ш а н я н О. Б., З а л е т к и н С. Ф. О б использовании Библиотеки численного анализа Н И В Ц М Г У для решения обыкновенных дифференциаль­ ных уравнений//Вопросы конструирования библиотек программ. М .: И зд-во М оек, ун-та, 1984. 5. Б а б е н к о К. И. Основы численного анализа. М.: Н аука, 1986. 6. Б а б у ш к а И., В и т а с е к Э., П р а г е р М. Численные процессы реше­ ния дифференциальных уравнений. М .: Мир, 1979. 7. Б а х в а л о в Н. С., Ж и д к о в Н. П., К о б е л ь к о в Г. М . Численные м е­ тоды. М.: Наука, 1987. 8. Б е л е н ь к и й В. 3. Стандартная программа д ля интегрирования систе­ мы дифференциальных уравнений методом Адамса//Вычислительные методы и программирование. Вып. I II. М.: И зд-во Моек, ун-та, 1965. 9. Б е р е з и н И. С., Ж и д к о в Н. П. М етоды вычислений. Т. 2. М .: Физматгиз, 1962. 10. В о е в о д и н В. В. Вычислительные основы линейной алгебры. М .: Н а у ­ ка, 1977. 11. В о е в о д и н В. В., А р у ш а н я н О. Б. С труктура и организация Б и б­ лиотеки численного анализа Н И В Ц МГУ//Численный анализ на Фортране. В ы ­ числительные методы и инструментальные системы. М .: И зд-во М оек, ун-та, 1979. 12. Г о д у н о в С. К., Р я б е н ь к и й В. С. Разностные схемы. М.: Н аука, 1977. 13. Г о р б у н о в А . Д . Разностные методы решения задачи Коши д л я си­ стемы обыкновенных дифференциальных уравнений (тексты лекц и й ). М.: И здво Моек, ун-та, 1973. 14. Д ь я ч е н к о В. Ф. Основные понятия вычислительной математики. М .: Наука, 1977. 15. Ж о г о л е в Е. А . Программа интегрирования систем обыкновенных дифференциальных уравнений 2-го порядка методом Штермера//Вычислительные методы и программирование. Вып. I. М.: И зд-во Моек, ун-та, 1962. 16. З а л е т к и н С. Ф . О численном решении задачи Кош и д ля обыкновен­ ных линейных однородных дифференциальных уравнений на больш их отрезках интегрирования//Вычислителы 1 ые методы и программирование. Вып. X X V I. М .: И зд-во Моек, ун-та, 1977. 17. З а л е т к и н С. Ф. Численное решение обыкновенных дифференциаль­ ных уравнений многошаговыми методами//Конструирование библиотек программ. М .: Иэд-во М оек, ун-та, 1986. 335
18. З а л е т к и н С. Ф. Численное решение линейных систем обыкновенных дифференциальных уравнений//Конструирование библиотек программ. М : Изд-во Моек, ун-та, 1986. 19. З а л е т к и н С. Ф. Полналгоритм автоматизированного решения обык­ новенных дифференциальных уравнений//Автоматизация конструирования биб­ лиотек программ. М.: Изд-во Моек, ун-та, 1979. 20. 3 а л е т к и н С. Ф. Коллекция дифференциальных уравнений для тести­ рования вычислительных алгоритмов и прогр;амм//Вопросы конструирования библиотек программ. М.: Изд-во Моек, ун-та, 1983. 21. З а х а р о в А. Ю. Некоторые результаты сравнения эффективности ре­ шения систем обыкновенных дифференциальных уравнений. Препринт И П М А Н С С С Р № 125. М., 1979. 22. И л ь и н В. П., К у з н е ц о в Ю. И. Алгебраические основы численного анализа. Новосибирск: Наука, 1986. 23. Инструментальные средства конструирования численных программ на стандарте языка Фортран/Под ред. В. А. Морозова, О. Б. Арушаняна. М.: Н И В Ц М Г У , 1988. 24. К а л и т к и н Н. Н. Численные методы. М .: Наука, 1978. 25. К о л л а т ц Л . Численные методы решения дифференциальных урав­ нений. М.: И Л , 1953. 26. К р ы л о в В. И., Б о б к о в В. В., М о н а с т ы р н ы й П. И. Вычисли­ тельные методы. Т. 2. М.: Наука, 1977. 27. Л ю б и м с к и й Э. 3., М а р т ы н ю к В. В., Т р и ф о н о в Н. П. П ро­ граммирование. М.: Наука, 1980. 28. М а к - К р а к е н Д., Д о р н У. Численные методы и программирование на Фортране. М.: Мир, 1977. 29. М и л н В. Э. Численное решение дифференциальных уравнений. М.: И Л , 1955. 30. О тестировании программ решения обыкновенных дифференциальных уравнений/О. Б. Арушанян, С. Ф. Залеткин, А. Ю. Захаров, Н. Н. Калиткин. Препринт И П М А Н СССР, № 139. М., 1983. 31. О р т е г а Дж., П у л У. Введение в численные методы решения диффе­ ренциальных уравнений. М.: Наука, 1986. 32. Р а к и т с к и й Ю. В., У с т и н о в С, М „ Ч е р н о р у ц к и й И. Г. Чис­ ленные методы решения жестких систем. М.: Наука, 1979. 33. С $ м а р с к и й А. А. Введение в численные методы. М.: Наука, 1982. 34. Современные численные методы решения обыкновенных дифференци­ альных уравнений/Под ред. Дж . Холла, Д ж . Уатта. М.: Мир, 1979. 35. Т и х о н о в А. Н., Г о р б у н о в А. Д., Г а й с а р я н С. С. О б особен­ ностях графика полной погрешности приближенного решения задачи Коши для обыкновенного дифференциального уравнения//Вычислительные методы и про­ граммирование. Вып. V. М.: Изд-во Моек, ун-та, 1966. 36. Ф о р с а й т Дж ., М о л е р К. Численное решение систем линейных ал­ гебраических уравнений. М.: Мир, 1969. 37. Ф о р с а й т Дж ., М а л ь к о л ь м М., М о у л е р К. Машинные методы математических вычислений. М.: Мир, 1980. 38. X е м м и н г Р. В. Численные методы для научных работников и инже­ неров. М.: Мир, 1977. 39. Ш т е т т е р X. Анализ методов дискретизации д ля обыкновенных диф­ ференциальных уравнений. М.: Мир, 1978. 40. Е n g 1 a n d R. Error estimates for Runge— Kutta type solutions to sys­ tems of ordinary differential equations//The Computer Journal. 1969. V . 12. N 2. 41. G e a r C. W . Numerical initial value problems in ordinary differential equations. Englew ood C liffs, N. J.: Prentice-Hall, 1971. 42. G e a r C. W . The automatic integration o f ordinary differential equations//Commumcations o f the AC M . 1971. V. 14. N 3. 43. H e n r i c i P. Discrete-variable methods in ordinary differential equations. N ew York: W iley, 1962. 44. S c r a t o n R. E. Estimation o f the truncation error in Runge— Kutta and allied processes//The Computer Journal. 1964. V. 7, N 3. 45. S h a m p i n e L. F., G o r d o n M. K. Computer solution o f ordinary dif­ ferential equations. San-Francisco: W . H. Freeman, 1975.