Книга
Книга
Ю.П.Боглаев
Вычислительная математика программирование
@
Ю. П. Боглаев
ВЫЧИСЛИТЕЛЬНАЯ
МАТЕМАТИКАи
ПРОГРАММИРОВАНИЕ
Допущено
Государственным комитетом СССРпо народному образованиюв качестве учебного пособиядля студентов высших техническихучебных заведений
Москва«Высшая школа»1990
ББК 22.18
Б73
УДК 681.3.06
Рецензенты: кафедра прикладной математики Обнинского института атомной энергетики (зав. кафедрой — д-р физ.- мат. наук, проф. В. А. Тупчиев) и канд. физ.-мат. наук В. Г. Сушко (Московский государственный университет им. М. В. Ломоносова)
Боглаев Ю. П.
Б73 Вычислительная математика и программирование:
Учеб, пособие для студентов втузов.— М.: Высш, шк., 1990.— 544 с.: ил.
ISBN 5-06-000623-9
В книге излагаются сведения, необходимые для проведения научно- технических расчетов на ЭВМ. Рассматриваются архитектура ЭВМ, структура вычислительных алгоритмов и программ, программирование на фортране, системные и инструментальные программы, методы вычислений. Тесная связь программирования и методов вычислений иллюстрируется многочисленными примерами.
ББК 22.18517.8ББК 22.18517.81602120000(4309000000)—435
ББК 22.18
517.8
ББК 22.18
517.8
001(01)—90—
ISBN 5-06-00623-9ISBN 5-06-00623-9© Ю. П. Боглаев, 1990© Ю. П. Боглаев, 1990
ISBN 5-06-00623-9
ISBN 5-06-00623-9
© Ю. П. Боглаев, 1990
© Ю. П. Боглаев, 1990
ОГЛАВЛЕНИЕ
Предисловие 5
Введение 7
Глава 1
Архитектура ЭВМ
Введение 15
Архитектура фон Неймана 16
Классификация архитектурных решений ЭВМ 22
Вычислительные системы серии СМ 28
Память на магнитных дисках и лентах 33
Алфавитно-цифровые печатающие устройства : 37
Алфавитно-цифровой терминал 38
Глава 2
Структура алгоритмов и программ
Семействавычислительных алгоритмов 41
Структураалгоритмов 46
Поток данных 52
Структурапрограмм 54
Глава 3
Программирование на фортране
Введение ....... 61
Основы программирования на фортране 63
Программирование элементарных вычислительных алгоритмов 90
Оптимизация программ 116
Расширение возможностей фортрана 123
Глава 4
Системные и инструментальные программы
Введение 133
Элементы операционных систем ° 137
Система реального времени 143
Глава 5
Методы вычислений
Примеры 164
Масштабирование и замена переменных 172
Аналитические методы 178
Методы" возмущений 224
Численные методы 235
Оценка результатов вычислений 239
Особенности серийных вычислений 246
Глава 6
Теория приближений
Введение 248
Интерполяция 251
Сплайны 256
Равномерные приближения 261
Среднеквадратичные приближения 268
Глава 7
Численное интегрирование
Введение 276
Простейшие квадратурные формулы 279
Составные квадратурные формулы 282
Оценка погрешности численного интегрирования 288
Формулы Гаусса 293
Интегрирование функций двух переменных 297
Г лава 8
। Линейная алгебра. Линейная оптимизация
Оценки погрешности решения задач линейной алгебры 301
Прямые методы решения систем линейных уравнений 312
Итерационные методы решения систем линейных уравнений ‘ 322
Вычисление' собственных значений и векторов 328
Линейная оптимизация 335
Глава 9
Нелинейные уравнения. Нелинейная оптимизация
Введение 344
Сжимающие отображения 348
МетодНьютона 356
Методбисекции 361
Поискминимумафункции 363
Методы спуска 367
Методзолотого сечения 371
Г лава 10
Обыкновенные дифференциальные уравнения
Дискретизация 375
Задача Коши. Методы Рунге—Кутта 387
Жесткие уравнения 396
Краевые задачи 402
Г лава 11
Уравнения с частными производными
Введение 415
Разностныйметодрешениястационарныхуравнений 422
Разностныйметодрешениянестационарныхуравнений 433
Метод прямых 440
Г лава 12
Библиотека фортран-программ
Каталог библиотеки 445
Содержание разделов 446
Описание программ 450
Задачи и упражнения 490
I уровень 490
II уровень 510
III уровень 518
Приложение 1.Англо-русскийсловарь 525
Приложение 2.Фортран 77 529
Литература 534
Предметный указатель \. 536
ПРЕДИСЛОВИЕ
Вычислительная математика и программирование (ВМП) занимают важное место в общеобразовательной подготовке будущего инженера. Соответствующие курсы читаются в различных вариантах во всех втузах страны.
Однако при всем разнообразии методик преподавания можно выделить два принципиально различных направления: 1) вычислительная математика и программирование читаются как отдельные курсы; 2) ВМП—единый курс. При написании книги автор придерживался второго направления. Настоящая книга написана в соответствии с программой курсов «Основы программирования» и «Основы математического моделирования».
Специфика книги состоит в следующем: программирование и вычислительная математика не излагаются как самостоятельные науки с обязательной концентрацией внимания на особенностях каждой дисциплины в отдельности. Главная цель пособия — научить решать на ЭВМ задачи математического моделирования технических процессов. Для достижения этой цели следует кроме программирования и численных методов освоить операционную систему ЭВМ, связать оба предмета общими задачами, научиться пользоваться промышленными библиотеками. При этом некоторые тонкости языка программирования, а также доказательства оценок погрешности, сходимости некоторых алгоритмов вычислительной математики пришлось опустить.
При выборе языка программирования, операционной системы, численных методов, типа ЭВМ в первую очередь учитывались потребности специалистов, которых готовят вузы политехнического профиля. Рассматривается язык высокого уровня — фортран. Изложение архитектуры, операционной системы ведется с ориентацией на применение ЭВМ типа СМ. Выбор конкретного типа машин обусловлен их распространением и возможностью использования в расчетах по математическому моделированию физических, химических, технологических и т. п. процессов. Операционная система реального времени ОС РВ предоставляет возможность решать одновременно задачи управления приборами, технологическими установками, стендами и т. д. Эти задачи могут успешно решаться после изучения машинно-ориентированного языка макроассемблера.
Если курс ВМП организуется на базе другой вычислительной техники, например ЕС, с другой операционной системой, то следует соответственно заменить содержание 1.4—1.7; 4.3. Изучение остального материала книги не зависит от специфики используемых ЭВМ. Численные методы и состав библиотеки фортран-программ отобраны на основе анализа распространенных библиотек для научно-технических расчетов в объеме, достаточном для начального этапа обучения.
Минимальный объем курса ВМП включает содержание глав 3, 4, 6—11 в соответствии с профилем специальности студента. Главы 2 и.5 ориентированы на углубленный подход к предмету, их содержание поможет в проведении типовых расчетов, выполнении курсовых работ и т. п.
Изложение программирования строится на основе алгоритмов численного анализа. Начальным итогом обучения является умение написать самостоятельно программу (по данному алгоритму) и отладить бе на ЭВМ. Далее акцент переносится на использование библиотечных программ и анализ собственно численных методов. Курс завершается решением на ЭВМ задачи технического содержания, которая является типичной для будущей специальности студента.
Автор приносит глубокую благодарность академикам Ю. А. Оси- пьяну, А. А. Самарскому, А. Н. Тихонову, профессором В. Ф. Бутузову, А. Б. Васильевой, Ю. А. Дубинскому, В. П. Кутепову, С. А. Ломову, Н. X. Розову, В. А. Тупчиеву, А. Б. Фролову, доцентам А. А. Амосову, Н. В. Копченовой, В. Г. Сушко, чей научно-педагогический опыт бйл явно и неявно использован в работе над книгой.
Все замеченные недостатки, предложения просьба направлять автору в адрес изд-ва «Высшая школа». 101430, Москва, ГСП-4, Неглинная ул., 29/14.
Автор
ВВЕДЕНИЕ
Во все времена человек стремился расширить свои возможности, создавая разнообразные орудия труда, познания мира, средства существования. Так, например, недостаточность зрениия компенсируют микроскоп, телескоп, радиолокатор. Ограниченные возможности передать информацию друг другу расширяются телефоном, радио, телевидением.
Вычислительные машины «дополняют» возможности человеческого мозга, расширяют его возможности по обработке информации, позволяют увеличить скорость принятия решения в ходе выполнения какой-либо работы.
В конце 40-х годов XX в. работы в области ядерной физики, баллистики управляемых снарядов, аэродинамики и т. д. потребовали такой вычислительной работы, которую уже было невозможно выполнить с помощью арифмометров — основного вычислительного инструмента тех лет. Наука и техника были поставлены перед дилеммой: или всем сесть за арифмометры, или найти новый эффективный инструмент вычислений. Аналогичные проблемы уже не раз возникали и будут еще не раз вставать перед учеными и инженерами: экстенсивный путь развития далее неприемлем, необходим новый, интенсивный путь. Проблема была решена созданием универсальной вычислительной машины. Термин «универсальная» использован не случайно: специализированные машины (например, для обработки банковских счетов, инвентаризации на перфорационных машинах) существовали и ранее, но не было машины, команды для которой, записанные в память, можно было быстро заменить новыми.
Кроме арифметических вычислений ЭВМ может выполнять и логические, т. е. делать выбор между вариантами (ветвями) продолжения действий в зависимости от выполнения некоторых условий. Таким образом, ЭВМ — это нечто большее, чем «быстрый арифмометр».
Краткая характеристика различных поколений ЭВМ.
Первое поколение ЭВМ. Техническая основа элементной базы машин первого поколения — электронные лампы. Максимальное быстродействие ~ 102 арифметических операций в секунду (оп/с), объем оперативной памяти 102 слов. Режим использования — монопольный, т. е. в распоряжении пользователя были все ресурсы машины и ее управление.
Второе поколение ЭВМ. Техническая основа—транзисторы. Максимальное быстродействие ~ 104 оп/с, объем оперативной памяти ~ 104 слов, внешняя память на магнитных лентах, дисках ~107 слов. Режим использования—пакетная обработка. Задания для ЭВМ (на перфокартах или магнитных лентах, дисках) собирались в пакет, который обрабатывался без перерыва между заданиями. Такой способ диктовался в первую очередь экономическими соображениями.
Третье поколение ЭВМ. Техническая основа — большие интегральные схемы (БИС), которые на малых полупроводниковых кристаллах. реализуют большие схемы машин второго поколения. Максимально^ быстродействие ~ 106 оп/с, оперативная память —106 слов, внешняя память ~ 109 слов. Метод использования— режим разделения времени совместно с пакетной обработкой. Высокое быстродействие позволяет время обслуживания пользователей разбить "на кванты, обрабатывая в течение кванта задание каждого, возвращаться к пользователю за такое малое время, что у цего создается иллюзия за дисплеем, что только он один «владеет» машиной. Положение пользователя стало похожим на монопольное владение ЭВМ первого поколения.
Четвертое поколение ЭВМ. Техническая основа—сверхбольшие интегральные схемы (СБИС); на одном полупроводниковом кристалле реализуются основные элементы ЭВМ третьего поколения, наличие многих параллельно работающих устройств обработки информации. Имеется тесная связь аппаратурной и программной реализаций в структуре машин, наличие элементов новой архитектуры ЭВМ. Традиционная архитектура ЭВМ фон Неймана доминировала на протяжении трех поколений. Максимальное быстродействие —109 оп/с, оперативная память ~ 107 слов, внешняя память ограничена в основном экономическими соображениями. Метод работы—доступ к ЭВМ, объединенным в сети; использование пакетов программ с языками программирования, близкими к профессиональным.
Пятое поколение ЭВМ. Проекты ЭВМ пятого поколения находятся в стадии реализации. Но уже из этих проектов и первых опытных экземпляров ЭВМ можно заключить, что максимальное быстродействие арифметических вычислений дополняется здесь высокими скоростями логического вывода. Даже скорость предполагается выражать в единицах лвс (логический вывод в секунду). Форма общения с ЭВМ на естественном языке и дисциплина программирования как наука для пользователя перестают в будущем быть актуальными. Знания, накопленные в различных областях человеческой деятельности, хранятся в памяти ЭВМ в базах знаний, и с их же помощью они расширяются и пополняются. Бумажные носители информации исчезают. Дальнейшее описание проектов было бы похоже на жанр научной фантастики.
Бурное развитие вычислительной техники предопределяется задачами, выдвигаемыми наукой и \техникой, и, в свою очередь, 8 х.
оказывает непосредственное воздействие на области своих приложений. Космическая техника и атомная энергетика, проектирование сложных объектов машиностроения и управление быстро- протекающими процессами, создание баз данных и знаний немыслимы без применения ЭВМ. Сфера применения ЭВМ охватывает практически все направления человеческой деятельности и постоянно расширяется.
Рассмотрим два важных направления использования ЭВМ: математическое моделирование и управление процессами. Именно здесь вычислительная математика и программирование имеют фундаментальное значение.
Математическое моделирование. Имеется конкретная техническая задача, ищутся различные подходы к ее решению. Пусть, например, нужно спроектировать новую турбину ГЭС. Чтобы знать поведение турбины, следует решить задачи гидродинамики, механики (динамика, прочность, устойчивость), управления (переход с одного режима на другой) и т. д. В распоряжении специалиста имеются старые технические решения, которые частично можно использовать, возможно пойти по пути создания натуральной модели и, наконец, частично или полностью описать поведение турбины с помощью математической модели.
Если реальный процесс, возможно и стационарный (не зависящий от времени), описан достаточно точно математическими соотношениями, то говорят о построении математической модели данного процесса. Полная схема математического моделирования приведена на рис. В.1.
Для изучения математической модели необходимо разработать вычислительный метод (метод решения),. причем лишь в редких случаях удается найти метод, приводящий к точному решению, как правило, используются приближенные решения совместно с точными. Важнейшей задачей, сопутствующей выбору вычислительного метода, является оценка . погрешности получаемого решения.
Процесс решения задачи согласно выбранному вычислительному методу описывается в виде алгоритма. На интуитивном уровне алгоритм определяется как процесс построения величин, идущий в дискретном времени, который позволяет из системы величин в предыдущий момент времени получить систему величин
в последующий момент, для которого задается начальная система и сформулировано правило окончания процесса. Примерами могут служить известные алгоритмы Евклида нахождения наибольшего общего делителя двух положительных натуральных чисел и алгоритм Гаусса решения системы линейных уравнений методом исключения, а также алгоритмы игры в шахматы, перевода с одного языка на другой, сортировки и поиска в массивах информации.
Чтобы алгоритм был реализован на ЭВМ, необходимо написать соответствующую этому алгоритму программу. Программа—это совокупность команд, которые может выполнить машина. Программирование и состоит в работе по подготовке этой совокупности команд.
В ЭВМ первого поколения эта работа целиком выполнялась пользователем, который, зная систему команд ЭВМ (коды команд) и доступные ему ресурсы, готовил программу в кодах—на языке машинных команд. Программу на языке машинных команд ЭВМ, размещенную в памяти, машина может выполнить сразу же после команды запуска ее на счет. Однако программирование в машинных кодах — очень трудоемкий процесс. Для упрощения программирования были разработаны языки программирования более высокого уровня—ассемблер, алгол, фортран, бэйсик, паскаль и т. д. Программирование на языке высокого уровня, упрощая процесс подготовки программы, требует применения специальной программы (принадлежащей математическому обеспечению ЭВМ) — транслятора с языка высокого уровня. Аналогичные процедуры имеют языки с интерпретаторами и ЭВМ с аппаратно реализованными трансляторами.
Таким образом, составление программы, готовой к исполнению, включает применение промышленного математического обеспечения ЭВМ, в частности’ операционной системы (ОС), и умение с ней работать.
«Стиль» программирования за время развития этой дисциплины значительно изменился. Программирование в задачах технического характера все более походит на конструирование программ из готовых программных модулей. За прошедшие годы накоплены обширные библиотеки программ как общего применения, так и специального, организованные в пакеты прикладных программ. В этой связи повышается внимание к возможности переноса программы с одной машины на другую, к формированию личных профессиональных библиотек пользователя, а в итоге к концентрации усилий инженера на главной цели—решение научно-технической задачи.
Последним этапом работы на ЭВМ является запуск программы на счет и получение числовых результатов. Затем пользователь должен соотнести их с поставленной технической задачей и, возможно, изменить модель, метод, алгоритм, программу. Цикл, изображенный на рис. В.1, повторяется до тех пор, пока цель не будет достигнута.
Проиллюстрируем описанную схему математического моделирования на примере следующей технической задачи. Найти на
интервале времени t0^t^tn переходный процесс в системе управления турбиной, описываемой вектором состояния х(х15 ..., х10) с заданным начальным вектором
х(г0) = Х(0). (1)
Математическая модель. Предположим, что поведение вектора состояния во времени можно описать обыкновенным дифференциальным уравнением
(2)(2)dx "dt
(2)
(2)
Чтобы получить уравнение (2), необходимо использовать методы теории управления, механики, выделить главные черты управляемого движения и пренебречь второстепенными. Соотношения (1) и (2) и являются математической моделью процесса управления.
Вычислительный метод. Точное решение (1), (2) удается найти в исключительных случаях (линейные уравнения с постоянными коэффициентами, переменные разделяются, специальные уравнения). Как правило, используют приближенные методы. Простейший из них — явный метод Эйлера. Интервал [z0, z„] покрывается дискретным множеством Ц = ^Ц-НН^, где h—шаг интегрирования, z = 0, 1, 2, ..., N. Будем искать приближения х{ к вектор-функции x(z) на множестве tb следуя методу Эйлера:
xi+1=xi-^hf^xi, t^ x0 = xw.(3)
Формулы (1), (3) представляют собой вычислительный метод, который может дать некоторые приближения х^ z = l, 2, ..., N, к точным значениям x^t^ на множестве Ц. Важнейшей задачей выбора вычислительного метода является обеспечение сходимости приближений к точному решению (Цх, —х(^)|| ^0, А —>0) и оценка погрешности приближений (|| xt — х^ || = ?).
Алгоритм. Алгоритм метода Эйлера без контроля точности можно описать следующим образом. .
Задать числа и. tN, h, вектор х0.
Вычислить П=д_^н"-^оШУ
По вектору xt вычислить вектор х/+1, следуя формуле0 (3), и выдать его значение на дисплей.
Закончить процесс вычислений после определения вектора xN.
Программа. Возможный вариант программы на фортране приведен ниже. Перевод английских слов можно найти в словаре (см. Приложение 1):
SUBROUTINE S(F,X,T)REAL X(10),F(10),TF(1) = T+X(2)**2F(2) = X(3)-X(1)SUBROUTINE S(F,X,T)REAL X(10),F(10),TF(1) = T+X(2)**2F(2) = X(3)-X(1)F(10) = COS(X(9))F(10) = COS(X(9))REAL X(10),F(10),TO, REAL TN,H,X INTEGER N,I,J
SUBROUTINE S(F,X,T)
REAL X(10),F(10),T
F(1) = T+X(2)**2
F(2) = X(3)-X(1)
SUBROUTINE S(F,X,T)
REAL X(10),F(10),T
F(1) = T+X(2)**2
F(2) = X(3)-X(1)
F(10) = COS(X(9))
F(10) = COS(X(9))
READ (5,1) TO,TN,H,X
FORMAT (F7.4) N = (TN —TO)/H DO 3 1=1,N
RETURN ENDRETURN ENDCALL S(F,X,TO) DO 2 J = 1,10
RETURN END
RETURN END
X(J) = X(J)+H*F(J)
WRITE (5,1) X
TO=TO+H
END
В правом столбце представлена часть программы, вычисляющая правую часть (2):
f^t-Vx!, f2 = x3-xl, ..., /10=cosx9.
Работа На ЭВМ. Пользователь ЭВМ должен быть зарегистрирован в OG^ РВ администратором, ему присваивается код идентификации, например [231, 1], он должен иметь пароль, например TQR. Работа на ЭВМ заключается в наборе следующих команд на ‘клавиатуре дисплея (каждая строка заканчивается нажатием клавиши возврата каретки). Подчеркнутые символы выдаются на экран дисплея ОС, пропущенный текст заменен многоточием:
> HELLO
> [231,1]
> PASS WARD: TOR
> EDI UPR,FTN
INPUT
набор текста программы, приведенного выше
два нажатия возврата каретки
* ЕХ
FOR UPR,UPR = UPR
>ТКВ UPR/CP = UPR, [1,1 ] FOROTS/LB
> RUN UPR
набор чисел TO,TN,H, вектора X
выдача на дисплей результатов вычислений
ТТ:STOP
МАТЕМАТИЧЕСКАЯ■) МОДЕЛЬ ПРОЦЕССА, УПРАВЛЕНИЯМАТЕМАТИЧЕСКАЯ■) МОДЕЛЬ ПРОЦЕССА, УПРАВЛЕНИЯА ВЫЧИСЛИТЕЛЬНЫЙМЕТОДА ВЫЧИСЛИТЕЛЬНЫЙМЕТОДТЕХНИЧЕСКАЯ ЗАДАЧА УПРАВЛЕНИЯТЕХНИЧЕСКАЯ ЗАДАЧА УПРАВЛЕНИЯПРОГРАММА МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯПРОГРАММА МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯ*АЛГОРИТМ МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯ*АЛГОРИТМ МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯ
МАТЕМАТИЧЕСКАЯ
■) МОДЕЛЬ ПРОЦЕССА, УПРАВЛЕНИЯ
МАТЕМАТИЧЕСКАЯ
■) МОДЕЛЬ ПРОЦЕССА, УПРАВЛЕНИЯ
А ВЫЧИСЛИТЕЛЬНЫЙМЕТОД
А ВЫЧИСЛИТЕЛЬНЫЙМЕТОД
ТЕХНИЧЕСКАЯ ЗАДАЧА УПРАВЛЕНИЯ
ТЕХНИЧЕСКАЯ ЗАДАЧА УПРАВЛЕНИЯ
ПРОГРАММА МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯ
ПРОГРАММА МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯ
*
АЛГОРИТМ МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯ
*
АЛГОРИТМ МОДЕЛИРОВАНИЯ, УПРАВЛЕНИЯ
Рис. В.2
метод, алгоритм, программа, работа на ЭВМ. Частично затрагиваются вопросы, связанные с математической моделью, но лишь в аспекте выбора той модели, которая может быть оптимально реализована на ЭВМ, технические задачи приводятся для иллюстраций и пояснения происхождения математических моделей.
Схема рис. В.1 представляет собой способ применения ЭВМ изолированно, в автономном режиме (OFF LINE) от какого-либо реального процесса, который модель описывает.
Наиболее общая форма применения ЭВМ в технических задачах— это одновременное использование ЭВМ для математического моделирования реального процесса, объекта и управление этим процессом, объектом в реальном времени — режим связи ЭВМ с объектом (ON LINE).
ЭВМ в системе управления процессом. Применение ЭВМ для управления технологическими, экспериментальными и т. п. процессами, установками подразумевает наличие модулей связи между объектом управления и ЭВМ. Это объясняется тем, что информация с объекта поступает в аналоговом виде (сила тока, напряжение и т. д.), а ЭВМ обрабатывает информацию, представленную в цифровом виде. Сигналы управления из ЭВМ на объект должны быть преобразованы из цифровой формы в аналоговую. Программа моделирования и управления размещается в памяти машины. Схема управления изображена на рис. В.2. Стрелками показан путь реализации задачи управления и моделирования. Здесь необходимо программировать работу модулей связи, а также учитывать время исполнения различных фрагментов программы на ЭВМ. Важно, чтобы временные характеристики объекта были согласованы с временем исполнения программы. Программа управления переходным процесом не должна работать дольше, чем длится сам этот процесс.
Программирование в реальном масштабе времени работы модулей связи, как правило, ведется на машинно-ориентированных языках типа ассемблера, которое требует более глубокого знания возможностей ЭВМ, ее аппаратуры и ОС, чем программирование задач моделирования на фортране. Однако нельзя утверждать, что ассемблер вообще лучше фортрана, так как каждый язык имеет свой круг алгоритмов, для которых он наиболее удобен. Для программирования задач в реальном масштабе времени
идеальным является владение по крайней мере двумя языками типа ассемблера и фортрана.
Структура книги. Содержание книги можно условно разбить на две части. В первой части (гл. 1—4 и 12) излагаются архитектура ЭВМ, работа за дисплеем, программирование, ОС, библиотека фортран-программ. Во второй части (гл. 5—11) представлены вычислительные методы. Каждая глава этой части независима. Предполагается, что сведения из курса высшей математики, лежащие в основе этих глав, читателю уже известны.
Советы по применениюкурса ВМП на практике
Задачи рекомендуется решать не только в дисплейном классе на ЭВМ кбллективного пользования, но и на персональной вычислительной технике (персональные ЭВМ, программируемые микрокалькуляторы).
При постановке технической задачи прежде всего следует ознакомиться со всеми методами ее решения на ЭВМ (модели, алгоритмы, программы), известными в данный момент, например в фондах алгоритмов и программ.
«Ближайшая» решенная задача, как правило, служит хорошим тестом для проверки решения поставленной задачи, а ее решение (аналитическое или численное) может быть использовано в вычислениях (см. 5.1—5.4).
Решение задачи на ЭВМ, полученное без оценки погрешности, не имеет практического смысла.
До начала решения задачи следует оценить возможности ЭВМ: точность представления чисел должна быть достаточной для ее решения, объем памяти должен соответствовать задаче, время вычислений не должно превышать требуемый предел, средства ввода—вывода информации должны обеспечивать потреб
ности задачи.
Сведения, выходящие за рамки настоящей книги, можно найти: по архитектуре ЭВМ — [5, 28 ]; по структуре алгоритмов и программ—[1, 17, 28]; по операционным системам—[5, 7, 12, 14]; по программированию на фортране—[3, 6, 13, 15, 17, 32]; по методам вычислений—[2, 4, 8—11, 15, 16, 18—25, 29—33]; тексты фортран-программ—[3, 6, 9, 13, 15, 26, 27, 30, 32].
Глава 1АРХИТЕКТУРА ЭВМГлава 1АРХИТЕКТУРА ЭВМ
Глава 1АРХИТЕКТУРА ЭВМ
Глава 1АРХИТЕКТУРА ЭВМ
• 1.1. Введение
Пользователь и ЭВМ. На вычислительную машину, как и на любой объект, различные специалисты смотрят по-разному. Конструктор вычислительной техники, инженер-электронщик, видит в ЭВМ набор электронных узлов (плат, интегральных схем, кристаллов) и технологию их изготовления. Разработчика программного обеспечения, инженера-программиста, интересует набор команд, выполняемый ЭВМ, временные характеристики всех устройств. Эксплуатирующие ЭВМ инженеры-электронщики и программисты работают на ЭВМ совершенно в другой манере, нежели разработчики, поскольку они имеют дело с готовым объектом.
Разработчики и специалисты по эксплуатации являются профессионалами в вычислительной технике, для них ЭВМ — основной объект приложения профессиональных знаний.
В то же время имеется большая группа людей, пользователей ЭВМ, для которых вычислительная техника—инструмент решения разнообразных задач (учебных, научно-технических, информационных и т. п.). Естественно, что внутри этих групп: разработчиков, специалистов по эксплуатации, пользователей — есть своя иерархия (тонкая структура), которую легко понять поработав в этой группе.
Отмеченные три группы специалистов возникают практически во всех технических областях человеческой деятельности. Например, автомобиль раньше, чем ЭВМ, также «породил» три группы связанных с ним людей: разработчиков, специалистов по эксплуатации и водителей.
Аналогия между водителями и пользователями поможет выяснить состав этих групп. Водители не однородны по своему составу; имеются профессиональные водители и автолюбители, гонщики-спортсмены как среди профессионалов, так и среди любителей, спортсмены, в свою очередь, также не однородны (различные виды машин, виды гонок), наконец, есть каскадеры. Аналогичную неоднородность состава представляет группа пользователей: «каскадеры», виртуозно владеющие ЭВМ; пользователи, выжимающие из машины больше, чем заложено ее создателями (спортсмены), пользователи-профессионалы и рядовые пользователи (автолюбители).
Очевидно, что водить автомобиль можно зная только правила дорожного движения и назначение трех педалей, руля и рычага переключения передач. Точно так же можно пользоваться ЭВМ зная элементы какого-нибудь языка программирования, назначение клавиш терминала и несколько команд операционной системы. Однако такой уровень владения техникой приводит пользователя (водителя) в беспомощное состояние из-за малейших пустяков. Недаром, чтобы получить права, следует сдать экзамены по материальной части автомобиля.
В настоящей главе рассматривается «материальная часть» ЭВМ, называемая архитектурой.
Архн+ектура ЭВМ. Под архитектурой машины понимается ее логическая организация, структура, ресурсы, которые может использовать программист. Описание ЭВМ в виде логических элементов (а‘ не физических) и их взаимодействия друг с другом освобождает пользователя от необходимости знания физической организации элементов ЭВМ.
Иметь представление об архитектуре полезно, а часто и необходимо пользователю на любом этапе вычислительного процесса от формулировки математической модели до проведения вычислений. Архитектура определяет те ресурсы, которыми располагает пользователь для решения своей задачи. Возможно, что на этапе формулировки модели окажется, что архитектура ЭВМ не обеспечивает решение поставленной задачи, и тогда для ее решения следует выбрать машину подходящей архитектуры.
• 1.2. Архитектура фон Неймана
Основные элементы. Структура, присущая большинству современных ЭВМ, была принципиально описана в конце 40-х годов фон Нейманом. Ее иногда называют классической или традиционной. Общая организация ЭВМ представлена на рис. 1.1.
Центральное место среди функций, выполняемых машиной, занимают арифметические и логические операции. Для этой цели служит блок, называемый арифметическим и логическим устрой-
Рис. 1Л
ством. Второй блок — устройство управления. Этот блок обеспечивает последовательность управляющих сигналов для арифметического и логического устройства.
При выполнении арифметических операций возникает необходимость в сохранении промежуточных результатов. Роль хранилища информации, доступной как арифметическому и логическому устройству, так и устройству управления, выполняет оперативное запоминающее устройство или память.
Для того чтобы использовать машину для обработки необходимой информации и получения результатов, нужно вводить и выводить информацию. Эти операции обеспечивают устройства ввода и вывода (рис. 1.1).
Арифметическое и логическое устройство. Это устройство в ЭВМ фактически и выполняет все вычисления. Операции выполняются с помощью электронных схем, каждая из которых состоит из нескольких тысяч элементов. Микросхемы имеют высокую плотность и быстродействие. На современном технологическом уровне все арифметическое и логическое устройство можно разместить на одном кристалле полупроводникового элемента размером с конторскую скрепку.
Устройство управления. Этот блок управляет работой всей ЭВМ. Здесь оценивается поток входной информации и решается вопрос: когда, как и какими средствами выполнять обработку. Устройство управления указывает арифметическому и логическому устройству последовательность работ, источник получения информации, а также приемник результатов.
Управляющие сигналы вырабатываются на основе интерпретации последовательности команд. Команда содержит информацию о том, что нужно делать (код операции) и где расположены данные (адреса операндов в памяти). Последовательность команд для устройства управления хранится в памяти и называется собственно программой. Это программа в машинных кодах.
Команды выполняются последовательно во времени в порядке, который определяет либо сама команда, либо специальный счетчик команд. В некоторых машинах совмещается во времени выполнение текущей команды с выборкой из памяти следующей. Но эта процедура «не видна» программисту, она выполняется на электронном уровне.
Устройство управления совместно с арифметическим и логическим устройством называют центральным процессором.
Оперативная память. Этот блок хранит информацию для устройства управления (команды) и арифметического устройства (данные). Идея размещения в памяти команд и данных является фундаментальной, лежащей в основе ЭВМ архитектуры фон Неймана. Содержимое ячейки памяти, на которую указывает счетчик команд, может интерпретироваться как команда или как данные.
ГОРЬКОГО 17 ft^HOTEKA
Ж Г» У.
БИТЫБАЙТЫ
•ооеооеое
оеооеооео
Рис. 1.2
Оперативная память собирается на ферритовых сердечниках или полупроводниковых микросхемах и состоит из отдельных ячеек. Каждая ячейка может содержать элемент данных (числа), часть команды или полную команду.
Простейшей единицей измерения данных является двоичный разряд—бит. .^ит имеет представление «О» или «1» и запоминается как определенное направление намагниченности ферритового сердечника либо определенное состояние электронного переключателя. Отдельный бит обрабатывается и изменяется только в центральном процессоре.
Многие ЭВМ имеют байтовую архитектуру. Байт — это последовательность битов, образующих единицу передачи информации. Обычно байт состоит из 8 бит (рис. 1.2). На ЭВМ с байтовой архитектурой предусматривается обращение к отдельным байтам.
Упорядоченная совокупность битов (байтов) образуют слово. Количество битов в слове изменяется от 8 (для микро-ЭВМ) до 64 (в супер-ЭВМ). В машинах с байтовой архитектурой слово представляется 2, 4, 8 байтами. Машинное слово—это основной объект данных в языке фортран (см. гл. 3).
Каждое слово^ячейка) имеет свой адрес, связанный с расположением в памяти. Следует отличать адрес от содержимого (рис. 1.3).
Организация памяти. В любой ЭВМ, даже в калькуляторе, существует несколько уровней памяти. Важной особенностью иерархии уровней является обратно пропорциональная зависимость емкости от стоимости (скорости доступа). Чем больше емкость памяти, тем медленнее к ней доступ (рис. 1.4). Время доступа—это время, необходимое для выборки из памяти или записи в нее информации. Характеристики шести уравнений памяти приведены в табл. 1.1.
Самую быструю часть памяти представляет собой часть центрального процессора—регистры. Регистры образуют два набора: регистры команд и регистры данных. В зависимости от характера данных регистры организованы в группы. Имеются адресные регистры и регистры данных различных типов.
АДРЕССОДЕРЖИМОЕ ЯЧЕЙКИ
3ооеооеео
4еооееооо
Тип памятиТип памятиРЕГИСТРЫКОМАНДРЕГИСТРЫКОМАНДРЕГИСТРЫОПЕРАНДОВРЕГИСТРЫОПЕРАНДОВI БУФЕРНАЯ ПАМЯТЬ | [основная память |ДОПОЛНИТЕЛЬНАЯ ПАМЯТЬI ВТОРИЧНАЯ ПАМЯТЬ МАССОВАЯ ПАМЯТЬI БУФЕРНАЯ ПАМЯТЬ | [основная память |ДОПОЛНИТЕЛЬНАЯ ПАМЯТЬI ВТОРИЧНАЯ ПАМЯТЬ МАССОВАЯ ПАМЯТЬРис. 1.4Рис. 1.4Таблица 1.1Таблица 1.1Время доступа, сВремя доступа, сЕмкость, битЕмкость, бит
Тип памяти
Тип памяти
РЕГИСТРЫКОМАНД
РЕГИСТРЫКОМАНД
РЕГИСТРЫОПЕРАНДОВ
РЕГИСТРЫОПЕРАНДОВ
I БУФЕРНАЯ ПАМЯТЬ | [основная память |
ДОПОЛНИТЕЛЬНАЯ ПАМЯТЬ
I ВТОРИЧНАЯ ПАМЯТЬ МАССОВАЯ ПАМЯТЬ
I БУФЕРНАЯ ПАМЯТЬ | [основная память |
ДОПОЛНИТЕЛЬНАЯ ПАМЯТЬ
I ВТОРИЧНАЯ ПАМЯТЬ МАССОВАЯ ПАМЯТЬ
Рис. 1.4
Рис. 1.4
Таблица 1.1
Таблица 1.1
Время доступа, с
Время доступа, с
Емкость, бит
Емкость, бит
Регистры Буферная Основная Дополнительная Вторичная МассоваяРегистры Буферная Основная Дополнительная Вторичная Массовая103—104104—105106—108ю7—ю9109— 10йю11—ю12103—104104—105106—108ю7—ю9109— 10йю11—ю1212 - 20)-10’9 20-200)-10"9 0,2-20)-10"6 1-ю)ю-3 20— 100)Т0-3
Регистры Буферная Основная Дополнительная Вторичная Массовая
Регистры Буферная Основная Дополнительная Вторичная Массовая
103—104
104—105
106—108
ю7—ю9
109— 10й
ю11—ю12
103—104
104—105
106—108
ю7—ю9
109— 10й
ю11—ю12
Ю- 100
Данные и команды поступают в центральный процессор со следующего уровня, доступного только через устройство управления. Этот уровень называется буферной памятью (кэш-памятью). Он служит для согласования скорости процессора и основной памяти, быстродействие буфера почти такое же, как и регистров, емкость значительно меньше основной памяти. Использование буфера обычно недоступно пользователю, и возникает иллюзия, что основная память работает почти со скоростью процессора. Техническое решение, лежащее в основе буферной памяти, известно как «предварительно просматриваемая память».
Основная (или оперативная) память расширяется двумя типами памяти: дополнительной и вторичной, реализуемой обычно на магнитных дисках. Диски дополнительной памяти имеют фиксированные головки чтения-записи, а вторичной памяти—подвижные головки.
Программа пользователя может обращаться к любой ячейке дополнительной памяти в диапазоне адресов, во много раз превышающем емкость основной памяти. Проведение всех операций, необходимых для вызова информации в основную память, которая требуется центральному процессору или обратной пересылке, выполняется операционной системой (гл. 4). Пользователь вообще не знает, где физически расположена ячейка с данным адресом. Такой адрес памяти называется виртуальным, а организация памяти—виртуальной памятью. Истинный физический адрес
каждого слова данных из виртуального адресного пространства известен только операционной системе.
Данные виртуальной памяти пересылаются из основной в дополнительную память и обратно, согласно специальным алгоритмам, порциями—страницами. В основе этих алгоритмов лежит идея сохранения в основном памяти только тех страниц, на которые наиболее часто ссылается центральный процессор.
Вторичная память требует от пользователя употребления специальных команд ввода—вывода, имеющихся в языках программирования, например фортране (гл. 3).
Наконец, массовая память предназначена обычно для архивных целей, реализуется на магнитных лентах, оптических дисках, микрофильмах и т. п.
Различные виды памяти применяются только из-за неодинаковой стоимости устройств хранения информации. Если бы устройства с минимальным временем доступа были достаточно дешевыми, то следовало бы использовать только один уровень памяти. Из-за отсутствия в настоящее время быстродействующей дешевой памяти приходится сочетать дорогие устройства с дешевыми для обеспечения заданного быстродействия ЭВМ.
Центральный процессор. Как уже отмечалось, в центральном процессоре, объединяющем арифметические и логические устройства с устройством управления, выполняются команды или, что то же самое, программа пользователя. Центральный процессор представляет собой достаточно сложное электронное устройство, состоящее из нескольких функциональных блоков (например, блока сложения, блокам умножения и т. п.).
Внутри функционального блока управление выполнением соответствующих операций может производиться аппаратно (электронной схемой) либо программой (микропрограммно). Во втором случае управление блоком осуществляет программа, действующая на биты операндов (операнд-объект, над которым производится операция), что и приводит к выполнению операции, например умножения (операнды-сомножители). Эти программы пишут разработчики-программисты. Технология микропрограммного управления позволяет легко увеличивать скорость работы соответствующего блока благодаря применению более совершенных (коротких) программ без переделок аппаратуры.
Современные ЭВМ могут выполнять сотни команд, которые все вместе образуют систему команд. Максимальное количество команд в данной машине ограничивается размером поля, отводимого под код операции. Если это поле занимает 1 байт, то возможны 28 = 256 команд. Система команд полностью отражает архитектуру ЭВМ, поскольку однозначно определяет работу центрального процессора. Остальные части ЭВМ — память, устройства ввода—вывода—должны обеспечивать работу центрального процессора: снабжать командами, операндами, сохранять результаты. Причем при решении тех задач, для которых в основном
применяется ЭВМ, центральный процессор должен активно работать.
Последнее очень важно для оценки производительности процессора и ЭВМ в целом, поскольку в задачах различно сочетание операций, необходимых для их решения. Например, в ЭВМ, применяемой для научно-технических расчетов, желательно иметь более быстродействующие арифметические блоки, нежели в ЭВМ для экономических расчетов. Иллюстрацией может служить типичный набор команд (подробно представленные команды изложены в гл. 3) для двух классов задач:
Научно-техническая задача15 умножений12 делений25 сложений22 вычитания12 записей в память2 ввода2 команды печати8 условных переходов2 безусловного перехода 100 командНаучно-техническая задача15 умножений12 делений25 сложений22 вычитания12 записей в память2 ввода2 команды печати8 условных переходов2 безусловного перехода 100 командЭкономическая задача5 умножений2 деления25 сложений18 вычитаний14 записей в память8 вводов8 команд печати14 условных переходов6 безусловных переходов100 командЭкономическая задача5 умножений2 деления25 сложений18 вычитаний14 записей в память8 вводов8 команд печати14 условных переходов6 безусловных переходов100 команд
Научно-техническая задача
15 умножений
12 делений
25 сложений
22 вычитания
12 записей в память
2 ввода
2 команды печати
8 условных переходов
2 безусловного перехода 100 команд
Научно-техническая задача
15 умножений
12 делений
25 сложений
22 вычитания
12 записей в память
2 ввода
2 команды печати
8 условных переходов
2 безусловного перехода 100 команд
Экономическая задача
5 умножений
2 деления
25 сложений
18 вычитаний
14 записей в память
8 вводов
8 команд печати
14 условных переходов
6 безусловных переходов
100 команд
Экономическая задача
5 умножений
2 деления
25 сложений
18 вычитаний
14 записей в память
8 вводов
8 команд печати
14 условных переходов
6 безусловных переходов
100 команд
Несмотря на большое число команд ЭВМ, их можно разделить на четыре основных типа: арифметические и логические; команды управления; команды внутренней пересылки; команды ввода — вывода.
Команды, поступающие в центральный процессор, содержат следующую информацию:
Код операции.
Адреса операндов и результата.
Адрес следующей команды.
Архитектура адресации. В этом пункте рассматриваются различные архитектуры ЭВМ, связанные с формой адресации. Поставленной задаче (иметь в команде информацию о коде операции и адресах) удовлетворяет ЭВМ с четырехадрееным форматом команды (рис. 1.5). Пусть код операции (символический):
сложения ADD
вычитания SUB
умножения MUL
X, Y, Z, W—символические имена ячеек памяти. Тогда команда
MUL X,Y,Z,W
код
АДРЕС 1-ГО
АДРЕС 2-ГО
АДРЕС
АДРЕС СЛЕД.
ОПЕРАЦИИ
ОПЕРАНДА
ОПЕРАНДА
РЕЗУЛЬТАТА
КОМАНДЫ
означает: умножить содержимое ячейки X на содержимое ячейки Y, результат поместить в ячейку Z.
В большинстве машин адрес W не указывается, в них имеется указатель—счетчик команд (PC)—это регистр, хранящий адрес текущей команды. В нем во время выполнения текущей команды формируется адрес следующей команды.
Трехадресный формат команды
ADD А,В,С
означает: сложить содержимое ячеек А и В, результат поместить в С, а следующую команду взять по адресу, который содержится в регистре PC.
Ради экойомии размера ячейки памяти можно пожертвовать одним адресом в формате команды, адрес результата совместить с адресом второго операнда и получить двухадресную машину. Однако, чтобы выполнить сложение С = А + В, теперь потребуется лишняя команда MOV — перемещение содержимого первой ячейки во вторую, а именно:
MOV А,С ; (AU(C)
ADD В,С ;(В) + (С)->(С)
Двухадресные машины широко распространены, такой архитектурой адресации обладают и малые, и большие ЭВМ.
Чтобы получить одноадресную машину, необходимо предусмотреть в ЭВМ еще один регистр—аккумулятор (АС), где будет содержаться второй операнд для арифметических операций и потребуются команды записи в аккумулятор LAC и чтения DAC. Сложение С = А + В в одноадресной машине имеет вид
LAC А ;(А)->(АС)
ADD В ;(АС)+(В)->(АС)
DAC С ;(АС)->С
Одноадресные машины также широко представлены, а идея иметь аккумуляторы на регистрах используется в двухадресных и трехадресных машинах. Такие регистры, применяемые не только в качестве аккумуляторов, но и для индексации элементов массивов, вычисления числа повторений циклов и т. д., называются регистрами общего назначения.
Использование регистров для хранения операндов и команд, выполняющих операции с их содержимым, значительно повышает быстродействие ч ЭВМ.
• 1.3. Классификация архитектурных решений ЭВМ
Идея параллельных вычислений. Со времени появления ЭВМ в 40-е годы быстродействие процессора увеличилось на выполнение одной операции примерно с 10’1 с до 10" 8—10“9 с. За время 10 ~9 с электрический сигнал (свет) распространяется на
22’
30 см. Поэтому дальнейшее повышение быстродействия ограничено физическими процессами передачи сигналов и технологией. Нельзя в настоящее время рассчитывать на уменьшение времени срабатывания электронной схемы как на главный резерв ускорения работы процессора. А увеличивать быстродействие ЭВМ постоянно требуют практические задачи. При этом проявляется закономерность, состоящая в том, что для решения необходимых в данное время задач следует иметь ЭВМ, быстродействие которых в 10—100 раз выше, чем у имеющихся машин.
Основной источник задач, требующих быстродействия 109 с и выше,— управление сложными объектами в реальном масштабе времени, прогноз погоды и др. В таких задачах требуется провести огромный объем вычислений за ограниченный, заданный интервал времени.
Одно из важных направлений увеличения быстродействия—проведение на ЭВМ параллельных вычислений для решения одной задачи. Эта идея высказывалась еще в XIX в., а в ЭВМ она имела некоторое начальное воплощение в рамках традиционной архитектуры фон Неймана. Так, в некоторые процессоры были введены блоки предварительной выборки команд, выполнение команд с перекрытием по времени и т. п. Но широкое развитие идеи параллельных вычислений потребовало разработки принципиально новых архитектурных решений, которые начали реализовываться в действующих ЭВМ в 70-е годы.
Классификация ЭВМ. Любую ЭВМ можно представлять себе как устройство, через которое организовано прохождение двух потоков: потока данных и потока команд. С этой точки зрения практически все новые архитектурные решения и классическую архитектуру определяет табл. 1.2.
В ЭВМ классической архитектуры имеется одно арифметическо- логическое устройство (АЛУ), через которое проходит поток данных, и одно устройство управления (УУ), через которое проходит поток команд. Это однопроцессорная ЭВМ.
Наличие в ЭВМ нескольких (Р) процессоров, т. е. объединение АЛУ и УУ, означает, что параллельно может быть организовано много (Р) потоков данных и много (Р) потоков команд. Таким образом, параллельно могут выполняться несколько фрагментов одной задачи. Это многопроцессорная ЭВМ. Структура такой
Таблица 1.2
Поток данных в
ЭВМ
Поток команд в
ЭВМ
Одиночный
Множественный
Одиночный
Множественный
Однопроцессорная ЭВМ Конвейерный процессор
Параллельный процессор Многопроцессорная ЭВМ
^ L Ту Liуу L машины, имеющей общую
"АЛУАЛУ ■ ' ■ АЛУ оперативную память (ОП)
IIи несколько процессоров,
।111L представлена на рис. 1.6.
Iоп -I Если несколько процес-
риссоров, входящих в вычис
лительную систему, не имеют общей оперативной памяти, а имеют каждый свою (локальную), то это многомашинная вычислительная система. Каждая ЭВМ
в многомашинной системе имеет классическую архитектуру, и такая система применяется достаточно широко. Однако задача, решаемая на такой вычислительной системе, должна иметь очень специальную структуру: она Должна разбиваться на столько слабо связанных подзадач, сколько ЭВМ в системе. Заметим, что если заботиться не только об увеличении быстродействия решения задач, но и о надежности вычислений, то преимущество многопроцессорных и даже многомашинных вычислительных систем перед однопроцессорными очевидно.
Работа нескольких АЛУ под управлением одного УУ означает, что множество данных может обрабатываться по одной программе— одному потоку команд (фактически это параллельный процессор). Из четырех классов архитектурных решений это наиболее специализированный тип ЭВМ. Высокое быстродействие такой
архитектуры можно получить только на задачах, которые удовлетворяют определенным требованиям, а именно:
в задаче имеется множественность наборов данных;
одинаковые вычислительные операции необходимо выполнить на всех наборах;
отсутствие непредвиденных ситуаций в потоках данных. Структура ЭВМ подобного вида представлена на рис. 1.7. Следующий тип организации параллельных вычислений идеологически тесно связан с конвейерным способом проведения сборочных работ на производстве. Поясним аналогию на примере. Автомобиль собирают на конвейере 120 рабочих за 60 мин: первый устанавливает шасси, второй закручивает 16 болтов, ..., 120-й отгоняет готовый автомобиль. Хотя сборка каждого автомобиля занимает 60 мин, каждые 30 с с конвейера сходит готовый автомобиль (после загрузки конвейера). Коэффициент ускорения может быть определен отношением 60 мин к 30 с, равным 120,
т. е. числу ступеней конвейера.
Аналогично работает вычислительный конвейер. Напри
мер, блок сложения двух чисел, представленных в форме с мантиссой и порядком А = 0,375 • 101; В = 0,124-10-1, можно разбить на пять ступеней:
вход
ВЫХОД (А+В)
Рис. 1.8
Вход: А, В.
Вычитание порядков: !—(—!) = 2.
Сдвиг вправо мантиссы числа, имеющего меньший порядок на величину разности порядков: 0,00124-101.
Сложение мантисс: 375
+
001
376
Подсчет числа нулей в старших разрядах суммы: 0.
Сдвиг влево суммы на число нулей в старших разрядах с изменением порядка (нормализация результата): 0,376-101. Выход: А + В.
Этот блок обычно реализуется на электронном уровне по схеме рис. 1.8, где фиксаторами обозначены элементы, препятствующие перескоку данных с одной ступени на другую, который может произойти из-за различия в количестве логических операций на каждой ступени или изменений временных характеристик логических элементов.
1)2)3)
Рис. 1.9
Рассмотренный пример—так называемая аппаратная реализация арифметического конвейера.
Но как параллелизм, так и конвейерную организацию вычислений можно рассматривать на различных уровнях, например:
уровень машинных слов: арифметический конвейер;
уровень команд: конвейер команд;
уровень программ: макроконвейер.
Отмеченные формы конвейерной обработки изображены в виде схем на рис. 1.9. Под конвейерным процессором, помещенным в табл. 1.2, понимается любое вычислительное устройство, имеющее в своей структуре какую-либо конвейерную организацию 1—3.
Ускорение решения задач на вычислительном конвейере определяется числом ступеней, а также характером решаемых задач. Как правило, задачи должны обладать следующими свойствами.
Решение задачи не зависит от предыдущих вычислений.
Вычисления могут быть представлены в виде одной и той же цепочки подзадач.
Подзадачи тесно связаны.
Время вычисления подзадач приблизительно одинаково.
Конечно, приведенная классификация ЭВМ в табл. 1.2 слишком «груба» и в современных машинах присутствуют элементы всех четырех типов архитектурных решений. Но основные черты, доминирующие элементы такая классификация отражает.
Архитектура ЭВМ на основе потока данных. В вычислительных системах, рассмотренных выше, порядок вычислений задается последовательностью команд. Этот порядок строго выдерживается при выполнении программы на ЭВМ любой организации, управляемой потоком команд. В 80-е годы была практически реализована новая архитектурная идея управления ходом вычислений— управление потоком данных.
В системах с управлением потоком данных вычисления упорядочиваются в соответствии с готовностью операндов для вычислений. Программа на основе потока данных не является последовательным перечнем команд. Она может быть представлена блок-схемой, где в блоках указываются операции и связи (дуги), по \ ’ X
Рис. 1.10Рис. 1.10
Рис. 1.10
Рис. 1.10
которым могут перемещаться значения, называемые фишками. Например, фрагмент программы на основе потока данных для вычисления по алгоритму ввод A,B,C,Y
X = A*Y+B
Y = X/(C*Y + B)
приведен на рис. 1.10.
Фишка, которая должна быть подана на несколько блоков, размножается. Элементарная операция может
выполняться в любой момент при поступлении на ее входы фишек. Операция поглощает входные фишки, и на выходе появляется фишка, соответствующая выходной дуге операции.
В ЭВМ на основе потока данных «автоматически» используется внутренний параллелизм задачи, который в машинах с управлением потоком команд скрывается в навязанной последовательности команд.
Конфигурация процессора на основе потока данных представлена на рис. 1.11. Программа хранится в командных ячейках, содержащих код операции, несколько значений для входных операндов и список ячеек, которые должны получить результат, когда она будет выполнена. Во время работы процессора каждая ячейка ожидает, пока на место всех входных операндов поступят данные. Тогда она срабатывает и запрашивает в блоке арбитража обслуживание операционного устройства.
Блок арбитража рассматривает одновременно много сработавших командных ячеек и копии их содержимого направляет к свободным операционным устройствам. Эти устройства, организованные как конвейеры, выполняют операции. Результаты принимает блок распределения и направляет копии результатов в отведенные места тех командных ячеек, которые определены в списках пунктов назначения. Затем возможно срабатывание других ячеек и т. д.
ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР
ТЕХНИЧЕСКАЯ УСТАНОВКА
ЦИФРО-АНАЛОГОВЫЙ И АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛИ
ОПЕРАТИВНАЯПАМЯТЬ
МАГНИТНАЯЛЕНТА
АЛФАВИТНО - ЦИФРОВОЙ ТЕРМИНАЛ
ГРАФИЧЕСКИЙ ТЕРМИНАЛ
МАГНИТНЫЙДИСК
ГИБКИЙМАГНИТНЫЙдиск
АЛФАВИТНО - ЦИФРОВОЕ ПЕЧАТАЮЩЕЕ УСТРОЙСТВО
ГРАФОПОСТРОИТЕЛЬ
Рис. 1.12
Более подробно с вычислительными системами, содержащими новые архитектурные решения, можно познакомиться в [28].
• 1.4. Вычислительные системы серии СМ
Введение. Семейство мини-ЭВМ, называемое серией СМ, представляет собой ряд вычислительных машин, совместимых друг с другом снизу вверх. Совместимость снизу вверх означает, что программы, разработанные для младших моделей серии, будут выполняться на старших без изменений. Аналогом соответствующего ряда за рубежом является серия ЭВМ фирмы «DEC» (Digital Equipment Corporation), содержащая ЭВМ типа PDP.
Выбор ЭВМ серии СМ в качестве реальной вычислительной системы для иллюстрации архитектуры ЭВМ объясняется широкой популярностью этой серии в решении учебных, научно-технических, информационных задач среднего класса сложности, которым они соответствуют по своим техническим параметрам. Большое разнообразие периферийных устройств, подключаемых к ЭВМ, разнообразие операционных систем (см. гл. 4), применяемых в этой серии, выгодно выделяют машины СМ среди других ЭВМ.
Кроме того, отличительными особенностями серии мини-ЭВМ типа СМ (СМ 3, СМ 1300, «Электроника 100/16», СМ 4, СМ 1400, СМ 4/20, СМ 1420, СМ 1600, «Электроника 100/25», «Электроника 79») являются относительно невысокая стоимость, малая площадь размещения, легкое сопряжение с техническими установками. Штат, обслуживающий ЭВМ, может быть минимальным и состоять из инженера-электронщика и программиста, которые работают по необходимости: профилактика, генерация системы под новые тре-
бования пользователя и т. п.; остальное время на ЭВМ пользователь может работать самостоятельно.
Набор аппаратуры, который может быть включен в состав вычислительной системы (далеко не полный), показан на рис. 1.12. Центральный процессор, оперативная память и все внешние устройства подключаются к единой магистрали связи, называемой общей тиной.
Магистраль связи—общая шина — представляет собой набор проводов, передающих информацию, например данные, управляющие сигналы между устройствами, которые к ней подключены. Любое устройство, в том числе и центральный процессор, может поместить информацию в магистраль, и каждое устройство может выбрать ее из магистрали. Таким образом, общая шина является средством обмена информацией между устройствами. К такой системе легко подключаются новые устройства (дополнительный блок памяти или терминал).
Устройства могут обмениваться данными независимо от центрального процессора, что позволяет совмещать в одно и то же время выполнение нескольких работ. Дисплей может получить, например, информацию на экран из памяти, в то же время центральный процессор выполняет другую работу. Многие устройства, подключенные к общей шине, являются одновременно вводными и выводными (диски, терминалы).
Центральный процессор. Блок-схема центрального процессора приведена на рис. 1.13., Арифметическое и логическое устройство принимает информацию из общей шины, восьми общих регистров. Обработав информацию, устройство может поместить информацию в те же источники и в регистр состояния процессора. Для арифметических операций используется двухадресный формат команд, поэтому нет необходимости в регистре-аккумуляторе.
Устройство управления, явно не обозначенное на рис. 1.13, состоит из регистра состояния, счетчика команд (регистр R7) и общей шины.
Регистр состояния процессора содержит информацию о результате последней выполненной операции. Ой состоит из 16 однобито-
БАЙТБАЙТБАЙТ
БАЙТ
БАЙТ
АДРЕС Гл I n I 1 I I I n I 1 П I АДРЕС
177777 I 0 I 0 I 1 I I I ° I I ° I 177776
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 О
Рис. 1.14
вых индикаторов, и в зависимости от содержимого каждого бита можно определить, что произошло в результате операции (например, получен нулевой или отрицательный результат, имеет место переполнение и т. п.).
Счетчик команд (16-битовый регистр), как и в других ЭВМ, содержит адрес очередной команды, подлежащей выполнению. При .обращении процессора к R7 для получения адреса ячейки (слова) оперативной памяти содержимое R7 увеличивается на 2, так как (это показано в следующем пункте) адрес слова всегда четный. Если появляется команда, требующая изменения последовательного хода выполнения программы, то в R7 устанавливается адрес передачи управления. Исходное содержание счетчика команд — стартовый адрес программы в машинных кодах.
Оперативная память. Память организована в виде последовательности слов-ячеек, каждое из которых содержит 16 бит. Состояние слова изображается диаграммой, приведенной на рис. 1.14. Все слова памяти пронумерованы. Номер слова называется его адресом.
Таким образом, с каждым элементом памяти связаны адрес элемента и его содержимое—информация в виде комбинации битов. *
Отличие ЭВМ типа СМ от других машин состоит в том, что не только слово имеет собственный адрес, но его имеет и полуслово — байт, адрес младшего байта-биты (0—7)—всегда четный, совпадает с адресом слова.
Максимальный объем адресуемой памяти составляет 64 К байт или 32 К слов, где К =1024, и может быть расширен специальным устройством—диспетчером памяти—до 4 М байт на старших моделях СМ (М = К2).
Верхние (со старшими адресами) 4 К слов называются страницей ввода—вывода. Каждая ячейка в странице ввода — вывода является регистром управления или регистром данных, связанных с внешним устройством.
Некоторые ячейки резервируются системой и не используются программами пользователя. Обычно они имеют адреса 0—776. Верхние 4 К слов имеют адреса 160 000—177 776.
Заметим, что адреса памяти записываются в восьмеричной системе счисления, а числа (содержимое ячеек) — в двоичной системе.
Десятичная, восьмеричная, двоичная системы счисления. Все рассматриваемые здесь системы счисления относятся к так
называемым позиционным системам, в которых любое вещественное число представляется в виде
X = + ^п^п — 1 • • *ti05—^ — 2“'’
где значение х находится по формуле
х = ±(яи4и + яи_ i^"-1 + ... -VaQ-Va_vq~ ^а _2q ~2 + ...).
Здесь целое число q>\—основание системы счисления, сц—цифры #-ичной системы счисления.
Обычно в качестве младших цифр используют знаки 0 и 1. Основание системы записывают в виде 10. В десятичной системе: цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, основание 10, пример записи числа:
103,12=1-102 + 0-101 + 3-10°+110“1+2-10-2.
В восьмеричной системе: цифры 0, 1,2, 3, 4, 5, 6, 7, основание 8 записывается в виде 10, пример записи числа:
= 1-8Ч0-81+ 3-8°+l-S"^^'2.
В двоичной системе: цифры 0, 1, основание 2 записывается в виде 10, пример записи числа:
= 1-22 + 0-21 + 1-2°+1-2’1 + 1-2"2.
Приведем примеры записи целых чисел (в скобках отмечено основание системы счисления):
3(10) = 3(8) = 1 1(2)»Ю(10) = 12(8) = 1010(2).
Использование двоичной системы, адекватной состояниям элементов ЭВМ, оказывается неудобным, так как трудно воспринимать двоичные числа из-за их громоздкой и непривычной записи. Перевод числа из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы эффективно использовать ЭВМ, следует научиться интерпретировать слово машины. Для этого и используется восьмеричная система, числа которой читаются так же легко, как десятичные, и очень прост переход от двоичной системы к восьмеричной и наоборот.
Для перевода восьмеричного числа в двоичную систему необходимо каждую восьмеричную цифру заменить равным ей трехзначным двоичным числом, например
70,261 (8) = 11000,010110001 (2);26,03 (8) = 010110,000011 (2).
Для перевода двоичных чисел в восьмеричные необходимо начиная от запятой влево и вправо разбить двоичные цифры на тройки цифр, каждое трехзначное число перевести в восьмеричную систему, неполные тройки дополняют нулями, например
11,011111(2) = 3,37(8);1011100,0111(2) = 134,34(8).
Представление чисел в памяти. Целые числа занимают в памяти ЭВМ байт или слово (2 байта). Возможный диапазон
0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 1
15 14 13 12 11 ю 9 8 7 6 5 4 3 2 1 0
Рис. 1.15
изменения целых чисел без знака в формате слова 0—65 535, а со знаком—32 768—32 767. Например, число 17 изобразится диаграммой, приведенной на рис. 1.15, при записи в формате слова. Вещественные числа имеют также два представления: одинарной и двойной точности. Вещественные числа одинарной точности занимают два слова, двойной—четыре слова памяти. Любое вещественное число х можно записать следующим образом: 3х=т10р,
где |^|<1, р—целое, 10= 10(2). Множитель т называется мантиссой, р—порядком числа х. Запись числа х называется нормализованной, если -
.^<|т|<1.
При записи числа в ненормализованном виде количество значащих цифр, изображающих число, может быть значительно меньше, чем при записи в нормализованном, и погрешность в представлении числа может быть больше.
Нормализованное число в одинарной точности записывается в память следующим образом (рис. 1.16): знак числа—в 15-м бите первого слова (0—число положительное, 1—число отрицательное), порядок р размещается в битах 7—14 первого слова, увеличенный на 128, мантисса занимает 23 бита в двух словах. Нормализованное число в двойной точности записывается в четыре слова памяти и отличается от одинарной точности только тем, что продолжение мантиссы размещается в и+ 2, и+ 4, и+ 6 словах или 55 битах.
Диапазон представления вещественных чисел 2,939 • 10 ц о? ^в —1,701 • 10(318о). Точность представления числа в одинарной точности соответствует примерно 7 знакам после запятой в десятичном представлении числа (0,1234567), в двойной точности—17 знакам (0,12345678901234567).
3
ПОРЯДОК
НАЧАЛО I
МАНТИССЫ |
157 60 АДРЕС157 60 АДРЕСПРОДОЛЖЕНИЕ МАНТИССЫ I П+2ПРОДОЛЖЕНИЕ МАНТИССЫ I П+2Рис. 1.16Рис. 1.16Представление букв и символов в памяти. Каждой букве и символу клавиатуры терминала соответствует число. Кодировка удовлетворяет стандарту КОИ-7, который, за исключением букв русского алфавита, совпадает с ASCII (American Standard Code for Information Interchange, произносится «эз-ки»). Символы, буквы и цифры терминала интерпретируются как восьмеричные числа от 0 до 177(8), например
157 60 АДРЕС
157 60 АДРЕС
ПРОДОЛЖЕНИЕ МАНТИССЫ I П+2
ПРОДОЛЖЕНИЕ МАНТИССЫ I П+2
Рис. 1.16
Рис. 1.16
0
0
1
1
0
0
0
0
0
1
0
1
1
0
0
_J
15
14
13
12
11
10
9
8
Рис.
7 6
1.17
5
4
3
2
1
0
A —101D —104X —1300 —60
В —102E —105Y —1311 —61
C —103F —106Z —1322 —62
Для хранения символов терминала используется один байт памяти. Например, символы Х0 в памяти запишутся в два байта (рис. 1.17).
• 1.5. Память на магнитных дисках и лентах
Общая схема магнитных дисков. Устройство внешней памяти на магнитных дисках состоит из следующих основных элементов (рис. 1.18): 7—магнитный диск — носитель информации—круглая пластинка, покрытая магнитным материалом. Диск устанавливается на шпиндель двигателя вращения 5. Информация записывается магнитными головками 4 на обе стороны диска. Магнитные головки перемещаются в радиальном направлении двигателем 6. Вся поверхность диска разбита на дорожки 2, равноудаленные от оси диска, а каждая дорожка делится на определенное число секторов 3. Каждый сектор содержит один блок информации объемом 512 байт. Часто сектор информации, равный одному блоку, используют как единицу объема информации. Для управления чтением-записью служат электронные схемы 7, которые вместе с 5, 6 называют дисководом.
Используются магнитные диски четырех типов: фиксированные, кассетные, пакетные, гибкие. В фиксированных диск не снимается с дисковода. Кассетный диск представляет собой одну пластину, закрепленную в кассете, этот диск снимается с дисковода. Пакетный диск содержит несколько пластин, закрепленных на одной оси в кассете. Гибкий диск представляет собой полимерную пленку, покрытую магнитным материалом, помещенную в картонный футляр.
3333Устройство внешней памяти на магнитных дисках типа СМ 5400. Устройство СМ 5400 в настоящее время является одним из основных устройств внешней памяти для ЭВМ СМ. Устройство, включает два диска: фиксированный и съемный. Емкость каждого диска 2,4 М байт. Скорость обмена данными с ЭВМ составляет 300 К байт/с. К ЭВМ может быть подключено несколько устройств типа СМ 5400.
33
33
На передней панели устройства СМ 5400 размещены переключатели и сигнальные лампочки, с помощью которых можно включить устройство, получить информацию о его
2 Ю. П. Боглаев
работе (рис. 1.19). Подготовка устройства к работе состоит из следующих операций:
Вставить рабочий сменный диск.
Включить питание (нажать переключатель «Сеть»), загораются лампочки «Сеть» и «Загрузка».
Включить двигатель, вращающий диски. (Нажать переключатель «Старт»). Лампочка «Загрузка» гаснет. Подождать 20 с. Когда загорается лампочка «Готово», устройство готово к работе.
Если горит лампочки «Защита», необходимо отжать переключатель с надписью «Защита». Лампочка погаснет. Если горит лампочка «Неисправность», следует сообщить о неисправности устройства персоналу, обслуживающему ЭВМ. Нормальное состояние: горит только лампочка с надписью «Готово». Окончание работы с устройством состоит из следующих шагов.
Отключить двигатель, вращающий диски (отжать переключатель с надписью «Старт»). Лампочка «Готово» гаснет. Подождать, пока не загорится лампочка с надписью «Загрузка».
Отключить питание (отжать переключатель «Сеть»).
5.3. Устройство внешней памяти на гибких магнитных дисках типа СМ 5608. Устройство СМ 5608 может обслуживать два магнитных диска (им присваиваются номера 0 и 1 соответственно). Емкость одного магнитного диска примерно 256 К байт.
Переключатели на передней панели (рис. 1.20) обеспечивают: включение накопителя, замену дисков, выбор требуемой стороны данного диска. Подготовка устройства к работе:
Включить устройство.
Открыть защитную дверцу и вставить гибкий диск нужной стороной в соответствующее гнездо.
Установить переключатель сторон данного диска в положение, соответствующее стороне диска, с которой будет производиться работа. (Переключатель сторон A/В в нажатом состоянии опреде-
ляет сторону А, в отжатом состоянии—сторону В). В настоящее время возможна работа только на стороне А гибкого диска, т. е. необходимо нажать переключатель сторон A/В для диска с нужным номером.
Включить двигатель, вращающий диски (нажать переключатель с надписью «М»).
Устройство к работе готово. Защитные дверцы блокируются (нельзя открыть).
Замена диска состоит из следующих операций:
Деблокировать защитные дверцы (нажать и отжать переключатель с надписью «М»). Подождать несколько секунд (до появления характерного щелчка). Двигатель, вращающий диски, отключается.
Открыть защитную дверцу и заменить диск.
Установить переключатель сторон данного диска в нужное положение.
Закрыть защитную дверцу. Двигатель, вращающий диски, включается. Устройство к работе готово.
Окончание работы:
Отключить двигатель, вращающий диски (отжать переключатель с надписью «М»).
Отключить питание.
Память на магнитных лентах. Магнитные ленты применяются для длительного хранения большого объема информации, переноса информации с одной ЭВМ на другую, хранения копий важной для пользователя информации с магнитных дисков.
Информация записывается на полимерную ленту, покрытую магнитным составом, шириной 12,5 мм. Лента наматывается на катушки, вмещающие 80, 375, 750 м. Запись идет по девяти дорожкам; на восьми записывается информация, девятая —
Рис. 1.21
контрольная. Плотность записи (количество битов на 1 мм по длине одной дорожки) — важный показатель магнитной ленты и устройства чтения-записи; возможные значения плотности: 8, 32, 64, 256 бит/мм.
Общая структура записи на ленту показана на рис. 1.21. Запись информации пользователя называется файлом, если ей присвоено имя. Структура Информации: 1— физическое начало ленты (светоотражающая полоска на нерабочей стороне ленты), 2—заголовок ленты, 3— заголовок файла, 4— разделитель группы записей, 5—записи файла, 6—метка конца файла, 7—две метки конца файла—конец ленты, 5—физический конец ленты.
Рассмотрим устройство внешней памяти на магнитной ленте типа СМ 5300. Емкость одной кассеты около 10 М байт. Продольная плотность записи 32 бит/мм. Скорость обмена информацией с ЭВМ составляет 10 К байт/с. Для предотвращения случайной записи на магнитную ленту используется кольцо разрешения записи на кассете. При отсутствии кольца запись информации на магнитную ленту запрещена. На передней панели устройства размещены переключатели и сигнальные лампочки (рис. 1.22).
Подготовка устройства к работе состоит из следующих операций:
Заправить ленту в устройство.
Включить устройство (нажать переключатель с надписью «ВКЛ»).
Рис. 1.23
Нажать переключатель «Загрузка». Магнитная лента устанавливается на маркере начала ленты. Загорается лампочка «Ди- станц.». Устройство к работе готово.
Если отсутствует кольцо защиты записи, то также загорается лампочка «Защита записи».
После окончания работы лента должна быть перемотана на исходную катушку. Для этого необходимо нажать последовательно переключатели «Сброс», «Перемотка». Лента остановится на маркере начала. Повторно нажать переключатели «Сброс», «Перемотка». После перемотки магнитной ленты выключить устройство (отжать переключатель с надписью «ВКЛ»).
• 1.6. Алфавитно-цифровые печатающие устройства
Алфавитно-цифровые печатающие устройства (АЦПУ) служат для вывода информации на бумагу—документирования результатов работы пользователя. Рассмотрим два- типа АЦПУ: параллельное и последовательное,— которые отличаются скоростью вывода информации.
АЦПУ параллельное типа СМ 6315. Устройство СМ 6315 « предназначено для вывода информации на бумажный носитель. Скорость печатания 500 строк/мин. Ширина строки до 128 символов.
На передней панели устройства расположены переключатели и сигнальные лампочки (рис. 1.23).
Подготовка устройства к работе:
Включить устройство (нажать тумблер в нижней части устройства). Загораются лампочки «Сеть», «Авария». Через 40 с лампочка с надписью «Авария» гаснет. Загорается лампочка «Готов». Устройство находится в автономном режиме. В этом режиме нажатие переключателя «Прогон строк» вызывает перемещение бумаги на одну строку, а нажатие переключателя «Прогон формата» вызывает перемещение бумаги на одну страницу.
^D FORMATOFF, ON PRINT SEND MPPARPOLLDPLX
RATELINELINE ON
О О++ + + ++++
^Рис. 1.24
В том случае, если лампочка «Авария» не гаснет, сообщить персоналу, обслуживающему ЭВМ.
Для подключения устройства к ЭВМ необходимо нажать переключатель с надписью «ЭВМ». Загорается соответствующая лампочка.
Окончание работы с АЦПУ:
Перевести устройство в автономный режим (нажать переключатель с надписью «ЭВМ»). Соответствующая лампочка гаснет.
Отключить устройство (отжать тумблер в нижней части устройства).
6.2. Последовательное печатающее устройство типа DZM-180. DZM-180 является печатающим устройством со скоростью печатания 180 зн/с. Относительно низкая стоимость, надежность работы обусловили ее широкое применение в качестве устройства вывода для ЭВМ СМ.
На передней панели устройства расположены переключатели и сигнальные лампочки (рис. 1.24). Подготовка устройства к работе:
Включить устройство (нажать переключатель с надписью «SUPPLY»). Загорается красная лампочка (это автономный режим работы).
Перевести устройство в режим работы с ЭВМ (нажать переключатель с надписью «SEL»). Красная лампочка гаснет. Загорается зеленая лампочка. Устройство к работе готово.
Окончание работы:
Перевести устройство в автономный режим (нажать переключатель с надписью «На»). Загорается красная лампочка.
Отключить устройство (нажать переключатель с надписью «SUPPLY»).
• 1.7. Алфавитно-цифровой терминал
Рассмотрим терминалы VDT («Видеотон») и «Электроника». Терминалы других типов могут иметь некоторые отличия (другое расположение клавиатуры, новые функциональные возможности).
При работе с ними необходимо предварительно ознакомиться с соответствующим руководством.
Алфавитно-цифровой терминал предназначен для ввода—вывода символьной информации. Экран терминала делится на 16 (или 24) строк по 80 символов в каждой строке.
Набор символов VDT (см. рис. 1.24):
26 заглавных латинских букв;
31 заглавная русская буква;
10 цифр;
28 специальных знаков.
После включения терминала в первой позиции первой строки появляется мерцающая метка (курсор). Для работы с терминалом необходимо знать назначение следующих клавиш.
Клавиша OFF LINE. После включения устройства устанавливается режим OFF LINE и на панели загорается индикаторная лампочка «OFF LINE». Если устройство работает, то при нажатии этой клавиши устройство переходит в режим OFF LINE. В данном режиме линия связи с ЭВМ отключена. Терминал «Электроника» не имеет такой клавиши.
Следующая клавиша ON LINE. Нажатие этой клавиши переводит терминал из режима OFF LINE в режим ON LINE. Терминал подключается в линии связи с ЭВМ. Загораются индикаторные лампочки «ON LINE» и «DPLX».
Рассмотрим действие клавиши SHIFT для терминала VDT и клавиш BP, HP для «Электроники». При совместном нажатии SHIFT с алфавитно-цифровыми клавишами вырабатывается код верхнего знака, изображенного на выбранной клавише. В отжатом состоянии—код нижнего знака. При совместном нажатии алфавитно-цифровой клавиши и клавиши «ВР» вырабатывается код верхнего знака (в случае «НР» — код нижнего знака).
Клавиша «CTRL» для VDT или аналогичная клавиша «СУ» для «Электроники» служит для генерирования управляющих кодов. Подробности использования этой клавиши излагаются в гл. 4.
Клавиша «LINE FEED» для VDT или ПС для «Электроники». При нажатии этой клавиши курсор переводится в первую позицию следующей строки.
Клавиша «ТАВ» для VDT или аналогичная клавиша ГТ для «Электроники». При нажатии клавиши курсор * устанавливается в ближайшую позицию для тубуляции. Обычно это позиции строки с номерами 8N+1, где N = 0, 1, 2, ... (номера позиций задаются аппаратно).
Клавиша «ROLL» служит для установления и отмены режима «бегущий экран». При записи символа в последнюю позицию последней строки метка не переходит в первую позицию первой строки, как в случае обычного режима, а вместо этого все строки сдвигаются на одну строку вверх, причем первая строка теряется, а на месте последней строки образуется пустая строка. Курсор устанавливается в первую позицию последней строки.
Клавиша «RETURN» для VDT или ВК для «Электроники». Нажатие клавиши «RETURN» служит признаком конца строки символов, введенной с терминала (при работе в операционной системе ОС РВ).
При нажатии алфавитно-цифровых клавиш вырабатывается код, соответствующий данному символу.
Подготовка терминала к работе (VDT):
Включить терминал. Загорается лампочка «OFF LINE» (автономный режим работы).
Нажать клавишу «ON LINE». Загорается лампочка «ON LINE» и DPLX (режим связи с ЭВМ).
Нажать клавишу «ROLL». Загорается лампочка «ROLL». (Установить «бегущий экран»).
Окончание работы (VDT):
Нажать клавишу «OFF LINE». Загорается соответствующая лампочка.
Выключить терминал.
Глава 2
СТРУКТУРА АЛГОРИТМОВ И ПРОГРАММ
• 2.1. Семейства вычислительных алгоритмов
Ниже перечислены и кратко описаны основные семейства алгоритмов, которые применяются в инженерно-технических задачах. Каждый алгоритм семейства рассматривается как один-единст- венный вычислительный блок. При таком подходе алгоритм есть отображение входных данных задачи на выходные данные. Как устроено это отображение, нас в данный момент не интересует, так же как и вопрос о его реализации на ЭВМ.
Можно представить, что имеется гипотетический калькулятор, содержащий клавиши и несколько кнопок, есть возможность ввести
в него исходные данные задачи, нажать одну из клавиш и одну из кнопок и вывести ответ — выходные данные (рис. 2.1). Собственно, так и поступают, работая с калькулятором. Мы не задумываемся, что, набрав на индикаторе число 0,37, нажав клавишу «F» и кнопку «SIN», мы заставляем калькулятор выполнять цепочку действий; нас интересует только ответ 0,36161543 на индикаторе. Каждая из упомянутых клавиш отвечает какому-либо семейству алгоритмов, а кнопка — конкретному алгоритму из этого семейства.
Семейство алгоритмов будем обозначать буквой латинского алфавита и десятичной цифрой, например АЗ, В7, а конкретный алгоритм отмечать парой буква—цифра. Таким образом, обозначение А5В2 означает: алгоритм В2 из семейства А5.
Ниже, если это специально не оговаривается, входными и выходными данными алгоритма могут быть как точные, так и приближенные значения решения математической задачи. Поэтому смысл, придаваемый выражениям «решение уравнения», «решение системы»
и т. п., должен устанавливаться при описании конкретного алгоритма семейства. Рассмотрим следующие семейства.
АО. Вычисление элементарных функций. Обычный набор элемен-
I?I?тарных функций: sinx, cosx, tgx, arcsinx, arccosx, arctgx, ex, J: Inx, Igx, |x|, thx дополняется часто встречающимися y = max(x
I?
I?
Рис. 2.1Рис. 2.1ВХОДНЫЕ ДАННЫЕВХОДНЫЕ ДАННЫЕВЫХОДНЫЕ ДАННЫЕВЫХОДНЫЕ ДАННЫЕХ2, ..., х„), j; = min(x1, х2, ••., х„) и некоторыми другими (см. гл. 12).
Рис. 2.1
Рис. 2.1
ВХОДНЫЕ ДАННЫЕ
ВХОДНЫЕ ДАННЫЕ
ВЫХОДНЫЕ ДАННЫЕ
ВЫХОДНЫЕ ДАННЫЕ
На вход любого блока АО следует подать
(
■J \ J AO| ^ .w x числа из области определения фун-
, ■■■ -Z v L, I vкции (например, x >0 для x, Inx,
рис 22Igx), на выходе получается число
из области значений функции.
AL Вычисление специальных функций. Блок семейства А1 представляет собой полный аналог АО, и только исторически более позднее исследование этих функций закрепило за ними термин «специальные». К числу специальных функций относятся: интегральный синус Si(x), интегральный косинус Ci(x), гамма-функция Г(х), функции Бесселя «ТоМ? ЛМ» ^о(х), ^iM? модифицированные функции Бесселя А0(х), Л^х), 70НА ЛМ» интегралы Френеля 5(х), С^х\ эллиптические интегралы, интеграл вероятности и др.
А2. Вычисление элементарных функций комплексного переменного. Алгоритмы семейства А2 для своей работы должны иметь на входе комплексное число z. На выходе алгоритм выдает комплексное чйсло /(z) = w + w (рис. 2.2), при г = 0 — вещественное число. Часто используются следующие функции: |z|, Inz, ^z, sinz, cosz и т. п.
АЗ. Аппроксимация функций. Задача приближения заданной функции ДД другой функцией ф(х) из некоторого класса функций решается алгоритмами семейства АЗ. Входными данными для АЗ являются требуемая точность приближения £ и Дх\ заданная либо аналитической формулой, например, /(х) = х2 + H-sin(arctgx-Hcosx), O^x^l, либо таблицей значений
xj 0,0 0,2 0,3 0,4 0,6 0,9 1,0
Дх^ 1,1 2,0 1,9 0,7 1,4 1,6 0,9
Выходные данные—достигнутая точность приближения ех и функция ф(х), 0^х^1, которая также может быть представлена в аналитическом или в табличном виде (рис. 2.3).
А4. Интегрирование. В семействе А4 алгоритмы вычисляют определенные интегралы от функций ДД одной или нескольких переменных. На вход алгоритмов подают точность £, пределы интегрирования, функцию /(х) в аналитическом или табличном виде. На выходе получаем число S—приближенное значение ь
интеграла S=^/^dx. Алгоритмы А4, рассматриваемые в книге,
решают задачу интегрирования методами численного анализа. Однако существуют на ЭВМ системы аналитических вычислений, которые имеют алгоритмы нахождения аналитических формул для неопределенного интеграла. На входе этих алгоритмов — формула для Дх\ на выходе—формула для ^f^dx. Поэтому блок А4
Qojooj^следует рассматривать как блок,
^1■ —-^ вычисляющий определенные и не-
Рис. 2.3Рис. 2.3определенные интегралы.определенные интегралы.
Рис. 2.3
Рис. 2.3
определенные интегралы.
определенные интегралы.
А5. Суммирование рядов. Алгоритмы А5 на входе имеют формулы для общего члена ряда: числового ап, функционального ап(х) и точность 8 суммирования, на выходе получаем приближенное
значение 5= £ ап или 5(х) = £ яи(х), S(x) предствляется аналити- и=1И= 1
чески или таблично.
Аб. Фурье-анализ. Разложение функции /(х) в ряд Фурье в вещественной форме
100
/(х)~-(2о + £ ^nCosnx-^bnSmnx^, к^х^к,
2 п — 1
1 л1 л
^и = - f f^cosnxdx, bn = - J f^sinnxdx,
или в комплексной форме
/М~ Е cneln\ сп=}-] f{xy~inxdxп=-ооК -я
составляет предмет Фурье-анализа. Фурье-анализ лежит в основе методов решения многих инженерно-технических задач, таких, как выявление скрытых периодичностей в динамических процессах, решение линейных уравнений математической физики методом Фурье и т. д. На входе алгоритмов Аб имеем /(х) в аналитической или табличной (часто называемой дискретной) форме, на выходе— коэффициенты ряда Фурье. Заметим, что коэффициенты ряда Фурье—это функция С=С(и) от целочисленного аргумента. Если и заменить вещественным со, то преобразование функции /(х) в С(со) называют Фурье-преобразованием. Алгоритмы Аб выполняют также Фурье-преобразование.
А7. Дифференцирование. Вычислительный блок дифференцирования функции одной /(х) или нескольких переменных/(х)=/(х1? х2, ..., х„) имеет на входе аналитическую или табличную форму /(х), на выходе — аналитическую или табличную форму производной Д2(х). Аналитическое дифференцирование представлено в системах аналитических вычислений на ЭВМ. В этом случае блок А7 дает точную аналитическую формулу для Др)(х). Алгоритмы численного дифференцирования А7 на выходе имеют приближенную функцию ср(х) к ГЙ^с^ ф(х) может иметь как аналитическую, так и табличную формы.
А8. Операции с матрицами и векторами. Алгоритмы этого семейства реализуют основные операции линейной алгебры. На входе алгоритмов задаются матрицы и векторы, на выходе имеем результат операции. Примерами таких операций являются сумма, произведение матриц, обращение матрицы, скалярное произведение векторов, ортогонализация векторов и т. п.
А9. Решение систем линейных уравнений. На входе алгоритмов семейства А9 задаются матрица системы линейных уравнений
А и вектор правых частей b системы уравнений Ах = Ь; на выходе для матрицы с det А /0 получаем вектор х—решение системы.
Собственные значения и векторы. На входе алгоритмов ВО задается матрица А, на выходе выдается система собственных векторов eb z=l, 2, ..., т, и соответствующих собственных значений Xi9 удовлетворяющих уравнениям
Aei = Xiei) 1^1 ^т.
BL Линейная оптимизация. Входом канонической задачи линейной оптимизации является вектор c = (q, с2, ..., сп), определяющий скалярное произведение Ф(х) с неизвестным вектором х, у которого координаты Xi > 0, 1 z и,
Ф(х) = (с, х) = с1х1 +... +спхп.
Матрица А имеет размер тки, вектор b = ^bls ..., bm\ Они описывают ограничения типа равенств
Ах = Ь.
На выходе алгоритмов В1 имеем вектор х, доставляющий шшФ(х), либо сообщение о неразрешимости задачи.
Решение линейных интегральных уравнений. Интегральное уравнение общего типа можно записать следующим образом:
Ах — Хх = Ь.
Входом алгоритмов семейства В2 являются функции Л (г, 5)—ядро интегрального оператора А
Ах^ = J Л(г, s^x^ds, teDv
область интегрирования Do, область значений Dv, число X, функция />(/). Выходом В2 является функция х^—решение интегрального уравнения—либо информация о неразрешимости или бесчисленном множестве решений.
Корни полиномов. Алгоритмы семейства ВЗ по входным данным—коэффициентам аь 0 ^ z^ и,— определяют корни xt, i^i^n, полинома
Рп^ = а0А-а1х4-а2х2А-... А-апхп.
Следует заметить, что до 4-й степени (п ^4) корни Д(х) могут вычисляться по коэффициентам аналитически.
Корни нелинейных уравнений. Алгоритмы решения нелинейных уравнений В4 на входе имеют нелинейную функцию Дх^ одной переменной или систему нелинейных функций нескольких переменных Дх^=Дхгх2, ..., х„), X^i^n, в области D, точность определения корня, на выходе алгоритмы В4 выдают корни (один или несколько) уравнений /(х) = 0 в области D.
Нелинейная оптимизация. Входные данные алгоритмов В5 — нелинейная функция Ф(х), х=(х1? ..., х„) и область D переменных
х, где ищется минимум или максимум Ф(х). Область D может быть задана, например, неравенствами ф(х)^0, X^i^m, и равенствами ф(х) = 0, l^y^Zr. На выходе алгоритмов — вектор х, доставляющий min Ф(х) или max Ф(х) в области D либо сообщение о неразрешимости задачи.
Вб. Решение обыкновенных дифференциальных уравнений, задача Коши. На входе алгоритмов Вб задаются вектор-функция f^x, У1> - ^ У»), 1<*<и, интервал а^х^Ь двумя числами а, b и начальный вектор у(0) = (у?, у°, •••, Ул), точность £. На выходе — вектор-функция ^^(у^х), у2(х), •••, У„(*)), а^х^Ь.— решение задачи
-,У„\ У^уЧ.
Решение обыкновенных дифференциальных уравнений, краевые задачи. Входом алгоритмов В7 являются вектор-функция f^x, у1? ..., уп), 1^/^и, интервал а^х^Ь, заданный числами я, К вектор-функция ф^, ..., у„), X^i^n. На выходе—у(х) = (ух(х), у„(х))—решение краевой задачи
Ч^О^М, j„(a))=0, 1 ^s ^п,
<Pk(yx(b), ...,У„(Ь))=О, l^k^n, или сообщение о неразрешимости или бесчисленном множестве решений.
Решение уравнений с частными производными. На входе алгоритмов В8, как и В7, задаются функции, описывающие дифференциальное уравнение, например, вида
ди ^и ^2м\
Stу ’ дх’ дх1 J
Здесь /—функция на входе В8. Кроме того, на входе задается область D изменения независимых переменных. Для рассматрива- 0 емого уравнения область D может быть следующая:
О = Цх, ty.t0^t^tx, х0^х^хху
где xt, t(— заданные числа. Входными данными алгоритмов В8 являются дополнительные условия, однозначно определяющие решение м(х, z) уравнения. Обычно это начальные и граничные условия, например
w(x, Z0) = ф(x), Х0<Х<Х15
w(x0, z) = p0(^ M(^i^) = Hi(^ Z^Z^,
где ф(х), p0(z), pjz)—заданные функции на входе алгоритма. Выходными данными является решение уравнения м(х, z).
• 2.2. Структура алгоритмов
В гл. 1 определено понятие архитектуры ЭВМ как набора ресурсов ЭВМ, их структура, доступные программисту. Программист-пользователь может вообще не знать, как физически устроена и работает ЭВМ. Это знает инженер-электронщик. Для программирования важна логическая организация машины. По аналогии с архитектурой ЭВМ можно ввести понятие архитектуры алгоритма.
Архитектура алгоритма—это набор элементарных вычислительных блоков, их структура и логическая организация, необходимые для программирования задачи.
Программист-пользователь может не знать, как запрограммирован отдельный вычислительный блок и даже какой метод вычислений заложен в его основу, это должен знать инженер-математик. Хотя и не все инженеры-математики могут ответить на вопрос, по какому алгоритму вычисляются значения элементарных функций.
Естественно задать вопрос: что же должен уметь пользователь при построении алгоритма решения задачи и программировании?
Пользователю необходимо уметь:
Спроектировать алгоритм методом «сверху вниз» — от сложного к простому, используя готовые (базовые) вычислительные алгоритмы из семейств, перечисленных в 1.1, и применяя «базовые логические схемы».
Выбрать те вычислительные алгоритмы, которые удовлетворяют требованиям задачи.
В случае отсутствия готового вычислительного алгоритма необходимо его ь разработать, запрограммировать и включить в состав базовых вычислительных алгоритмов.
Наконец, необходимо запрограммировать весь алгоритм.
2.2.1. Проектирование алгоритма. Проектирование алгоритма удобно сопровождать блок-схемами. В блок-схемах приняты стандартные графические средства, показанные на рис. 2.4. Внутрь кратко действие алгоритма, а в знак «связь» записывается метка, которая обозначает соединение с другой линией, имеющей кружок с такой же меткой. В ромб записываются анализируемые условия, а возможные результаты анализа обозначаются на выходящих из ромба линиях.
Имеются три базовые логические схемы, на основании которых можно спроектировать любой вычислительный алгоритм.
\
графического знака записывается
ТОЧКИ ВХОДА И ВЫХОДА
J- ОБРАБОТКА ИНФОРМАЦИЯ
ПРОВЕРКА УСЛОВИЯ
связь (или слияние)
Рис. 2.4
Рис. 2.5
Последовательная схема (рис. 2.5). Состоит из трех компонентов: входа в вычислительный блок 7, вычислительного блока 2 и выхода из вычислительного блока 2.
Альтернативная схема (рис. 2.6). Состоит из проверки выполнения некоторого условия. Если условие выполняется, то вычисления производятся на блоке 7, если—нет, то на блоке 2. Заметим, что в схеме один из блоков может быть пустым (не содержит действий).
Схема повторения или схема цикла. Состоит из узла слияния, проверки условия и вычислительного блока (рис. 2.7). В этой схеме после узла слияния происходит проверка условия: если оно выполняется, то происходят вычисления на блоке,
Рис. 2.6
если—нет, то происходит выход из схемы. Таким образом, вычисления в блоке выполняются до тех пор, пока условия не будут выполняться. Поскольку условие проверяется до вычислительного блока, возможно, что действие блока не выполнится ни разу. С другой стороны, если условие всегда выполняется, то вычислительный процесс зацикливается, так как нет возможности попасть на выход схемы.
В качестве примера приведем блок-схему алгоритма суммирования кубов целых чисел (рис. 2.8)
N
5= £ к3-
к-1
Число N—входное данное, S—выходное.
Рис. 2.8Рис. 2.8Проектирование алгоритма методом «сверху вниз» на основе базовых логических схем и базовых алгоритмов состоит из следующих шагов. Исходный вычислительный алгоритм представляется в виде одного блока нулевого уровня, на вход которого подаются исходные данные задачи, на выходе получаются выходные данные. Базовыми алгоритмами будем называть те из алгоритмов описанных выше семейств, которые могут быть
Рис. 2.8
Рис. 2.8
реализованы пользователем на его вычислительной машине. Например, совокупностью базовых алгоритмов можно считать алгоритмы, для которых представлены в гл. 12 описания фортран-программ.
Если задача может быть решена с помощью одного базового алго
ритма, то проектирование на этом заканчивается, если—нет, то нулевой уровень проекта алгоритма разворачивается в последовательность базовых алгоритмов (рис. 2.9), где вычислительные блоки можно обозначить по принятой схеме: А4А0, В1А1 и т. п. Не помеченные на рис. 2.9 вычислительные блоки отсутствуют среди базовых алгоритмов и должны быть разработаны пользователем, обозначены в соответствии с принятой схемой и включены в состав базовых.
Таким образом, проект алгоритма первого уровня состоит в последовательном обращении к базовым алгоритмам и не содержит 2-й и 3-й логических схем в своей структуре.
первый УРОВЕНЬпервый УРОВЕНЬНачиная со второго уровня проекта алгоритма используются все три логические схемы и базовые алгоритмы. Второй уровень представляет собой проекты отсутствующих алгоритмов на первом уровне (рис. 2.10). Непомеченные блоки второго уровня разрабатываются на следующем, третьем, уровне проекта и т. д. до тех пор, пока на л-м уровне проекта все вычислительные блоки не будут состоять из базовых алгоритмов. Алгоритмы вычислительной
первый УРОВЕНЬ
первый УРОВЕНЬ
ПЕРВЫЙ УРОВЕНЬПЕРВЫЙ УРОВЕНЬРис. 2.10Рис. 2.10ВТОРОЙ УРОВЕНЬВТОРОЙ УРОВЕНЬ
ПЕРВЫЙ УРОВЕНЬ
ПЕРВЫЙ УРОВЕНЬ
Рис. 2.10
Рис. 2.10
ВТОРОЙ УРОВЕНЬ
ВТОРОЙ УРОВЕНЬ
математики, встречающиеся в инженерно-технических задачах, проектируются с помощью базовых алгоритмов с небольшим числом уровней проекта. Конечность этой процедуры (и конечно) следует из условия, что в число базовых алгоритмов естественно включаются арифметические действия над числами (рис. 2.11).
Отличительной чертой нисходящего проектирования алгоритма является возможность контроля его работы с самого начала
Рис. 2.11Рис. 2.11
Рис. 2.11
Рис. 2.11
проектирования. Это достигается тем, что неразработанные вычислительные блоки заменяются так называемыми «заглушками». Заглушки—это блоки, имитирующие вход и выход неразработанных блоков (рис. 2.12). Заглушка нужна только для того, чтобы проверить алгоритм определенного уровня.
Пример проектирования алгоритма. Пусть требуется спроектировать алгоритм решения следующей технической задачи. По измеренному переходному процессу y^t) системы автоматического регулирования необходимо найти коэффициент к одного из ее элементов, который лежит в некотором диапазоне k0^k^kv Переходный процесс может быть с требуемой точностью описан решением системы обыкновенных дифференциальных уравнений
—- = ty-xvx2s х1(0) = х?, 0^/^Т,
^=ЛГ1-^2, X2(0) = ^2.^=ЛГ1-^2, X2(0) = ^2.(2.2.1)(2.2.1)
^=ЛГ1-^2, X2(0) = ^2.
^=ЛГ1-^2, X2(0) = ^2.
(2.2.1)
(2.2.1)
Предположим, что математический метод решения этой задачи состоит в отыскании такого значения к, которое минимизирует норму S отклонения теоретического переходного процесса х(/) от измеренного у^:
НУЛЕВОЙ УРОВЕНЬНУЛЕВОЙ УРОВЕНЬРис. 2.13Рис. 2.13
НУЛЕВОЙ УРОВЕНЬ
НУЛЕВОЙ УРОВЕНЬ
Рис. 2.13
Рис. 2.13
5= max max I х^-у^ |.
0^^Т1^/^2
Значение к. дающее min 5, принимается в качестве решения к0^к^кх задачи.
Пусть переходный процесс у^ может быть измерен в дискретном числе точек Zy, X^j^m, Zi=0, tm=T интервала b^t^T. Тогда численный мето^ решения задачи может быть следующим: заменим минимизацию S по непрерывному интервалу 0 ^ t ^ Т минимизацией на дискретном множестве точек:
' 5Х = max max Ixr^)—^(zjl.
^jXm 1 ^Z^2
В 5X значения x^t^ будем находить численным интегрированием системы дифференциальных уравнений с заданной точностью £. При фиксированном значении к величина 5Х есть функция к, т. е. 5i = Si(к). Приближенным значением к* к точному к будем считать такое значение, которое минимизирует 5ДА:):
min 5i (А:).
к^к^
Обозначим алгоритм этой задачи Z0A0. Проект алгоритма на нулевом уровне представлен на рис. 2.13.
Входные данные', к^, ку, х^, Хз, tj (1^/^"О, y^j)-
Выходные данные; к*.
Обращаясь к библиотеке (см. гл. 12), находим, что среди базовых алгоритмов имеется два, которые можно использовать в проекте алгоритма, а именно: В5А0—минимизация функции S^k), В6- АО — интегрирование системы дифференциальных уравнений (2.2.1). Опишем действия алгоритма Z0A0, необходимые для перевода входных данных задачи в выходные.
Вычисление min5i(A:) блоком В5А0 и определение к*. Но для блока В5А0 требуется иметь алгоритм вычисления по значению к значения S^k). Таким образом, первый уровень проекта можно представить в форме рис. 2.14. Здесь алгоритм В5А0 имеет в своем составе еще не разработанный блок вычисления значения St(k\ Обозначим этот блок S1K0. Тогда второй уровень проекта алгоритма можно представить в форме рис. 2.15. Для представления блока S1K0 заметим, что в его действие входит:
ВТОРОЙУРОВЕНЬВТОРОЙУРОВЕНЬ
ВТОРОЙ
УРОВЕНЬ
ВТОРОЙ
УРОВЕНЬ
Интегрирование системы уравнений (2.2.1) блоком В6А0, определение х^\ 1 i2, 1 ^уХ т.
Вычисление ^ при фиксированном к.
Третий уровень проекта, представленный на рис. 2.16, есть блок-схема алгоритма S1K0. Здесь непомеченный блок производит следующие вычисления:
5Х = max max k^zj—^(zjl.
Но для блока В6А0 требуется иметь алгоритм вычисления правых частей дифференциальных уравнений и алгоритм определения значений x^tj) (см. гл. 12). Обозначим соответствующие алгоритмы через F0A0 и F0A1 соответственно, непомеченный блок рис. 2.16
ТРЕТИЙ УРОВЕНЬТРЕТИЙ УРОВЕНЬРис. 2.16Рис. 2.16
ТРЕТИЙ УРОВЕНЬ
ТРЕТИЙ УРОВЕНЬ
Рис. 2.16
Рис. 2.16
обозначим F0A2. Тогда четвертый уровень проекта можно представить в форме рис. 2.17. Заметим, что алгоритмы четвертого уровня могут быть представлены с помощью базовых логических схем, базовых алгоритмов и элементарных арифметических действий над числами (см. рис. 2.11). Таким образом, проект рассматриваемого алгоритма исчерпывается пятью уровнями проектирования. В качестве примера алгоритма пятого уровня приведем блок-схему F0A2 (рис. 2.18). Вычисление 5г и S2 на этой схеме осуществляется блоком А0В5 (см. гл. 12).
Итогом проектирования алгоритма является структурно-логическая схема—объединение схем на рис. 2.13—2.18.
Теперь программирование алгоритма состоит в программировании:
обращений к базовым вычислительным блокам;
вычислительных блоков данноговычислительных блоков данногоРис. 2.18Рис. 2.18
вычислительных блоков данного
вычислительных блоков данного
Рис. 2.18
Рис. 2.18
базовых логических схем;
элементарных арифметических действий.
Проектирование алгоритма по указанным выше правилам будем называть структурной алгоритмизацией. Для дальнейшего изучения рассмотренных в этом пункте вопросов следует обратиться к [1].
• 2.3. Поток данных
После того как алгоритм спроектирован, т. е. построена его структурно-логическая схема, необходимо описать поток данных, проходящих через него. Основные алгоритмы вычислительной математики имеют как на входе, так и на выходе данные в виде чисел. Внутри алгоритм количество данных может изменяться, часть из них может запоминаться для дальнейших вычислений, часть — затерта записью на их место других данных. Внутри алгоритма возможна организация ввода и вывода данных. Если учесть, что размер памяти ЭВМ, имеющийся в распоряжении пользователя, ограничен определенной величиной, то станет понятной важность описания прохождения данных (потока данных) через алгоритм.
Карта данных алгоритма. Полное описание потока данных
алгоритма—это представление всех данных на структурно-логи
ческой схеме алгоритма во всех точках входа в вычислительные блоки и выхода из них. Пусть имеется схема алгоритма (рис. 2.19),
где цифрами от 1 до 10 обозначены все точки входа и выхода
алгоритма. В каждой точке 1 —10 необходимо указать все данные, которые имеет алгоритм в этой точке для схем без повторений. Для схем с повторениями указываются данные в точке 7 при входе в схему, в точке 8—перед выходом. В каждой точке составляется карта данных алгоритма. Таким образом, алгоритм, приведенный на рис. 2.19, имеет 10 пронумерованных карт.
Алгоритм, приведенный на рис. 2.19, решает следующую задачу: в точке 1 вводится матрица Л, вектор Ь. В точке 2 имеем решение системы линейных уравнений
Ах = Ь,
Рис. 2.19
поэтому в карте 2 добавляется вектор х к входным данным. В точке 3 вычисляется значение нормы ||д:|| = max|xj. Далее проверяется условие: если норма ||х||<1, то переход на 4, если ||х||>1, то на 6. Пусть ||х||<1; тогда в точке 5 имеем сумму вектора правых частей и решения z = x-Vb. Поэтому в карте 4 добавляется вектор z. Если ||х||>1, то переход на 6, где вводится вектор у. Схема повторений вычисляет скалярное произведение векторов х и у:
50
1=1
Поэтому перед выходом из схемы повторений кроме данных карты 7 имеем еще число q. Полный набор всех карт алгоритма следующий.
Карта 1. Двумерный массив вещественных чисел—матрица Аф 1^50, 1^50, одномерный массив вещественных чисел b^ l^z‘^50.
Карта 2. Аф bh одномерный массив вещественных чисел х-и Uz450.
Карта 3. Аф bb xh ||x||.
Карта 4. Совпадает с картой 3.
Карта 5. Аф bh xh одномерный массив вещественных чисел
Карта 6. Аф bh xh одномерный массив вещественных чисел Уь l^z'^50.
Карта?. Совпадает с картой 6.
Карта 8. Аф bis xb у(—вещественное число q.
Карта 9. Совпадает с картой 8.
Карта 10. Совпадает с картой 5 или 9.
Поясним применение термина «карта» к способу описания данных. Во-первых, данные можно размещать на картах, представляющих память ЭВМ, графически, а не давать словесного описания, как это сделано выше, тогда термин «карта» адекватен способу описания. Во-вторых, термин «карта памяти» применяется при описании распределения памяти ЭВМ, необходимого для выполнения программы алгоритма.
Таким образом, карта данных алгоритма играет ту же роль, что и карта памяти для программы алгоритма, но появляется на более ранней стадии решения задачи (на уровне алгоритма).
Карта данных алгоритма позволяет: 1) осуществить контроль структурно-логической схемы алгоритма; 2) документировать алгоритм так, чтобы в нем мог разобраться каждый, а не только тот, кто его спроектировал.
Приведем простой пример контроля схемы алгоритма, приведенного на рис. 2.19, описанием потока данных. Существуют распространенные вычислительные блоки решения систем линейных уравнений Ах = Ь, которые вектор решения х записывают на место вектора правые частей (затирают Ь). Если применить такой блок, то в точке 2 будем иметь следующую карту.
Карта 2. А^, одномерный массив xt.
Следовательно, ветвь алгоритма по точкам 3—4—5 уже не может быть реализована, если ||х||<1.
• 2.4. Структура программ
Процесс создания команд для ЭВМ, следуя которым ЭВМ выполнит алгоритм, называется программированием алгоритма, короче—программированием.
Программа—это последовательность команд для ЭВМ.
Считая, что этапом, предшествующим программированию, является проектирование алгоритма и описание потока данных, можно утверждать, что программирование—это перевод структурно-логической " схемы алгоритма и потока данных на язык машинных команд—получение программы.
Программу создает пользователь ЭВМ, выполняет программу (обрабатывает команды) — процессор.
Выполняемая программа называется вычислительным процессом, короче—процессом.
Программы существовали задолго до появления ЭВМ, например музыкальная партитура—это программа для музыканта, кулинарный рецепт — программа для повара. Можно обнаружить много общих свойств между любыми программами, выполняемыми одним процессором.
Команды выполняются последовательно, если нет других указаний, начиная с первой до последней. Указания могут нарушить последовательность выполнения программы, например, требованием повторить часть музыкального произведения.
Процесс должен иметь результат — выведенные на терминал числа и символы, звуки музыки.
Часто перед командами программ располагается описание объектов, которые программа обрабатывает. В кулинарных рецептах дается список продуктов для приготовления блюда. В некоторых языках программирования необходимо описать данные перед командами. 54 \
Часто программы строятся так, что автор не знает, какие вычисления будет выполнять процессор,— это зависит от обрабатываемых данных, но всегда должен быть указан критерий выбора пути вычислений.
В программах применяются указания на необходимость повторения команды или последовательности команд более одного раза. В этом случае указывается либо точное число повторений (например, 100 раз), либо критерий, который зависит от процесса (повторять, пока точность вычислений не достигнет заданной £=10'6).
Спецификой программ для ЭВМ является тот важнейший факт, что любая программа может быть построена с помощью следующих четырех базовых конструкций:
Последовательность команд.
Принятие решения (альтернатива).
Повторение (цикл).
Процедура.
Первые три конструкции имеют тот же смысл, что и в 2.2,— это базовые логические схемы, где вычислительный блок есть группа команд или команда (см. рис. 2.5—2.7)..
Процедура—это группа команд, которая заменяется одной командой. Например, кулинарная книга содержит процедуру приготовления бульона, а затем ссылается на эту процедуру в каждом рецепте, требующем бульона.
Процедуры в программировании ЭВМ уменьшают размеры программы и придают ей иерархическую структуру «сверху вниз» — от сложного к простому.•
В архитектуре алгоритма вычислительный блок можно рассматривать как процедуру.
Программирование структуры блоков алгоритма. Рассмотрим общие вопросы программирования алгоритма, спроектированного по принципам структурной алгоритмизации 2.2 на уровне готовых вычислительных блоков. Иными словами, будем считать, что весь алгоритм состоит из уже написанных процедур.
Тогда процесс программирования алгоритма состоит из программирования:
ввода и вывода данных;°
обращения к процедурам;
программирования трех логических схем.
Для программирования применяются различные языки, которые облегчают трудоемкий процесс перевода алгоритма в машинные команды. Однако следует помнить, что алгоритм, записанный на языке программирования, отличном от языка машинных команд, не может быть выполнен на ЭВМ непосредственно. Он должен быть переведен с этого языка специальной программой ЭВМ (например, транслятором для языка фортран, паскаль и т. п.).
Профессиональные программисты, владеющие несколькими языками программирования, твердо уверены, что лучше всего нужно
владеть русским языком. Если пользователь может изложить на русском языке структуру алгоритма так, чтобы другой пользователь смог ее понять, то у него не будет проблем с программированием на любом языке.
В различных языках программирования существуют свои правила записи элементов программирования. Поэтому, чтобы написать программу на конкретном языке, необходимо в следующих ниже программах заменить элементы 1)—3), написанные на русском языке, их соответствующими эквивалентами.
Для языка фортран соответствующие эквиваленты описываются в гл. 3.
Напишем программу алгоритма, приведенного на рис. 2.19, где схему повторе!|ий заменим одной процедурой вычисления скалярного произведения (рис. 2.20).
Нумерацию точек входа, выхода сохраним (рис. 2.19).
1. Ввести вещественные матрицу А^, вектор bb l^z, j^50. Обратиться к процедуре решения системы линейных уравнений Ах = Ь, получить вектор xb l^z'^50. Обратиться к процедуре вычисления || х || = max | xj, 1 z ^ 50, получить || х ||.
Если ||х||>1, то выполнять 6, иначе:
Обратиться к процедуре вычисления вектора z = х + Ь, получить z.
Вывести А, Ь, х, ||х||, г.
Ввести вещественный вектор yf, l^z‘^50. Обратиться к про- 50
цедуре вычисления q = £ х^, получить q. i-l
Вывести Л, Ь, х, ||х||, q.
....
В приведенной выше программе использованы команды программирования ввода, вывода (1., 5., 6., 9.), обращения к процедурам (строки, начинающиеся словом «обратиться»), программирование последовательной логической схемы между 1. и 3., программирование альтернативной логической схемы—команды между 3. и 10. Причем первой ветви (блоку 1) соответствуют команды между 3. и 5., второй ветви (блоку 2)—команды между 6. и 9.
Альтернативная схема (рис. 2.21) общего вида программируется следующим образом. Если условие выполняется, то вычисления:
Рис. 2.21
на блоке 1, иначе:
на блоке 2.
В записи команд вычислительного блока 2 для наглядности следует все команды смещать на несколько позиций вправо относительно блока 1.
Схема повторений с проверкой условия до выполнения блока (рис. 2.22, а) программируется следующим образом:
Пока условие выполняется, вычисления на блоке.
Программирование схемы (рис. 2.22, в) с проверкой условия после выполнения блока программируется следующим образом:
Выполнять блок, пока не выполнится условие.
И хотя вторая логическая схема в) может быть сведена к схеме а), во многих языках имеются адекватные средства и для той, и для другой схемы.
Заканчивая описание программирования на уровне готовых вычислительных блоков или процедур, можно отметить, что на этом уровне следует на конкретном языке программирования (в этой книге — фортран) реализовать следующие базовые команды, упомянутые на русском языке:
Рис. 2.22
Ввести ...
Вывести ...
Обратиться к процедуре ...
Если ... то, ... иначе
Пока ..., ...
Программирование структурированного алгоритма с использованием только базовых логических схем и базовых команд является характерной чертой структурного программирования.
1А.1. Описание данных. В алгоритмах вычислительной математики данные, представляющие различные совокупности целых, вещественных и комплексных чисел, являются сравнительно простыми объектами. Некоторые алгоритмические языки, например фортран, позволяют перед командами не давать описания данных (использовать неявное описание; см. гл. 3), другие, например паскаль, требует обязательного описания.
Будем придерживаться строгого соблюдения правила: все данные, которые обрабатывают вычислительные блоки алгоритма, должны быть описаны до первой команды.
Очевидно, что константы алгоритма могут иметь лишь только строго предписанный данному типу вид и не описываться (см. гл. 3).
Будем также строго соблюдать следующее правило:
все константы должны быть описаны так же, как и переменные; значения им должны быть присвоены до первого их употребления в алгоритме.
Более жесткие, чем позволяет фортран, правила работы с данными, принятые нами, дают преимущества при поиске ошибок и их устранении, при распределении памяти ЭВМ, а в конечном итоге повышают эффективность работы на ЭВМ.
Переменные и константы в алгоритмах вычислительной математики описываются в виде скалярных данных и в виде массивов данных.
Скалярные данные: целого типа; вещественного типа; вещественного типа с двойной точностью; комплексного типа.
Примерами скалярных данных являются:
целого типа—число повторений цикла ^=20;
вещественного типа — значение скалярного произведения приведенного выше алгоритма;
вещественного типа с двойной точностью — то же число q, что в п. б), только с увеличенной длиной мантиссы (см. гл. 1);
комплексного типа — корни zY, z2 квадратного уравнения с дискриминантом, меньшим нуля.
Массивы данных — это совокупности скалярных данных одного типа с указателем размерности массива.
Примерами одномерных массивов данных служат:
одномерные массивы х, Ь, г алгоритма (см. рис. 2.19) — векторы xt, bb zt, l^z^50;
массив значений функции /(х), вычисленных в точках xt, l^z^lOO (обозначается/).
Примерами двумерных массивов данных являются:
двумерный массив А алгоритма (см. рис. 2.19) — матрица Аф l^z, 7^50;
массив значений функции двух переменных /(х, у), вычисленных в точках плоскости (х, у), (х-, у^, 1 ^z, j^^ 100, (обозначается
Примерами А>мерных массивов данных являются значения функции к переменных /(х1? х2, .., хк\ вычисленные в точках хМ1, x2j2, .... xkJk. I^z^TVd i^i2^N2. ..., \^ik^Nk (обозначается
В различных языках программирования формы описания данных имеют некоторые различия, но в основном это форма следующая: указатель типа и список данных этого типа. Например,
Целый i. j. к.
Вещественный q.
Вещественный с двойной точностью г,
Комплексный z,
Массив вещественный at) j. 1 ^ z, j ^ 50,
Массив целый /f, l^z^20.
Такое описание дает возможность подсчитать необходимый объем памяти ЭВМ, который будет занимать данные алгоритма. Для приведенного примера с учетом представления чисел в памяти (см. гл. 1) получаем, что для z, j, к необходимо 6 байт, для q—4 байт, г—8 байт, z—8 байт,—10 000 байт, fiJk—4000
байт,/f—40 байт; итого — 14 066 байт.
Программирование вычислительных блоков для процедур. Как уже отмечалось выше, процедура может рассматриваться как готовая программа, к которой лишь нужно уметь обратиться. Однако многие из процедур для своей работы требуют наличия некоторых программ. Их обязан подготовить пользователь. Так, например, для процедур вычисления интегралов необходимо написать программу вычисления подынтегральной функции (блок А4А0), для процедур численного интегрирования обыкновенных дифференциальных уравнений (блок В6А0) необходимо написать программу вычисления правых частей уравнений и т. п. Такие прог граммы часто называют внешними.
Кроме того, процедуры для своей работы могут требовать наличия ячеек памяти для промежуточных результатов. Поэтому, составляя список описания данных алгоритма, необходимо включать в него и те данные, которые требуют для своей работы все процедуры. Эта информация содержится обычно в описании соответствующих процедур.
Таким образом, даже когда спроектированный алгоритм содержит готовые процедуры, программирование вычислительных блоков оказывается актуальной задачей.
Повторяя процесс проектирования алгоритмов этих блоков «сверху вниз», мы в конце концов придем к необходимости программировать только элементарные вычислительные блоки.
Рис. 2.23
Программирование элементарных вычислительных блоков. Алгоритмические языки программирования, ориентированные на вычислительные задачи, позволяют программировать элементарные блоки, объединяя четыре арифметические операции в конструкции, по форме близкие к математической записи.
Переменные можно обозначать буквами; согласно принятым нами правилам, ^ константы следует обозначить буквами, например х, yh z, а, Ь.
Каждой переменной и константе в соответствии с описанием отводятся ячейки памяти ЭВМ, которые обозначают теми же буквами.
Введем понятие оператора присваивания, который обозначим знаками :=т, чтобы отличить от математически привычного знака =. Запись
х: =(x+/)x*/4-z
соответствует схеме, приведенной на рис. 2.23, и отвечает следующим действиям ЭВМ: из ячеек х и t выбирается содержимое и направляется на блок суммирования; полученный результат и содержимое ячейки t направляются на блок умножения; полученный результат и содержимое ячейки z направляются на блок деления; полученный результат посылается в ячейку х. Отличие оператора присваивания от математического равенства теперь легко понять. Кроме вычислений правой части выражения оператор присваивания засылает результат в ячейку, которая обозначается левой частью оператора, при этом затирается старое содержимое ячейки х.
Программирование любого элементарного блока выполняется с помощью трех базовых логических схем, которые используют следующие базовые команды, называемые операторами: ввода, вывода, альтернативы, цикла, присваивания, записи чисел, скобок, знаков арифметических операций и меток операторов.
Глава 3ПРОГРАММИРОВАНИЕ НА ФОРТРАНЕ
• 3.1. Введение
История фортрана. История языков программирования тесно связана с историей развития вычислительной техники. За прошедшие с 40-х годов десятилетия были созданы тысячи языков программирования высокого уровня. Десятки из них нашли применение в узких направлениях применения ЭВМ. Большинство языков остались достоянием их создателей, и только некоторые стали широко распространенными и играют роль гораздо большую, нежели создание программ для ЭВМ. Такие языки программирования, как фортран, алгол, си, пролог, паскаль, бэйсик, позволяют создавать программы, которые можно выполнить на различных ЭВМ, обмениваться программами и помогают общаться специалистам в разных предметных областях и странах.
Среди языков высокого уровня в настоящее время нет языка, сравнимого с фортраном по долголетию, распространенности и эффективности получаемых программ для вычислительных задач научно-технического содержания. На фортране написано такое количество программ, что трудозатраты, по-видимому, можно оценить миллионами человеко-лет. Ни один производитель вычислительной техники с ориентацией на научно-техническое применение не может игнорировать наличие в мире огромного накопленного программного продукта на фортране. Все ЭВМ такого типа оснащаются трансляторами с' фортрана.
Первая версия языка была разработана фирмой «1ВМ» в конце 50-х годов. Эта версия была ориентирована на устройства ввода с перфокарт и несет отпечаток архитектуры вычислительной техники 60-х годов. В первые годы отсутствовало стандартное определение фортрана, что отрицательно сказывалось на переносимости программ с одной ЭВМ на другую, имеющую другой транслятор. Положение исправилось в 1966 г., когда был введен стандарт языка, известный как фортран 66. В результате улучшилась мобильность (переносимость) фортран-программ. Программа, написанная в рамках этого стандарта, без изменений (или с небольшими изменениями) может выполняться на различных ЭВМ, имеющих соответствующие трансляторы.
Трансляторы с фортрана для разных типов машин обычно Дополняются расширенными возможностями по сравнению со
стандартом. Однако следует всегда иметь в виду, что использование нестандартного фортрана может привести к трудностям при переносе уже написанных программ на другую ЭВМ.
За 10 лет (с 1966 по 1977 г.) фортран завоевал среди пользователей ЭВМ большую популярность, сфера его приложений стала расширяться за пределы научно-технических расчетов. В это же время произошла смена поколений вычислительной техники. Технология ввода-вывода с перфокартами утратила свои позиции, получили широкое распространение видеотерминалы. В результате появилась потребность в модификации фортрана. Была разработана новая версия языка, расширяющая возможности фортрана, которая учитывала но’вые приложения и вычислительную технику. В 1977 г. был введен стандарт языка, известный как фортран 77. В программном обеспечении ЭВМ, как правило, имеются трансляторы с обоих языков. Причем старая версия фортрана практически является частью (подмножеством) новой версии. Поэтому написанные ранее программы без существенных изменений могут транслироваться новыми трансляторами.
Следующий десятилетний цикл обновления фортрана связан с учетом теории современных языков программирования, принципов структурного программирования. Новый стандарт фортрана, называемый фортран 8х, выражает модульную структуру языка и утверждает принципы его развития. Эта концепция состоит в том, что язык должен состоять из нескольких модулей, важнейшие из которых следующие:
модуль ядра фортрана;
модуль архаизмов;
модуль раашфений.
В модуль расширений включаются средства программирования для ЭВМ с новой архитектурой. Например, широкое распространение векторных процессоров потребовало включить в фортран средства работы с числовыми массивами как с отдельными числами — так называемое векторное расширение фортрана.
При всех обновлениях фортрана сохраняются два основных его достоинства: эффективность программ и простота применения.
Обучение программированию на фортране. Цель настоящей главы—ознакомиться с основами техники программирования вычислительных задач на фортране. Методика обучения программированию включает знакомство с минимальным фортраном в объеме п. 3.2. Для некоторых пользователей это и максимум необходимых знаний. Изложение за небольшим исключением ведется на уровне фортрана 66 без дальнейших оговорок.
В минимальном фортране оставлены только те средства языка, без которых нельзя обойтись в несложной вычислительной задаче. Минимальный фортран можно было бы еще сократить, оставаясь верным структурному программированию (см. гл. 2). Это не сделано по той причине, что возможны трудности в понимании
к.
текста чужих программ. С первых шагов обучения программированию необходимы работа на ЭВМ и решение учебных задач с использованием каждого изученного оператора фортрана.
После изучения минимального фортрана следует освоить приемы программирования основных блоков вычислительной математики (см. 3.3). Умение запрограммировать достаточный набор таких блоков позволит решать уже более сложные задачи. Следуя идее структурной алгоритмизации (см. гл. 2), нужно сложный алгоритм представить в виде структуры простых блоков, а затем использовать программы, написанные для блоков.
Следующий этап обучения наступает тогда, когда пользователя уже не удовлетворяет «какая-нибудь» программа решения задачи. Возникает желание или необходимость написать в некотором смысле оптимальную программу (по быстродействию, с минимальными затратами памяти и т. п.). Некоторые приемы оптимизации в программировании изложены в 3.4.
Наконец, появляется достаточный опыт, который позволяет применять широкие возможности фортрана. Некоторые расширения минимального фортрана, а именно на уровне фортрана 77, излагаются в 3.5.
Важным моментом обучения программированию на всех этапах является стремление написать простую по стилю программу. И хотя понятие простоты, как и красоты, определить довольно трудно, простая программа отличается тем, что ее работу можно понять в отсутствие автора. Такому стилю программирования отвечает концепция структурного программирования. Этот стиль не связан с конкретным языком. В более поздних, чем фортран, языках (например, паскале) заложены эти концепции. На фортране есть возможность писать плохие по стилю программы. Поэтому с начального этапа обучения следует избегать «дурных привычек» в программировании.
• 3.2. Основы программирования. на фортране
Символы. При записи программ на фортране используются следующие символы:
Прописные буквы латинского алфавита от А до Z;
Цифры от 0 до 9;
Специальные символы;
—пробел
= —знак равенства
Нплюс
минус
* —звездочка
/ —косая черта
) —правая скобка
( —левая скобка
, — запятая
. —десятичная точка
’ —апостроф
” —кавычки
$ —денежный символ
: —двоеточие.
Прописные буквы русского алфавита и другие символы могут встречаться в фортране только как часть текстовой константы или в комментариях, о которых сказано ниже.
Из символов языка образуются ключевые слова (например, IF (если), DO (делать), GO ТО (идти к) и т. п.), имеющие строго определенный смысл, и слова пользователя—идентификаторы. Идентификаторы—это последовательность (не более шести символов) букв и цифр, начинающаяся с буквы.
Примеры. ,
Допустимые идентификаторы
А15, BETA, INDMAS, А1В2С
Недопустимые идентификаторы
С*ВЗ (содержит *)
5ALPHA (начинается с цифры)
Поскольку слова пользователя придется набирать на клавиатуре, целесообразно их выбирать по возможности короче.
Константы и переменные. Константы представляют собой неизменяемую величину в процессе вычислений. Рассмотрим следующие типы констант: целые, вещественные, вещественные с двойной точностью, комплексные, логические, текстовые.
Целая константа имеет следующий вид:
SN1N2...
где N1N2—последовательность десятичных цифр, a S — знак числа. Если константа не имеет знака, она считается положительной. Допустимая область значений для целых констант (в ЭВМ с 16-битовым словом) — от—32768 до +32767.
Примеры.
Правильная запись целых констант
О
-1514
+ 31539
275
037
Неправильная запись целых констант
50327(слишком велика)
14(присутствует десятичная точка)
Вещественная константа может быть записана двумя способами.
Вещественная константа без порядка имеет вид
SN1N2.N1N2
где N1N2—последовательность десятичных цифр, a S—знак числа.
Вещественная константа с порядком записывается в виде К1ЕК2
где К1—вещественная константа без порядка, К2—порядок (однозначная или двузначная целая константа).
Значение вещественной константы находится в пределах от 0,29-10”38 до 1,7-10+38 (в ЭВМ с 32 разрядами под запись числа, из которых 24 бит отводятся под мантиссу).
Примеры.
Правильная запись вещественных констант
3.14159
3734.
-0.2134
28.Е31
—5
Неправильная запись вещественных констант
$25. 5 (специальный символ)
41 .ЗЕ51(слишком велика)
Вещественные константы удвоенной точности задаются в виде вещественной константы с порядком. Вместо буквы Е используется буква D.
Пример.
+ 131.5D + 2
Этот тип константы занимает в памяти 64 разряда. Точность представления числа с использованием 32 разрядов — порядка 7 десятичных цифр после запятой (0,9345671), с использованием 64 разрядов — 17 десятичных цифр (0,93456718013542166). Диапазон изменения констант этого типа такой же, как у вещественных констант обычной длины.
Комплексная константа представляет собой пару вещественных^ констант, разделенных запятой и заключенных в скобки. Первая вещественная константа представляет действительную часть комплексного числа, а вторая константа—мнимую часть. Комплексная константа имеет следующий вид:
(RI, R2)
где RI, R2 — вещественные константы.
Примеры.
Константа (25.236,—1.3789) соответствует
25,536 — /*1,3789, где /—мнимая единица.
Константа (+17567.Е —4,0.) соответствует 1,7567.
3 Ю. П. Боглаев65
Логическая константа может принимать только два значения:
.TRUE. —«истина»
.FALSE. — «ложь»
Ограничивающие точки являются обязательной частью каждой логической константы. Значения логических величин .TRUE, и .FALSE. представляются знаковым разрядом ячейки. Нуль в этом разряде соответствует .TRUE., а единица соответствует .FALSE.. Остальные разряды ячейки нулевые.
Текстовая константа—это последовательность символов, которой предшествуют указатель их числа и буква Н, так называемая холлеритова. ’константа:
NHClC2...dN
Примеры.
17НПРОГРАММА ПЕТРОВА
5HSTAR:
Максимальное число символов в константе — 255. Текстовые константы удобно применять для сопровождения ввода и вывода чисел, таблиц чисел, поясняющей текстовой информации.
Текстовая константа может быть определена без указателя длины. Такая константа имеет вид
'C1C2...CN'
(последовательность символов заключается в апострофы).
Примеры.
ПРОГРАММА ПЕТРОВА'
STAR:'
Переменная представляет собой изменяемую величину в процессе вычислений. Переменная обозначается идентификатором.
Пример.
ХО, XI, EPS1.
Переменные разделяются по типу, так же как и константы, на целые, вещественные и т. д. Тип переменной может быть задан неявно. Если идентификатор начинается с букв
I, J, К, L, М, N,
то переменная целого типа, с остальных букв — вещественного:
IRI, KAMA, N — целый тип,
RI, АМА, AN —вещественный тип.
Кроме того, тип переменной может быть задан явно операторами описания типа, которые приводятся ниже. Тип переменной нужно установить до начала употребления переменной в программе, так как транслятор в соответствии с типом распределяет память ЭВМ. Например, для переменной целого типа отводится одно \
слово—16 разрядов, для вещественного типа — 32 разряда, для комплексного—четыре слова—64 разряда.
Неявный способ задания типа переменной называется иногда соглашением по умолчанию. Мы не будем в практике программирования использовать неявный способ, хотя фортран это и позволяет и его можно встретить в текстах программ.
Явное описание типа переменных заставляет провести контроль употребляемых переменных, проследить за распределением памяти, исключить двойное употребление переменных.
Явное описание осуществляется с помощью невыполняемых операторов: указателей типа переменных.
Программа на фортране состоит из последовательности операторов, которые делятся на выполняемые и невыполняемые.
Первыми невыполняемыми операторами, с которых следует начинать писать программу, являются указатели типа данных, встречающихся в вычислениях. Указатели типа следующие:
INTEGER—целый тип,
REAL—вещественный тип,
DOUBLE PRECISION—вещественный с двойной точностью,
COMPLEX—комплексный тип,
LOGICAL—логический тип.
Операторы описания типа отменяют соглашения по умолчанию, например
INTEGER А, В
REAL U, К
COMPLEX G,D,I
LOGICAL Q
Операторы описания типа должны предшествовать любому первому употреблению в программе переменных, которые они определяют.
Массивы. Массив—это последовательность переменных одного типа, обозначаемая идентификатором с индексами, заключенными в круглые скобки. Например, вектор и с вещественными компонентами uls и2, ..., ип представляется одномерным массивом0
U(I), l^KN.
Матрица Л с компонентами—целыми числами Aia. X^i^N, X^j^M, представляется двумерным массивом
KA(I,J), l^I^N, l^J^M.
Значения индексов больше либо равны 1. Массив размещается в последовательно расположенных ячейках памяти. Размерность массива не более 3.
Массив, размерность которого больше 1, располагается так, что левый индекс меняется быстрее правого. Для матриц это соответствует тому, что матрица А хранится в памяти по столбцам 3*
A(l,l)A(l,2)A(l,3)
A(2,l)A(2,2)A(2,3)
A (3,1)A (3,2)A (3,3)
а именно: A(l,l), A(2,1), A(3,1), A(l,2), A(2,2), A(3,2), A(l,3), A(2,3), A(3,3). Для обращения к конкретному элементу массива должны быть указаны или вычислены значения его индексов, например U(3)—третий элемент массива U, A(2,J)—элемент второй строки J-го столбца матрицы А (массива А). Значение J предварительно должно быть вычислено. Размер массива и тип его элементов в программе должны быть описаны до первого употребления его элементов с помощью операторов описания типа, где указываются максимальные значения индексов. Например,
REAL U(20)
означает, что в программе будет использован одномерный массив вещественных чисел и^ l^z'^20, или
INTEGER А(5,7)
означает, что в программе будет использован двумерный массив целых чисел Ам. l^z’^5, 1^у^7.
Размер массива может быть также определен с помощью невыполняемого оператора DIMENSION по аналогии с вышеизложенным, например
DIMENSION U(20), А(5,7)
Но чтобы описать массив А (5,7) как массив целых чисел, необходимо применить еще оператор описания типа
INTEGER А (5,7)
в противном случае соглашение по умолчанию устанавливает, что массив А состоит из вещественных чисел. Таким образом, если придерживаться строго описания типа всех переменных программ, то оператор DIMENSION оказывается лишним. В стандарте фортрана 8х этот оператор переведен в модуль архаизмов.
Арифметические выражения и библиотечные функции. Арифметическое выражение—это запись математической формулы с использованием констант, переменных, массивов, функций, соединенных знаками арифметических операций и скобками по правилам фортрана.
Знаки арифметических операций:
+сложение
— вычитание
* умножение
/ деление
** возведение в степень.
Следует соблюдать следующие правила:
Нельзя опускать знак умножения:
АВ не есть А*В
Нельзя подряд писать два знака операций:
нельзя писать А* —В, нужно А*( —В) или — А*В
Порядок вычислений—по старшинству операций, при равном старшинстве — по порядку слева направо.
Порядок старшинства:
Вычисление функций.
Возведение в степень.
Умножение и деление.
Сложение и вычитание.
Выражения в скобках вычисляются в первую очередь и в порядке записи слева направо; в случае вложения скобок вычисления начинаются с внутренних. В вычислении выражений целого типа при делении дробная часть отбрасывается, а не округляется. Например, значение выражения 1/3+ 2/3 равно 0, а не 1. В арифметических выражениях могут участвовать величины четырех типов: целые, вещественные, с двойной точностью, комплексные. Здесь они записаны в порядке возрастания ранга. Тип выражения такой, как у элемента с наибольшим рангом. Например, тип результата
+ 2. вещественный
Е —2/.3D—1 с двойной точностью
Приведем примеры арифметических выражений.
МатематическаязаписьЗапись на фортране
^Ц(А+В)/С
С
x^sin^2X**2+SIN(Y**2)
Для вычисления индексов массивов допускаются следующие арифметические выражения:
целая константа * целая переменная + целая константа Например,
V(I—1)+V (2*1 + 3)
В программе можно обратиться к библиотечным функциям фортрана, указав имя и аргументы в скобках после имени (как в приведенном выше примере—SIN(Y**2)). Аргументы при этом могут быть арифметическими выражениями. Пользователю не нужно писать программу вычисления таких функций, готовую (библиотечную) программу включит в нужном месте программы пользователя операционная система.
Приведем некоторые библиотечные функции (полный список см. в гл. 12).
Математическая записьЗапись на фортране
ИABS(X)
sin хSIN(X)
ехЕХР(Х)
Арифметический оператор присваивания. Как уже отмечалось, программа представляет собой последовательный набор операторов. Операторы делятся на невыполняемые и выполняемые. С некоторыми невыполняемыми операторами мы уже познакомились (операторы описания типа переменных). Содержательная программа должна иметь по крайней мере один выполняемый оператор.
К выполняемым операторам относится арифметический оператор присваивания. Вид оператора присваивания
W = A
где W—идентификатор (имя) переменной, А—арифметическое выражение. 3
Оператор присваивания не эквивалентен математическому знаку равенства. Фактически этот, оператор производит два действия:
вычисление арифметического выражения А;
присваивание значения арифметического выражения переменной.
Например, оператор
Х = Х+1
означает, что вычисляется выражение Х + 1 и прежнее значение переменной X заменяется (затирается) на новое значение Х+1.
С помощью оператора присваивания можно преобразовывать целые величины в вещественные и наоборот. Так, если справа имеем выражение, состоящее из целых констант и переменных, а слева—наименование вещественной переменной, то вычисления производятся по правилам действий с целыми числами, а результат преобразуется в вещественную форму и присваивается переменной левой части.
Примеры арифметических операторов присваивания:
А (I) = S**2 + Q + ALGOL (X)
F = F + В (I, К)*С (К, J)
Примеры неправильной записи:
Х = А = 3 (двойное присваивание не допускается)
SIN(X)=1 (в левой части функция—часть арифметического выражения, а должна стоять переменная)
Структура программы. Фортран-программа состоит из операторов. Каждый оператор печатается (набирается на клавиатуре дисплея) в строках длиной 80 символов. В строке не должно быть более одного оператора. Позиции символов в строке нумеруются слева направо начиная с 1:
123456787280
Строки делятся на четыре поля:
7070позиции: 1 — 5, 6, 7 — 72, 73—80
70
70
Операторы фортрана печатаются в третьем поле в позициях 7—72, внутри этого поля расположение оператора произвольное.
Любой оператрр фортрана может быть помечен меткой—десятичным целым числом. Метки помещаются в первом поле в позициях 1—5.
Если оператор не помещается в позициях 7—72 или для удобства желателен перенос оператора на следующую строку, то в 6-й позиции строки продолжения следует напечатать любой символ, кроме пробела и нуля. Первое поле строк продолжения должно быть пустым.
Четвертое поле (позиции 73—80) под запись операторов не используется. В эти позиции можно помещать, например, номера строк.
Если в первой позиции любой строки программы напечатана, буква С
С КОММЕНТАРИЙ
то такая строка транслятором полностью игнорируется, она рассматривается как комментарий. Текст комментария помещается в позициях
2—80. Например,
САВТОР ПРОГРАММЫ 2 ПЕТРОВ В. Н.
СВЕРСИЯ —5, МАЙ 1990, ФОРТРАН 77
Правила заполнения строк, приведенные выше, распространяются только на операторы фортрана, но неприменимы к размещению данных. Ниже будет показано, что для данных используются все 80 позиций.
Последним оператором любой программы должен быть оператор
END
Оператор
STOP
прекращает выполнение программы; если оператор STOP отсутствует, то выполнение пограммы заканчивается на операторе END.
В качестве примера структуры фортран-программы приведем следующую программу:
С ПРИМЕР СТРУКТУРЫ ФОРТРАН-ПРОГРАММЫ
СВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ ФУНКЦИИ У(Х)
СВ ТОЧКЕ X
REAL X, У
х=о.з
10 У = (SIN(X) + COS(X) — 1 .Е - 4*Х**2) +
*(ALOG(X)/(X-H))
END
Операторы ввода—вывода. Вводить числа можно с помощью оператора присваивания, например
К=1
Х = 3.1415
В тех случаях, когда этот способ неудобен (программа используется многократно с различными исходными данными), применяются операторы ввода. Вывести результаты вычислений можно только с помощью оператора вывода.
Запись операторов ввода—вывода такова:
ввод READ (U, F) А, В, ..., Z
вывод WRITE (U, F) А, В, ..., Z
F FORMAT (...)
Здесь U—номер устройства ввода—вывода, например дисплей, АЦПУ; А, В, J.., Z—список переменных, для которых нужно ввести (вывести) числовые значения; F—метка оператора
В скобках оператора FORMAT указывается спецификация (характеристика) позиций для каждой переменной списка А, В, ..., Z. Это необходимо делать, поскольку вводимые или выводимые числа могут быть целыми, вещественными, вещественными с двойной точностью; вещественные числа могут представляться в форме с десятичной точкой или с порядком.
Если вводится (выводится) целое число, то в операторе FORMAT указывается спецификация I
1т
где т—число позиций, отведенное этому числу.
Если вводится (выводится) вещественное число с десятичной точкой, то в операторе FORMAT указывается спецификация F
¥т.п
где т—общее число позиций, отведенное этому числу, п—число позиций под дробную часть. Заметим, что одна позиция из общего числа отводится под знак числа, одна—под точку, одна — под нуль, поэтому следует указывать т>п-^-3.
Если вводится (выводится) вещественное число с порядком, то в операторе FORMAT указывается спецификация Е
Ет.п
где т—общее число позиций, отведенное этому числу, п—число позиций под дробную часть. Заметим, что одна позиция из общего числа отводится под знак числа, одна—под точку, одна—под нуль, одна — под букву Е, одна—под знак порядка, две — под порядок, поэтому следует указывать m>n-Vl.
Для организации между числами р пробелов между спецификациями чисел указывается
Р^
Рассмотрим примеры ввода. Ввод с терминала (номер устройства— 5) для переменных К, А, В(3) значений К = 37, А = 0,375, В(3) = 25 10~6 осуществляет следующий оператор ввода:
READ (5, 10) К, A, B(3)
10 FORMAT (12, F6.3, E9.2)
Заметим, что набор на клавиатуре терминала чисел 37; 0, 375; 25 •10"6 или другой тройки чисел производится на этапе запуска задачи на счет. Когда по ходу выполнения программы встретится этот оператор ввода, выполнение программы прервется и задача будет стоять в ожидании ввода. Тогда на клавиатуре набираются число по заказанному формату:
позиции:12345678901234567
числа:37 0.375 0.25Е —06
спецификации: 12 F6.3Е9.2
При вводе встречающиеся внутри общего числа позиций пробелы считаются нулями, поэтому вводимые числа следует прижимать к правому краю своих позиций. Например, для другой тройки чисел К = 7, А = 7,5; —1,1 • 102 на клавиатуре следует набрать
позиции:12345678901234567
числа:7 +7.5 — 1.1Е2
спецификации: 12 F6.3 Е9.2
Если набрать по-иному, например позиции:12345678901234567
числа:77.5— 1.1Е2
спецификации: 12 F6.3Е9.2
то введутся числа К = 70; А = 7,5; В(3)= —1,1 * Ю20
Прежде чем перейти к примерам вывода, следует отметить, что при выводе на устройства, требующие управления кареткой (дисплей, АЦПУ), первый символ выводимой информации не печатается, а используется для управления расположением строк по вертикали. Если этого не учитывать, то может произойти потеря информации. Поэтому при выводе в соответствующих операторах FORMAT всюду проставлены символы 2Х, что означает два пробела, из которых один пробел интерпретируется как управляющий—переход на новую строку перед печатью. Управляющий символ задается в операторе формата символьной константой. Управляющие символы:
—переход на новую строку перед печатью, 0 — пропуск двух строк перед печатью, 1—переход на новую страницу,
Нтекущая строка печатается на предыдущей.
Оператор вывода может не содержать списка выводимых чисел, а только ссылку на оператор FORMAT. Таким образом выводятся текстовые сообщения на терминал или АЦПУ. Например, вывод
WRITE (5,1)
1 FORMAT (W,5X, ТАБЛИЦА ЗНАЧЕНИЙ')
приведет к пропуску двух строк перед печатью на терминале; начиная с 6-й позиции будет напечатано: ТАБЛИЦА ЗНАЧЕНИЙ
Рассмотрим пример вывода значений переменных К, А, В(3) на АЦПУ (номер устройства—6). Оператор вывода может быть следующим:
WRITE (6, 3) К, А, В(3)
3 FORMAT (2Х, 14, 2Х, F6.2, 2Х, Е10.2)
Предположим, что значения этих переменных К =—372; А = = 3,7-10“2; В(3) = 2,5 • 10~5. Тогда на АЦПУ выведется строка: позиции:1234567890123456789012345
числа:-3720.040.25Е-04
спецификации:14F6.2Е10.2
В примере доказано, что при выводе значений переменных числа округляются так, чтобы они поместились в заказанный формат. Если число не может быть размещено в заданном формате, оно ;не выводится, а во всех его позициях печатается символ *. Если в примере значение К =—3721, то четырех позиций для вывода этого числа недостаточно, поэтому на АЦПУ в первых пяти позициях были бы следующие символы:
позиции:123456
числа:****
спецификации: 14
При вводе и выводе спецификации в операторе FORMAT можно повторять, указывая число повторений перед этой спецификацией. Например, вывод значений трех переменных А, В, С можно осуществить с повторением:
WRITE (5/ 12) А, В, С
12 FORMAT (2Х, ЗЕ11.4)
На терминал будут выведены три числа в 33 позиции одной строки.
Если при вводе (выводе) все спецификации оператора FORMAT уже использованы, но не всем переменным списка присвоено значение (не все выведены), то использование спецификаций в нем повторяется начиная с первой. Например, вывод значений трех переменных А, В, С
WRITE (5, 10) А, В, С
10 FORMAT (2Х, Е11.4)
осуществится на терминал в строки по 11 позиций в каждой.
Вывод текстовой информации совместно с числовой более предпочтителен, так как поясняет смысл выведенных значений. Например, вывод значений, А, В, С таким образом, чтобы перед числами стояли символы А = , В = , С = , осуществляется следующими операторами:
WRITE (5, 1) А, В, С
1 FORMAT (2Х, 'А = ', Е11.4, В = ', Е11.4, 'С = ', Е11.4)
Ввод чисел с текстовой информацией часто называют вводом с приглашением, который состоит в том, чтобы перед вводом 74\
на терминале выводились символы тех переменных, для которых следует ввести значения, а затем на клавиатуре набиралось бы вводимое число. Это можно организовать при помощи четырех операторов, например
WRITE (5,1)
FORMAT ( А= )
READ (5,10) А
FORMAT (F6.3)
Если при вводе (выводе) необходимо перейти на следующую строку, то ставится знак/. Например, вывод в три строки предыдущего примера осуществляется операторами
WRITE (5,1) А, В, С
1 FORMAT (2Х, 'А = ', Е11.4/ В = \ Е11.4/'С=', Е11.4)
На терминал будут выведены три строки:
А = ...
В = ...
С = ...
Ввод (вывод) массива осуществляется разными способами. В простейшем варианте указывается имя массива (без индекса) в вводном (выводном) списке. Например, пусть необходимо ввести двумерный массив вещественных чисел
REAL В(2,3)
Тогда операторы ввода могут быть, например, такими:
READ (5,1)В
1 FORMAT (2F4.1)
Пусть необходимо ввести матрицу
При вводе с терминала согласно приведенным выше операторам (и вспоминая, что в памяти ЭВМ матрица размещается по столбцам) необходимо напечатать числа следующим образом: ° позиции:1 234 5 678
1-я строка:1.02.0
2-я строка:—3.0 4.0
3-я строка:5.0 —6.0
Простейшая форма ввода (вывода) массива крайне неудобна, когда размерность массива может быть переменной. В этом случае применяется ввод (вывод) с помощью неявного цикла (см. п. 3.2.8).
Место оператора FORMAT в структуре программы строго не определено, он может находиться в любом месте, а не обязательно в следующей строке за оператором ввода (вывода). Заметим
также, что один оператор FORMAT могут использовать несколько операторов ввода (вывода), например
READ (5, 1) А
FORMAT (2Х, Е13.6) WRITE (6, 1) В
Операторы передачи управления, циклы. Операторы выполняются в программе последовательно, однако часто необходимо в алгоритме изменять естественный процесс выполнения программы. Этой цели служат операторы передачи управления. Таких операторов несколько.
Оператор безусловной передачи управления
GO ТО N J
Здесь N — метка оператора, который должен выполняться следующим.
Пример. 1 -
Х = 0.5
GO ТО 3
Y=i.
3Х=0.5*Х
В этом фрагменте показан переход выполнения программы на оператор с меткой 3.
Арифметический оператор условной передачи управления
IF (W) Nl, N^ N3
Здесь W — арифметическое выражение, Nl, N2, N3 — метки операторов (могут совпадать). Этот оператор изменяет последовательный ход выполнения программы, но управление может быть передано в три места программы в зависимости от знака арифметического выражения.
Если W<0,топередачауправлениянаоператорсметкойN1.
Если W = 0,топередачауправлениянаоператорсметкойN2.
Если W>0,топередачауправлениянаоператорсметкойN3.
Арифметический оператор IF является устаревшей конструкцией фортрана, более употребителен логический оператор IF, описываемый ниже.
Кроме того, применение трех различных меток в этом операторе нарушает принятое в гл. 2 соглашение об использовании только логической схемы с двойным ветвлением. Однако противоречие снимается, если всегда в арифметическом операторе IF употреблять две совпадающие метки, что мы и будем делать.
Пример.
D = B**2 —4.*А*С
IF (D) 2, 1, 1
76
22ALPHA = 3.ALPHA = 3.
2
2
ALPHA = 3.
ALPHA = 3.
1 ALPHA = 26.
С помощью операторов передачи управления GO ТО и IF или IF можно организовать в программе цикл.
Цикл—это совокупность операторов, которые выполняются в программе несколько раз.
Пример. Найти N! = 1*2*...*N, N задано.
Обозначим NF результат
NF=1 1=1
1NF = NF*I
2IF (I-N)3, 5, 5
31=1+1
4GO TO 1
5
Операторы 1—4 — цикл. Выход из цикла дает оператор с меткой 2 при I = N.
Цикл можно организовать с помощью специального оператора цикла.
Оператор цикла
DO N 1 = М1, М2, М3
Здесь N—метка последнего выполняемого оператора цикла, I — целая переменная, Ml, М2, М3—целые константы и выражения
Первый оператор цикла—DO, последний помечен меткой N. Цикл повторяется при различных I. Начальное значение I равно Ml, конечное — М2, шаг изменения I равен М3. Если М3 = 1, то можно записать оператор цикла короче:
DO N I = M1, М2
Значение шага М3 не должно быть равным 0, но может быть отрицательным.
Пример. Предыдущая задача вычисления N! с помощью оператора цикла решается так:
NF=1
DO 5 1=1, N
5 NF = NF*I
Последний оператор цикла не должен быть оператором передачи управления, так как сам оператор DO управляет передачей управления на начало цикла. Иногда это правило не дает возможностей выйти из цикла. Тогда последним оператором цикла ставят оператор продолжения
N CONTINUE
где N — метка, цикл записывают так:
DO N I = Ml,М2,М3
N CONTINUE
В области действия одного оператора DO может содержаться другой оператор DO со своей областью действия—вложенные циклы, например
DO N 1 = М1,М2,МЗ
DO К J=N1,N2,N3
К CONTINUE
N CONTINUE
Проиллюстрируем действие оператора DO на двух примерах.
Вычисление- конечной суммы числовой последовательности. Пусть необходимо найти сумму S:
зо
5= £ ехр(—и).
и= 1
REAL 8,Х INTEGER NN=30REAL 8,Х INTEGER NN=30Программа решения этой задачи может иметь вид
REAL 8,Х INTEGER N
N=30
REAL 8,Х INTEGER N
N=30
С ПЕРЕД ЦИКЛОМ СУММИРОВАНИЯ ПЕРЕМЕННОЙ, С В КОТОРОЙ БУДЕТ ПРОИЗВОДИТЬСЯ НАКОПЛЕНИЕ С СУММЫ, ПРИСВАИВАЕТСЯ НУЛЕВОЕ ЗНАЧЕНИЕ
8=0.
DO 1 1 = 1,N
X=FLOAT(I)
1S=S+EXP(-X)
СВЫВОД НА ТЕРМИНАЛЗНАЧЕНИЯ СУММЫ
WRITE (5,2) 8
2FORMAT (2X,'S=',E13.6)
END
Вычисление произведения W двух матриц U и V. Формула
произведения матриц
wM = I ЧкУк,г 1^1, 1 <7 <«•..к=1
вычислениявычисленияПусть известны значения т=/=п=3. Программа элементов матрицы w может иметь вид
вычисления
вычисления
REAL U(3,3),Y(3,3),W(3,3)
СВВОД МАТРИЦ U,Y
READ (5,1) U,Y
78781FORMAT (3F4.1)
78
78
С ВЫЧИСЛЕНИЕ W(I,J)
DO 10 1 = 1,3
DO 10 J=l,3
W(I,J) = 0.
DO 10 K=l,3
10W(I,J) = W(I,J)+U(I,K)*Y(K,J)
СВЫВОД НА ТЕРМИНАЛ МАТРИЦЫW
WRITE (5,100) W
100FORMAT (2X,E13.6)
END
Для ввода—вывода элементов массива применяется конструкция фортрана, которая называется неявным циклом. Эта конструкция аналогична действию оператора цикла DO.
Неявный цикл записывается в форме
(А(1), 1 = М1, М2, М3)
для одномерного массива А,
((A(I,J), 1 = Ml,М2,М3), J=N1,N2,N3)
для двумерного массива А, где Ml, М2, М3, Nl, N2, N3 имеют тот же смысл, что и в определении цикла.
Ввод (вывод) с помощью неявного цикла программируется, например, следующим образом:
READ (5,1) (W(I), 1 = 1,3)
FORMAT (F4.1)
неявный цикл удобен для ввода элементов массива с переменными размерами. Например,
REAL А (10,5)
С ВВОД ЧИСЛА СТРОК И СТОЛБЦОВ МАТРИЦЫ A(I,J) READ (5,1) M,N
FORMAT (212)
СВВОД ЭЛЕМЕНТОВМАТРИЦЫ A(I,J)
READ (5,2) ((A(I,J), 1= 1,M),J = 1,N)
FORMAT (F4.1)
Логические выражения, условный логический оператор. Логические выражения состоят из следующих компонентов: выражений отношения, логических операций, логических переменных и констант.
Выражения отношения имеют вид
W1DW2
где Wl, W2—арифметические выражения, □—знак операции отношения—один из следующих:
.LT. меньше <
.LE. меньше или равно ^
.EQ. равно =
.NE. не равно /
.GT. больше >
.GE. больше или равно >
Примеры.
3>4. Запись на фортране 3.GT.4.
(A + B)<(G+D).. Запись на фортране (A+B).LT.(C + D).
Значением выражения отношения может быть либо «истина» — .TRUE., либо «ложь» .FALSE..
примере 1—.FALSE., в примере 2—зависит от входящих параметров. J
Логическая переменная—величина, принимающая в процессе вычислений дв^ значения: .TRUE, либо FALSE.
Логические ‘выражения имеют вид
Z1AZ2AZ3...
Здесь Zl, Z2,. Z3, ...—логические элементы: переменные, константы, выражения отношения, А—знак логической операции.
Логические операции
Знак операции Д
Пример
Значение операции
.AND.
A.AND.B
Выражение истинно, когда А и В истинны
.OR.
A.OR.B
Выражение истинно, когда истинно либо А, либо В, либо они оба
.NOT.
,NOT.A
Выражение истинно, когда ложно А
Примеры логических выражений:
.A.AND.B.OR.C
.X.LT.Y.AND.Y.LT.Z*
Логическое выражение в примере 2 истинно, если переменная Y принадлежит интервалу X<Y<Z.
Логическое выражение
A.GT. 1.0. AND..NOT.C.EQ.D.OR.B.LT.C
иллюстрирует две особенности. Во-первых, две логические операции не могут стоять в выражении рядом, кроме случая, когда вторая операция .NOT.. Во-вторых, в логическом выражении имеется неоднозначность. Приведенное выражение может означать
A.GT. 1.0. AND..NOT.(C.EQ.D.OR.B.LT.C) а может
(A.GT. 1.0. AND..NOT.C.EQ.D).OR.B.LT.C
80\
к.
Такую неоднозначность можно устранить применяя скобки, так же как и в арифметических выражениях. Когда неоднозначность не устраняется скобками, выражения отношения и логические операции выполняются в порядке старшинства. В порядке убывания старшинства (вместе с арифметическими операциями) эта последовательность имеет вид возведение в степень умножение, деление сложение, вычитание выражения отношения .NOT.
.AND.
.OR.
С учетом этой иерархии приведенное выше логическое выражение означает второй вариант расстановки скобок Логический оператор присваивания имеет вид
Q=R,
где Q—логическая переменная, R—логическое выражение. Условный логический оператор IF. Вид этого оператора
IF (R) S
Здесь R—логическое выражение, S—выполняемый оператор, кроме двух операторов: DO и IF. Если R истинно, то выполняется оператор S, если R ложно, то выполняется следующий за IF оператор.
Примеры.■'
Вычисление функции в точке х
— х+2,1,х< — 2,
Y=F(Y)=<1+2х3, -2<х<2,
х+3,5,х>2
с помощью логического IF запрограммировано в следующем фрагменте:
IF (X.LT.( —2)) GO ТО 2°
IF (X.LE.2) GO TO 1
Y = X + 3.5
GO TO 3
Y=1. + 2.*X**3
GO TO 3
Y = (-X) + 2.1
CONTINUE
Выход на печать при достижении заданной точности и засылка XI в ХО, если точность не достигнута. Текущая точность Е1, заданная Е.
IF (El.LE.E) GO TO 10
XO = X1
10WRITE (6,11)X1
11FORMAT (E13.6)
Определение максимального элемента матрицы W^I, J\ 1^/, /^Ю:
AMAX = W(1,1)
DO 5 1=1,10
DO 5 J=l,10
IF (W(I,J).GT.AMAX) AMAX = W(I,J)
5 CONTINUE
Функция-формула, функция-подпрограмма, подпрограмма. Если в программе необходимо несколько раз вычислять значение функции, которой нет среди библиотечных, и эта функция может быть определена одним арифметическим выражением, то можно использовать конструкцию фортрана, которая называется функция- формула. .
Функция-формула определяется арифметическим выражением в начале программы до первого выполняемого оператора
F(P1,P2,...,PK) = W
где F — индентификатор (имя функции), Р1,...,РК— идентификаторы формальных аргументов, W—арифметическое выражение—последовательность операций над аргументами.
После определения функцией-формулой пользуются так же, как и библиотечной функцией.
Аргументы в обращении к функции называются фактическими параметрами. Количество, последовательность и тип формальных и фактических параметров должны совпадать. Фактические параметры могут быть константами, переменными, функциями, арифметическими выражениями.
Тип данных функции-формулы определяется явным образом в операторе описания типа (либо неявным образом по первой букве идентификаторов).
Примеры.
Определения: ANORMA(X,Y,Z) = SQRT(X**2 + Y**2+Z**2)
F(X) = -1. + X**2+X+0.01 *SIN(X)
Обращения: Y = ANORMA(2.,COS(B),0.3) +1.
Z = F(X0)
При появлении в программе имени функции-формулы выполняется подстановка фактических параметров на место соответствующих им формальных в определении функции-формулы. После этого вычисляется арифметическое выражение, определяющее функцию, а затем результат используется для вычисления выражения, содержащего обращение к функции.
Перед обращением к функции-формуле всем фактическим параметрам должны быть уже присвоены значения.
Обращение к функции-формуле может быть только в той программной единице (это понятие вводится в этом разделе ниже), где она определена.
Функция-подпрограмма применяется тогда, когда вычисление значения функции не сводится к одному арифметическому выражению. Определяется функция-подпрограмма следующим образом:
[ТИП] FUNCTION F(P1,P2,...,PK)
RETURN
END
где ТИП — указатель типа данных результатов (значения функции); знаки [...] означают, что этот указатель может отсутствовать, F—имя функции, Pl,..., РК—идентификаторы формальных параметров, RETURN — оператор возврата в вызывающую программу, END—оператор конца самостоятельной программной единицы.
Пример.
Функция-подпрограмма, выбирающая меньшее из двух чисел:
REAL FUNCTION SMALL(A,B)
REAL А,В
IF (A.LT.B) GO TO 1
SMALL = В
GO TO 2
SMALL = A
RETURN
END
Обращение к этой функции в вызывающей программе может быть, например, таким:
R = 2. + SMALL(X,Y)
В этот момент вызывающая программа передает управление функции-подпрограмме SMALL, происходит замена формальных параметров А, В на фактические X, У (им уже должны быть присвоены значения). После этого выполняются операторы функции-подпрограммы. Результат вычислений присваивается имени функции, в рассмотренном примере: SMALL. Затем управление возвращается в вызывающую программную единицу и происходит вычисление R.
Программа на фортране может состоять из главной программы и множества FUNCTION-подпрограмм, каждая из которых заключена между заголовком FUNCTION и оператором END. Это самостоятельные программные единицы. В отличие от функции— формулы FUNCTION не определяется в другой программной единице, а вызывается из нее.
При трансляции функция-подпрограмма рассматривается отдельной программой, т. е. ее можно транслировать без главной программы, вызывающих ее и вызываемых ею программ. Это дает следующие возможности в программировании. Большую программу, разбивая на отдельные небольшие подпрограммы, можно отлаживать на ЭВМ отдельно, а затем собирать в единую программу.
Используемые в функции-подпрограмме переменные являются локальными, если они не объявлены в операторе COMMON (см. ниже). Поэтому переменная А в одной подпрограмме совершенно отлична от переменной А в другой программе (занимают различные ячейки памяти). Локальным переменным можно присвоить значения только в той ..программной единице, где они определены, если они не передаются как фактические параметры в другую программную единицу.
Как и в функции-формуле, должно соблюдаться соответствие фактических и формальных параметров по количеству, последовательности, типу.
В качестве примера рассмотрим программу вычисления полинома
2х4 —Зх2Н-х — 1
в точке х=0,3 по схеме Горнера. Схему Горнера реализуем в виде функции-подпрограммы. В главной программе осуществим ввод, вывод числовой информации и вызов функции-подпрограммы. Напомним, что вычисление значения Рп^
P^ = aoxn4-a1xn"1-V-...-Van_1x-^an
в точке х по схеме Горнера выполняется по формуле
Р„(х) = (...(((ао^ + а1)х+«2)х+«з)*+--- + ^^
С ГЛАВНАЯ ПРОГРАММА REAL X,A(5),Y READ (5,1) Х,А
1 FORMAT (6F4.1)
Y=P(5,A,X)
WRITE (5,2) Y
2FORMAT (2X,'Y = ',E13.6)
END
СФУНКЦИЯ-ПОДПРОГРАММА
FUNCTION P(M,A,X) REAL A(M),X INTEGER M P = A(1) DO 1 J = 2,M 1 P=P*X+A(J) RETURN END
В соответствии с числовыми данными задачи следует, согласно заказанному формату, набрать на клавиатуре терминала числа.
Подпрограмма обладает более широкими возможностями, нежели функция-подпрограмма. В качестве результата подпрограмма может передавать в вызывающую программу либо несколько числовых значений, либо ни одного.
Подпрограмма оформляется следующим образом:
SUBROUTINE S(P1,P2,...,PK)
RETURN
END
Первый оператор подпрограммы — SUBROUTINE, S — имя подпрограммы, Pl, Р2, ..., РК—формальные параметры. Формальные параметры, являющиеся идентификаторами массивов, описываются внутри подпрограммы. Последний оператор END. Возвращение к вызывающей программе осуществляется через оператор RETURN.
Обращение к подпрограмме (вызов) производится в вызывающей программе посредством оператора CALL в форме
CALL S(Q1,...,QK)
Здесь S—имя вызываемой подпрограммы, QI, Q2,...,QK—фактические параметры.
Пример. Подпрограмма транспонирования квадратной матрицы
SUBROUTINE TRANSP(N,A,B) REAL A(N,N),B(N,N)
DO 10 1=1,N
DO 10 J=1,N
10B(I,J) = A(J,I)
RETURN END
Транспонированная матрица располагается в массиве В. В вызывающей программе необходимо иметь следующие операторы:
REAL Q(8,8),R(8,8)
CALL TRANSP(8,Q,R)
После работы подпрограммы TRANSP в двумерном массиве R размером 8x8 будет расположена транспонированная матрица Q. Элементам массива Q должны быть присвоены числовые значения до вызова TRANSP.
Список формальных параметров подпрограммы может быть пуст. Например,
SUBROUTINE ER
WRITE (5,1)
FORMAT (ERROR)
RETURN END
В таком случае при вызове подпрограммы указывается только имя
CALL ER
Имени подпрограммы в отличие от функции-подпрограммы не присваивается значение. Значения переменных передаются в подпрограмму через входные параметры (при замене формальных параметров на фактические) и возвращаются в вызывающую программу через, выходные параметры. Один и тот же параметр может быть и входным и выходным.
В приведенном выше примере
входные параметры: N,A
выходные параметры: В
Соответствие фактических и формальных параметров по количеству, порядку и типу—взаимно однозначное как в функции-формуле, так и в функции-подпрограмме. Заметим, что аргументы функций и подпрограмм не подвергаются неявным преобразованиям, поэтому несоответствие типа параметров является грубой ошибкой. Транслятор этот факт не отмечает в диагностике ошибок, поэтому на этапе вычислений, как цравило, происходит аварийный останов.
Функция-подпрограмма и подпрограмма называются процедурами фортрана. ‘
Поясним общую структуру произвольной программы. Программы могут иметь простую и модульную структуру. Программа простой структуры представляет собой последовательность невыполняемых и выполняемых операторов, из которых хотя бы один должен быть выполняемый, последний оператор END. Имеем
S1
S2
SN
Оператор SN есть END. Программа модульной структуры состоит из нескольких самостоятельных единиц (подпрограмм, функций-подпрограмм), одна из которых — главная программа. Главная программа может обращаться к подпрограммам, эти подпрограммы—к другим и т. д. Выполнение программы начинается первым выполняемым оператором главной программы и заканчивается в главной программе.
Следует отметить, что предпочтительнее писать программы модульной структуры. Накапливая подпрограммы, пользователь 86\
в дальнейшем, как из кирпичиков, строит здание программы в узкой, специальной области, все меньше и меньше затрачивая усилий на программирование. Таким образом, мы приходим к организации личной библиотеки программ пользователя, а также к использованию уже готовых библиотек и пакетов программ.
Описание библиотеки фортран-программ по основным разделам вычислительной математики приведено в гл. 12.
Невыполняемые операторы. Как уже отмечалось, программа состоит из последовательности невыполняемых и выполняемых операторов.
Выполняемые операторы приводят к определенным действиям, невыполняемые служат для описания величин, массивов, формата ввода и вывода, распределения памяти. Выполняемые операторы — это операторы присваивания, управления, ввода, вывода.
Невыполняемые операторы*.
Операторы описания типа (INTEGER, REAL, DOUBLE PRECISION, LOGICAL, COMPLEX)
EXTERNAL
DIMENSION
COMMON
EQUIVALENCE
Оператор начальных данных DATA
Оператор FORMAT
Оператор определения функции FUNCTION
Оператор определения подпрограммы SUBROUTINE
Порядок следования в программе невыполняемых операторов с 1) по 6), указанный выше, желателен при программировании. Операторы с 1) по 6) должны быть расположены до первого выполняемого оператора.
Некоторые из невыполняемых операторов уже были определены.
В этом пункте описываются четыре невыполняемых оператора: COMMON, EQUIVALENCE, EXTERNAL, DATA
Как уже отмечалось, переменные в самостоятельных программных единицах (главная программа, функция-подпрограмма, подпрограмма) имеют локальное определение.
Чтобы переменные различных программных единиц имели глобальное определение во всей программе, употребляется оператор COMMON (общий).
Иногда говорят, что через оператор COMMON передают значения переменных из одной программной единицы в другую. Один из способов передачи — через список входных и выходных параметров — рассмотрен в предыдущем пункте.
Оператор имеет следующую форму записи:
COMMON Р1,Р2,...,РК
Здесь Pl, Р2, ..., РК—наименование глобальных переменных. Этот оператор должен стоять в каждой подпрограмме и главной программе до первого выполняемого оператора. Размерность массивов можно указать в списке переменных.
Пример.
В вызывающей программе
COMMON A,B,C(10),Q(15,15)
END
В подпрограмме или функции-подпрограмме
COMMON A,B,C(10),Q(15,15)
END
Если размерность массива описана в операторе описания типа или DIMENSION, то в операторе COMMON этого делать не нужно.
Например, (^писание
REAL W(9),T(14)
COMMON W,T и описание ‘ .
COMMON W(9),T(14)
эквивалентны.
Программа может содержать любое количество операторов COMMON. Но в этом случае каждому блоку глобальных переменных, кроме, возможно, одного, следует присвоить имя—идентификатор— и заключить между двумя наклонными чертами.
Пример.
Оператор
COMMON/STAR1/A,B,C(10)/STAR
в одной программной единице и оператор
COMMON/STAR1 /T,R,Z( 10)/STAR2/D(5,5)
в другой определяют одни и те же переменные, так как транслятор отводит для них одни и те же ячейки памяти. Нужно следить только, чтобы тип, размерность и длина соответствующих переменных совпадали.
Один из возможных способов экономии памяти — это использование одного и того же места памяти для хранения разных величин, участвующих в выполнении данной программной единицы не одновременно. Этой цели служит оператор EQUIVALENCE.
Формат оператора:
EQUIVALENCE (список),..., (список)
В скобках (список) идентификаторы разделены запятыми. Например,
EQUIVALENCE (A,B,C),(L,M)
8888Элементы А, В, С будут запоминаться в одном месте памяти (32 разряда), элементы L, М также займут только одну ячейку (16 разрядов).
88
88
\
Чтобы установить эквивалентность массивов одинаковой размерности, нужно установить эквивалентность, например, их первых компонент:
REAL X(10),Y(10)
EQUIVALENCE <X(1),Y(1))
Если в функции-подпрограмме или подпрограмме в качестве фактического параметра используется идентификатор (имя) другой функции-подпрограммы или подпрограммы, то в вызывающей программе этот идентификатор должен быть описан с помощью оператора EXTERNAL (внешний). Вид оператора
EXTERNAL F1,F2,...,FN
где Fl, F2, ..., FN—наименование функций, подпрограмм, которые в данной программе могут передаваться в качестве фактических параметров другим функциям и подпрограммам.
Пример.
Функция-подпрограмма
FUNCTION R(X,Y,Z)
R = X*Y*Z(X)
RETURN
END
Функция-подпрограмма
FUNCTION ST(X)
ST = X + SQRT(X**2)
RETURN
END
Вызывающая программа
EXTERNAL ST
X = 2.
C = D + R(X,X,ST)
Если в операторе EXTERNAL стоит имя библиотечной функции фортрана, то оно становится именем функции, написанной пользователем, и подавляет вызов библиотечной.
Например, пользователь написал, по его мнению, более эффективную программу вычисления sin(x). Тогда в главной программе следует указать
EXTERNAL SIN
и присоединить программу, реализующую эти вычисления:
FUNCTION SIN(X)
SIN = ...
RETURN END
Тогда при обращении в головной программе
Y=SIN(X)
будет вызываться программа пользователя, а не библиотечная.
Ранее было показано, что числовые значения переменным можно присвоить с помощью оператора присваивания. Однако если переменных много, то удобнее начальные значения присвоить до выполнения программы с помощью оператора DATA, который имеет следующий вид:
DATA P1,.^PN/C1,...,^
Здесь Pl,...,PN—имена переменных; Cl,...,CN—соответствующие константы; Q1,... ,QM — переменные; Z1,..., ZM—соответствующие константы и Y д. Перед константами можно ставить множитель N, указывающий число повторений этой константы в списке констант.
Пример.
DATA X,Y,Z/3*2.05/,M(l,2)/3/
Этот оператор эквивалентен следующим операторам присваивания:
Х = 2.05
Y = 2.05
Z = 2.05
M(l,2) = 3
Место оператора DATA в программной единице—после всех невыполняемых операторов, за исключением, возможно, оператора FORMAT, который может находиться в любом месте программы.
Все переменные, используемые в программе, перед вычислениями должны быть каким-либо способом инициализированы, т. е. им следует присвоить значения (операторы присваивания, ввода, DATA). Плохим «стилем» программирования является отказ от инициализации и предположение, что ячейки памяти перед входом в программу будут очищены (хотя на некоторых ЭВМ так и происходит).
•3.3. Программирование элементарныхвычислительных алгоритмов
Введение. В настоящем пункте рассматриваются приемы программирования на фортране элементарных вычислительных алгоритмов. Элементарными эти алгоритмы называются потому, что дальнейшее разбиение их на более мелкие вычислительные процедуры практически нецелесообразно. Логика таких алгоритмов сравнительно проста.
90
К
Рассмотрение ведется в соответствии с разделами библиотеки фортран-программ (см. гл. 12). Программы оформляются в виде подпрограмм или функций-подпрограмм с именами, согласованными с библиотечной системой имен. Например, имя программ A4S1, B5S2 означает, что они относятся к разделам А4 «Интегрирование» или В5 «Нелинейная оптимизация», SI, S2—«простая» программа номер 1 или 2.
Естественно, что «простые» программы для элементарных алгоритмов могут быть также включены в библиотеку программ и использоваться наряду со «сложными» программами. Отличие элементарных вычислительных алгоритмов связано в основном со значительно меньшей универсальностью в сравнении с библиотечными алгоритмами. Их область применения более узкая; как правило, нет возможности автоматического контроля погрешности вычислений, нет диагностики возможной ошибки и т. п. Однако при всех недостатках элементарные программы имеют и преимущества, которые могут «перевесить» недостатки: 1) эти элементарные программы малы по числу операторов, т. е. занимают меньше ячеек памяти ЭВМ, чем универсальные; 2) элементарные программы пишет пользователь для своей задачи, а никто лучше него самого не знает алгоритм и данные.
Элементарные или «простые» алгоритмы и программы не означают, что они плохи. Их эффективность может быть значительно выше универсальных алгоритмов, но для специальных классов задач.
Наконец, имея опыт программирования элементарных алгоритмов, можно, следуя идее структурной алгоритмизации (см. гл. 2), проектировать достаточно сложные алгоритмы и программы из элементарных.
Табулирование функций. Составление таблиц функций называют табулированием. Предварительно вычисленные таблицы, хранимые в памяти ЭВМ, могут затем значительно сократить дальнейшие вычисления.
Пусть необходимо иметь таблицу значений функции /(х) с заданным постоянным шагом h в и точках х0-НН, ^^1^п — \, начальное значение х0 задается.
Входные данные задачи: /Ы, h, х0, п;
выходные данные: f(x^,f(x^ ^^f(^n-^-
Подпрограмме присвоим имя Z0S0. Поскольку в библиотеке нет раздела табулирования, введен новый индекс Z0.
Для вычисления выходных данных—массива У/=/(х{)—используется следующий фрагмент:
Х = Х0
DO 1 1=1,N
Y(I) = F(X)
1 х=х+н
Здесь используется F—имя функции-подпрограммы, которая должна вычислять /(х). Теперь, следуя правилам фортрана, оформим подпрограмму Z0S0. Имеем
SUBROUTINE Z0S0(F,H,X0,N,Y)
REAL H,X0,Y(N),X INTEGER N x=xo DO 1 1 = 1,N Y(I) = F(X) 1 X=X+H RETURN END
Пусть требуется составить таблицу функции /(x)=e~x+arctgx
в интервале * [0, 1] с шагом й=0, 01. Программа может иметь следующий вид:
REAL X0,H,Y(100) INTEGER N EXTERNAL F
DATA X0,H,N/0„0.01,100/
CALL Z0S0(F,H,X0,N,Y) END СВНЕШНЯЯ ФУНКЦИЯ-ПОДПРОГРАММА, ВЫЧИС-
CЛЯЮЩАЯ F(X)
FUNCTION F(X)
REAL X, F=EXP( - X)+ATAN(X) RETURN.
END
Пусть необходимо иметь таблицу значений функции /(х) в точках х,-, 1^/<л, шаг A,=xi+1—х(, вообще говоря, переменный. В этом случае:
входные данные задачи: xb l^i^n,/^;
выходные данные: fix^f^x^, ...,f(xn\
Подпрограмме табулирования с переменным шагом присвоим имя Z0S1:
SUBROUTINE Z0Sl(F,X,N,Y) REAL X(N),Y(N) INTEGER N DO 1 1 = 1,N 1 Y(I) = F(X(I)) RETURN END
Аппроксимация функций. Простейшим способом приближения функции /(х), заданной в п точках xb \^i^n, является линейная интерполяция по двум точкам.
Для любого, х, х^х^х,,, значение /(х) приближенно заменяется формулой
Дх^Н^^; +/(xi+1)^
описывающей прямую, которая проходит по двум точкам (xf,/(xf) и (х, + i, /(xf + ! )) плоскости (х, у).
Напишем программу линейной интерполяции в двух вариантах: 1) когда /(х) задана таблично с постоянным шагом; 2) с переменным.
Вариант 1.
Входные данные*. /(х,-), 1 ^ i^ и. х0, h, х;
выходные данные*, р (х).
Основным моментом алгоритма линейной интерполяции является поиск интервала [xhxH1], которому принадлежит точка х, где производится вычисление р^. Чтобы найти номер z, следует вычислить целую часть дроби [(х—хЦ/Л]. Среди библиотечных функций фортрана есть соответствующая функция INT(X), реализующая выделение целой части. Поэтому программа может иметь следующий вид:•
FUNCTION A3SO(Y,N,X1,H,X)
REAL Y(N),X1,H,P,XM,XM1
INTEGER N,M
СВХОДНЫЕ ПАРАМЕТРЫ
CY(N) — МАССИВ ЗНАЧЕНИЙ ФУНКЦИИ
СN—РАЗМЕРНОСТЬ МАССИВА
СН — ШАГ ТАБЛИЦЫ
СX—КООРДИНАТА, В КОТОРОЙ ПРОИЗВОДИТСЯ
С ИНТЕРПОЛЯЦИЯ
С ВЫХОДНЫЕ ПАРАМЕТРЫ
СA3S0 — ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ ФУНКЦИИ В
С ТОЧКЕ X
М = ШТ((Х-Х1)/Н)
ХМ = Х1+М*Н
ХМ1=ХМ + Н
Р = (Y(M)*(XM 1 - X) +Y(M +1 )*(Х - ХМ))/Н°
A3S0 = P RETURN
END
Вариант 2.
Входные данные*. xb/(xf), X^i^n, z;
выходные данные*. p^z\ Будем предполагать, что г + хп. В этом варианте поиск интервала [xi? xi+1], содержащего точку z, можно провести различными способами. Воспользуемся простым перебором, а именно: в цикле по z, l^i^n, используем логический оператор IF. Когда выражение в скобках станет истинным, цикл прекратим. Имеем соответствующий фрагмент
1=1
IF (Z.GE.X(I).AND.Z.LT.X(I +1)) GO TO 2
1 = 1 + 1
GO TO 1
...
Теперь полная программа может быть полностью представлена следующим образом:
FUNCTION A3S1(X,Y,N,Z)
REAL X(N),Y(N),P,Z
INTEGER N,I '1 = 1 .
IF (Z.G^X(I).AND.Z.LT.X(I + 1)) GO TO 2 1=1+1 *
GO TO 1
2P=(Y(I>(X(I +1) - Z)+Y(I +1 )*(Z - X(I)))/(X(I +1) - X(I))
A3S1=P *
RETURN
ENP .
Интегрирование. В качестве элементарного алгоритма численного интегрирования примем формулу Симпсона
еЦ(/о+4 Х/2,-1+2m£/2i+/2.\ i = li=l
Здесь h—шаг по оси x,fv=fkx^ КЮт, xH1—xt=h (см. рис. 7.7). Для написания программы вычисления Q по значениям функции /• ' заметим, что она может быть представлена в виде
6 = X (Ai + ^/li+l+/21+2J\i = 0/
Каждое слагаемое в сумме имеет вид
/И+4/(х+Л) +/(х+2Л),
где х = х2р х0 = а. Поэтому для вычисления суммы можно использовать следующий фрагмент:
Q=0.
Х=А
DO 1 I=2,N,2
Q=Q+F(X)+4.*F(X+H)+F(X+2.*H)
1Х=Х+2.*Н
Здесь N = 2m, Н=й, А=а. Теперь уже не представляет труда
оформить соответствующую программу: FUNCTION A4S0(A,B,N,F) REAL A,B,H,Q INTEGER N
С ВХОДНЫЕ ПАРАМЕТРЫ
X
СА—НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ
СВ—ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ
СN—ЧЕТНОЕ ЧИСЛО ОТРЕЗКОВ ИНТЕГРИРОВАНИЯ
СF—ИМЯ ВНЕШНЕЙ ФУНКЦИИ ВИДА
СREAL FUNCTION F(X)
СREAL X
СВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЕ ПОДИНТЕГРАЛЬНОЙ
СФУНКЦИИ
СA4S0—ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ ИНТЕГРАЛА
Н=(В—A)/N
Q=0.
Х=А
DO 1 I=2,N,2
Q = Q+F(X)+4.*F(X+H)+F(X+2.*H)
1 X=X + 2.*H
Q = Q*H/3
A4S0=Q
RETURN
END
В гл. 7 показано, что оценка погрешности приближенного значения интеграла может быть получена вычислением Qx с шагом Н, затем 62 с шагом Н/2, а абсолютная погрешность £ определяется выражением (по правилу Рунге)
£ = 161-621/15.
Вычислим
2
J exp(sinx)<Zx о
с числом отрезков разбиения интервала [0, 2], равным N = 100, 200. Результаты (приближенное значение интеграла 2г и ошибку е) будем выдавать на терминал:
REAL A,B,E,Q1,Q2
INTEGER N
EXTERNAL F
DATA A,B,N/0.,2., 100/
Ql=A4S0(A,B,N,F)
Q2=A4S0(A,B,2*N,F)
E=ABS((Q1-Q2)/15.)
WRITE (5,1) Q2,E
1FORMAT (2X,E13.6,2X,E13.6)
END
СВНЕШНЯЯ ФУНКЦИЯ F(X)
FUNCTION F(X)
F = EXP (SIN (X))
RETURN
END
Суммирование рядов. Суммирование конечной числовой последовательности
выполняется с помощью оператора цикла DO тремя операторами: 8=0.
DO 1 1 = 1,N
1 S=S+A(I)
где А—имя функции-подпрограммы, вычисляющей а^ Например, REAL FUNCTION A (I)
INTEGER I
RETURN
END 1 .
Суммирование бесконечных числовых рядов
i=l
выполняется обычно с помощью цикла, организованного логическим оператором IF и оператором безусловной передачи управления GO ТО. Выход из цикла осуществляется при достижении значения вычисляемой точности £t заданной £.
Рассмотрим программу суммирования сходящегося знакопеременного ряда, для которого легко вычислить оценку погрешности; она меньше модуля первого отброшенного члена ряда
|5-5„| =|5-5„| =NS-^i=lNS-^i=l^1 aN+l I-^1 aN+l I-
|5-5„| =
|5-5„| =
N
S-^
i=l
N
S-^
i=l
^1 aN+l I-
^1 aN+l I-
С С С с с с с1С С С с с с с122N=N+1N=N+1
С С С с с с с
1
С С С с с с с
1
2
2
N=N+1
N=N+1
Приведем соответствующую программу:
FUNCTION А580(Е,А) REAL E,S
INTEGER N
ВХОДНЫЕ ПАРАМЕТРЫ
E—ЗАДАННАЯ АБСОЛЮТНАЯ ПОГРЕШНОСТЬ
А—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ, ВЫЧИСЛЯЮЩЕЙ ОБЩИЙ ЧЛЕН ЗНАКОПЕРЕМЕННОГО РЯДА
ВЫХОДНЫЕ ПАРАМЕТРЫ
A5S0—ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ СУММЫ РЯДА
DATA N,8/1,0./
S = S+A(N)
IF (ABS(A(N)).GT.E) GO TO 2
GO TO 3.
33GO TO 1
3
3
A5S0 = S RETURN END
В качестве иллюстрации применения этой программы рассмотрим суммирование ряда
^(-l^ + l)"1
с точностью £=10 . Программа может иметь вид
REAL E,S EXTERNAL А DATA Е/1.Е-4/ S=A5S0(E,A) WRITE (5,1) S 1 FORMAT (2X,'S = ',E11.4)
END
FUNCTION A (I) INTEGER I IF (MOD(l,2).EQ.l) GO TO 1
A=1/(I*I+1) RETURN
A=(—1)/(I*I + 1)
RETURN END
Суммирование функциональных рядов
^М= E aiM
в области сходимости х, с точки зрения программирования, приводит к незначительным усложнениям- по сравнению с числовыми рядами. Действительно, пусть требуется найти S(x) в точках Xj, \^j^m, из области сходимости с заданной абсолютной точностью £. Тогда эта задача сводится к суммированию т числовых рядов
sVxi> Е <чМ
с точностью е, т. е. к задаче, рассмотренной выше. Поэтому приведенная программа является небольшой модификацией A5S0:
СВХОДНЫЕ ПАРАМЕТРЫ
сХ(М)—МАССИВ, СОДЕРЖАЩИЙ ЗНАЧЕНИЯ Х,В
СКОТОРЫХ ВЫПОЛНЯЕТСЯ СУММИРОВАНИЕ
СРЯДА
СЕ —ЗАДАННАЯ АБСОЛЮТНАЯПОГРЕШНОСТЬ
СА —ИМЯ ВНЕШНЕЙ ФУНКЦИИ,ВЫЧИСЛЯЮЩЕЙ
СОБЩИЙ ЧЛЕН РЯДА, ДОЛЖНА ИМЕТЬ ВИД
СREAL FUNCTION A(I,X)
СREAL X
СINTEGER I
CEl —ИМЯ ВНЕШНЕЙ ФУНКЦИИ,ВЫЧИСЛЯЮЩЕЙ
СДОСТИГНУТУЮ ПОГРЕШНОСТЬ, ДОЛЖНА
СИМЕТЬ ВИД
СREAL FUNCTION El (I,X)
CREAL Я
CINTEGER I
СM —РАЗМЕРНОСТЬ МАССИВАX,S
СВЫХОДНЫЕ ПАРАМЕТРЫ
CS(M)—МАССИВ, СОДЕРЖАЩИЙ СУММЫ РЯДА В
СТОЧКАХ X(J)
DO 3 J=1?M
N=1
S(J)=O.
1 S(j) = S(J)+A(N,xm) IF (E1(N,X(J)).GT.E) GO TO 2 GO TO 3
N=N+1
GO TO 1
CONTINUE
RETURN * END
Отличие этой программы от A5S0 состоит в том, что добавлен цикл по J—перебор по точкам Xj—и предполагается, что пользователь должен написать внешние функции-подпрограммы А(1,Х), Е1(1,Х).
Применим программу A5S1 для суммирования ряда
Y 3 Y 5Y 2и + 1
iS(x) = 2 х+—+-+•♦.+-
352и+1 J .
с абсолютной погрешностью £=10~5 в точках х7=—0,5; —0,3; + 0,4; +0,7. Известно, что сумма этого ряда
S(x) = ln ((1 +х)/(1 -х));
область сходимости | х | < 1, оценка остатка
Программа может иметь вид
REAL X(4),S(4),E
INTEGER М
EXTERNAL A,El
9898X
98
98
DATA E, M/l.E-5, 4/,X/-0.5,-03,0.4,0.7/
CALL A5S1 (X,S,E,A,E1,M)
WRITE (5,1) S
1 FORMAT (2X,4E12.5)
END
C
FUNCTION A(I,X)
REAL X
INTEGER I
IF (MOD(I,2).EQ.l) GO TO 1
A = 0.
RETURN
I = 2*I + 1
A = 2*X**I/I
RETURN
END
C
FUNCTION El (I,X)
REAL X
INTEGER I
IF (MOD(I,2).EQ.1) GO TO 1
El = l.E10
RETURN
I = 2*I + 1
El =(ABS(X))**I/(I*(1 —X*X)) RETURN
END
На примере этой программы можно заметить, что она далеко не универсальна. Действительно, если в массив Xj внести значение х=1, 3, лежащее вне области сходимости, то программа A5S1 зацикливается (нет выхода из цикла операторов с метками 1 — 3) и заканчивается аварийно переполнением. Однако если пользователь знает область сходимости ряда и может оценить скорость сходимости, то применение программы A5S1 может быть оправдано.
С другой стороны, программа A5S1 служит для суммирования рядов общего вида, поэтому она более громоздка, чем программа суммирования конкретного ряда, например, приведенного выше/
Фурье-анализ. Под Фурье-анализом обычно понимается процедура определения коэффициентов ряда Фурье функции /(х). В зависимости от того, в каком виде задается /(х) (аналитически или таблично, в вещественном виде или комплексном) существует несколько процедур Фурье-анализа. Однако в основе всех процедур лежит вычисление интегралов по формулам
а„=(1/л) J f^cosmxdx, m=0, 1, 2, ...,
/>т=(1/л) J f^sinmxdx, т = 1, 2, ....
99994*
99
99
Будем предполагать, что для вычисления /(х) может быть написана функция-подпрограмма. Количество коэффициентов ат, Ьт, подлежащих определению, задается параметром М, О^т^М. Для вычисления интеграла воспользуемся программой A4S0 с числом отрезков интегрирования /7=2&(т+1), где коэффициент к будем задавать:
SUBROUTINE A6SO(F,M,M1,K,A,B) REAL A(M1),B(M),PI,Q,R1,R2,R3 INTEGER M,M1,K,I1,N
C
СВХОДНЫЕ ПАРАМЕТРЫ
CF — ИуЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
СВЫЧИСЛЯЮЩЕЙ F(X)
СМ—РАЗМЕРНОСТЬ МАССИВА В
СMl—РАЗМЕРНОСТЬ МАССИВА А, М1=М + 1
СК—КОЭФФИЦИЕНТ, ОПРЕДЕЛЯЮЩИЙ ЧИСЛО
СОТРЕЗКОВ ИНТЕГРИРОВАНИЯ
СВЫХОДНЫЕ ПАРАМЕТРЫ
СА—МАССИВ КОЭФФИЦИЕНТОВ ФУРЬЕ А(1)
СВ —МАССИВ КОЭФФИЦИЕНТОВ ФУРЬЕ В(1)
С
DATA PI/3.1415929/
С ВЫЧИСЛЕНИЕ МАССИВА А Н = Р1/(К*М1) N=2*K*M1
DO 2 1 = 1,Ml
Q=0.‘
X=-PI 11 = 1-1 DO 1 J = 2,N,2 R1=F(X)*COS(I1*X)
R2=F(X+H)*COS(I1*(X+H))
R3 = F(X+2.*H)*COS(I1*(X + 2.*H))
1Q=Q+R1+4.*R2+R3
A(I) = Q*H/(3.*PI)
С ВЫЧИСЛЕНИЕ МАССИВА В
DO 4 1 = 1, M
Q=0.
X=-PI
DO 3 J=2,N,2 RI =F(X}*SIN(I*X) R2 = F(X+H)*SIN(I*(X+H)) R3 = F(X+2.*H)*SIN(I*(X+2.*H))
Q=Q + R1+4.*R2 + R3
B(l)=Q*H/(3.*Pl)
RETURN END
100
Так как в программе A6S0 отсутствует контроль точности вычисления интегралов, а следовательно, и значений ат, Ьт, то необходимо будет дважды обратиться к A6S0 с различными значениями к и 1k и воспользоваться для оценки погрешности правилом Рунге, например
CALL A6S0(F,10,ll,10,A,B)
CALL A6S0(F, 10,11,20,А,В)
Погрешность (массивы ЕА(1), ЕВ (I)) затем определяется в циклах типа
DO 1 1=1,Ml
ЕА (I) = ABS (Al (I) - A (I))/15
Алгоритмы Фурье-анализа при больших значениях т (и соответственно и), основанные на общих квадратурных формулах, например формуле Симпсона, оказываются неэффективными.
В этом случае применяются разработанные специальные быстрые алгоритмы, учитывающие специфику тригонометрических функций. Эта группа алгоритмов обычно называется быстрым преобразованием Фурье. Если обычные алгоритмы имеют порядок роста числа арифметических операций O(w2), m->oo, то быстрые алгоритмы имеют порядок роста О {т log 2^), т->оо, что указывает на их более высокую эффективность. Текст фортран-про- граммы быстрого Фурье-преобразования приводится, например, в [30, с. 166].
Численное дифференцирование. Пусть функция у (х) задана таблично с постоянным шагом h
У^\У^\xlA.Y—xv = h.
У^\
У^\
Тогда для приближенного вычисления первой и второй производной можно использовать формулы
l^i^n—X,l^i^n—X,^/„х ^(^i+J-^k-l) dx^' гн
l^i^n—X,
l^i^n—X,
2^i^n— 1.2^i^n— 1.^2У(„\ y(xi+i)~2y(xi)+y(xi-i) dxA d~h2
2^i^n— 1.
2^i^n— 1.
Программа вычисления производных ^(x) по приведенным выше формулам является простой иллюстрацией использования операторов цикла:
SUBROUTINE A7S0(N,N2, Y,H,D1,D2) REAL Y(N),D1(N2),D2(N2),H,H1,H2 INTEGER N, N2
C
С ВХОДНЫЕ ПАРАМЕТРЫ
CN —РАЗМЕРНОСТЬ МАССИВА Y
СN2—РАЗМЕРНОСТЬ МАССИВА D1,D2,N1=N-1
СY —МАССИВ, СОДЕРЖАЩИЙ ЗНАЧЕНИЯ ФУНКЦИИ
СВЫХОДНЫЕ ПАРАМЕТРЫ
СD1 — МАССИВ, СОДЕРЖАЩИЙ ЗНАЧЕНИЯ ПЕРВОЙ
СПРОИЗВОДНОЙ
СD2—МАССИВ, СОДЕРЖАЩИЙ ЗНАЧЕНИЯ ВТОРОЙ
СПРОИЗВОДНОЙ
С
Н1=2.*Н Н2 = Н*Н DO 1 1=2, N1 D1(I) = (Y(I+1)-Y(I-1))/H1 1D2(I)=(Y(I+1)-2.*Y(I)+Y(I-1))/H2
RETURN END ;
Операции с матрицами и векторами. В этом пункте приводятся некоторые программы операций с матрицами и векторами.
Сложение матриц: ct}
SUBROUTINE A8S0(A REAL A(M,N),B(M,N) INTEGER M,N DO 1 1 = 1,M DO 1 J=1,N 1C(I,J)=A(I,J)+B(I,J)
RETURN * END
Умножение матриц: cik = £ a^b^, l^i^l, l^k<n. *=i
SUBROUTINE A8S1(A,B,L,M,N,C) REAL A(L,M),B(M,N),C(L,N),S INTEGER M,N,L DO 2 1 = 1, L DO 2 K=1,N S=0.
DO 1 J = 1,M
S = S+A(I,J)*B(J,K)
C(I,K) = S
RETURN END
Транспонирование квадратной матрицы А с размещением транспонированной А' на месте A: ai,j=ajib l^i, j^n. И^^Ь
SUBROUTINE A8S2(A,N)i
REAL A(N,N),S|
102\j
INTEGER N,N1,I1 N1=N —1 DO 1 1 = 1, N1 11 = 1 + 1
DO 1 J=I1,N S=A(I,J) A(I,J)=A(J,I)
1 A(J,I)=S
RETURN END
Транспонирование прямоугольной матрицы А переходом к од
номерным массивам.
SUBROUTINE A8S3(A,M,N,MN,A1)
REAL A(MN),A1(MN)
INTEGER M,N,MN,L1,L2
CMN—РАЗМЕРНОСТЬ ОДНОМЕРНЫХ МАССИВОВ,
ССОДЕРЖАЩИХ МАТРИЦУ А
СИ ТРАНСПОНИРОВАННУЮ А1
DO 1 1=1,М
DO 1 J=1,N
L1=(I-1)*N+J
L2=(J-1)*M + I
1A1(L2) = A(L1)
RETURN
END
Скалярное произведение вектора x на вектор у
S= X xtyvi=l
REAL FUNCTION A8S4(N,X,Y) REAL X(N),Y(N),S INTEGER N
S = 0.
DO 1 1 = 1,N
1S=S+X(I)*Y(I)
A8S4=S
RETURN END
Вычисление нормы матрицы A
IM ||= max ^ |ai;|.
1^л j=l
REAL FUNCTION A8S5(N,A,S) REAL A(N,N),S(N),R CS—РАБОЧИЙ МАССИВ
INTEGER N
DO 1 1=1, N R=0.
DO 1 J = 1,N
R=R+ABS(A(I, J))
S(I) = R
СВЫБОР МАКСИМАЛЬНОГО ЭЛЕМЕНТА ИЗ S(I)
R=S(1) DO 2 1 = 2, N IF (R.LT.S(I)) R=S(I)
CONTINUE
A8S5=,R RETURN END J
Решение систем линейных алгебраических уравнений. Одним из методов рршений системы уравнений вида
x=Bx-Vd,
где норма матрицы В меньше 1, является метод простой итерации (см. гл. 8)
x^=Bxkk4d, к=0, 1, 2, ..., х<0) = 0.
Итерации прекращаются, когда
II ^11
где е—заданная точность приближения к решению, норма вектора ||х||= max |xj. Программа может иметь следующий вид (для сокращения программы условие прекращения итераций принято в виде е^е):
SUBROUTINE A9S0(N,B,D,E,X,Y) REAL B(N,N),D(N),X(N),Y(N),E,S INTEGER N
С С С с с сС С С с с сВХОДНЫЕ ПАРАМЕТРЫ
С С С с с с
С С С с с с
N—РАЗМЕРНОСТЬ МАССИВОВ B,D,X,Y
В—МАССИВ, СОДЕРЖАЩИЙ ЭЛЕМЕНТЫ МАТРИЦЫ
В
С Е —ТОЧНОСТЬСY—РАБОЧИЙ МАССИВСВЫХОДНЫЕ ПАРАМЕТРЫСX —ПРИБЛИЖЕННОЕ РЕШЕНИЕС Е —ТОЧНОСТЬСY—РАБОЧИЙ МАССИВСВЫХОДНЫЕ ПАРАМЕТРЫСX —ПРИБЛИЖЕННОЕ РЕШЕНИЕD—МАССИВ, СОДЕРЖАЩИЙ ЭЛЕМЕНТЫ СВОБОДНОГО ВЕКТОРА
С Е —ТОЧНОСТЬ
СY—РАБОЧИЙ МАССИВ
СВЫХОДНЫЕ ПАРАМЕТРЫ
СX —ПРИБЛИЖЕННОЕ РЕШЕНИЕ
С Е —ТОЧНОСТЬ
СY—РАБОЧИЙ МАССИВ
СВЫХОДНЫЕ ПАРАМЕТРЫ
СX —ПРИБЛИЖЕННОЕ РЕШЕНИЕ
С
СПОЛУЧЕНИЕ ПЕРВОГО ПРИБЛИЖЕНИЯ X
DO 1 1 = 1, N
1X(I)=D(I)
104.
С УМНОЖЕНИЕ МАТРИЦЫ В НА ВЕКТОР X 100 DO 3 1=1,N
S=0.
DO 2 J=l, N
2S = S+B(I,J)*X(J)
3Y(I) = S
ССЛОЖЕНИЕ BX+D—ПОЛУЧЕНИЕНОВОГО ПРИ-
CБЛИЖЕНИЯ
DO 4 1 = 1, N
4Y(I)=Y(I)+D(I)
СОПРЕДЕЛЕНИЕ НОРМЫ РАЗНОСТИ Y—X
S=ABS(Y(1)-X(1)) DO 5 1=2, N
IF (S.LT.ABS(Y(I)-X(I))) S=ABS(Y(I)-X(I))
5CONTINUE
СЗАСЫЛКА НОВОГОПРИБЛИЖЕНИЯВСТАРОЕ
DO 6 1 = 1, N
6X(I)=Y(I)
ССРАВНЕНИЕСЗАДАННОЙТОЧНОСТЬЮ
IF (S.LT.E) GO ТО 7 GO ТО 100
7 RETURN END
Решение линейных интегральных уравнений. Одним из численных методов решения интегрального уравнения
ь
^(^) = f К^х, s)y(s)ds + f(x),a^x^b,
является его приближенная замена системой линейных алгебраических уравнений
Я-^Н X hK\xb s^y^+f^x^ l^i^n, X^j^n, 3=1
Xi=a+(i— 1 /2) A, s^a-V^-X)!^ h = (b — a)/n.
Обозначим матрицу K=(Ki j)=hK(xb Sj), векторы у, /
У = М? ^=^(^)’ /=Ш> Л = Ж)-
Будем предполагать, что ||^||<^<1. Тогда систему алгебраических уравнений
У = Ку + /
можно решать с помощью программы A9S0, а центральным моментом следующей программы оказывается вычисление матрицы К и свободного вектора /. Значение элементов вектора у принимается в качестве приближенных значений точного решения у (х) в точках хь
SUBROUTINE B2S0 (N, К, F, АО, ВО, В, D, Е,X, У) REAL АО, ВО, В (N, N), D (N), Y (N),Х0, S, Е, X (N) INTEGER N
с
СВХОДНЫЕ ПАРАМЕТРЫ
СN—РАЗМЕРНОСТЬ МАССИВОВ B,D,Y
СК—ВНЕШНЯЯ ФУНКЦИЯ-ПОДПРОГРАММА,
СВЫЧИСЛЯЮЩАЯ K(X,S)
СREAL FUNCTION K(X,S)
СREAL X,S
САО—НИЖНИЙ ПРЕДЕЛ ИНТЕГРАЛА
СВО—ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРАЛА
СВ —РАБОЧИЙ МАССИВ
СЕ —ТОЧНОСТЬ РЕШЕНИЯ СИСТЕМЫ УРАВНЕНИЙ
СX —РАБОЧИЙ МАССИВ
СВЫХОДНЫЕ ПАРАМЕТРЫ
СY —ВЕКТОР ПРИБЛИЖЕННЫХ ЗНАЧЕНИЙ
СРЕШЕНИЯ
С—
СВЫЧИСЛЕНИЕ ЭЛЕМЕНТОВ МАТРИЦЫK(I,J),F(I) И
СЗАПИСЬ В МАССИВЫ B(N,N),D(N)
H=(B0-A0)/N
X0=A0
S=A0
DO 2 J = 1,N
DO 1 1 = 1,N
B(I,J) = K(X0,S)
ixo=xo+h/2
D(J)=F(S)
2S=S + H/2
СОБРАЩЕНИЕК ПРОГРАММЕ A9S0
CALL A9S0(N,B,D,E,Y,X)
RETURN END
Корни полиномов и нелинейных уравнений. Существует множество алгоритмов определения корней нелинейных уравнений, в частности полиномов. Рассмотрим наиболее простой алгоритм, применимый для полиномов и скалярных уравнений вида
/(*)=0 или Р„(х)=0,
где /(х)—непрерывная функций; Р„(х)—полином и-й степени; х—скаляр, принадлежащий заданному интервалу а^х^Ь.
Первый этап: вычисление перебором значений /(х) с шагом hY в точках xt = aA-ihv X^i^n, h^^b-a^n, вывод на терминал граничных точек интервалов [xh х/+1], где /(xz)/(xl+1)<0 или /(xf) = 0, /(х/ + 1) = 0. Указанные интервалы заведомо содержат по крайней мере один корень.
106т
С С С С С С С С1С С С С С С С С12234563456
С С С С С С С С
1
С С С С С С С С
1
2
2
3
4
5
6
3
4
5
6
Второй этап: повторение первого этапа с более мелкими шагами на выделенных интервалах с целью обнаружения нескольких корней на интервалах [xi; xj+1]. Этот этап можно опустить, если пользователь имеет дополнительную информацию о расположении корней уравнений.
Третий этап: в предположении, что на заданном интервале уравнение имеет единственный корень, определение его с заданной точностью методом бисекции (см. 9.4).
Первый и второй этапы реализуются в следующей программе:
SUBROUTINE B4S0(A,B,H,F)
REAL A,B,H,X1,X2,Y1,Y2,Y3,Y4
INTEGER K1,K2,K3
DATA Kl,K2,K3,Y4/3*0, 1./
ВХОДНЫЕ ПАРАМЕТРЫ
А—ЛЕВЫЙ КОНЕЦ ИНТЕРВАЛА
В—ПРАВЫЙ КОНЕЦ ИНТЕРВАЛА
Н—ШАГ ПЕРЕБОРА
F—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ, ВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЯ F(X) ИЛИ Р(Х)
Х1=А
Y1=F(X1)
Х2=Х1+Н
Y2 = F(X2)
Y3 = SIGN(Y4, Y1)*SIGN(Y4, Y2)
IF (Y1.EQ.0.) Kl = l
IF Y2.EQ.0.) K2=l
IF (Y3.LT.0.) K3=l
IF l(Kl.OR.K2.OR.K3).NE.0) GO TO 3
IF (X2.GT.B) GO TO 4
X1=X1+H
GO TO 1
WRITE (5, 5) XI, X2, KI, K2, КЗ
GO TO 2
WRITE (5, 6)
FORMAT (2X, 'Xl=', E13.6, 'X2=', E13.6, 2X, 312)
FORMAT (10X, КОНЕЦ ПЕРЕБОРА')
RETURN
END
Приведем программу метода бисекции по схеме алгоритма п. 9.4.2:
SUBROUTINE B4S1(A,B,E,F,C)
REAL A,B,E,C,S,Y,Y1
DATA S/l./
СВХОДНЫЕ ПАРАМЕТРЫ
СА—ЛЕВЫЙ КОНЕЦ ИНТЕРВАЛА
СВ—ПРАВЫЙ КОНЕЦ ИНТЕРВАЛА
СЕ—ТОЧНОСТЬ ОПРЕДЕЛЕНИЯКОРНЯ
СF—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
СВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЯ F(X) ИЛИ Р(Х)
СВЫХОДНЫЕ ПАРАМЕТРЫ
СС—ЗНАЧЕНИЕ КОРНЯ
С
1С=(А+В)*0.5
Y=F(C)
IF (Y.EQ.O) GO TO 2
Y1 = F(A)
IF (SIGN(S, Y)*SIGN(S, Y1).GT.O) A=C
Y1=F(B)
IF (SIpN(S, Y)*SIGN(S, Y1).GT.O) B = C
IF ((B-A)*0.5.GE.E) GO TO 1
2 RETURN
END
Нелинейная оптимизация. В основе многих алгоритмов поиска минимума (максимума) нелинейной целевой функции Ф(х) (х, вообще говоря, вектор) лежит минимизация функции одной переменной. Одним из возможных алгоритмов минимизации функции одной переменной является алгоритм метода золотого сечения (см. 9.7).
Приведем программу, соответствующую схеме алгоритма метода золотого сечеция (см. п. 9.7.3):
SUBROUTINE B5S0(A,B,E,F,C) REAL А,В,Е,С,Т С СВХОДНЫЕ ПАРАМЕТРЫ
СА—ЛЕВЫЙ КОНЕЦ ИНТЕРВАЛА
СВ—ПРАВЫЙ КОНЕЦ ИНТЕРВАЛА
СЕ—ПОГРЕШНОСТЬ ОПРЕДЕЛЕНИЯТОЧКИMIN
СF—ИМЯ ВНЕШНЕЙ ФУНКЦИИ-ПОДПРОГРАММЫ,
СВЫЧИСЛЯЮЩЕЙ ЗНАЧЕНИЕ МИНИМИЗИРУЕ-
СМОЙ ФУНКЦИИ
СВЫХОДНЫЕ ПАРАМЕТРЫ
СС—ПРИБЛИЖЕННОЕ ЗНАЧЕНИЕ ТОЧКИ MIN
С
DATA Т/0.6180339/
Х1=В—(В —А)*Т
Х2 = А+(В-А)*Т
Y1 = F(X1)
Y2 = F(X2)
IF (Y2.LT.Y1) GO TO 2
B=X2
108\
Х2=Х1
Y2=Y1
Х1=В —(В —А)*Т
Y1=F(X1)
22GO TO 3
2
2
X1=X2X1=X2A=X1
X1=X2
X1=X2
ВВОД: max число шагов спуска К шаг спуска h, начальная точка х, точность £
СЧЕТЧИК ЧИСЛА ШАГОВ 30=0
ВЫЧИСЛЕНИЕ
У-Ф(х)
HETHETВЫЧИСЛЕНИЕ gradФ(Х)ВЫЧИСЛЕНИЕ gradФ(Х)стоп ЗНАЧЕНИЕ X-MINстоп ЗНАЧЕНИЕ X-MINllgгadФ(x)ll<EllgгadФ(x)ll<E
HET
HET
ВЫЧИСЛЕНИЕ gradФ(Х)
ВЫЧИСЛЕНИЕ gradФ(Х)
стоп ЗНАЧЕНИЕ X-MIN
стоп ЗНАЧЕНИЕ X-MIN
llgгadФ(x)ll<E
llgгadФ(x)ll<E
ШАГ СПУСКА
X1=X- h grad Ф(Х)
Рис. 3.1
Y1=Y2
X2=A+(B—A)*T
Y2=F(X2)
3 IF ((B-A).GT.E) GO TO 1
C=(A+B)*0.5
RETURN
END
Алгоритм метода градиентного спуска поиска минимума функции Ф(х15 ..., х„) нескольких переменных задается формулой (9.6.2). Дополним его процедурой дробления шага (А/2), если Ф(х№+1))>Ф(х:*). Схема алгоритма изображена на рис. 3.1.
Программа, соответствующая схеме, приведенной на рис. 3.1, имеет следующий вид:;
SUBROUTINE B5S1(N,X,Y,G,H,F,F1,X1,J,K) real;x(n),g(n),y,h,e,xi(n),yi,s INTEGER N,K,J
СВХОДНЫЕ ПАРАМЕТРЫ«^^
CN—РАЗМЕРНОСТЬ МАССИВОВ X,G
СX—МАССИВ, СОДЕРЖИТ ЭЛЕМЕНТЫ НАЧАЛЬНОГО
СВЕКТОРА
СН—НАЧАЛЬНЫЙ ШАГ СПУСКА
СЕ—ТОЧНОСТЬ, ОПРЕДЕЛЯЮЩАЯ КОНЕЦ ПРОЦЕДУ-|
СРЫ СПУСКАI
СF—ИМЯ ВНЕШНЕЙ ПОДПРОГРАММЫ, ВЫЧИСЛЯ-f
СЮЩЕЙ ЗНАЧЕНИЕ ЦЕЛЕВОЙ ФУНКЦИИ|
СSUBROUTINE F(X,Y)|
СREAL X(N),YI
CFl—ИМЯ • ВНЕШНЕЙ ПОДПРОГРАММЫ, ВЫЧИС-f
СЛЯЮЩЕЙ ЗНАЧЕНИЕ ВЕКТОРА ГРАДИЕНТА ЦЕ-3
СЛЕВОЙ ФУНКЦИИ|
СSUBROUTINE F1(X,G)|
СREAL X(N),G(N)|
СXI—РАБОЧИЙ МАССИВ|
СК—МАКСИМАЛЬНОЕ ЧИСЛО ШАГОВ СПУСКАI
СВЫХОДНЫЕ ПАРАМЕТРЫ|
СY—ЗНАЧЕНИЕ ЦЕЛЕВОЙ ФУНКЦИИI
СG—ЗНАЧЕНИЕ ГРАДИЕНТА ЦЕЛЕВОЙ ФУНКЦИИ|
СX—МАССИВ, СОДЕРЖИТ ЭЛЕМЕНТЫ ВЕКТОРА,1
СМИНИМИЗИРУЮЩЕГО ЦЕЛЕВУЮ ФУНКЦИЮ<
СJ—ЧИСЛО ШАГОВ СПУСКА4
С |
J=0j
CALL F(X,Y)I
CALL Fl (X,G)I
СВЫЧИСЛЕНИЕ КВАДРАТА ЕВКЛИДОВОЙ НОРМЫ GI
s=oI
DO 2 1 = 1,N)
S = S + G(I)*G(I)
С
IF (S.LT.E) GO TO 7
J=J + 1
СШАГ СПУСКА
DO 4 1=1,N
XI (I)=X(I)—H *G(I)
C
CALL F(X1,Y1)
IF (Yl.LE.Y) GO TO 5
H = H*0.5
GO TO 3
IF (J.GT.K) GO TO 7
DO 6 1 = 1,N
X(I)=X1(I)
Y=Y1 GO TO 1 7 RETURN
END
В качестве иллюстрации применения программы B5S1 рассмотрим минимизацию целевой функции
Ф(х1; х2)=(х1-2)4+х^.
Положим максимальное число шагов спуска к =100, точность £=10-5, начальный вектор х=(1, 2), начальный шаг Л=0,5. Программа этой задачи может быть представлена в форме
REAL X (2),Y,G (2),Н,Е,Х1 (2)
INTEGER N,K,J
EXTERNAL F,F1
DATA X/1.,2./,E,H/1.E—5,0.5/,K,N/100,2/
CALL B5S1 (N,X,Y,G,H,E,F,F1,X1,J,K)
WRITE (5,1) X,Y,J
1 FORMAT (2X,2E13.6,2X,E13.6,2X,I3)
END
SUBROUTINE F(X,Y)
REAL X(2),Y
Y=(X(1)—2.)* *4+X(2)*X(2)
RETURN
END
SUBROUTINE F1(X,G)
REAL X(2),G(2)
G(l)=4. *(X(1)—2.)**3
G(2)=2. *X(2)
RETURN
END
Решение обыкновенных дифференциальных уравнений; задача Коши. Рассмотрим два алгоритма решения задачи Коши: метод Эйлера и метод Рунге—Кутта 4-го порядка. Один шаг метода Эйлера задается формулой (10.2.5). Пусть у(х)—вектор с п компонентами, заданный в точке х; тогда один шаг интегрирования методом Эйлера—это вычисление вектора ^(х+Л) в точке х + h по формуле
у^х+к^у^+кДх, у(х)), где /(х, у)— вектор-функция правых частей дифференциального уравнения (в векторной форме)
14s=/^’
Программа, одного шага метода Эйлера:
SUBROUTINE B6S0 (N,Y,X,H,R,D)
REAL Y (N),X,H,D (N)
INTEGER N
СВХОДНЫЕ ПАРАМЕТРЫ
CN—РАЗМЕРНОСТЬ ВЕКТОРАY,D
СY—МАССИВ, СОДЕРЖАЩИЙВЕКТОРY(X)
СX—НАЧАЛЬНОЕ ЗНАЧЕНИЕАРГУМЕНТА
СН—ШАГ ИНТЕГРИРОВАНИЯ
СR—ИМЯ ВНЕШНЕЙ ПОДПРОГРАММЫ, ВЫЧИСЛЯ-
СЮЩЕЙ ПРАВЫЕ ЧАСТИ УРАВНЕНИЙ
С SUBROUTINE R(X,Y,D)
С REAL X,¥(N),D(N)
СD—РАБОЧИЙ МАССИВ, СОДЕРЖИТ ПРАВЫЕ ЧАСТИ
СУРАВНЕНИЙ
СВЫХОДНЫЕ ПАРАМЕТРЫ
СX—ЗНАЧЕНИЕ АРГУМЕНТА Х+Н
СY—МАССИВ, СОДЕРЖАЩИЙ ВЕКТОРY(X+H)
С
CALL R(X,Y,D)
DO 1 1 = 1,N
Y(I) = Y(I)+H*D(I)
X=X+H RETURN END
Применим программу B6S0 для интегрирования методом Эйлера с постоянным шагом й=0,1, на интервале 0<х<5 системы дифференциальных уравнений
^- = sin(y1+y2), л(0)=1,
^2dx
Чтобы решить эту задачу, следует выполнить 50 шагов (50 обращений к B6S0) для получения векторов
ЗчМ)//2(5,0)/ЗчМ)//2(5,0)/^(0, 1)\ /^(0, 2)\
ЗчМ)//2(5,0)/
ЗчМ)//2(5,0)/
b(0, 1)/ W’2)/
«стартуя» с начального вектора, на каждом 5-м шаге будем выводить на терминал значения (х, у/х)). Соответствующая программа:
REAL Y (2),X,H,D (2) INTEGER K,N,M EXTERNAL R
DATA X/0./,Y/l .,2./,H/0.1 /,K,N/50,2/
DO 1 1 = 1,К
CALL B6S0(N,Y,X,H,R,D)
M = MOD (1,5)
IF (M.NE.O) GO TO 1
WRITE (5,2) X,Y
CONTINUE
FORMAT (2X,'X = ',E9.2,2X,2E13.6)
END
SUBROUTINE R(X,Y,D)
REAL X,Y(2),D(2)
D(1)=SIN(Y(1)+Y(2))
D(2)=COS(Y(1)-X*Y(2)) RETURN
END
По аналогии с программой B6S0 составим программу одного шага метода Рунге—Кутта 4-го порядка, который задается для скалярного случая формулой (10.2.12). Описание входных и выходных параметров здесь почти такое же, как в B6S0, поэтому текст программы приводится без дополнительных комментариев:
SUBROUTINE B6S1 (N,Y,X,H,R,D)
REAL Y (N),X,H,D (N),K (4,N),Y1 (N) INTEGER N
С С С сС С С сК (4,N)—РАБОЧИЙ МАССИВ, СОДЕРЖИТ
С С С с
С С С с
КОЭФФИЦИЕНТЫ KI, К2, КЗ, К4
Y1(N)—РАБОЧИЙ МАССИВ
CALL R(X,Y,D) DO 1 1 = 1,N K(1,I)=H*D(I) Yl(I)=Y(I)+0.5*K(l,I) X=X+0.5*H CALL R(X,Y1,D) DO 2 1 = 1,N K(2,I) = H*D(I) Yl(I)=Y(I)+0.5*K(2,I)
CALL R(X,Y1,D)
DO 3 1=1,N
K(3,I) = H*D(I)
Y1(I) = Y(I)+K(3,I)
X = X + 0.5*H
CALL R(X,Y1,D)
DO 4 1=1,N
K(4,I) = H*D(I)
Y(I) = Y(I) + 0.166667 * (K( 1,1)+2. * K(2,I) + 2. * K(3,1) + K(4,1))
RETURN END
Чтобы проиллюстрировать применение программы B6S1 для интегрирования* с постоянным шагом h = 0,1 на интервале 0^х^5 приведенной выше системы уравнений, следует сделать всего лишь одно исправление—заменить B6S0 на B6S1.
Краевая задача; метод прогонки. В основе решения линейных краевых задач для уравнений второго порядка разностными методами лежит алгоритм решения трехдиагональных систем линейных' алгебраических уравнений—метод прогонки (см. п. 10.4.2). Будем предполагать, что прогонка для заданной трехдиагональной системы осуществима и устойчива (см. теорему 10.6). В общем виде трехдиагональная система записывается в форме
А^_г + C^i + В^ + i = ^; l^i^n, Аг=Вп = 0, где коэффициенты At, Bis Ch Rt (заданные массивы) — входные параметры, yt (искомый вектор) — выходной параметр. Формулы прогонки можно представить в следующей форме: прямая прогонка:.
«1=0, Pi=0,
а _В^^ g _ ^t-i Pt-i ~^i-i
— (G-l +^i-lai-l)— (^i-i+^i-lai-l)
обратная прогонка*.
ЛРп-^йЛРп-^йTj-i-^Уу+Ру, и ^/^2.Tj-i-^Уу+Ру, и ^/^2.
ЛРп-^й
ЛРп-^й
Tj-i-^Уу+Ру, и ^/^2.
Tj-i-^Уу+Ру, и ^/^2.
В следующей программе реализованы формулы прогонки, коэффициенты a;, Р, размещаются в массивах Е, D соответственно:
SUBROUTINE A9S1(N,A,B,C,R,E,D,Y) REAL A(N),B(N),C(N),R(N),E(N),D(N),Y(N),S
INTEGER N, J
С ПРЯМАЯ ПРОГОНКА
Е(1) = 0.
D(l)=0.
DO 1 1 = 2,N
114114S=-(C(I-1)+A(I-1)*E(I-1))
114
114
\
E(I)=B(I-1)/S 1D(I)=(A(I—1)*D(I—1)—R(I—1))/S
СОБРАТНАЯ ПРОГОНКА
Y(N)=(A(N) ♦ D(N) - R(N)) / (- C(N)+A(N) * E(N)) DO 2 1=2,N J=N+2—I
2Y(J-1)=E(J)*Y(J)+D(J)
RETURN
END
Рассмотрим разностную схему краевой задачи (10.4.9) с более простыми, чем (10.4.10), условиями
^о ~ 0, zm = О,(zi+1—2zi + zi_1)//i2 + 5izi=y^, 1 <z ^т+1.Здесь q^O, qi=q^x^, fi=f{x^, x^a-Vih, h = (b—d)[m.
Программа решения этой разностной схемы состоит из вычисления элементов массива А, В, С, R и обращения к программе A9S1. Имеем соответствие
У(=2Н1, l^i^m+1; и=т + 1, л>2;
Л(=1/Л2, Bi=\lh\ Cl=-2/h2+ql_1, ^=/(-1, 2^1<и-1.
Краевые условия zo=zm=0 приводят к равенствам
Ax=Bx = Rx=0, Сх = 1; A„=Bn = Rn=0, С„=1.
Входными параметрами задачи являются: п—размерность вектора у, левый а и правый b концы интервала решения краевой задачи, формула функций q(x), f(x)—коэффициента и правой части дифференциального уравнения.
SUBROUTINE B7S0(N, АО, ВО, Q, F, А, В, С, R, Е, D, Y) ♦REAL АО, ВО,A(N),B(N), C(N), R(N),E(N),D(N), Y(N),
H,H2,X
INTEGER N
САО, ВО—ЛЕВЫЙ,ПРАВЫЙ КОНЦЫ ИНТЕРВАЛА
СРЕШЕНИЯ
СQ,F —ИМЕНАВНЕШНИХ ФУНКЦИЙ-ПОДПРО-
СГРАММ, ВЫЧИСЛЯЮЩИХQ(X),F(X) СООТ-
СВЕТСТВЕННО
СВЫЧИСЛЕНИЕ ВХОДНЫХ ПАРАМЕТРОВ ПРО-
СГРАММЫ A9S1
А(1)=0.
В(1)=0.
R(l)=0.
C(D=L
A(N)=0.
B(N) = 0.
R(N)=0.
C(N) = 1.
H = (BO —AO)/(N—1) H2=H*H DO 1 1 = 2, N—1 X = AO + (I-1)*H A(I)=1./H2 B(I)=1./H2 C(I) = Q(X) —2./H2 1R(I) = F(X)
СОБРАЩЕНИЕ К ПРОГРАММЕ A9S1
CALL A9S1(N,A,B,C,R,E,D,Y) RETURN END
• 3.4. Оптимизация программ
Введение. Программирование занимает в технологии вычислительного процесса определенное место. Оптимизация всего цикла вычислений от составления математической модели до получения числового результата — очень сложная задача. Под оптимизацией понимается, например, минимизация или максимизация некоторого критерия — целевой функции Ф. Критерием может быть стоимость, надежность, быстродействие вычислений. Решение задачи оптимизации необходимо проводить сразу по всей совокупности возможных элементов вычислительного процесса, т. е. искать оптимальные математическую модель (М), вычислительный алгоритм (ВАЛ), программу (П) для заданной вычислительной системы. Если есть возможность выбирать ЭВМ, то в число свободных элементов, подлежащих определению, включается архитектура ЭВМ (АР). Если имеется выбор операционной системы, то появляется еще свободный параметр — тип операционной системы (ОС).
Таким образом, для решаемой задачи может быть, в принципе, определена зависимость критерия качества решения задачи Ф от применяемых элементов вычислительного процесса
Ф = Ф(М, ВАЛ, П, ОС, АР)
и тогда задача оптимизации состоит в определении min ф или D
тахф на множестве D возможных значений элементов М, ВАЛ, D
П, ОС, АР. Решение этой, как уже отмечалось выше, очень сложной задачи выходит за рамки данной книги. Однако следует всегда иметь в виду, что улучшение только программы или только вычислительного алгоритма представляет собой фактически попытку оптимизации Ф по одному элементу при фиксированных остальных. Поэтому и результат может быть весьма далек от оптимального по полному набору элементов.
В нашем подходе к улучшению программ мы будем исходить из того, что из определенного опыта в предметной области уже выбрана математическая модель, а из анализа методов вычислений выбран вычислительный алгоритм. Выбранный алгоритм либо уже запрограммирован, либо может быть запрограммирован на фортране. Так как программа на фортране не может быть выполнена на ЭВМ, фортран-программа преобразуется (транслируется) на машинный язык. Программа на машинном языке называется объектной программой или объектным кодом.
Основными критериями эффективности программы будем считать время выполнения и объем оперативной памяти для реализации объектного кода. При этом часто время выполнения можно сократить увеличивая объем необходимой памяти. Поскольку для решения средних по сложности задач объем оперативной памяти не представляет ограничений, мы в целях улучшения программ в основном будем стремиться к их максимальному быстродействию.
Наконец, необходимо отметить, что существующие трансляторы с фортрана имеют оптимизирующие блоки. Однако не следует думать, что неэффективную программу такой транслятор преобразует в эффективную. Он лишь улучшит некоторые доступные ему фрагменты программы. Поэтому для написания эффективных программ пользователь должен самостоятельно по ходу программирования осуществлять оптимизирующие преобразования. Более подробно с оптимизацией программ можно познакомиться в [17].
Исключение повторных вычислений. Это преобразование предусматривает исключение из программы избыточных команд. С этой целью, просматривая текст фортран-программы, исключают выражения, которые производят выполненные ранее вычисления.
Например, в последовательности операторов
X = A*(1. + COS(B))
Y = A —С/В
Z = C/B+1. + COS(B) слагаемые
C/B + (1. + COS(B))
в последнем операторе производят уже выполненные ранее вычисления. Поэтому вместо приведенного фрагмента следует использовать более эффективную последовательность операторов
U=1. + COS(B)
V = C/B
X = A*U
Y = A-V z=v+u
Хотя новый фрагмент длиннее старого, но он эффективнее по времени выполнения и объему используемой памяти.
Следующий, более сложный, пример указывает на то, что рассматриваемое преобразование необходимо выполнять осторожно, так как присутствие в программе похожих выражений не означает, что они вычисляют одинаковые значения. Например, в последовательности
X = Y*Z —U
V = Y
. Y=Y+2.-Y*Z
W=Y*Z + Z*V
нельзя заменить Y*Z одной переменной, поскольку в третьем операторе происходит изменение значения Y. С другой стороны, в первом и четвертом операторах непохожее выражение Z*V на Y*Z вычисляет^ (из-за второго оператора) то же самое значение. Здесь повторные вычисления исключаются следующим образом:
T=Y*Z
X = T-U'
V = Y
Y = Y + 2.-T
W = Y*Z + T
Замена медленно выполняемых операций на более быстрые. Время выполнения арифметических операций различно, оно возрастает в следующем порядке:
сложение или вычитание,
умножение,
деление, возведение в степень.
Поэтому для небольших целых чисел N выражения вида
A*N; A**N
целесообразно заменять на
А+А+...+А; А*А*...*А
одновременно исключая повторные вычисления. Операцию деления целесообразно заменять умножением на обратную величину. Поясним эти рекомендации на примере:
С = А*2 + В;С=А+А+В
D=X* *2 + (Х* *3+4.)/Y; D = X*X+(X*X*X+4.)/Y
Е = (А + В)*(1.+Х* *4);Е = (А+В)*(1.+Х*Х*Х*Х)
где слева — фрагмент программы до преобразования, справа — после него. Затем из правого фрагмента, исключая повторные вычисления, получим более эффективную программу
Т = А + В
С = А + Т s=x*x R = S*X
118\
D = S + (R + 4)/Y
E = T*(1+R*X)
Замена операции деления иллюстрируется следующим примером:
X = A/Y;T=l./Y
Z = (A + B)/Y+SIN(1./Y);Х = А*Т
V = Z/Y;Z = (A + В) * T + SIN(T)
илиV = Z*T
A = B/2;A = B*0.5
Применение констант в арифметических выражениях. Если значения некоторых переменных в процессе вычислений не изменяются и они известны, то замена переменных константами в арифметических выражениях позволит увеличить быстродействие. Однако, как уже упоминалось выше, изменение значения такой константы может потребовать значительных усилий при исправлении текста программы.
Пример.
А=1;А=1
В = 2;В = 2
C = (A + B)*2 + Z;C = 6 + Z
D = A*A-Z;D=l-Z
Если необходимо будет заменить значение А = 1 другой константой, то в старом варианте следует исправить один оператор, а в новом— три.
Сокращение преобразований данных. При вычислении арифметических выражений, в которых участвуют переменные и константы разных типов (целые, вещественные, с двойной точностью, комплексные), происходит преобразование данных к одному типу, а затем выполнение операций. Поэтому, если позаботиться о том, чтобы в вычислениях как можно меньше смешивались типы данных, можно ускорить выполнение программы. Например, замена оператора
А=1о
следующим
А=1.0
исключает преобразование данных, если А имеет вещественный тип.
Сокращение индексированных переменных. Любое обращение к индексированной переменной (элементам массива) связано с выполнением команд, вычисляющих значение индекса и адрес переменной. Время на выполнение операции можно сократить, если удастся заменить в некоторых операторах индексированные переменные на переменные без индекса. Например, замена левого цикла на правый
DO 1 1 = 1,100;A(I)=X(I)+COS(X(I));B(I)=X(I)+SIN(X(l));CONTINUE;DO 1 1 = 1,100;A(I)=X(I)+COS(X(I));B(I)=X(I)+SIN(X(l));CONTINUE;DO 1 1 = 1,100 T = X(I) A(I)=T+COS(T)1 B(l)=T+SIN(T)DO 1 1 = 1,100 T = X(I) A(I)=T+COS(T)1 B(l)=T+SIN(T)
DO 1 1 = 1,100;
A(I)=X(I)+COS(X(I));
B(I)=X(I)+SIN(X(l));
CONTINUE;
DO 1 1 = 1,100;
A(I)=X(I)+COS(X(I));
B(I)=X(I)+SIN(X(l));
CONTINUE;
DO 1 1 = 1,100 T = X(I) A(I)=T+COS(T)
1 B(l)=T+SIN(T)
DO 1 1 = 1,100 T = X(I) A(I)=T+COS(T)
1 B(l)=T+SIN(T)
в четыре раза сокращает время на вычисление адреса переменной Х(1).
Однако этот пример может привести и к отрицательному эффекту: если вычисления производятся на ЭВМ с векторным процессором (так проявляется оптимизация без учета архитектуры ЭВМ), то левый цикл, как правило, будет предпочтительнее правого.
В дальнейшем рекомендации по преобразованию программ относятся к ЭВМ традиционной архитектуры с последовательным выполнением команд.
Улучшение структуры циклов. 1) Объединение циклов сокращает время на управление операторами цикла и необходимый объем памяти. Приведем два примера объединения.
Первый пример объединенные циклы
DO 1 1 = 1,100;
DO 1 1 = 1,100
1А(1)=1.;
A(I)=1.
DO 2 3 = 1,100;
B(I)=X(I)
2В(3) = Х(3);
1 CONTINUE
Второй пример
DO 1 1 = 1,100; '
DO 1 1=1,100
1A(I)=1.;
A(I) = L
DO 2 3 = 1,150;
1 B(I)=X(I)
B(J)=X(J); '
DO 2 3 = 101,150
2CONTINUE;
2 B(3)=X(3)
Развертка цикла сокращает время на организацию цикла. Например, развертка левого цикла в правый сокращает вдвое число операций приращения управляющей переменной и контроля на завершение: .
. DO 1 1=1,100;DO 1 1=1,99,2
A(I)=L;A(I)=1.
1 CONTINUE;1 A(I + 1)=1.
Но при этом увеличивается необходимый объем памяти.
Вывод из цикла неизменяемых выражений производится, если эти выражения постоянны внутри цикла. Например, замена
DO 1 1=1,1000;S = R*T
A(I)=X(I)+R*T;DO 1 1 = 1,1000
1 CONTINUE;1 A(I)=X(I)+S
сокращает время выполнения цикла на время, необходимое для выполнения 1000 умножений.
Разбиение цикла противоположно объединению. Разбиение целесообразно делать, если внутри цикла есть условный оператор с проверяемым условием, которое не изменяется в цикле. Например,
DO 1 1=1,100
IF (A.GT.O.) X(I) = Y(I)
X(I)=0.
CONTINUE
Условный оператор IF выполняется 100 раз, хотя можно преобразовать программу так, что он будет выполняться только один раз
IF (A.GT.0.) GO ТО 1
GO ТО 3
DO 2 1 = 1,100
X(I)=Y(I)
GO TO 5
DO 4 1 = 1,100
X(l)=0.
CONTINUE*
Время выполнения этого фрагмента уменьшается за счет увеличения необходимой памяти.
Правильное вложение циклов может увеличить быстродействие программы за счет уменьшения числа операций инициирования цикла. В следующем примере
DO 1 1=1,100;DO 1 1=1,10
DO 1 J=l,10;DO 1 J= 1,100
1 A(I,J) = 0.;1 A(J,I) = 0.
левый внутренний цикл инициируется 100 раз, а в правом—10 раз.
Наконец, следует придерживаться простого правила: короткие циклы применять нецелесообразно, так как затраты на их организацию сравнимы с выполнением операторов цикла.
Ускорение на передачах управления. Различные операторы передачи управления:
безусловный оператор GO ТО,
логический оператор IF, арифметический оператор IF
— отличаются по своему быстродействию. Выше приведен список в порядке убывания быстродействия. Однако для некоторых ЭВМ последние два оператора меняются местами. Кроме того, для некоторых ЭВМ в условных операторах перехода сравнение с нулем выполняется значительно быстрее, чем с другим выражением. Это связано с использованием какой-либо быстрой команды. Поэтому оператор
IF (I.GT.J) X=l.
будет выполняться медленнее следующего оператора
IF (I-J.GT.0) Х=1.
Ускорение на передаче управления можно получить, разбивая логическое выражение на составляющие, в том случае, когда результат логического выражения может быть уже известен, но оно продолжает вычисляться. Например, оператор
IF (A.GT.B.OR.C.LT.D) GO ТО 1
разложенный на два оператора
IF (А.бт.В) GO ТО 1
IF (C.LT.D) GO TO 1
в том случ^е^ когда A>B, не требует выполнения второго оператора.
Ускорение передачи аргументов в функции-подпрограммы и подпрограммы. Фортран содержит два основных способа обмена информацией между подпрограммами: через COMMON-блоки и через аргументы. Ниже приведены два указанных варианта:
COMMON /BLOCK/A,B,C,D; DATA А,В,C/О., 1.,2./
DATA А,В,C/О., 1.,2./;CALL S(A,B,C,X)
CALL S(X);Y = SIN(X)
Y = SIN(X);
В зависимости от трансляции эти два способа передачи могут сильно отличаться по затратам времени и требуемой памяти. Как правило/ первый способ предпочтительнее второго, поэтому целесообразно минимизировать число элементов в списке аргументов, размещая часть аргументов в COMMON- блоки.
Причина преимущества передачи аргументов в первом варианте заключается в том, что в вызывающей программе сначала накапливаются требуемые аргументы для замены формальных параметров (так же как и COMMON-переменных), но затем необходимо выполнить дополнительную работу, чтобы построить таблицу адресов аргументов и указатель на эту таблицу. В вызываемой программе таблица восстанавливается для определения места аргументов.
Оптимизация ввода—вывода. Обратим внимание на следующие аспекты ввода—вывода, которые повышают эффективность этих операций.
Простота списков ввода—вывода. Каждый элемент списка требует обращения к программе ввода—вывода библиотеки фортрана, которая, в свою очередь, вызывает системные программы. Поэтому, например, вывод на печать с помощью операторов
’ \ REAL A(100),B(100);REAL A(100),B(100)
( WRITE (6,) A,B;WRITE (6, *)(A(l),B(l),I =
= 1,100)
в варианте слева потребует двух обращений к программе вывода, в варианте справа —200 обращений.
Учет формы хранения массивов в памяти. Эффективность ввода—вывода массивов резко падает, если список не соответствует принятому способу хранения массивов в памяти на фортране. Например, вывод
WRITE (6,*) ((A(I,J),J = 1,20),!= 1,20)
будет менее эффективным, нежели
WRITE (6,*) ((A(I,J),I = l,20),J= 1,20)
поскольку в памяти двумерные массивы запоминаются по столбцам, а не по строкам.
Бесформатный ввод—вывод промежуточных результатов. Бесформатный ввод—вывод определяется в 3.5. Он служит для записи и чтения данных на внешней памяти без всяких преобразований (во внутреннем машинном представлении). Форматный ввод—вывод нужен только для пользователя, но не для программы. Так как преобразования в соответствие с форматом сопряжены со значительным числом операций и с увеличением необходимой памяти, то от него следует отказаться, если данные имеют смысл промежуточных.
Например, для хранения вещественного числа без формата требуется 4 байт, с форматом Е15.7 необходимо 15 байт.
Наконец, при форматных преобразованиях может теряться точность представления чисел, а этого всегда следует избегать.
Экономия бумаги. Если при работе на дисплее возможен вывод по одному значению в строке, то такая манера выдачи на бумагу АЦПУ достойна осуждения, поскольку приведет к большому расходу бумаги. Следует познакомиться с числом позиций в строке АЦПУ, доступных для вывода (обычно 128 или 132), а затем, используя список вывода и оператор FORMAT, так расположить информацию, чтобы максимально использовалась вся доступная площадь бумаги.
PROGRAM;
CHARACTER;
IMPLICIT;
PARAMETER;
INTRINSIC;
PRINT*;
READ *;
ENTRY SAVE OPEN CLOSE INQUIRE •EQV.
NEQV.
структурный логический оператор
IF ... THEN
ELSE ... THEN
... J
ELSE ...
ENDIF
и управление вводом—выводом файла.
Таким образом, в 3.2 рассмотрены не все элементы и фортрана 66. Если при решении задачи (чтении чужих программ) окажется необходимым освоить элементы, не рассмотренные в настоящей книге (см. Приложение 2), то следует обратиться к [13].
Из новых элементов фортрана 77 отметим три наиболее существенных, которые принципиально расширили возможности фортрана 66.
Это символьный тип данных CHARACTER и операции с ним. Символьный тип данных наиболее часто употребляется в программах обработки текстов, создании текстовых процессоров. В программах научно-технических расчетов символьный тип данных обычно используется в комментариях, для которых вполне достаточно средств фортрана 66. Поэтому этот элемент фортрана 77 здесь не рассматривается.
Следующий принципиально новый элемент (который часто называют основным отличием этой версии фортрана)—это структурный логический оператор. Неудобство старого логического оператора состоит в том, что после логического выражения
IF (лог. выр.) выполняемый оператор
может стоять лишь один выполняемый оператор, что влечет за собой частое применение оператора GO ТО. Программа с большим количеством операторов GO ТО, как правило, плохо читаема и не удовлетворяет современным требованиям к стилю программирования. Структурный логический оператор значительно уменьшил частоту употребления в программах оператора GO ТО.
Наконец, третьим, существенно новым, элементом являются средства управления вводом—выводом файла. В 50—60-е годы основными носителями информации для ввода данных и программ были перфокарты, вывод результатов производился на АЦПУ или на перфокарты. Это наложило отпечаток на конструкции ввода—вывода фортрана 66. В настоящее время перфокарты 124\
Л.
практически вышли из употребления, используются магнитные носители—ленты, диски разнообразной конструкции. Ввод программ и данных производится с терминалов в файлы на магнитных носителях, непосредственно связанных с ЭВМ. Вывод результатов может быть произведен также в файлы, либо на терминалы. Такой ввод—вывод потребовал создания гибкой системы управления вводом — выводом файла, что и нашло свое отражение в фортране 77.
Структурный логический оператор. Структурный логический оператор имеет следующий вид:
IF (логическое выражение) THEN
ENDIF
На месте многоточия может находиться любое число операторов, которые должны выполняться, если логическое выражение истинно. Если выражение ложно, то управление передается на следующий за ENDIF оператор.
Пусть, например, требуется найти максимальный элемент последовательности х15 х2, ..., х100 и определить его номер в последовательности. Фрагмент программы, решающей эту задачу, может быть таким:
1М = 1
ХМ = Х(1)
DO 1 1 = 2,100
IF (XM.LTA(I)) THEN
IM = I
XM = X(I)
ENDIF
1 CONTINUE
Следующей конструкцией структурного логического оператора является
IF (логическое выражение) THEN
1-я группа операторов
ELSE
2-я группа операторов
ENDIF
Первая группа операторов выполняется, если логическое выражение истинно, вторая группа—если ложно. Эта конструкция полностью отвечает 2-й базовой логической схеме (см. гл. 2).
Например, вычисление функции
%<0,
можно оформить с помощью этой конструкции так:
REAL FUNCTION Y(X)
REAL X
IF (X.GE.0.) THEN
Y = EXP(-X*X)
ELSE
Y=EXP(X)
ENDIF
RETURN
END
«Хорошим стилем» в оформлении программ является сдвиг операторов, принадлежащих своему IF или ELSE, как это сделано выше в примере.
Наконец, пекледней конструкцией является вложенные логические операторы. Простейшей такой конструкцией является
IF (логическое выражение) THEN
ELSE IF (логическое выражение) THEN
ELSE
ENDIF
ENDIF
Заметим, что каждый оператор IF должен иметь закрывающий его оператор ENDIF, а после операторов IF, ELSE, ELSE IF могут отсутствовать операторы.
Например, вычисление функции
У = /^=*У = /^=*ех, х>2, sinx, 0<х<2, cosx, х<0,
У = /^=*
У = /^=*
можно оформить с помощью этой конструкции так:
REAL FUNCTION Y(X)
REAL X
IF (X.LT.2) THEN
ELSE IF(X.GE.O) THEN
Y=SIN(X)
ELSE
Y=COS(X)
ENDIF
ELSE
Y=EXP(X)
ENDIF
RETURN
END
Структурные логические операторы, образующие один уровень вложения, сдвигаются вправо на одинаковое число позиций. Например, если имеется три уровня вложения, то следует операторы представлять в форме
IF (LI) THEN gl
IF (L2) THEN g2
IF (L3) THEN g3
ELSE IF (L4) THEN g4 ELSE g5
ENDIF ELSE g6 ENDIF ELSE g7 ENDIF ENDIF
Заметим, что приведенная структура операторов эквивалентна логической схеме рис. 3.2, где L—логические выражения, g—операторы, истине логических выражений соответствует: да. Если, например, логическое выражение L1 ложно, то выполняется группа операторов g7 и затем происходит выход из всей схемы.
На основании приведенного примера можно заключить, что на фортране 77 можно написать достаточно сложные логические схемы, используя удобные структурные логические операторы.
В качестве основного ограничения использования вложенных логических операторов выступает следующее правило: недопустима передача управления извне IF или ELSE оператору, находящемуся внутри, т. е. без проверки логического выражения.
Ни один из операторов группы gl не может быть оператором GO ТО, передающим управление какому-либо оператору группы g2.
Рис. 3.2
Расширение возможностей ввода—вывода. Единицей ввода— вывода в фортране 77 является запись. Физическое представление записи зависит от конкретной ЭВМ. Записью может быть строка печати или строка файла на магнитном диске.
Записи делятся на форматные и бесформатные. Последняя запись файла называется записью конца файла. Файлу можно дать имя, связать с определенным каналом ввода — вывода с помощью логического номера устройства. Запись в файл можно ввести, вывести в двух режимах: в последовательном доступе, в прямом доступе. В последовательном доступе N записей переписывается в файл последовательно начиная с 1-й: 1, 2, ..., N, записи считываются также последовательно в том же порядке 1, 2, ..., N. В прямом доступе можно ввести и^и вывести любую запись, указав номер и, 1 < п < N.
Файл имеет указатель, который при первом обращении к нему или при открытии файла устаналивается на запись номер 1. При каждом следующем обращении указатель передвигается по записям до встречи записи конца файла.
В последовательном файле записи должны быть либо только форматные,, либо только бесформатные, длина записей может быть различной. В файле прямого доступа записи должны быть еще и одинаковой длины.
Обращение к файлам последовательного и прямого доступа — различное.
Общий вид операторов READ и WRITE в фортране 77 следующий:
READ ((управляющий список)) (список ввода), WRITE ((управляющий список)) (список вывода), где управляющий список может состоять из элементов
UNIT = , FMT = , REC = , END = , ERR = , IOSTAT = или в переводе на русский язык
устройство = , формат = , запись = , конец файла = , ошибка = , статус вв-вы=;
в правой части равенства помещаются элементы согласно Приложению 2.
Частным случаем ввода, вывода форматной записи является рассмотренный в 3.2. пример
READ (UNIT = 5, FMT=1) X, Y
1 FORMAT (2F6.3)
WRITE (UNIT = 6, FMT=1) А, В, C
где опускались левые части равенств управляющего списка
READ (5, 1) X, У 1 FORMAT (2F6.3) WRITE (6, 1) А, В, С
Эта форма правильна и в фортране 77, но если в управляющем списке отсутствует UNIT = , то номер устройства должен стоять \
на первом месте, если отсутствует FMT = , то метка формата должна быть на втором месте списка. Например,
READ (5, 1, REC=15, IOSTAT = I, ERR=10, END = 20) X означает ввод на устройстве 5 по формату с меткой 1 записи 15, в случае ошибки переменной I будет присвоено положительное значение, равное индексу ошибки ввода, или отрицательное, если обнаружен конец файла, при безошибочном вводе или если не найден конец файла переменная I будет равна нулю.
Меткой 10 помечен оператор, на который передается управление в случае ошибки, меткой 20 — оператор, которому передается управление, если обнаружен конец файла.
Если ввод осуществляется из бесформатного файла, то простейшая форма оператора READ (без контроля ошибок ввода и конца файла) может быть такой:
READ (5) А
Здесь 5—логический номер устройства, с которого будет считана очередная запись для элемента А.
При бесформатном вводе—выводе экономится время выполнения этих операций за счет отказа от преобразования данных, обеспечивается большая точность в выведении данных и, как правило, экономится место, требующееся для хранения файла. Бесформатный ввод—вывод обычно используется, когда вывод данных из некоторой программы впоследствии должен быть вводом в эту или другую программу.
Операторы OPEN, CLOSE. Прежде чем файл окажется доступным для операторов ввода—вывода (READ, WRITE) на логическом устройстве, файл должен быть создан и связан с этим устройством. Обычно это можно сделать вне фортран-программ, в рамках операционной системы: устройство 5 связывается с вводом—выводом на дисплее, 6—с АЦПУ. Поэтому операторы READ, WRITE будут передавать данные по этим каналам (5, 6) без каких-либо усилий со стороны пользователя.
Однако если требуется несколько каналов ввода — вывода в программе, то необходимо уметь управлять связью файлов из самой программы. Это, например, делают, чтобы сохранить промежуточные результаты программы в файле данных для дальнейшего продолжения вычислений.
Оператор OPEN (открыть) создает новый файл и связывает его с устройством либо связывает с устройством уже существующий файл. В любой момент один файл должен быть связан только с одним каналом.
К концу выполнения программы все открытые файлы программа должна сама закрыть (хотя закрыть может и операционная система, но это плохой стиль программирования).
Оператор OPEN имеет следующий вид:
OPEN «список открытия»
UNIT = 8FILE='INTEGRAL'STATUS = OLD}ACCESS = SEQUENTIAL'FORM = FORMATTED'RECL = 80BLANK = ZERO' .ERR =10, IOSTAT=IUNIT = 8FILE='INTEGRAL'STATUS = OLD}ACCESS = SEQUENTIAL'FORM = FORMATTED'RECL = 80BLANK = ZERO' .ERR =10, IOSTAT=I
UNIT = 8
FILE='INTEGRAL'
STATUS = OLD}
ACCESS = SEQUENTIAL'
FORM = FORMATTED'
RECL = 80
BLANK = ZERO' .
ERR =10, IOSTAT=I
UNIT = 8
FILE='INTEGRAL'
STATUS = OLD}
ACCESS = SEQUENTIAL'
FORM = FORMATTED'
RECL = 80
BLANK = ZERO' .
ERR =10, IOSTAT=I
Список открытия может состоять из элементов
UNIT = , FILE=, STATUS = , FORM = , BLANK=, ERR = , IOSTAT;
здесь в правой части равенств помещаются элементы согласно приложению 2, определяющие список открытия. Например,
— номер устройства,
имя файла, который должен быть связан с устройством 8; если файла не существует, то он создается;
файл существует; если не существует— указать «NEW»; если создается временный с удалением после закрытия — указать «SCRATCH»;
файл последовательного доступа; если прямого — указать «DIRECT»;
доступ с форматным вводом— выводом; если с бесформатным — указать «UNFORMATTED»;
длина записи в символах для файлов прямого доступа, для последовательного доступа описатель опустить;
все пробелы в числовых полях будут интерпретироваться нулями; если нужно, чтобы пробелы игнорировались, указать «NULL»
имеют тот же смысл, что в п. 3.5.3.
Этот файл может быть прочитан с помощью форматных операторов ввода—вывода, например таких:
READ (8, 1) (A,(J), J=l, 16)
FORMAT (F5.3)
Файл отсоединяется от устройства с помощью оператора CLOSE. Оператор имеет следующий вид:
CLOSE (<список закрытия»
Список закрытия может содержать следующие элементы:
UNIT = , IOSTAT = , ERR = , STATUS =
Все элементы, кроме последнего, уже были определены.
130
STATUS ='KEEP' — файл сохраняется после закрытия;
«DELETE», если файл должен быть удален; если этот элемент опущен, то будет использован «KEEP».
Например, закрытие файла (без контроля ошибок) с сохранением на устройстве 8 можно выполнить оператором
CLOSE (8)
Вычисления с двойной точностью. Для оценки вычислительной погрешности бывает необходимо преобразовать программу, выполняющую вычисления с одинарной точностью, в программу, вычисляющую с двойной точностью. Для этого следует:
преобразовать все вещественные константы в константы с двойной точностью, например
—6->l.D —6
Описать все вещественные переменные, массивы как переменные двойной точности, например
REAL А, X (8)-DOUBLE PRECISION А, Х(8)
преобразовать спецификации форматов ввода—вывода к двойной точности; данные двойной точности вводятся и выводятся с помощью спецификации формата
Dm.n
где т— общее число позиций, и — число цифр после десятичной точки. Эта спецификация аналогична формату Етл с учетом того, что теперь увеличивается возможное количество знаков после десятичной точки до 17; например, возможно задать такой формат
D20.13
Использовать во всей программе функции двойной точности, для этого библиотечные функции необходимо заменить на стандартные функции двойной точности, такие, как
DSQRT, DEXP, DCOS
а функции-подпрограммы употреблять с описанием типа, например DOUBLE PRECISION SMALL (А, В)
Обобщение описания размерности. В фортране 77 размерность можно описывать задавая верхнюю и нижнюю границы. Например, для одномерного массива А можно описать размерность в форме
DIMENSION А^: и2)
где nls и2 могут быть целыми арифметическими выражениями. Если и1 опускается, то, как и в фортране 66, нижней границей считается 1.
Так как nv п2— выражения, то они могут принимать отрицательные, нулевые и положительные значения: должно быть только «2>«Р
Например, оператор
DIMENSION А(-2:2) описывает массив из пяти элементов
А(—2), А(—1), А(0), А(1), А(2), а оператор
DIMENSION A(0:2*N+l)
при N = 2 описывает массив из шести элементов
А(0), А(1), А(2), А(3), А(4), А(5)
Последний призер указывает, что такое расширение описания удобно в алгоритмах вычислительной математики, где часто нумерацию элементов массива начинают с нуля.
Фортран 77 допускает употребление семимерных массивов в отличие от трехмерных фортрана 66.
Оператор цикла. Запись оператора цикла DO следующая:
DO ns 1=тъ m2> ^з
здесь n—метка последнего оператора цикла, i—переменная целого, вещественного типа или двойной точности; mv т2, т3— арифметические выражения над величинами целыми, вещественными или двойной точности. Например, возможен такой оператор цикла
DO 2, Х = Х0, XI, -Н
Еще одним важным отличием оператора цикла фортрана 77 является то, что цикл может ни разу не выполняться. В фортране 66 цикл по крайней мере выполняется один раз, так как проверка значения переменной / цикла производится в конце цикла (не превышает ли i значение т2\ поэтому в фортране 66 цикл
DO 2 1 = 1, О
один раз выполняется. В фортране 77 такая проверка осуществляется перед выполнением цикла, а выход из цикла происходит, если 1>т2.
Кроме того, переменная i сохраняет свое значение после выхода из цикла и может использоваться в следующих операторах. Таким образом, операторы
DO 2 1=1, 100
CONTINUE M = I
приведут к тому, что переменной М будет присвоено значение М = 101.
Запятая в операторе после метки и не является обязательной, но она оберегает пользователя от некоторых возможных ошибок, которые не просто обнаружить.
\ 132
Глава 4СИСТЕМНЫЕ И ИНСТРУМЕНТАЛЬНЫЕПРОГРАММЫ
• 4.1. Введение
Три типа программ. Все используемые на ЭВМ программы могут быть разделены на три типа:
прикладные программы;
системные программы;
инструментальные программы.
Прикладные программы разрабатываются для решения на ЭВМ конкретных научно-технических задач, как правило, специалистами той предметной области, где используются результаты вычислений. Например, прикладные программы решают задачи тепломассопереноса в реакторах АЭС, устойчивости системы управления летательных аппаратов, надежности строительных конструкций, управления объектами в реальном масштабе времени и т. п. Прикладные программы создаются на различных языках программирования, в частности на фортране.
Разработка прикладного программного обеспечения решения задач—наиболее массовый вид программирования, которым заняты большинство специалистов—непрофессионалов в программировании.
Два других типа программного обеспечения (системные и инструментальные программы) разрабатываются профессиональными программистами.
Системные программы выполняются вместе с прикладными программами и служат для управления ресурсами ЭВМ — центральным процессором, памятью, вводом—выводом. Это программы общего пользования, которые предназначены для всех пользователей ЭВМ. Системное программное обеспечение разрабатывается так, чтобы ЭВМ эффективно могла выполнять различные прикладные программы. Оно состоит из двух больших групп программ:
операционные системы (ОС);
системы управления базами данных (СУБД).
Вторую группу системных программ (СУБД) мы не рассматриваем; основные задачи ОС излагаются ниже.
Инструментальные программы—это программы, которые не участвуют на этапе выполнения прикладной программы, но служат Для разработки прикладных (и системных) программ. К инструментальным программам, например, относятся:
редакторы;
трансляторы;
программа-библиотекарь;
отладочные программы;
графические пакеты программ;
построители блок-схем.
Наиболее широко из инструментальных программ используются редакторы и трансляторы с языков фортран, паскаль и т. п.
Операционная система. Название большого набора программ— операционная система—связано с тем, что до появления таких программ соответствующую работу выполняли операторы ЭВМ. Перечислим основные задачи, решаемые ОС.
Управление ресурсами ЭВМ: регистрация и реакция на аппаратные сбои, распределение заданий разных пользователей, реакция на прерывания; составление расписаний работ; распределение памяти/ внешних устройств.
Дополнение к прикладным программам: загрузка прикладных программ; связь различных частей программ; управление вводом—- выводом.
Управление хранением данных и программ: хранение данных и программ, не зависимое от физических устройств.
Управление связью между программами, выполняемыми на различных вычислительных устройствах.
Взаимодействие пользователя и ОС через терминалы (алфавитно-цифровые дисплеи, графические дисплеи и т. п.).
Защита программ и данных от несанкционированного доступа.
Диагностика аппаратуры, данных и программ, восстановление, дублирование программ, данных и аппаратуры.
Следует заметить, что ОС выполняют фактически коллективное обслуживание различных пользователей с основной целью — максимально загрузить ЭВМ. Эта цель, как правило, вступает в противоречие с целью пользователя, который предпочитает монопольно владеть всеми ресурсами машины. Поэтому следует ясно представлять, что за услуги ОС необходимо платить пользователю уменьшением оперативной памяти на величину, где размещается ядро ОС, уменьшением размера внешней памяти, где располагается остальная часть ОС. Очевидно, что уменьшается быстродействие прикладной программы, поскольку часть времени работы ЭВМ тратится на выполнение программ ОС. И все же эти издержки обходятся пользователю гораздо дешевле, чем разработка собственных программ, выполняющих некоторые функции ОС.
Пользователю ЭВМ важно знать характеристики различных ОС, которые могут работать на одной и той же аппаратуре, чтобы выбрать (если имеется такая возможность) наиболее подходящую для решения своих задач. Пользователь должен иметь достаточную информацию об ОС, которая применяется на машине, чтобы знать, почему, как и когда что-либо происходит в системе.
\
ТЕРМИНАЛТЕРМИНАЛБУФЕРБУФЕРS\i——- k\ файл входнойS\i——- k\ файл входнойРЕДАКТОРРЕДАКТОРОПЕРАТИВНАЯПАМЯТЬОПЕРАТИВНАЯПАМЯТЬФАЙЛ ВЫХОДНОЙФАЙЛ ВЫХОДНОЙ
ТЕРМИНАЛ
ТЕРМИНАЛ
БУФЕР
БУФЕР
S\i——- k\ файл входной
S\i——- k\ файл входной
РЕДАКТОР
РЕДАКТОР
ОПЕРАТИВНАЯПАМЯТЬ
ОПЕРАТИВНАЯПАМЯТЬ
ФАЙЛ ВЫХОДНОЙ
ФАЙЛ ВЫХОДНОЙ
ФАЙЛ 1 ИНСТРУКЦИЯ К ПРОГРАММЕ B0A0
ФАЙЛ 2 НАБОРЫ НАЧАЛЬНЫХ ДАННЫХ К ПРОГРАММЕ B0A0
ФАЙЛЗ ТЕКСТ ФОРТРАН-ПРОГРАММЫ В0А0
ФАЙЛ 4 ТЕКСТ ГЛАВНОЙ ФОРТРАН-ПРОГРАММЫ, ИСПОЛЬЗУЮЩЕЙ 00А0
Рис. 4.1
Инструментальные программы. Рассмотрим программу редактор и программу-транслятор.
Программа редактор служит для формирования, исправления и хранения файлов, которые могут представлять собой наборы текстовой информации, наборы числовой информации, программы на алгоритмических языках (рис. 4.1). Процесс редактирования состоит из нескольких этапов:
открытие файла;
запись в файл;
редактирование (исправление) файла.
Если программа редактор готова принять команды редактирования файла, то она отводит рабочую область в оперативной памяти ЭВМ, называемую буфером. Информация, хранящаяся в буфере, не остается по окончании сеанса связи с ЭВМ. Для длительного хранения ее необходимо записать в файлы на дисках, лентах и т. п.
По командам пользователя можно открыть файл для редактирования—это входной файл. Информация по командам редактора поступает из входного файла в буфер редактирования, там обрабатывается и направляется в выходной файл (рис. 4.2). Есть специальные команды, по которым один и тот же файл объявляется как входным, так и выходным.
Существуют разнообразные редакторы, которые отличаются командами ввода информации, исправления ошибок (редактирования), но принципиального отличия они не имеют. Основные команды типичного редактора рассмотрены в 4.3.
Программа транслятор — это вторая из инструментальных программ, с которой пользователь работает после редактора.
Рис. 4.2
Рис. 4.3
Основной задачей транслятора является перевод программы, написанной на алгоритмическом языке, например фортране, в последовательность команд, почти готовых для выполнения ЭВМ. Оттранслированная программа называется объектным кодом.
Часто вместо транслятора употребляется инструментальная программа компилятор. Отличие программы компилятора от транслятора состоит в том, что компилятор кроме трансляции добавляет еще в программу нужные подпрограммы.
Транслирующая программа не может перевести исходную фортран-программу в форму, готовую для выполнения, хотя бы потому, что исходная программа может состоять из нескольких самостоятельных программных единиц, которые можно транслировать независимо. Следовательно, необходима еще программа—- компоновщик или, что то же самое, редактор связей, построитель. Работа с типичным построителем описана в 4.3.
Транслятор на входе имеет файл, содержащий текст фортран-программы, на выходе он может иметь два файла. В одном файле содержится объектный код, другой файл, называемый файлом листинга, содержит текст фортран-программы с указателями допущенных пользователем ошибок (рис. 4.3).
Транслятор обнаруживает как синтаксические ошибки (нарушение правил записи операторов), так и семантические (смысловые). К семантическим ошибкам относится, например, применение оператора GO ТО п с отсутствующей меткой п в тексте программы.
После трансляции, если есть ошибки, обнаруженные транслятором, пользователь выводит на терминал или АЦПУ файл листинга. Затем следует возвратиться на этап редактирования, исправить ошибки и вновь уже исправленную фортран-программу транслировать. Весь описанный процесс: редактирование и трансляция—- повторяется до тех пор, пока не будет получена безошибочная (с точки зрения транслятора) фортран-программа.
Таким образом, две инструментальные программы—редактор и транслятор — помогают пользователю подготовить прикладную программу для дальнейшего выполнения, т. е. проведения вычислений.
Не следует думать, что успешная трансляция программы—залог ее успешного выполнения. Программа будет выполняться с заданными входными числами, которые могут привести к ошибочным операторам, например, с точки зрения операций над числами 136
в ЭВМ: извлечение квадратного корня из отрицательного числа, выход за допустимый диапазон представления чисел (переполнение), логарифм отрицательного числа и т. п.
В этом случае необходимо тщательно проверить соответствие программы блок-схеме алгоритма. Поиски ошибок в программе и алгоритме составляет ту часть технологии вычислений, которую обычно называют отладкой.
Многие трансляторы предоставляют возможность специальным образом вводить отладочные операторы (например, операторы вывода), которые легко убрать из программы после отладки (см. 4.3).
• 4.2. Элементы операционных систем
Введение. В настоящем пункте рассматриваются следующие вопросы: почему, что и как происходит в операционных системах. Изучаются только основные задачи ОС из тех, что перечислены в п. 4.1.2, а именно управление: памятью, процессором, устройствами, файлами, системой.
Изложение ведется на уровне общих понятий, для изучения деталей можно обратиться к специальной литературе [12, 14].
Управление памятью. Оперативная память—это тот ресурс ЭВМ, без которого нельзя выполнить программу. В любой момент времени, за исключением нескольких, все ячейки не используются. Они служат для хранения данных и программ одного или нескольких пользователей. Программы, которые ожидают выделения оперативной памяти, расположены во внешней памяти (например, на дисках). Часть оперативной памяти занята ядром ОС. Ядро ОС—набор управляющих программ, постоянно расположенных в оперативной памяти и обеспечивающих функционирование ОС.
Существует несколько стратегий распределения памяти, являющихся важной характеристикой ОС. Мы рассмотрим одну из наиболее простых стратегий, а именно распределение разделами с фиксированными границами.
Пусть вся оперативная память содержит 256 К байт, ядро ОС занимает 32 К. Тогда можно оставшуюся часть памяти разбить, например, на четыре раздела (рис. 4.4), которые содержат: 1 раздел— 32 К, 2—4 раздела — 64 К. С каждым разделом связывается очередь задач, которые соответствуют по размеру памяти раздела. Затем специальная программа—загрузчик—считывает программу задачи, программы библиотеки, необходимые для нее, и настраивает (устанавливает физические адреса) на раздел выполнения.
Программа, подлежащая загрузке и настройке, как раз и есть программа в объектном коде, которая получается в результате работы транслятора.
Режим работы, при котором в оперативной памяти может находиться несколько программ, называется мулътипрограммирова-
БИБЛИОТЕКА » ПОДПРОГРАММ
Рис. 4.4
нием. Основная цель мультипрограммирования—максимально загрузить процессор. Действительно, если некоторая программа перейдет в неактивное состояние (например, ждет ввода), то в памяти всегда есть программа, готовая к выполнению, а следовательно, процессор будет хорошо загружен.
Важной проблемой мультипрограммирования является защита системных программ, а также программ пользователей в своих разделах от возможных обращений к ним из соседних разделов, что приводит к щорче программ и данных. Некоторые виды защиты реализуются аппаратно, некоторые выполняет ОС. Например, если из программы произойдет обращение к элементу массива, который при расчете его адреса оказывается в соседнем разделе, то ОС аварийно прерывает вычисления и выдает соответствующее сообщение.
Управление процессором. Процессор—ресурс ЭВМ, без которого нельзя выполнить программу. Выполнение программы называется процессом. Мультипрограммное использование одного процессора может создать иллюзию, что каждый процесс использует процессор независимо от остальных. Эту иллюзию создают программы управления процессором ОС, а именно: планировщик задач; диспетчер.
Планировщик выбирает из очереди задач программу и создает процесс, готовый к выполнению: выделяется оперативная память, внешняя память, файлы. Затем диспетчер управляет очередями готовых к выполнению процессов, выполняющегося процесса (только один) и заблокированных процессов, которые находятся в ожидании некоторого события (например, ввода или вывода). Наконец, планировщик завершает процесс после его полного выполнения.
Существуют различные процедуры организации работы диспетчера. Рассмотрим сравнительно простую и популярную цикличес- 138 .
кую процедуру. В ней каждому процессу по очереди выделяется одинаковый квант времени Az (0,1 — 1с), в конце которого, если процесс не завершился и не заблокирован, он снимается с процессора и ставится в конец очереди. В конец очереди ставятся появившиеся готовые и разблокированные процессы. Существенно влияет на управление очередью квант времени Az и смесь процессов (короткие или длинные по времени выполнения).
Для совместного функционирования диспетчера, выполняющегося процесса и ввода — вывода в ОС организуются прерывания. Прерывание—это передача управления из выполняемого процесса на процесс обработки прерываний. Прерывание происходит по сигналу от таймера, когда истек квант времени Az или по сигналу, что ввод—вывод завершен; это внешние прерывания. Прерывание может происходить из-за переполнения, деления на нуль, обращения к запрещенным ячейкам памяти т. п.
В момент прерывания аппаратура ЭВМ выполняет следующие действия:
в некоторую ячейку памяти заносится характеристика прерывания;
запоминается состояние прерванного процесса;
в счетчик команд заносится адрес, характерный для типа прерывания.
Затем выполняется программа обработки прерываний ОС, а также действия, соответствующие конкретному прерыванию, и возобновляется нормальная работа. В зависимости от типа прерываний процесс может быть продолжен, либо заблокирован, либо поставлен в конец очереди.
Управление устройствами. Управление работой устройств ЭВМ (алфавитно-цифровой дисплей, графический дисплей, магнитофон, АЦПУ и т. п.) осуществляется путем передачи им управляющих сигналов. Многие из устройств—электромеханические, не электронные и поэтому работают значительно медленнее, чем процессор, и, кроме того, асинхронно с ним. Эта несогласованность приводит к тому, что некоторое время процессор и устройство могут не быть в состоянии готовности обмениваться информацией. Операционная система должна сохранить в оперативной памяти данные, переданные процессором или устройством, но еще не полученные устройством или процессором. Такие области памяти называются буферами.
Чтобы согласовать работу быстрого процессора с медленными устройствами ввода—вывода (они должны работать параллельно с процессором), применяются аппаратные средства, называемые каналами или периферийными процессорами. Схема связи оперативной памяти (ОП) с устройством ввода—вывода (ВВ) через канал (К) показана на рис. 4.5, где УУ — устройство управления соответствующего ввода—вывода. Если канал могут попеременно использовать несколько медленных устройств, то он называется мультиплексным.
Рис. 4.5
Программы ОС, которые выполняют алгоритмы управления вводом—выводам, называются драйверами. Для каждого запроса ввода—вывода из выполняемой программы драйвер строит канальную программу или только ее часть, если тип устройства был известен транслятору (указали явно номер канала 6 в операторе WRITE (6, 1), 6-^ АЦПУ). Драйвер составляется для каждого типа устройства; эта программа обрабатывает прерывания возникающие, в частности, при ошибках ввода—вывода. Аппаратная часть системы ввода—вывода из-за присутствия механических деталей подвержена износу и приводит, как правило, к более частым сбоям в работе, чем электроника. Поэтому в драйвере предусматриваются повторные обмены, если обнаружена ошибка ввода — вывода, или прекращение процесса в случае неисправимой ошибки с предоставлением информации о виде ошибки.
Контроль правильности ввода—вывода осуществляется различными способами. Рассмотрим простейший контроль записи—чтения байта. К каждому байту добавляется информационный бит, который принимает , значение 0 или 1 в зависимости от содержимого байта, но всегда так, чтобы сумма битов была нечетной для любого байта (рис. 4.6). С помощью суммирования проверяется четность каждого байта в процессе чтения. Нарушение четности свидетельствует об ошибке, а драйвер должен прервать ввод— вывод и отреагировать на ошибку.
Управление файлами. Система управления файлами является частью операционной системы, которая освобождает пользователя от трудностей, связанных с хранением файлов вне ЭВМ, а также предоставляет возможность нескольким пользователям обращаться к одному и тому же файлу. Файловая система обеспечивает: 1) независимость от процессора и внешнего устрой
ства хранения файла, И * возможность обращения к файлу по сим- °волическому имени;
защиту информа-
•ции от сбоев техничес
ких средств и про- Ограмм, от несанкцио
XXнированного доступа
X
X
140140’ X.
140
140
КОРНЕВОЙ СПРАВОЧНИК
Рис. 4.7
к файлам; 3) простые средства общения пользователя с системой и эффективно распределяет внешнюю память под файлы.
Основные функции системы управления файлами делятся на два класса: пользовательские и автоматические.
По командам пользователя файл можно:
ПРОЧИТАТЬ; ЗАПИСАТЬ;
СОЗДАТЬ; УНИЧТОЖИТЬ;
КОПИРОВАТЬ; ПЕРЕИМЕНОВАТЬ.
Автоматические функции (без участия пользователя): ПЕРЕМЕЩЕНИЕ ФАЙЛА
к которому редко обращается пользователь, во внешнюю (более медленную) память;•
ДАМП ФАЙЛОВ
(сброс файлов на внешние носители для предотвращения потери информации);
ВЕДЕНИЕ КАТАЛОГА ФАЙЛОВ
состоит в организации системы файлов и хранении информации о них и их расположении в памяти. '
Каждый файл в операционной системе должен иметь уникальное имя. Это имя присваивается системой путем добавления к имени файла пользователя некоторых атрибутов самого пользователя (его кода) либо добавлением времени создания файла (в однопроцессорных системах).
Доступ к информации в файле осуществляется в два этапа:
определение по имени его расположения;
поиск записи по ее позиции в файле.
Первый этап выполняется с помощью каталогов, которые могут быть организованы различными способами. Например, при Древовидной организации каждая часть имени файла определяет ветвь, по которой следует перейти на следующий уровень дерева (рис. 4.7). Каждая вершина каталога является справочником соответствующего уровня, например, имя файла в двухуровневом
каталоге В; а на рис. 4.7. однозначно определяет путь по имени файла до его расположения.
Управление доступом к файлам осуществляется системой с помощью разбиения всех пользователей на классы. Обычно используются следующие четыре класса:
Владелец файла.
Друг владельца.
Назначенный пользователь.
Рядовой пользователь.
Пользователи разных классов имеют разные права доступа к файлу. Типичный список прав:
Нет пр^в.
Знание о существовании файла.
Можно выполнить программу, нельзя скопировать.
Можну прочитать файл, выполнить программу, скопировать.
Можно добавить данные в конце файла.
Корректировка файла.
Изменение защиты файла.
Уничтожение файла.
Обычно каждое право включает все права, предшествующие в списке. Защита файла устанавливается указанием верхнего уровня прав для каждого класса. Можно установить, например, соответствие: I—8, II—5, III—4, IV—3. Некоторые операционные системы право доступа к файлам определяют паролями, которые не разглашаются пользователями.
Управление системой. Операционные системы берут на себя большую «часть той работы, которую раньше выполнял оператор, но не всю. Соотношение между объемом, выполняемым на ЭВМ оператором, и операционной системой для разных систем сильно отличается.
В некоторых системах оператор включает ЭВМ, устанавливает носители информации, а остальное выполняет ОС; в других на оператора возлагается множество функций по поддержанию вычислительной системы.
В любом случае пользователь должен взаимодействовать либо с операционной системой, либо с оператором. Эти взаимодействия осуществляются на языке команд системы.
В диалоговом режиме запросы пользователя на языке команд обрабатываются при их появлении интерпретатором языка команд, иногда называемого оболочкой (в отличие от ядра). С помощью языка команд пользователь задает операционной системе программу действий. Такой язык может быть одновременно и языком программирования (как в системе UNIX). Большинство ОС предоставляют пользователю помощь по языку команд, которую можно получить командой HELP — «помоги».
Всюду в этом пункте предполагалось, что в памяти ЭВМ находится несколько программ, по крайней мере ядро ОС. Программы в память помещаются загрузчиком. Однако сам 142' х
загрузчик также когда-то должен быть загружен в оперативную память с помощью начального загрузчика. Эта процедура называется загрузкой ОС.
Потребность в загрузке ОС возникает: 1) после включения ЭВМ; 2) после обнаружения ошибок в работе ОС, которые не удается устранить другими способами. Число перезагрузок ОС в день определяет качество используемой системы.
Начальный загрузчик обычно реализуется аппаратно, вызывается нажатием клавишей в оперативную память и начинает выполнение программы вызова в память основного загрузчика. В функцию начальной загрузки входит очистка памяти («обнуление» содержимого всех ячеек).
Разработка операционных систем. Разработка операционных систем, как можно заключить из краткого описания решаемых ОС задач, довольно трудоемкое занятие, требующее высокой квалификации программиста. Небольшую ОС с ограниченными возможностями вполне по силам написать одному программисту. Для сравнения с ОС ЭВМ IBM-360, 370 приведем затраты на их создание, которые оцениваются несколькими миллиардами долларов в течение 25 лет. •
Как правило, разработку ОС обеспечивают создатели серии ЭВМ, поскольку без ОС машина не найдет широкого применения у пользователей.
В следующем пункте рассматривается ОС реального времени, устаналиваемая на серию мини-ЭВМ. Зарубежным аналогом является ОС RSX ИМ фирмы «DEC».
В последнее время получает все большую популярность операционная система UNIX (аналог ИНМОС), разработка которой не была связана с производителями ЭВМ. В ней нашли отражение последние достижения в теории программирования. Она может быть установлена на ЭВМ различных классов от микро- до супер-ЭВМ.
Возможно, что широкое распространение этой ОС в ближайшие годы потребует изучения именно этой системы уже на начальном этапе обучения. Подробнее познакомиться с ОС UNIX можно в [14]. о
• 4.3. Система реального времени
Введение. В этом разделе рассматриваются системные и инструментальные программы, которые обычно входят в операционную систему реального времени ОС РВ. Это одна из нескольких операционных систем, устанавливаемых на ЭВМ серии мини-машин СМ. Архитектура и состав технических средств таких машин описаны в гл. 1.
Как отмечалось в 4.2, инструментальные программы не относятся к операционной системе. Однако, если понимать под системой реального времени ОС РВ объединение системных
и инструментальных программ, т. е. систему программирования (вычислительную среду) ЭВМ, то обосновано совместное рассмотрение этих программных средств в 4.3.
Не все общие понятия, введенные в 4.1 и 4.2, нашли свое отражение в этом разделе. Более подробно с системой программирования ОС РВ, а также с другой системой ОС РАФОС для мини-ЭВМ можно познакомиться в [5, 7].
Общие сведения о системе. Операционная система реального времени ОС РВ предназначена для работы с вычислительными комплексами на базе серии микро- и мини-ЭВМ: «Электроника 60», НЦ-80, ДВК1 — ДВКЗ, СМ3, СМ 1300, «Электроника 100/16», СМ 4, СМ 1400 СМ 412, СМ 1420, СМ 1600, «Электроника 100/25», «Электроника *79».
Система рассчитана на работу с разнообразным оборудованием. Версия системы генерируется в зависимости от применения системы: от небольших систем для лабораторных исследований до больших систем обработки данных и управления.
Система ОС РВ ориентирована на магнитные диски и использует их как для сохранения системы и системных задач, так и в качестве основного носителя данных.
ОС РВ—мультипрограммная операционная система. Параллельное выполнение многих задач в режиме реального времени обеспечивается благодаря диспетчеризации, разбиению памяти на разделы, временной выгрузке задач на магнитный диск. Задача выполняется в разделе.
Система ОС РВ обеспечивает обслуживание многих терминалов, причем любой из них можно использовать в качестве командного терминала и вводить с него команды запуска, приостанова, отмены задачи.
Задачи в системе ОС РВ могут быть написаны на следующих языках программирования: макроассемблер, фортран, паскаль, бэйсик, кобол, си и др.
Минимальный комплект оборудования, необходимый для функционирования ОС РВ: центральный процессор, алфавитно-цифровой терминал, начальный аппаратный загрузчик, оперативная память (емкость 32 К байт или 48 К байт в зависимости от типа процессора), магнитный диск кассетного типа, таймер.
Максимальный размер оперативной памяти, например, для СМ 4 составляет 256 К байт, для «Электроники 79» — 4 М байт, из них 8 К байт отводится для адресации внешних устройств.
Система ОС РВ позволяет работать с гибкими дисками, перфоленточным устройством ввода—вывода, магнитной лентой, а также с другими устройствами из номенклатуры СМ ЭВМ.
144144Наименование внешних устройств. Во время генерации системы все внешние устройства, закрепленные за системой, полностью описываются. Каждому устройству дается двухбуквенное имя и обязательный одно- или двузначный восьмеричный номер устройства. (Например, DK3: —магнитный диск с номером 3). Если номер устройства опускается, система использует номер 0 по умолчанию.
144
144
\
Имена внешних устройств:
ТТ: —терминал,
LP: —АЦПУ,.
МТ:—магнитная лента,
DK:—магнитный диск кассетного типа,
РР: —устройство вывода на перфоленту, PR: —устройство ввода с перфоленты, DP: —пакетный магнитный диск.
Вводятся также псевдоустройства SY: и TI:
SY: —системное устройство. Обычно ему соответствует физическое устройство DK0:
TI: —терминал пользователя, за которым он работает.
Спецификация файла. Файл в ОС РВ, как и в любой файловой системе, имеет свое уникальное имя. Чтобы отличить файлы разных пользователей, вводится код идентификации пользователя (КИП), который состоит из двух восьмеричных чисел, разделенных запятой, каждое в диапазоне от 0 до 377.
Пример.
1,15
234,3
27,153
Каждый КИП связывается с каталогом (справочником) пользователя, который содержит имена файлов данного пользователя.
Любая системная программа в ОС РВ, которая обращается к файлам, делает это с помощью стандартной командной строки следующего вида:
ВЫВФ 1, ..., ВЫВФ N = BBФ 1, ..., ВВФ N
где ВЫВФ—спецификация (характеристика) выводного файла, ВВФ — спецификация вводного файла.
Каждая спецификация файла (вводного или выводного) имеет следующий формат:
УСТР: [КИП] ИМЯ ФАЙЛА. ТИП; ВЕРСИЯ/КЛЮЧ I .../КЛЮЧ N
где УСТР: —физическое устройство, которое содержит файл, например DK1:
КИП —код идентификации пользователя.
Имя —может содержать до 9 буквенно-цифровых символов. Имя файла и тип всегда разделяются точкой.
Пример.
PROG 1
TEST
BIGMACCMD
ТИП — может содержать до трех буквенно-цифровых символов, является средством для различения файлов с одним и тем же именем. Например, программа на фортране может быть названа TEST.FTN, в то время как файл, содержащий объектный код этой программы, может быть назван TEST.OBJ. Тип файла и версия всегда разделяются точкой с запятой.
ВЕР- — восьмеричное число, используемое для обозначения раз- СИЯ личных версий файла. Когда файл впервые создается, ему приписывается номер версии, равный 1. Номер версии находится в диапазоне от 1 до 77777 (восьмеричное).
Пример.
ТПХТ.Н^;5
TEXT.OBJ;21
КЛЮЧ—двухбуквенное имя в символьном коде идентифицирующее тип ключа. Пусть ключ обозначается SW. Тогда SW устанавливает действие ключа, /—SW или /NOSW отменяют действие ключа. За ключом могут следовать значения.
Пример.
/Т1:25: MAR: 84
/СР
/Ы:3
Примеры спецификаций файлов'.
DK0: [230,15] TEXT. FTN;3
Третья версия файла TEXT.FTN находится на магнитном диске DK0:b каталоге 230,15.
МТЗ: [1,200]DAN158.BIN;!
Первая версия файла DAN158.BIN находится на магнитной ленте МТЗ: в каталоге 1,200.
Если какие-то элементы спецификации файла не указаны, то операционная система присваивает этим элементам определенные значения. Ниже слева указана отсутствующая спецификация, справа— значение, присвоенное системой.
У СТР —SY0: (системное устройство),
КИП —КИП, с которым пользователь вошел в систему, ИМЯ —нет умолчания. Должно быть указано имя, ФАЙЛА * (неявное имя),
ТИП —умолчание устанавливается в зависимости от вызванной системной задачи,
ВЕР- —для вводных файлов—самый последний номер версии. СИЯ Для выводных файлов — последний номер версии +1, /КЛЮЧ—умолчание устанавливается в зависимости от вызванной системной задачи.
Пример.
Пусть пользователь вошел в систему с КИП, равным 3,162, и с помощью программы EDI (редактор текста) создал файл с именем TEXT.FTN. Тогда использование спецификации TEXT.FTN эквивалентно следующему:
SY0: [3,162]TEXT.FTN;!
В спецификации имени файла часто используется символ *, который означает любой элемент. С помощью этого символа пользователь может одной командой задавать действие для нескольких файлов.
Примеры.
*.FTN означает все файлы с типом .FTN, такие, как TEXT.FTN, PROG.FTN и т.п.
PROG1.* означает все файлы с именем PROG1 и любым типом, такие, как PROG1.FTN, PROG1.OBJ и т. п.
PROG1.FTN; * означает все файлы PROG1.FTN с любой версией, такие, как PROG1.FTN;12, PROG1.FTN;3 и т. п.
[ *, * ] TEXT. *; * означает файлы во всех каталогах с именем TEXT с любым типом и любой версией. •
3.5. Ввод с терминала. Имеется три типа отзыва, которые указывают, что терминал ожидает ввода:
Отзыв по умолчанию « > ».
Отзыв задачи «TSK > », где TSK—трехсимвольное имя задачи, например FOR > , ТКВ > .
Отзыв программы связи с оператором «MCR>».
Программа связи с оператором (интерпретатор команд MCR) обслуживает команды пользователя, вводимые с терминала.
Терминал, готовый принять незапланированный ввод, выводит символ « > ». Понятие «незапланированный ввод» предполагает, что нет специальной задачи, требующей ввод с терминала. Ввод, следующий за отзывом по умолчанию, всегда неявно предназначен для программы связи с оператором «MCR». Ввод после отзыва «TSK» предназначен задаче, выдавшей этот отзыв. Например, транслятор с фортрана выдает отзыв FOR >.
Для того чтобы явно передать управление программе связи с оператором, необходимо ввести CTRL/C (одновременно нажать клавиши CTRL и С). Выдается приглашение MCR >, т. е. программа MCR требует ввода.
Ввод для программы MCR есть командная строка, которая содёржит имя команды и требуемые параметры. Достаточно указать первые три буквы команды. Исключение составляет команда HELP. Имя команды отделяется от ее параметров пробелом. Параметрами команд MCR могут быть имя задачи, имя файла, спецификация устройства.
Примеры.
Вызвать транслятор с языка фортран
> FOR < CR >
Здесь < CR >—нажатие клавиши возврата каретки.
Распечатать на терминале текущие время и дату
>TIM < CR >
Для управления терминалом используются специальные символы. В табл. 4.1 приведены некоторые клавиши или комбинации клавиш терминала VDT (Видеотон). Ввод кода, как уже выше отмечалось, с помощью комбинации клавиш, например «CTRL/Q», производится путем одновременного нажатия двух клавиш: «CTRL» и «Q». В скобках указано наименование клавиш для терминала «Электроника».
3.6. Вход и выход в системе. Каждому пользователю, желающему работать в ОС РВ, администратор системы назначает КИП и пароль. Вход в систему осуществляется по команде HELLO программы MCR. Система-запрашивает ввод КИП и пароля.
Таблица 4.1
Ввод с клавиатуры
Действие
CTRL/C (СУ/С)
Вызывает передачу управления программе MCR
ТАВ (ГТ)
Вызывает перемещение к следующей позиции табуляции
CTRL/O
(СУ/О)
Используется для подавления и возобновления вывода на' терминал
RETURN (ВК)
Вызывает окончание ввода строки и возврат каретки к началу строки
LINE FEED (ПС)
Вызывает перемещение к первой позиции на следующей строке
DEL
(ЗБ)
Удаляет последний введенный символ
CTRL/S
(СУ/Q)
CTRL/Q возобновляет вывод, приостановленный по CTRL/S
CTRL/S (СУ/S)
Во время вывода вызывает приостанов вывода. Можно продолжить вывод по CTRL/Q
CTRL/U
(СУ/U)
Вызывает удаление вводимой строки до символа « > ». Сопровождается на экране как "] U
CTRL/Z (СУ/Z)
Используется для завершения задачи. Сопровождается на экране "| Z
148
\
Допустим, пользователю назначили КИП, равный 3,162, и пароль DIMA5. Тогда он может войти в систему следующим образом:
>_ HEL 3,162 < CR >
PASSWORD: DIMA5 < CR >
Текст, выданный системой, здесь и ниже подчеркнут. Во время ввода пароля символы не отображаются на экране терминала.
После регистрации системой входа на терминал будет выведено: ОС РВ MULTI-USER SYSTEM
СООР MORNING
Дата время LOGGED ON TERMINAL имя терминала
Вывод подсказки « > » означает, что система готова к работе и ожидает ввод от пользователя.
. После окончания работы выход из системы осуществляется по команде BYE программы MCR:
> BYE < CR >
На терминал выводится сообщение о завершении работы данного пользователя:
HAVE A GOOD MORNING
Дата время имя терминала LOGGED OFF
Для того чтобы снова начать работать в системе ОС РВ с данного терминала, необходимо задать команду HELLO и т. д.
Процесс регистрации входа и выхода позволяет системе хранить информацию о каждом пользователе.
3.7. Подготовка программы на фортране для выполнения. Процесс подготовки программы можно представить в виде схемы рис. 4.8. Из схемы видно, что процесс подготовки состоит из нескольких шагов:
С помощью редактора текстов создается файл, содержащий исходный текст программы на фортране..
Транслятор с языка фортран преобразует исходный файл в файл в объектном коде.
Построитель задач преобразует файл в объектном коде в файл образа задачи, готовый к выполнению.
По команде RUN программы MCR файл образа задачи запускается на выполнение.
Для иллюстрации схемы прохождения фортран-программы рассмотрим программу вычисления значения функции
/(х) = х2 + 0,01 sin(x)
в точке х0, значения х0 подлежит вводить с терминала,/(х0)—выводить на терминал.
РЕДАКТОР ТЕКСТА ( EDlT|
ИСХОДНАЯ ПРОГРАММАНА ФОРТРАНЕ
ТРАНСЛЯТОР ( FOR) |
ОБЪЕКТНЫЙ КОД |ОБЪЕКТНЫЙ КОД |РАСПЕЧАТКА ПРОГРАММЫ (ЛИСТИНГ)РАСПЕЧАТКА ПРОГРАММЫ (ЛИСТИНГ)
ОБЪЕКТНЫЙ КОД |
ОБЪЕКТНЫЙ КОД |
РАСПЕЧАТКА ПРОГРАММЫ (ЛИСТИНГ)
РАСПЕЧАТКА ПРОГРАММЫ (ЛИСТИНГ)
JJСИСТЕМНАЯ БИБЛИОТЕКА I* , 1СИСТЕМНАЯ БИБЛИОТЕКА I* , 1
J
J
СИСТЕМНАЯ БИБЛИОТЕКА I
* , 1
СИСТЕМНАЯ БИБЛИОТЕКА I
* , 1
ПОСТРОИТЕЛЬ ЗАДАЧ (ТКВ) |
КАРТА ПАМЯТИ |КАРТА ПАМЯТИ |гл
КАРТА ПАМЯТИ |
КАРТА ПАМЯТИ |
| ОБРАЗ ЗАДАЧИ
КОМАНДА MCR 1
ВЫПОЛНЕНИЕ ЗАДАЧИ |
Рис. 4.8
Этап 1. Вход в систему. Схема прохождения фортран-программы состоит из следующих этапов:
> HEL 3,162 <aCR >
PASSWORD DIMA5 < CR >
ОС РВ MULTI-USER SYSTEM
GOOD MORNING
Этап 2. Вызов программы «Редактор текста» (EDI), ввод текста программы:
> EDI PROG.FTN < CR >
CREATING NEW FILE
PAGE 0
INPUT
REAL XO,FX < CR >
READ (5,10)XO < CR >
10 FORMAT (E13.6) < CR >
FX=XO* *2+0.01 *SIN(XO) < CR >
WRITE (5,10) FX < CR >
END < CR >
< CR >
*EX < CR >
EXIT
Этап 3. Вызов транслятора с фортрана (FOR):
_ FOR PROG, LP: =PROG < CR >
Этап 4. Вызов построителя задач (ТКВ):
ТКВ PROG = PROG < CR >
Этап 5. Запуск задачи на выполнение:
^ RUN PROG < CR >
После запуска задачи PROG на выполнение произойдет прерывание и задача перейдет в ожидание запланированного ввода значения х0 по заказанному формату Е13.6. Пусть требуется вычислить значение /(0,3). Тогда можно набрать на терминале
3.0Е-01 < CR >
После нажатия клавиши возвра/а каретки задача PROG выполняется и на терминал будет выведено значение /(0,3).
Чтобы вычислить значение /(0,5), потребуется новый запуск задачи на выполнение
RUN PROG < CR >
ввод с терминала значения 0,5 и т. д.
Завершается работа в системе выходом из ОС РВ.
Этап 6. Выход из системы
- BYE < CR >
HAVE A GOOD MORNING
Дата время имя терминала LOGGED OFF
Рассмотренные этапы 1—6 представляют собой простейший дисплейный сеанс пользователя в ОС РВ.
4.3.8. Редактор. Текстовый редактор в режиме диалога позволяет создавать или корректировать исходные программы и другие текстовые материалы в символьном виде,
Инструментальная программа текстовый редактор вызывается командой EDI программы MCR:
_> EDI < CR >
EDI >
В ответ на подсказку «EDI > » пользователь должен ввести спецификацию редактируемого файла, которая имеет вид
У СТР: [КИП] ИМЯ ФАЙЛА. ТИП
Пусть пользователь вошел в систему с КИП, равным 3,162, и системным устройством является DK0: . Тогда для создания в каталоге 3,162 на DK0: файла TEXT.FTN или для редактирования существующего файла с таким же именем в ответ на подсказку «EDI > » необходимо ввести следующую строку:
EDI > TEXT.FTN < CR >
Если создается новый файл, то редактор печатает
CREATING NEW FILE
INPUT
и переходит в режим ввода текста с терминала. Если файл с указанным именем существует, то текстовый редактор считывает в оперативную память (в блочный буфер) первый блок текста из файла (весь файл может состоять из одного блока), печатает
PAGE О
и в режиме команд ждет ввода первой команды.
Редактор- текста допускает два режима работы: режим команд и режим вво^а. Переход из режима команд в режим ввода осуществляется командой INSERT. Все строки, вводимые с этого момента, будут добавлены к файлу как новый текст, следующий за текущей строкой. Для перехода из режима ввода в режим команд необходимо ввести символ < CR > как первый символ в строке. Текстовый редактор выводит при этом символ подсказки «*», который означает, что установлен режим команд.
Указатель текущей строки всегда указывает на первый символ в строке. После считывания в блочный буфер первого блока текста из редактируемого файла указатель текущей строки устанавливается на начало первой строки. Некоторые команды редактирования могут перемещать указатель текущей строки.
Редактор можно вызывать укороченной командой, после которой не будет подсказки «EDI», например
> EDI TEXT.FTN < CR >
Основные команды текстового редактора
Все команды вводятся в ответ на приглашение «*». Имя команды отделяется пробелом от ее параметров, каждая команда заканчивается символом < CR > .
Команда PRINT (напечатать)
Формат: Р [N]
Команда распечатывает текущую строку и следующие за ней N— 1 строк на терминале. Последняя распечатываемая строка становится текущей. Если N не указано, то значение N подразумевается равным 1. Ввод CR эквивалентно команде Р 1.
Пример.
* РЮ < CR >
Распечатать на терминале 10 строк начиная с текущей.
Команда DELET (удалить)
Формат: D [N]
Команда вызывает удаление текстовых строк следующим образом:
Если задается «+N», то текущая строка и N—1 строк, следующих за текущей, удаляются. Текущей строкой становится строка, следующая за последней удаленной строкой.
Если задается «—N», то удаляются N строк, предшествующих текущей строке. Указатель текущей строки остается неизменным.
Если N не указано, то значение подразумевается равным +1.
Пример.
* D12 < CR >
Удалить 12 строк начиная с текущей.
Команда LOCATE (определить место)
Формат: [N] L подстрока.
Команда исследует блочный буфер начиная со строки, следующей за текущей строкой, и ищет строку, содержащую заданную подстроку (подстрока—часть строки). Числовое значение N, предшествующее команде, запрашивает поиск N-ro появления заданной подстроки. Указатель строки устанавливается на строке, содержащей указанную подстроку. Если N не указано, то значение N подразумевается равным +1.
Пример.
* L (AI.CT.X) < CR >
IF (ALCT.X) GO ТО 25
Команда CHANGE (заменить)
Формат: С/ПОДСТРОКА 1/ПОДСТРОКА 2
Команда осуществляет поиск подстроки 1 (часть строки 1) в текущей строке, и если находит ее, то заменяет на подстроку 2. Начальным и конечным ограничителем подстроки может быть любой символ, который не содержится в указанной подстроке, например, наклонная черта.
Пример.
Пусть исходный текст программы содержит строку
Х = Х —FI* ALPHA
тогда после выполнения команды
C/-FI/ + BETA < CR >
получим следующий результат:
Х = Х +BETA* ALPHA
Команда LINE CHANGE (заменить строку)
Формат [N] L С/ПОДСТРОКА 1/ПОДСТРОКА 2
Команда заменяет подстроку 1 на подстроку 2 в текущей строке и N—1 строках за ней. Если N не указано, то значение N подразумевается равным + 1.
Команда INSERT (вставить)
Формат: I
Команда устанавливает режим ввода. Может быть введен ряд новых строк, следующих за текущей строкой. Каждая вводимая строка заканчивается символом < CR > . Символ < CR > в качестве первого символа в строке вызывает возврат текстового редактора в режим команд и печать символа «*».
Пример.
Пусть исходная программа содержит строки
A = 0.5*SIN(ALPHA)
В = X+Y+А * COS(BETA)
и указатель строки установлен на первой строке. Тогда после выполнения команды INSERT
*
I <CR>
X = SQRT(TETA) < CR >
Y = 3.15/A+l. < CR >
< CR >
*
получим
A = 0.5 * SIN(ALPHA)
X = SQRT(TETA)
Y = 3.15/A+L
В = X + Y+A * COS(BETA)
"Команда NEXT (следующий)
Формат: N [M]
Команда передвигает указатель строки на М строк вперед или назад от текущей строки. Если М не указано, значение М подразумевается равным +1.
Пример.
* N 15 <CR>
Переместить указатель строки на 15 строк вперед относительно текущей строки.
Команда OVERLAY (перекрыть)
Формат: О [N]
Команда вызывает удаление N строк и замену их на любое количество строк, введенных пользователем. После удаления строк текстовый редактор переходит в режим ввода (см. команду INSERT). Если N не указано, то значение N подразумевается равным +1.
Пример.
Пусть исходная программа содержит строки
А=1.
154\
B = 3.1415*R1
C = SIN(BETA)
и указатель строки установлен на 2-й строке. Тогда после выполнения команды
* О < CR >
D = 8. < CR >
E=D*SIN(R1/R2) < CR >
< CR >
*
получим следующий текст:
A=l.
D = 8.
E = D*SIN(R1/R2)
C = SIN(BETA)
Команда BEGIN (начинать)
Формат: В
Команда устанавливает указатель текущей строки на начало блочного буфера.
Пример.
* В < CR >
Команда READ (читать)
Формат: REA [N]
Команда позволяет считать следующие N блоков текста из файла в блочный буфер. Указанное число блоков не должно превышать емкость буфера. Если в буфере уже есть блоки, то новые блоки добавляются к ним. Если N не указано, то значение N подразумевается равным +1.
Пример.
* REA 3 < CR >
Считать три блока текста из файла в блочный буфер.
Команда WRITE (записать)
Формат: W°
Команда записывает содержимое блочного буфера в выводной файл. Содержимое блочного буфера очищается.
Пример.
W < CR >
Команда RENEW (обновить)
Формат: REN [N ]
Команда записывает текущий блочный буфер в выводной файл и считывает новый блок из выводного файла. Процесс повторяется N раз. Последний блок остается в блочном буфере. Если N не указано, то значение N подразумевается +1.
Команда EXIT (выход)
Формат: EX ВЫВ.Ф
Команда передает все оставшиеся строки из блочного буфера и вводного файла (в том же порядке) в выводной файл, закрывает файлы и завершает редактирование. Если указана спецификация файла, то выводной файл переименовывается в соответствии с ней. В том случае, если спецификация не указана и редактировался существующий файл, выводной файл создается с тем же именем, что и вводной, а номер версии увеличивается на 1.
Пример.
*ЕХ PROG.FTN < CR >
Закончить редактирование и записать результат в файл с именем PROG.FTN
*ЕХ < CR >
Закончить редактирование и записать результат в файл с тем же именем, что и вводной, с номером версии на единицу больше.
Транслятор с фортрана. Транслятор с фортрана представляет собой инструментальную программу, вызываемую командой FOR программы MCR. Он создает из исходного файла, содержащего текст программы, файл в объектном коде.
>JOR < CR >
FOR >
В ответ на подсказку «FOR > » пользователь должен ввести командную строку,^ которая имеет вид
FOR > объектный, файл = исходный < CR > файллистинга файл
Транслятор можно вызвать укороченной командой
FOR объектный, файл = исходный < CR > файллистинга файл
Отличие этой команды и других аналогичных укороченных (в одну строку) команд состоит в том, что вызванные программы (FOR, ТКВ и т. п.) после выполнения работы удаляются из оперативной памяти. В то же время первый вариант команды оставляет транслятор в памяти и можно его использовать сразу же для трансляции других программных единиц.
Файл листинга содержит распечатку программы на фортране с указанием ошибок, которые были обнаружены в результате трансляции. Этот файл обычно выводится на терминал или АЦПУ.
Допускается указание одного или двух файлов вывода и только одного файла ввода.
156156Если явно не указан тип файла, то транслятор с фортрана ищет входные файлы с типом .FTN, а файлы в объектном коде создает с типом .OBJ.
156
156
4 \
Примеры.
Пусть пользователь работает в системе с КИП, равным 3,162, и файл TEXT.FTN содержит исходную программу.
FOR > TEXT,LP: =ТЕХТ < CR >
В результате трансляции файла TEXT.FTN в каталоге 3,162 образуется файл TEXT. OBJ; листинг программ выдается на АЦПУ.
Данная командная строка эквивалентна следующей:
FOR > SY0: [3,162]TEXT.OBJ,LP: = SY0: [3,162]TEXT.FTN
FOR > TEXT = TEXT < CR >
Создается только файл TEXT. OBJ, а листинг не выводится.
FOR > ,LP: = TEXT < CR >
Файл в объектном коде не создается, а листинг выводится на АЦПУ.
Если заменить LP: на TI:, то листинг будет выводиться на терминал пользователя.
В случае появления ошибок при трансляции программы необходимо исправить их (с помощью редактора EDI) и повторить процесс трансляции снова. Это процесс продолжается до тех пор, пока файл в объектном коде не будет содержать ошибок. Теперь файл в объектном коде можно обрабатывать построителем задач.
Для выхода из транслятора с фортрана (передача управления программе MCR) необходимо ввести CTRL/Z (VDT) или СУ/Z («Электроника») в ответ на подсказку «FOR».
Построитель задач. Построитель задач представляет собой системную программу, вызываемую командой ТКВ программы MCR. Он объединяет файлы в объектном коде для построения файла образа задачи.
>ТКВ < CR >
ТКВ>
В ответ на подсказку «ТКВ > » пользователь должен ввести командную строку, которая имеет следующий вид:
ТКВ > файл образа, файл карты = объектный < CR > задачи памяти файл(ы)
(возможен также укороченный вариант команды).
Файл образа задачи содержит задачу, готовую к выполнению. Файл карты памяти содержит распределение оперативной памяти для данной задачи. Файл карты памяти обычно выводится на терминал или АЦПУ.
Допускается указание одного или двух файлов вывода и одного или нескольких файлов ввода.
Если явно не указан тип файла, то построитель задач ищет входные файлы с типом .OBJ, а файл образа задачи создает с типом .TSK.
Примеры.
Пусть пользователь работает в системе с КИП, равным 3,162, и файл TEXT. OBJ—файл, полученный в результате трансляции файла TEXT.FTN.
ТКВ> TEXT/CP,LP: =ТЕХТ < CR >
В результате работы построителя задач из файла TEXT. OBJ в каталоге 3,162 образуется файл TEXT.TSK; карта памяти выводится на АЦПУ.
Данная команда эквивалентна следующей:
ТКВ > SY0: [3,162]TEXT.TSK/CP, LP: == SY0: [3,162 ] TEXT. OBJ < CR >
Ключ /СР Означает, что задача выгружаемая, т. е. в процессе решения данной задачи система может выгрузить ее из оперативной памяти на магнитный диск, чтобы предоставить место задаче с более высоким приоритетом. Рекомендуется всегда указывать, что задача выгружаемая, если она таковой и является.
Для построения образа задачи из двух (и более) объектных файлов их имена перечисляются после знака равенства в командной строке, например
ТКВ> TEXT/CP,LP: =ТЕХТ1,ТЕХТ2,ТЕХТЗ < CR >
В ОС РВ имеется FTB более быстрый, чем ТКВ, построитель задач, однако с ограниченными возможностями. Для применения этой программы следует всюду заменить ТКВ на FTB.
Для того чтобы построитель задач начал работу, после ввода командной строкй в ответ на приглашение «ТКВ > » необходимо ввести две наклонные черты //, что означает «Конец входных данных».
Окончательный вид командных строк следующий:
ТКВ > TEXT/CP,LP: =ТЕХТ < CR >
ТКВ> // <CR>
ТКВ> ТЕХТ/СР=ТЕХТ < CR >
ТКВ // < CR >
Построение образа задачи; карта памяти не выводится.
ТКВ> ,LP:=TEXT < CR >
ТКВ> // < CR >
Образ задачи не строится; карта памяти выводится на АЦПУ.
Для вывода карты памяти на терминал пользователя символы LP: необходимо заменить ца TI:.
После окончания работы ТКВ управление передается программе MCR.
Программа работы с файлами. Программа выполняет следующие функции:
копирование файлов с одного устройства на другое;
удаление файлов;
распечатка каталога файлов пользователя и др.
Программа работы с файлами вызывается командой PIP программы MCR.
^PIP < CR >
Р1Р>
Возможен укороченный вариант команды.
В ответ на подсказку «Р1Р > » пользователь должен ввести командную строку для программы PIP. Формат командной строки может быть различным в зависимости от функций, которые выполняются по этой команде. Выход из программы PIP осуществляется вводом CTRL/Z.
Во всех командах, описанных ниже, «ВВФ» и «ВЫВФ»—спецификации вводных и выводных файлов вида:
СТР: [КИП] ИМЯ ФАЙЛА.ТИП; ВЕРСИЯ/КЛЮЧ
Копирование файлов с одного устройства на другое
Формат командной строки:
ВЫВФ = ВВФ 1,ВВФ2, ...,BBФN
Примеры.
PIP> DXO: PRIM. DAT = DK2: TEXT.DAT < CR >
Копирование последней версии файла TEXT.DAT с DK2: в файл PRIM.DAT на гибком диске DX0:.
PIP > МТ1: NEWT.FTN = DKO:NEWTON.FTN < CR >
Копирование последней версии файла NEWTON.FTN с диска DK0: в файл NEWT.FTN на магнитной ленте МТ1:.
PIP> LP: = PROG.FTN < CR >
Печать на АЦПУ последней версии файла PROG.FTN.
PIP> TI: = *.LST < CR >
Печать на терминале последних версий всех файлов с типом .LST.
Удаление файлов
Формат командной строки:
ВВФ1,ВВФ2, ...,BBФN/DE
В спецификациях файлов номер версии должен быть указан явно или через * .
Примеры.
PIP> DK2:TEST.DAT;5/DE < CR >
Удалить версию 5 файла TEST.DAT на DK2: из каталога по умолчанию.
PIP> *.OBJ; *,*.TMP; */DE < CR >
Удалить все версии всех файлов типа .OBJ и .ТМР из каталога по умолчанию на устройстве по умолчанию.
Печать каталога
Формат командной строки
ВЫВФ = ВЫВФ1,ВЫВФ2, ...,BBФN/LI
Если спецификация выводного файла не указана, то распечатка выводится на терминал пользователя. Распечатка каталога содержит следующую информацию о каждом файле: имя файла, количество блоков, занимаемых файлом на магнитном диске, дата и время создания файла.
Примеры.
Р1Р> /Ц < CR >
Распечатка1 на терминале текущего каталога пользователя.
PIP> *.FTN/LI < CR >
Распечатка на терминале всех файлов из текущего каталога пользователя с типом .FTN на устройстве по умолчанию (SY0:).
Очистка каталога
Формат командной строки:
ВВФ1,ВВФ2, ...,BBФN/PU
Удаляются все версии файлов, кроме последней.
Примеры.
PIP> DKk*.FTN/PU < CR >
Удаление всех версий, кроме последних, файлов типа .FTN из текущего каталЬга пользователя на устройстве DK1:.
PIP> *.*/ри < CR >
Удаление всех версий, кроме последних, для всех файлов из текущего каталога пользователя на устройстве по умолчанию (SY0:).
Определение свободного пространства на диске
Формат командной строки:
VCTP:/FR < CR >
Распечатка свободного пространства (в блоках) на магнитном диске (выводится на терминал).
Примеры.
PIP> DK1:/FR < CR >
Распечатать свободное пространство на DK1: .
PIP> /FR < CR >
Распечатать свободное пространство на системном устройстве (SY0:).
Диагностика, исправление ошибок. Во время работы пользователя в ОС РВ возможны различные ошибки, которые система обнаруживает и выводит соответствующую диагностику на терминал.
160\
Ошибки, связанные с неверным употреблением команд для интерпретатора MCR или других программ системы (FOR, ТКВ, PIP), сопровождаются обычно информацией
ILLEGAL COMMAND—неверная команда
Чтобы получить сведения о правильном синтаксисе и семантике команды, применяется команда HELP—единственная, которую пользователь может выполнить до входа в систему. Формат команды
HELP параметр 1, ..., параметр 9
где список параметров определяет список команд, о которых пользователь желает получить информацию. Например, команда
HELP HEL, ABO, BYE
требует сообщить информацию о командах:
HEL—вход в систему,
АВО—снятие задачи с выполнения, BYE—выход из системы.
Выяснив правильные синтаксис и семантику команды, пользователь должен повторить ее на терминале.
Сообщения об ошибках транслятор с фортрана делит на два класса. Сообщения первой фазы трансляции выводятся в листинге сразу после ошибочного оператора и имеют вид
* * * * * Т
где Т—буквенный индекс ошибки (табл. 4.2). Ошибки первой фазы трансляции обнаруживаются просмотром части программы.
Таблица 4.2
ТТВ с Е НI К м р S иВ с Е НI К м р S иОшибка
Т
Т
В с Е Н
I К м р S и
В с Е Н
I К м р S и
Позиции 1—5 строки продолжения не пусты Недопустимое продолжение Отсутствует оператор END Слишком длинная текстовая константа Недопустимый символ Недопустимое определение метки Многократное употребление метки Несоответствие скобок Синтаксическая ошибка Недопустимый оператор
После просмотра всей программы обнаруживаются ошибки второй фазы. Сообщения об ошибках второй фазы выводятся в листинге после текста программы перед картой памяти и имеют вид
IN LINE п MSG # т текст
где п—номер ошибочного оператора, т—номер ошибки, текст — краткое описание ошибки.
1611616 Ю. П. Боглаев
161
161
Если во время трансляции, например, главной программы и подпрограммы PROG 1 были обнаружены ошибки и имеются предупреждения, то на терминал будет выведено сообщение, например, такого вида
.MAIN. ERROS: 3WARNINGS: 2
PROG 1 ERROS: 1 WARNINGS: 1
или
в главной программе ошибок : 3, предупреждений : 2
в PROG 1ошибок : 1, предупреждений : 1
Предположим, что команда для транслятора имела следующую форму:
> FOR PROG,PROG = PROG
Тогда после получения на терминале сообщения о наличии ошибок трансляции пользователь должен вывести листинг, например, на терминал
>PIP TI: = PROG.LST
Просматривая такой текст листинга, пользователь получает информацию о допущенных ошибках, переходит в режим редактирования
>EDI PROG.FTN
и исправляет их.
Диагностика построителя задач, указывающая на ненормальную форму завершения компоновки файла задачи, запрещает дальнейшее выполнение программы. Для простых по структуре задач, как правило, это связано с отсутствием достаточного непрерывного пространства на диске для образа задачи. В случае такой ситуации необходимо проверить свободное пространство командой
>PIP /FR
и, если необходимо, осуществить очистку диска командами PIP удаления файлов.
После запуска задачи на выполнения командой
>RUN PROG
где PROG—имя файла, содержащего образ задачи, возможно появление ошибок вычислений.
Если выполнение программы продолжается сверх ожидаемого интервала времени без диагностики ОС РВ, то, возможно, произошло зацикливание, т. е. в программе имеется ошибочное условие выхода из цикла, которое с имеющимися данными не может быть истиной. В такой ситуации следует прервать выполнение программы командой
>АВО PROG
где PROG—имя прерываемой задачи. Затем следует проверить фрагменты программы, связанные с организацией циклов.
\
Диагностика ошибок во время выполнения программы имеет следующий формат:
PROG—EXITING DUE ТО ERROR и
текст
AT PC = адрес
FCS: файл
IN PROG1 AT ml
FROM PROG2 AT m2
FROM PROGK AT mk
где PROG—имя выполняемой задачи; n—номер ошибки, которую объясняет краткий текст;
EXITING DUE ТО ERROR—выход по ошибке
AT PC=адрес в счетчике команд во время прерывания арифметических операций с плавающей точкой (деление на нуль, переполнение и т. д.) FCS: файл—имя файла, с которым связана ошибка ввода-вывода, если ошибка связана с вводом—выводом.
IN PROG1 AT ml
—ошибка произошла в программной единице с именем PROG1 в операторе номер ml, далее указывается цепочка вызовов программных единиц, приведшая к ошибке
из PROG2 вызов в операторе m2
из PROGK вызов в операторе тк
По этой цепочке вызовов можно пытаться найти причину появления ошибки, анализируя текст программы и требуемую логику ее работы.
6*
Глава 5
МЕТОДЫ ВЫЧИСЛЕНИЙ
• 5.1. Примеры
История и содержание предмета. Вычислительной математикой называют раздел математики, в котором изучаются разнообразные проблемы получения числовых результатов решения математических задач.
Если обратиться к истории математики, то можно заметить, что вычислительная математика превратилась в самостоятельную ветвь сравнительно недавно, где-то в середине нашего столетия. Этот факт в любом направлении науки связывается с появлением собственных внутренних задач, которые могут стимулировать исследователей этого направления практически без взаимодействия с соседними.
Вычислительная математика как часть математики имеет столь же древнюю и богатую историю, как и сама математика. Можно утверждать, что почти все результаты математики, которые носили конструктивный, формульный характер, ложились «в копилку» вычислительной математики. Евклидова геометрия и механика Ньютона, теория электромагнитного поля и квантовая теория построена на математической основе и дают мощные инструменты вычислений. Есть математические результаты, которые не могут быть прямо использованы в вычислениях; например, теорема о неразрешимости в радикалах общего алгебраического уравнения выше четвертой степени, теорема существования решения уравнения без предъявления алгоритма его построения и т. п. Следует все-таки признать, что деление математики на «чистую», прикладную, вычислительную отвечает скорее узкой специализации математиков, а не задачам, которые математика призвана решать. Для решения проблем естествознания, техники математика должна рассматриваться единой и неделимой. Только в этом случае использование результатов математики и ее неотъемлемой части—вычислительной математики—будет плодотворным и эффективным.
164164С появлением ЭВМ начался золотой век вычислительной математики, она бурно развивается. Ее приложения в науке и технике расширяются с каждым годом. Однако появилась реальная опасность отождествления с вычислительной математикой численных методов математики, как наиболее приспособленных к работе на машинах первых четырех поколений.
164
164
\
И до появления ЭВМ инженеры и ученые проводили довольно сложные вычисления и весьма успешно: была построена Эйфелева башня, были рассчитаны положения планет Плутон, Нептун, велись аэродинамические расчеты в самолетостроении. В чем же причина успехов вычислительной математики в те времена? Ответ здесь однозначный: причина успеха в применении всего арсенала математики того времени для решения задачи, в гибком сочетании аналитических и вычислительных методов. Прежде чем считать, необходимо было выполнить большую аналитическую работу—инструменты для вычислений не могли компенсировать, как сейчас, слабые методы вычислений.
Обратившись к периоду развития вычислительной математики после появления ЭВМ, можно увидеть, что наиболее яркие достижения в решении задач были получены именно теми учеными и инженерами, кто работал на ЭВМ, применяя все имеющиеся средства математики: «чистой», прикладной, вычислительной.
С точки зрения техники вычислений математика дает в ее распоряжение методы, которые условно можно разбить на следующие четыре группы: качественные, аналитические, методы возмущений и численные методы.
Примеры качественных методов. Примером качественных методов может служить следующая теорема алгебры:
всякий многочлен степени и > 1 с любыми числовыми коэффициентами имеет п корней, считая корень столько раз, какова его кратность.
Эта теорема не дает подходов для нахождения корней, но позволяет вычислителю определить число корней алгебраических уравнений.
Для отыскания замкнутых траекторий (предельных циклов) на плоскости применяется следующая теорема Бендиксона:
пусть в кольцевой области G нет точек xt, х2 таких, что /1(^1, х2) = ^ Л^!» х2) = 0,—точек покоя системы
-^=fAx^ х^ ^^(^i, ^з)-
Пусть все траектории этой системы, начинающиеся при / = 0 на границе G, остаются внутри G при всех Z>0. Тогда в G имеется по крайней мере один цикл.
Эта теорема относится к качественным методам исследования дифференциальных уравнений.
Теорема линейной алгебры о приводимости матрицы оператора А, действующего в и-мерном пространстве, имеющего п линейно независимых собственных векторов с собственными числами ^2, •, Х„, к диагональному виду
. о\о
относится также к качественным методам линейной алгебры. Эта теорема указывает канонический (простейший) вид матрицы
оператора в базисе из собственных векторов, но не дает метода построения этого базиса.
Примеры аналитических методов. Примером аналитических методов являются формулы решения квадратного уравнения х2+рх+ + #х = 0:
^1,2 = -р/2+^/2)2-^
—или формулы Кардано решения кубического уравнения.
Примером аналитических методов решения дифференциальных уравнений является метод разделения переменных. Например, решая этим методом задачу
J0<х^1,
имеем формулу
‘ .У=2/(2-х2).
Решение общих линейных систем обыкновенных дифференциальных уравнений в виде конечного числа формул может быть получено для систем не выше четвертого порядка (и ^4)
^=£а<Л+./М 0<х^1, ^(0) = 0
и только для тех правых частей f^xV которые интегрируются аналитически с множителями х™ехр(Хх). Это легко понять, если учесть, что для получения формул решения необходимо найти собственные числа матрицы А = а^ т. е. решить алгебраическое уравнение det(^-*X£') = O и-й степени, а это можно сделать в конечном виде только для и <4. Не следует при этом забывать, что для частных линейных систем может оказаться возможным представить решение конечным числом формул и для и >4.
Однако аналитические методы не ограничиваются рассмотрением алгоритмов с применением конечного числа формул, вводятся бесконечные процессы, предельные переходы, т. е. весь арсенал математического анализа.
Так, например, аналитическим- является метод последовательных приближений Перрона решения рассмотренной выше задачи Коши для системы линейных уравнений
^°>М=о, если правые части f^ допускают аналитическое интегрирование бесконечное число раз, т. е. известны формулы для интегралов
О00000
Например, это могут быть многочлены, тригонометрические функции и т. п. Тогда решение yt(x) записывается в виде (если существует предел)
уДх) = lim у*(х), O^x^l.
к—>оо
Аналитическим методом решения систем линейных уравнений
Ах — Ь
с определителем det А + 0 является правило Крамера
^1^2dn
*2”7’ Хп""Т
где d—определитель матрицы Л;
^1,1 ♦
#2,1 •
■• «и •
•• a2,j •
•• ^l,n
•• а2,п
ап,1 ••
• «nJ -
• ^n,n
определитель d5 получается из d заменой j-го столбца столбцом из свободных членов.
В тех случаях, когда правило Крамера легко применить (и мало), оно дает явное выражение решения системы через коэф- фициенты—элементы матрицы А и вектора Ь. При больших значениях п практически оно неприменимо и провести вычисления с его помощью не представляется возможным, так как количество слагаемых в определителях с ростом и растет как п\.
Это один из многочисленных примеров, когда аналитический метод не может быть положен в основу вычислений.
Примеры методов возмущений. Следующая группа методов, названная методами возмугцений, занимает промежуточное положение между методами, дающими точное и приближенное решение задач. Хотя методы возмущений относятся к аналитическим методам, они выделяются в особое направление как по большому и разнообразному математическому аппарату, так и тому месту в методах вычислений, которые они занимают.
Фактически методы возмущений представляют собой промежуточное, связующее звено между аналитическими и численными методами.
Термин «возмущение» обусловлен тем, что рассматривается обычно задача U^ зависящая от малого параметра |е|<$:1 (е может быть вектором), которая является возмущением предельной, невозмущенной (е = 0) задачи Uo. Решение задачи UQ предполагается известным. Методы возмущений дают различные подходы к решению Ue, при этом используется малость параметра возмущения £ и информация о решении предельной задачи Uo.
Приведем пример одного из методов возмущений, широко использующегося в вычислениях. Будем рассматривать невозмущенное уравнение, иллюстрирующее аналитические методы.
Пусть требуется решить алгебраическое уравнение
U£: 8х5+х2+/?х+^ = 0.(5.1.1)
где 8—малый параметр. Пусть невозмущенное уравнение
Uo: x2+px + q = 0, 1(5.1.2)
не имеет кратных корней (р2 #4) — д^0
= -р(2+x/p2)4-q, хТ = -^/2 - >Jp2]4-q.
Для двух из пяти корней уравнения (5.1.1) можно найти формулы в виде рядов по 8 (рядов возмущений), в пределе при 8->0 дающие корни невозмущенного уравнения (5.1.2): х^\ х^.
Метод возмущений сводится к представлению двух корней хДе), ^2(е) (5.1)1) в виде рядов
xY (е) = х^ + sxV* + £2х^ + 83х^3) +...,(5.1.3)
; х2 (е)=х?>+ех^+г2х^+83х^3) +...(5.1.4)
с неизвестными коэффициентами х^, х2\ /=1, 2, .... Подставим(5.1.3), (5.1.4) в (5.1.1), приравняем коэффициенты при одинаковыхстепенях малого параметра 8 и, таким образом, получим выражениядля последовательного определения х^\ х2\ Например, при е1 имеем8 (x(i0))5+82х^0)х^)+грх^ = О,8 (х^0))5 + е2х^0)х^1)+грхф = 0.
Отсюда находим
Х , 2х^ХХ ’2^Р^д’
2х^+р^>2^р^д’
Эти формулы дают выражения для двух корней (5.1.1) в первом приближении
(с) = -Р^+\/T14—q - е+о (е2), (5.1.5)
2Vp !4-q
^2 (с) = -1/2+JF14^"q - Е Lz^Z^^E^,+о (е2).(5.1.6)
ЧР 14-q
Можно доказать сходимость рядов (5.1.3), (5.1.4) для достаточно малых значений |е|. Однако формулы для приближений выше первого становятся громоздкими и на практике редко применяются.
Ряды (5.1.3), (5.1.4) определяют аналитическую функцию по 8, а методы возмущений, приводящие к таким рядам, называются регулярными методами возмущений.
Заметим, что оставшиеся три корня (5.1.1) не могут быть определены функциями без особенностей по 8. Три оставшихся
168
корня х3 (е), х4 (е), х5 (е) по 8 должны иметь особенность при 8=0, т. е.
НтхДе^оо, 7=3, 4, 5. £—0
Чтобы найти характер этой особенности, произведем в (5.1.1) замену
1
х=?у-
Получим
1 С 1Р^т/+^У +^+<7=0-1 С 1Р^т/+^У +^+<7=0-(5.1.7)(5.1.7)
1 С 1Р
^т/+^У +^+<7=0-
1 С 1Р
^т/+^У +^+<7=0-
(5.1.7)
(5.1.7)
Найдем показатель особенности v из условия, чтобы коэффициенты при старших степенях у в (5.1.7) имели одну и ту же особенность, т. е.
5v-l=2v, v=l/3.
Тогда замена приведет уравнение (5.1.1) к уравнению
Ие: ^5+у2 + 81/3^ + 82/3^г = 0,
для которого невозмущенное уравнение имеет вид >V у5+у2=0.
Выбирая из решений Уо ненулевые, находим
У^-1, у^>=-^, У?> =У^-1, у^>=-^, У?> =1-Уз/21-Уз/2
У^-1, у^>=-^, У?> =
У^-1, у^>=-^, У?> =
1-Уз/
2
1-Уз/
2
Теперь к задаче КЕ можно применить регулярный метод возмущений. Ищем три корня И£-у3(е), у4(е), у5(е) в виде рядов по степеням е1/3:
у 3 (е)=У01-Ьг^Ч82/W+е3'^3*+..., уД^у^е^+е^у^е^
У 5 (е)=^0)+е1/3^'+е2/W+^3,3у^+• - •
Так же как и выше, подставим эти ряды в Vt, приравняем коэффициенты при одинаковых степенях е1/3 и определим у^\ у^, у^, 7=1, 2, .... При е1/3 имеем:
е1/3 • 5 (у^уУ*+г^уЗДЧ^=0,
е1/3 • 5 (у ^)4у V*+е1/32у 2”у V»+е^ру =0,
е1/3 • 5 (у ?>)4у У >+г1131у № +^3РУ ^ = 0.
Отсюда находим
Учитывая связь между х и у, запишем приближения для трех корней уравнения (5.1.1) с точностью до О(е1/3):
Х3 (е)=^з ( -1 + е1/3 ^ + о (е1/3),(5.1.8)
^MN^-^3 / ^ У0^<5L9>
V5(1+^) +2У
^(е)=-^(-^у^-£1/3)+О(е1/3).(5.1.10)
J5(~П +2
Ряды вида (5.1.8)— (5.1.10) определяют функции х3(е), х4(е), х5(е) с особенностью по 8. Методы возмущений, приводящие к таким рядам, называются сингулярными методами возмущений.
Прием, который сводит сингулярный метод возмущений к регулярному, называют регуляризацией. Замена x = 8-vy есть регуляризация.
Можно доказать сходимость рядов в (5.1.8) — (5.1.10) для достаточно малых |е|.
Итак, методы возмущений позволили для алгебраического уравнения 5-й степени (5.1.1) записать при малых значениях |е| приближенные формулы всех пяти корней (5.1.5), (5.1.6), (5.1.8) — (5.1.10).
Таким образом, методы возмущений расширяют возможности аналитических методов и включают в сферу приложений те классы задач, которые могут быть приближенно решены аналитически.
Наконец, когда в уравнении (5.1.1) значение |е| не мало, методы возмущений неприменимы. Точное значение 80, при котором метод возмущений перестает работать, связано с оценкой погрешности формул для корней х-(е), 1^/^5 и с требуемой точностью вычисления корней.
В диапазоне изменения 8, в котором не могут применяться методы возмущений, используются численные методы.
Пример численного метода. Численные методы — это такие методы решения задач, которые сводятся или могут быть сведены к арифметическим действиям над числами.
(5.1.11)(5.1.11)Рассмотрим задачу
(5.1.11)
(5.1.11)
— = xy2 + 8sinx, у(0)=1, O^x^l, ах
(5.1.12)(5.1.12)для которой невозмущенная (е = 0) задача имеет аналитическое решение, приведенное выше. Для малых 8 можно найти ряд возмущений по аналогии с задачей (5.1.1):
(5.1.12)
(5.1.12)
у^х, 8)=.у(0)(х) + 8^(1)(х) + О(е2),\
где yw^=^—~2, /^(х) определяется решением задачи
-^- = 2xy0)(x).y(1) + sinx, ^(1)(0) = 0, откуда
у(1)(х) = es2-5j sinsds.о
Последний интеграл можно вычислить аналитически, используя элементарные функции. Но если возмущающая функция 8w(x, j>) такова, что интеграл для >>(1)(х) не выражается через известные функции, то для вычислений у(х, е) по формулам (5.1.12) в какой- либо точке хое[0, 1] необходимо применять численные методы. Это пример сочетания аналитического метода и метода возмущений.
При 8 = 1 к задаче (5.1.11) методы возмущений уже не применяются. Задача (5.1.11) является типичным объектом численного анализа. К ней можно применить, например, известный из курса высшей математики явный метод Эйлера. Приближенные значения у( к точному решению в точках x^ih, z = 0, 1, 2, ..., N, h=YjN находятся из соотношений yi+i^i+M^ + sinX;), 0<z4^ Уо=1-(5.1.13)
Погрешность приближений имеет оценку
шах |у(х^-у{\ = OQi\ /г—>0.
O^N
Обратим внимание на то, что метод Эйлера (5.1.13) сводит задачу приближенного определения точного решения у(х() в точках xf к арифметическим операциям и вычислению элементарной функции sinxf, т. е. это действительно численный метод, так как вычисление sin xt также можно свести к арифметическим операциям над числами.
Общие замечания. Подводя итог введению, следует заметить, что, как правило, на практике приходится иметь дело с задачами, зависящими от одного или нескольких параметров, начальных данных и т. п., которые лежат в некоторых интервалах своего изменения.
Для одних параметров, возможно, удается применить регулярный метод возмущений, для других—сингулярный, третьих—численный метод. Наилучший эффект достигается при сочетании всех рассмотренных подходов. Во-первых, результаты применения должны совпадать с учетом точности вычислений в общей области действия методов; это хороший контроль правильности проведенных вычислений. Во-вторых, к любой задаче следует подходить по принципу «сверху вниз», так же как в алгоритмизации и программировании. Сначала математическая задача изучается
качественными методами, затем аналитическими, далее методами возмущений и, наконец, численными методами.
Численным методам в данной книге уделено основное внимание. Как отмечалось выше, успех численных методов объясняется их сравнительно простой реализацией на ЭВМ.
Однако представляется целесообразным перед тем, как применять численные методы к задаче, ответить на следующие вопросы:
Какая «ближайшая» задача решается аналитически?
Нельзя ли рассматриваемую задачу считать возмущенной «близкой», решаемой аналитически?
Какая «ближайшая» задача решается успешно численно и каким методом?
Частичным ответом на первый вопрос является само определение «близкой» задачи; что под этим термином понимается в конкретной математической модели подробнее см. в п. 5.2. Следующей частью является фактическое построение аналитического решения.
Затем, если параметры модели и требуемая точность вычислений позволяют применить метод возмущений (положительный ответ на второй вопрос), то его применяют, приняв аналитическое решение за нулевое приближение для решения исходной задачи. Если метод возмущений нельзя применять, то «близкая» задача (аналитическое решение) может служить тестовой задачей для контроля разрабатываемого численного метода.
Если «близкая» задача решается только численно и известен метод ее решения (получен ответ на третий вопрос), то следует пытаться решать исходную задачу, сочетая численный метод и метод возмущений. Если эту комбинацию не удается применить, то «близкая» задача (численное решение) может служить тестом для контроля разрабатываемого численного метода.
Все эти «меры предосторожности» кажутся излишними, тем более что численные методы просто реализовать. Но эта простота часто имеет обманчивый вид, так как возникает очень трудная практическая оценка погрешности вычислений.
Поэтому искусство вычислений состоит фактически не столько в предъявлении числовых результатов в виде таблиц чисел, графиков, сколько в обосновании того, что эти результаты получены с заданной точностью.
• 5.2. Масштабирование и замена переменных
Анализ размерностей. Безразмерные переменные. Выше использовались термины «близкая» задача, параметр возмущения. Покажем, как определяется параметр или параметры возмущения, выясним, какая задача является «близкой» к данной задаче, что следует сделать с конкретной прикладной задачей еще до этапа ее решения каким-либо методом.
4 V
Конкретная техническая задача при своей математической формулировке записывается в виде соотношений, которые содержат переменные, константы в обозначениях и размерностях, принятых в той области техники, к которой эта задача относится.
Рис. 5.1Рис. 5.1Пример 1. В механике свободное движение массы т, закрепленной на пружине с коэффициентом жесткости к и демпфером с коэффициентом вязкости 0 (рис. 5.1), описывается уравнением
Рис. 5.1
Рис. 5.1
(5.2.1)(5.2.1)
(5.2.1)
(5.2.1)
Пусть в момент времени /=0 заданы начальное смещение у (0), начальная скорость ^(0) = 0. Тогда найти движение на интервале at
времени 0^1 ^Т означает проинтегрировать уравнение (5.2.1) с начальными условиями
У(О)=Уо, ^(0)=0.У(О)=Уо, ^(0)=0.(5.2.2)(5.2.2)
У(О)=Уо, ^(0)=0.
У(О)=Уо, ^(0)=0.
(5.2.2)
(5.2.2)
В конкретной задаче масса т может выражаться в граммах (г), у—в сантиметрах (см), t—в секундах (с), 0— в г/с, к—в г/с2. Например, у0 = 5см, т = 50 г, Т=20с, 0=10 г/с, £=200 г/с2. В размерных переменных t, у трудно обнаружить, какая задача близка к рассматриваемой—та, в которой можно пренебречь демпфированием, или та, где можно пренебречь собственными колебаниями.
Перейдем к безразмерным переменным т, х с помощью замены
T = VkJmt, х=у/у0.T = VkJmt, х=у/у0.(5.2.3)(5.2.3)
T = VkJmt, х=у/у0.
T = VkJmt, х=у/у0.
(5.2.3)
(5.2.3)
Для этого введем величину ^—у/к{т9 равную собственной частоте колебаний без демпфирования. Смещение х теперь выражается
в единицах начального смещения. Замена по формулам (5.2.3)
дает
dy d(yox\dT dxТГ^ГТ^dy d(yox\dT dxТГ^ГТ^' d2y d2x 7 7dt dx' d2y d2x 7 7dt dx
dy d(yox\dT dx
ТГ^ГТ^
dy d(yox\dT dx
ТГ^ГТ^
' d2y d2x 7 7dt dx
' d2y d2x 7 7dt dx
и приводит к уравнению в безразмерных переменных х, т
d2x dx
1^+ц^+х=0, О^т^ОоГ,(5.2.4)
где ц = 0/(тсоо), с начальными условиями/
х(0)=1, ^=0.(5.2.5)
Для рассматриваемых значений параметров имеем ц = 0,1. Поэтому можно попытаться на интервале O^t^l приближенное решение (5.2.4) находить методом возмущений, считая невозмущенной задачу (5.2.4), (5.2.5) с р = 0 (т. е. близкая задача—это задача без демпфирования). Заметим, что этот факт обнаруживается не по значению коэффициента вязкости 0, а по комбинации трех параметров ц = р/(т соо). Кроме того, важна длина интервала изменения т; при больших значениях соо7> 1 задачу без демпфирования также нельзя считать близкой. Подробно этот факт рассматривается ниже.
Фактически безразмерный параметр ц является параметром подобия. Системы (5.2.1) с разными значениями 0, т, соо, но с одинаковыми^ р, ведут себя одинаково и могут быть исследованы интегрированием одного и того же уравнения (5.2.4).
Пример 1 носит иллюстративный характер, поскольку решение задачи (5.2.1), (5.2.2) выражается в элементарных функциях, но следующее небольшое изменение задачи и приведение ее к безразмерному виду уже имеет содержательный смысл.
Пример 2. Пусть сила упругости пружины нелинейно зависит от смещения
F=-ky-k3y3,
где к, к3—постоянные. При этом движение массы т описывается уравнением
^Зд+Р^+^+^^О(5.2.6)
at at
с условиями (5.2.2).
Если ввести те же безразмерные переменные, что и в примере 1 с помощью замены (5.2.3), то получим уравнение
d2x dxд Л
—-з+Ц—+ х+8х3 = 0,(5.2.7)
dv dx
где ц , 8 = ^^, с начальными условиями (5.2.5). тю0 к
В уравнении (5.2.7) имеем еще один безразмерный параметр 8, который характеризует влияние нелинейности. Если параметр 8 мал, то при определенных условиях можно применять метод возмущений по 8.
Как уже замечено выше, в задачах (5.2.4), (5.2.7) присутствует важный безразмерный параметр т0Т, характеризующий длину интервала наблюдения или интегрирования, от значения которого зависит возможность применения методов возмущений. От этого параметра можно освободиться масштабированием—переходом к новой независимости переменной
1х=т1^0Т\
Тогда интервал наблюдения в переменных х, tY будет единичным, O^z^l. Но при этом уравнения (5.2.4), (5.2.7) примут вид
-л.
<й0Т2 dt2 to0Tdtx Х
1 d2x ц dxз _
- 2 , ,+-^— + х + £х =0, <й0Т2 dt2 <d0TdtY
или после введения новых параметров ц2 ^^о^)2? 14 ^(^о^)"1 ■ —следующий вид:
d2x , dx ,_ d2x dxз _
^2^r+^i^-+^ = 0;3 = 0.
dt i dt^dt i dtx
Теперь вся характеристика задачи, например (5.2.7), содержится в трех безразмерных Параметрах е, щ, ц2, в то время как в исходной формулировке имеется шесть размерных параметров: у0, m, Т, 0, к, к3. Это первое преимущество использования безразмерных переменных и масштабирования. Второе состоит в возможности по параметрам е, щ, р2 определить, можно ли применять метод возмущений или нет и какая задача близка к рассматриваемой. Если возможно применение только численных методов, то эти же параметры могут определить, какой из методов следует использовать.
Пример 3. Установившееся обтекание пластины потоком вязкой несжимаемой жидкости описывается уравнениями
С ди до _ дх ду /диди\др(д2ид2и\
удхду Jдх\дх2ду J
/dvdv\др/д2ид2и\
pl и -—Нг — = — -—Нр( 7-2+777 I I удхдууду\дх2ду2)
с граничными условиями (рис. 5.2)
«(^ 0)=0, v(x, 0)=0, х>0,9 m
Иш и^х, у) = vao, lim
где и (х, у), у (х, j>)—проекции вектора скорости жидкости в точке (х, у^ на оси х и у соот- у ветственно, р(х, у)—давление, р—постоянная плотность, р— коэффициент вязкости жидкости.
Приведение задачи (5.2.8), (5.2.9) к безразмерному виду осуществляется выбором характерного размера L—расстояния
от передней кромки пластины до точки на пластине, где изучается I течение: O^x^L.|
Безразмерными переменными являются независимые w1? t^, pv I зависимые х1? ^ и вводятся с помощью формул|
иvрх у
Mi=-’ ”1=Г’ Р1=^?’ Xl=V У1=ГI
Соотношения (5.2.8), (5.2.9) в безразмерных переменныхпринимаютI
вид}
^5vx£
1=5
3X13у1|
।дихдих_дрх1 /52мх52мД|
W1 дхх +171 dyxdxx + Re \ 5х2 "^ ду2 /|
.дихdvx. дрх1 /52гх52гДI
'оххdyxdxxRe \ 5xiоух у
Mi(xv 0)=0, у1(х1,0) = 0,$
' Иш м1(х1,у1)=1, lim У1(х1,у1) = 0, Х1—►—00Xj—►— 00
где присутствует лишь один безразмерный параметр
Re = p—,Ц
называемый числом Рейнольдса. Теперь в зависимости от значений Re в конкретной задаче близкими уравнениями могут быть: при больших значениях Re—уравнения пограничного слоя (параметр возмущения (Re)-1), при малых значениях Re—течение Стокса— Озеена (параметр возмущения Re).
Если в конкретной задаче Re не мал и не велик, то применяется численный метод, но контроль результатов осуществляется сравнением вычислений при малых и больших Re с известными течениями. В случае их совпадения в пределах точности вычислений можно
надеяться на правильность результатов и в промежуточном диапазоне значений Re. В заключение дадим практическую рекомендацию: исходная задача должна быть преобразована к безразмерному виду, выделены безразмерные параметры, изучены решения для предельных значений этих параметров. Часто предельные решения
можно получить аналитическими методами.
Я*)илиЯ*)илиЗамена переменных. Рассмотренные выше преобразования уравнений к безразмерному виду и масштабирование—простейшие линейные замены переменных, которые выполняются в первую очередь. Затем для упрощения вычислений следует пытаться выполнить более сложные нелинейные замены. Наибольшие вычис
Я*)
или
Я*)
или
dy dxdy dxлительные трудности вызывает наличие у искомых решений
dy dx
dy dx
областей с большими значениями модуля производных
Рис. 5.3Рис. 5.3|| grad у (x) || для функций многих переменных ^(х1?х2, хи)
Рис. 5.3
Рис. 5.3
(рис. 5.3). Можно определенно утверждать, что переменные у, х не являются наилучшими для представления решения. Более подходят для таких функций переменные у, $, где s—длина дуги кривой ^(х), т. е.
ds2=(dx)2+(dy)2,
Например, задача
=0. 0^х<-=0. 0^х<-^=l+j2, у(0)
=0. 0^х<-
=0. 0^х<-
имеет решение j>(x)=tgx, у которого в точке х=л/2 особенность. В то же время это уравнение в переменных у, s, имеет вид
dx^_ У* ds dx ’ ds 1+y2
или
dy_ 1+y2 _1+y2
&VT+0+7T
и та же задача с условиями у(0) = 0, 0^s<oo имеет решение ^=^(.у) без особенностей по s.
В более общей форме рекомендуется переход к параметрическому представлению решений
^ = ф(^, t\ X = \|/(s, t\ который при надлежащем выборе ф, ф может упростить вычисления в задаче.
Во многих технических задачах приходится решать уравнение Лапласа
Аф = 0, А = —7+— ах ау в некоторой области D с условиями на границе D. Имеется много методов решения этих задач, но не следует забывать и старый метод конформных преобразований (фактически замен переменных) области D на другую, например единичный круг, для которой известно аналитическое решение. Тогда решение исходной задачи сводится к поиску замены переменных
x=x(s, z), у=у^ t\
Методом конформных преобразований великолепно владел советский математик М. В. Келдыш (1911 —1978), который
в 40-е годы решил сложные задачи аэродинамики, используя этот подход.
Итак, математическая формулировка технической задачи не должна рассматриваться как объект, не подлежащий изменениям. Наоборот, задачу следует с помощью эквивалентных преобразований привести к виду, наиболее удобному для ее решения.
•5.3. Аналитические методы
Определение. Выше отмечалась важность аналитических. методов в практике вычислений. Мы будем понимать под аналитическими методы решения задач, представляющие решения через элементарные дуги специальные функции, для которых могут быть вычислены значения требуемой точности по имеющимся на ЭВМ программам или по таблицам, с применением бесконечных процессов, предельного перехода и арифметических операций над числами. На практике, естественно, бесконечные процессы аналитических решений заменяются конечными с оценкой вносимой при этом погрешности вычисления точного решения.
Приведем простой пример, когда известное аналитическое решение не может быть использовано в вычислениях. Пусть необходимо решить задачу
§+у=0, y(9W, ^(о)=1, 0^1.
Решение может быть записано в виде
i^ = sinx.
Представим, что требуется решить поставленную задачу с точностью до 20 знаков после запятой. Тогда, например, если на ЭВМ вычисления с двойной точностью дают не более 17 знаков после запятой, заключаем, что аналитическое решение ^ = sinx— всего лишь символическая запись ответа. Для вычислений с указанной точностью такое решение неприменимо.
Вычисления с элементарными функциями. Если решение задачи выражаются через элементарные функции (>/х, ех, sinx, Inx и т. п.), то при вычислениях необходимо соблюдать . два правила.
Значения аргумента функций с ограниченной областью определения должны проверяться на принадлежность этой области. Например,
если х>0, то у=1пх,
иначе—вывод сообщения, что х^О.
Значения функций в окрестности точек, где требуется вычислять предел, раскрывая неопределенности вида
> 0-оо, оо —оо, 0°, оо°, I00,
О оо
должны вычисляться по формулам, где эти неопределенности уже раскрыты. Например, вычислять:
sin х
следует в зависимости от требуемой точности по формулам
х2
1-¥ + О(х4),|х|<5,
где 8—малое число, определяемое точностью вычислений.
Необходимо обратить внимание на область значений функций, участвующих в вычислениях. Если значения выходят за пределы допустимых чисел для ЭВМ (слишком большие по модулю), то счет прекращается аварийным остановом и выдачей на терминал соответствующего сообщения (переполнение).
Эта ситуация часто может быть устранена проведением соответствующего масштабирования в задаче. Пусть, например, необходимо вычислить с некоторым шагом по х
^(х)=ех, О^х^ЮО.
Учитывая, что для у значения в ЭВМ не должны превышать 1019, будем вычислять функцию у(х) по формулам
fex, 0^х^50,^-^е^50, 50^x^100,
с масштабирующим множителем к = е50 (без умножения на ЭВМ кех-5°).
Кроме того, выход чисел за допустимые пределы устраняется переходом к другим координатам заменой переменных. В координатах z, х, где z=lny, исходная функция записывается в виде z^ = x, О^х^ЮО,
и трудности вычисления z(x) на ЭВМ устранены.
Аналогичная проблема возникает, когда числовые значения слишком малы по модулю (меньше ^10“19). В этом случае счет не прекращается, но такое число заменяется нулем. Поэтому результат вычислений на ЭВМ выражения
у = е-хех/2ех/2
в точке х= 100 есть нуль, а не единица, так как первый сомножитель заменится нулем. Устранение слишком малых чисел из вычислений осуществляется, так же как и слишком больших чисел, масштабированием и заменой переменных.
Вычисление специальных функций. Если аналитическое решение задачи выражается через специальные функции (Si(x), /0(х) и т. п.) и в библиотеке программ есть программы их вычисления, то обращение к ним не отличается от вычислений элементарных функций.
Если же в библиотеке отсутствует соответствующая программа, то следует рассмотреть два возможных варианта организации вычисления. Первый заключается в том, чтобы ввести в память ЭВМ таблицу этой функции в интересующем нас диапазоне значений аргумента. Затем вычисления осуществляются по таблице с помощью интерполяции. Второй вариант состоит в представлении этой функции через имеющиеся в библиотеке элементарные и специальные с заданной точностью в аналитическом виде, а затем программировании полученных формул. Различные приближения для специальных функций представлены в [22, 23].
Вычисление элементарных функций комплексного переменного. Эти функции вычисляются либо прямым обращением к библиотечным с соответствующим описанием аргумента и значения функций как комплексных переменных, либо (в случае отсутствия их в библиотеке)—программированием вычислений. Так как функция комплексного Переменного w=f(z) может быть представлена в виде ^w = u-Vw, z = x + iy)
и = Цх, у), У = у(х, у),то определение и(х,у\ v(x,y) сводится к разделению вещественнойи мнимой частей заданной функции; они выражаются черезэлементарные функции вещественных аргументов, и программирова-ние не вызывает 2 затруднений. Например, функция ЖуковскогоAz)=5^z+^
вычисляется разделением на вещественную и мнимую части
/.1 \ х—iy
U-VlD = -\ x + iy + ,
уx-viyJ x—iy
/ X \1 / у \
2y x2-Vy2J 2y x2+y2y
и объединением двух вещественных величин в комплексную с помощью библиотечной функции
W = CMPLX(U,V).
Выделение действительной части х у комплексного числа г производится функцией X = REAL(Z) мнимой части—функцией ¥ = = AIMAG(Z).
Аппроксимация функций. Приближение функций, заданной в аналитической форме другой или другими функциями, определяется в основном необходимостью ускорить процесс вычислений функций с заданной точностью.
Например, время вычисления функции , , sinx+cosx
в точках 0^х^0,1 с точностью £ можно значительно уменьшить, если заменить у(х) приближенно полиномом
P^x^a^A-a^-V ,..-Vanxn.
Коэффициенты и погрешность можно найти, например, из ряда Тейлора для у(х). Допустим, что £ таково, что полином третьей степени обеспечивает точность £, т. е.
max |у(х)-Р3(х)|<е.
О^х^ОД
Тогда для вычисления у(х) в любой точке хе [0,01] с помощью Р3(х) требуется три операции сложения и три умножения. Этот вычислительный процесс займет гораздо меньше времени счета на ЭВМ, чем вычисление по исходной (5.3.1) формуле для у(х\
На интервалах большой длины целесообразно приближать у(х) рациональными функциями
; b0AbYxA ...Abmxm
Можно область изменения х разбивать на интервалы и на разных интервалах аппроксимировать и(х\ либо Рп^х\ либо w„ w(x).
Интегрирование. Методы аналитического интегрирования подробно изучаются в курсе высшей математики. Зная таблицу основных интегралов и правила интегрирования, путем замены переменных, интегрирования по частям и т. п. можно вычислить точно интеграл
ь
\y(x)dx=F(b)-F(a),
зная первообразную Е(х) для широких классов функций. Причем если Е(х) выражается через элементарные или специальные функции, для которых можно найти Г(а\ Гф) с заданной точностью, то считается, что аналитическое интегрирование выполнено. Например,
1
(5.3.2)(5.3.2)^xexdx=\, fe"x tZx = ^erf(l), f ^^tZx = Sz(l). ооJ x
(5.3.2)
(5.3.2)
о
В то же время интеграл от простой функции
-^-dx
J sinx о
не выражается в конечном виде через значения известных элементарных и специальных функций. Тем более это будет правилом для более сложных подынтегральных функций.
Интеграл можно вычислять численно. Но здесь, как и в аппроксимации функций, возможно, удастся ускорить процесс вычисления, если сначала подынтегральную функцию приблизить с точностью 8 полиномом Рп(х) или рациональной функцией wnm(x), а затем аналитически вычислить известным образом ^P^x^dx или ь а
Суммирование рядов. Аналитические методы не ограничиваются только конечными вычислительными процессами, допускается предельный переход, а также суммирование бесконечных рядов. Напрцмер, интеграл от у(х) можно заменить интегралом от ряда ТейЬора
ь
а ‘ J к = 0к = 0к = 0
тогда задача интегрирования сводится к задаче суммирования бесконечного числового ряда.
Представление решения в виде ряда имеет преимущество по сравнению с другими методами решения тогда, когда оценка отброшенной части ряда £ Ак легко определяется. Например, k = N+l
для знакопеременного ряда с монотонно убывающим |Лк| погрешность вычисления 8^|Л^+1|. Чтобы вычислить
1
J io(^+l)^О
с точностью до восьми верных знаков, достаточно взять одиннадцать слагаемых в сумме
*=о(2^+>)^‘
Так и следует поступать, если в библиотеке нет программы вычисления erf (х) с двойной точностью, поскольку одинарная точность не дает восьмой верный знак; следовательно, формулой из (5.3.2) воспользоваться нельзя.
Если ряд сходится быстро, то трудности при вычислении суммы ряда не возникают. Если же ряд сходится медленно, то суммирование ряда можно пытаться выполнить методом Куммера. Суть этого метода состоит в том, чтобы медленно сходящийся ряд £ Ак аппроксимировать рядом £ Вк, для которого известна к = 0£ = 0
сумма ^!= ^ Вк, а скорость сходимости рядов одинакова, т. е. к = 0
найти такие Вк, чтобы
Птк-юоПтк-юоАк—ВкАк—Вк= 0.= 0.LkLk(5.3.3)(5.3.3)
Птк-юо
Птк-юо
Ак—Вк
Ак—Вк
= 0.
= 0.
Lk
Lk
(5.3.3)
(5.3.3)
Тогда S= £ Ак можно записать в виде 5=5^ £ (Ак — Вк) и, к-0к = 0
таким образом, суммирование исходного ряда сводится к суммированию ряда с общим членом Ск = (Ак — Вк\ который, согласно (5.3.3), сходится быстрее исходного.
Предложенный подход можно повторить, если удается аппрок
симировать ряд £ Ск рядом с известной суммой и т. д.
к = 0
Для ускорения сходимости рядов по методу Куммера необходимо иметь таблицу рядов с известными суммами. Подробные таблицы рядов представлены в [21—23].
Например, для медленно сходящегося ряда
k = 0k = 01—е v "к^1—е v "к^
k = 0
k = 0
1—е v "к^
1—е v "к^
можно для аппроксимации подобрать ряд с известной суммой
£11”о
Теперь имеем
5=^ + Ik = 05=^ + Ik = 0fc2 + 52*fc2 + 52*(5.3.4)(5.3.4)
5=^ + I
k = 0
5=^ + I
k = 0
fc2 + 52*
fc2 + 52*
(5.3.4)
(5.3.4)
Заметим, что ряд в (5.3.4) является быстросходящимся, но и его сходимость можно ускорить методом Куммера. Запишем
°о „-k21 оо -к2 оо /11 \
к%*2 + 52к2 к^\^2 + 52 к1)*
Ряд S2 = ^ e"klк"1 имеет известную сумму S2 = 0,37247207. Отсюда к=1
искомая сумма ряда представляется следующим образом:
где ряд сходится быстрее, чем в (5.3.4).
Фурье-анализ. Под аналитическим Фурье-анализом будем понимать: 1) аналитическое определение коэффициентов ряда Фурье по заданной аналитически (т. е. формулой) функции Дх) периодической с периодом 2л, 2) аналитическое суммирование рядов Фурье, т. е. восстановление Дх), заданной тригонометрическим рядом.
Фурье-анализ (аналитический и численный) широко применяется в науке и технике. Отметим две области приложений.
Разложение сложного колебания на отдельные гармонические колебания.
Решение задач математического анализа, дифференциальных уравнений методом Фурье, т. е. с помощью разложений в ряды Фурье.
Напомним, что коэффициенты Фурье вычисляются по формулам
1 ”
ат=- f Дх)со§тх4х, т = 0,1,2,...,
1?(5-3.5)
I Д^)8!11^^L2,
а затем составляется ряд Фурье функции Дх\
00
* VW^X"^ X (flmcosmx + Z>msinrnx).(5.3.6)
Для определения коэффициентов ат, Ьт достаточно абсолютной интегрируемости Дх) на интервале [ — я,я]. Для сходимости ряда (5.3.6) достаточно, чтобы Дх) была кусочно-монотонна на [—я,я] и имела конечное число точек разрыва. Тогда для точки непрерывности х0
Д^о) = ^+ X (amcosmx0+6msinmx0);m= 1
для точки разрыва
/(^o+0)V(^o-0)^0 .• х
2‘2‘"" = 7+ Е (^т^^8^^0 + ^т81П^Х0).
2‘
2‘
Как отмечалось в п. 5.3.6, аналитическое интегрирование (5.3.5) связано с возможностью представить первообразную через известные элементарные или специальные функции. Этот вывод остается в силе и для определения коэффициентов Фурье ат, Ьт.
Приведем пример определения ат. Ьт для функции еах, —я<х<я, а/0. Имеем:
_ shaftал_ shaftал1еа”-е-“”
_ shaftал
_ shaftал
1Л1Л$Ьая,$Ьая,Ьт=- [Ьт=- [.,1 asinmx—wcoswxe sin^xax=—;ztл(a2+w2).,1 asinmx—wcoswxe sin^xax=—;ztл(a2+w2)ее_ (— l)w ^wshan_ (— l)w ^wshanXXа0=- е ах=лал
1
Л
1
Л
$Ьая,
$Ьая,
Ьт=- [
Ьт=- [
.,1 asinmx—wcoswx
e sin^xax=—;zt
л(a2+w2)
.,1 asinmx—wcoswx
e sin^xax=—;zt
л(a2+w2)
е
е
_ (— l)w ^wshan
_ (— l)w ^wshan
X
X
Таким образом, для /(х), у которых интегралы в (5.3.5) можно вычислить аналитически, коэффициенты Фурье определяются вычислением известных функций, зависящих от номера гармоники т как от параметра.
Рассмотрим суммирование рядов Фурье. При этом будем считать, что факт сходимости ряда (5.3.6) установлен, а наша задача—найти в конечном виде сумму ряда, выразив ее через элементарные функции, если она в таком виде может быть представлена.
Изложим метод Эйлера суммирования некоторых тригонометрических рядов с помощью аналитических функций комплексной переменной.
Предположим, что имеем два ряда ^«о + £ amcosmx\ £ «„sinmx,
которые всюду, за исключением конечного числа точек на интервале [0,2л], сходятся: первый—к функции р(х\ второй—к q^x\
Рассмотрим степенной ряд
^о + I amz”,(5.3.7)
2 m=l где z—комплексная переменная.
На окружности |z| = l, z=eix этот ряд сходится по предположению, за исключением конечного числа точек, т. е.
100
p^-Hq^-a^ Е amzm =2т = 1
°°
=-я0+ ^ am^cosmx-Visinmxy(5.3.8)
т+1
Но, согласно известному свойству степенных рядов (5.3.7) сходится при |z|<l, z=peix, 0^р<1, к некоторой функции ф^). Тогда имеет место
100
ф(ре‘х)=тоо + 2 атрте,тх.
2т=1
Если ряд (5.3.8) сходится, то по теореме Абеля его сумма находится предельным переходом
lim ф(ре1Х)=^(х) + ^(х).
р-1
Kak правило, lim ф(ре1Х) = ф(е1Х), а отсюда уже р(х\ q(x) можно
р-1
получить в конечном виде.
Просуммируем методом Эйлера два ряда:
р(х)=1 + 5 — cosmx; q(x) = Е -^-sinwix.
m=l т*m=l т*
Очевидно, что
00 т
Отсюда
ф(е/х) = ее = ecosx+lsI”* = ecosx(cos(sinx)+zsin(si^
Следовательно,
/?(х) = ecosxcos(sinх), q^ = ecosxsin(sinх).
Дифференцирование. Процедура аналитического дифференцирования функций одного или нескольких переменных, заданных формулами, является основной во многих вычислительных методах.
Построение рядов Тейлора в окрестности точки
ХМ=/(х0)+^(х-х0)+^(х-х0)Ч...
требует вычисления /(п)(х) в точке х0. Поиск экстремумов функции /(х15...,х„) может быть связан с решением уравнений
dxt
и проверкой знакоопределенности d1/. Вычисление преобразования yi=№ls хп\ l^i^n.
det (х?det (х?
det (х?
det (х?
часто необходимо при заменах переменных. В задачах дифференциальной геометрии — определение касательных поверхностей, вычисление кривизны поверхности и т. п.— аналитическое дифференцирование служит основным элементом вычислений. В механике вывод уравнения движения связан с дифференцированием функции Лагранжа L = L^t, уь у-), X^i^n, где уь у[—обобщенные координаты и скорости механической системы. Действительно, уравнения Лагранжа имеют вид
dtdtdL fyidL fyiat ^iat ^i= 0, X^i^n;= 0, X^i^n;
dt
dt
dL fyi
dL fyi
at ^i
at ^i
= 0, X^i^n;
= 0, X^i^n;
следовательно, для получения уравнений движения в виде
У1=фАу'ьУь f)’ !^г^и,
необходимо провести аналитическое дифференцирование функции L. Заметим, что при больших значениях п эта задача становится очень трудоемкой. Именно в таких задачах при больших п используют системы аналитических вычислений на ЭВМ.
Для аналитического дифференцирования необходимо знать таблицу производных элементарных функций и правила дифференцирования. Все это входит в курс высшей математики.
186
Операции с матрицами и векторами. Конечное число матричных и векторных операций представляет собой простые комбинации элементарных арифметических операций. Например, сумма двух прямоугольных матриц
Л = (я1;Д В^ЦЬ^У С=^с1а\ X^i^m, X^j^n,С=А + В, ctJ = atj+bitj;
произведение двух прямоугольных матриц
Л = (^;), В=ЦЬМ\ X^i^m, X^j^n, X^i^n, X^j^k,
C=AB, ctj= L aisbs j, X^i^m, X^j^k;
S= 1
произведение квадратной матрицы A = (atj), X^iJ^n, на вектор х=(х^, X^i^n,
у = Ах, у^ 5 aiaXjj=i
и т. д. Исключением является операция обращения квадратной матрицы А с det^/O, аналитические методы выполнения которой рассматриваются в п. 5.3.11.
Если элементы матриц и векторов — числа, то конечное число операций с матрицами и векторами следует отнести к численным методам. Если же допускается бесконечное число операций, то в этом случае могут применяться аналитические методы. Важным классом бесконечных процессов с матрицами является процедура определения функций от матриц рядами.
Для определения сходимости последовательности матриц и матричных рядов напомним понятие нормы.
Пусть имеется и-мерное пространство Еп. Если для любого вектора хеЕп существует число ||х|| такое, что:
||ах|| = |а| ||х|| для любого числа х;
II^+^11^11x11 + 11^|| для любых х, уеЕп;
||х||=0, если х = 0,
то || х || называется нормой вектора х = (х, ..., хп\ Например, нормой вектора х являются следующие:
(
и \ 1/2 X хМ ; i=l /
11x11,= 5 |xj;
Б) 11x1100= max (|xj).
l^f^n
Пусть А — матрица, х—любой вектор Еп, ||х||/0, нормой матрицы || А || называется наименьшее из чисел с в неравенстве
||ЛхКс||х||.
В зависимости от применяемой нормы вектора будут получаться различные значения нормы матрицы. Из определения || А || имеем
II ЛхКЦЛЦ ||х||.
В дальнейшем будем применять норму вектора || х || и опускать индекс оо:
II х 11 = max (|хг|).
I^z4n
Соответствующая этой норме матричная норма || А || может вычисляться по элементам ам следующим образом:
■|| А || = max ( £ |<zu|).
•Jl<z4n\j = l /
Определим последовательность матриц {S^}, задавая пх и числовых последовательностей
'{5^}, X^iJ^n. ^=1, 2, 3, ... .
Последовательность {S(k)} сходится к матрице S с элементами S^ если сходятся пхп числовых последовательностей:
S^-^Sia при £-юо
или
|| S^ —SU-►0 при А:->оо.
Напомним определение собственных чисел X- и собственных векторов е{ матрицы А. Собственные числа ХДЛ) матрицы А и соответствующие векторы удовлетворяют равенству
Aei = Xi(A)eb X^i^m, ^/0.
Пусть функция /(X) разлагается в степенной ряд в круге сходимости |Х-Х0|<г:
/м= 1 ^-хоу,
1 = 0
где ai—числовые коэффициенты (возможно, и комплексные). Сопоставим этому ряду последовательность частичных сумм—матричную последовательность
к
8^=^а^А-Х0Еу.(5.3.9)
= 0
Теорема 5.1. Для сходимости S^^-S необходимо и достаточно, чтобы все собственные значения ХДЛ) лежали внутри круга сходимости | Xt (А) — Хо | < г.
Пусть выполнено условие теоремы 5.1; тогда S(k)->S, т. е. сходится матричный ряд
S= £ аДЛ-ХоЕ)1';
= 0
его сумму (матрицу S) обозначают /(А),
М=1 аЛА-Х^Ёу.
i = 0
Так по функции /(х) определяется функция / от матрицы А, которая обозначается /(А).
Для применения теоремы 5.1 важно уметь оценивать расположение собственных значений ХДЛ) на комплексной плоскости. Простейшую оценку можно получить из следующей теоремы.
Теорема 5.2. Собственные числа ХДЛ) имеют оценку
тах|Х,(Л)|^||Л||.(5.3.10)
Доказательство. Из определения собственных значений и векторов имеем
Ае^Х^А^е^
Отсюда для любого i
Ц^НЦА,^)^ ||=|Х,.(Л)||Ы|.
С другой стороны, по определению нормы матрицы,
II^КМН kill.
Сравнивая два последних соотношения, получаем (5.3.10).
Например, в круге сходимости |Х|<1 имеет место разложение
/(1)=(1-1)"1=Х X.
i = 0
Пусть имеем матрицу А
( 0,3 — 0,1\
— \ —ОД 0,2/
Определим ||Л||=0,4. Используя (5.3.10), находим
max | X, (Л) |^0,4.
По теореме 5.1 матричный ряд £ А1 сходится к сумме—матрице (Е-Л)"1:
(£-ЛГ = f Л‘.i = 0
Если радиус сходимости для /(X) равен бесконечности, то можно получить функцию /(Л), определенную для любых матриц А. Имеем
00 100 1V001
ел=У-A1; cos Л = Уsh Л = УЛ 21+1.
i=o^/ = о(2^мМ!
Решение систем линейных уравнений. Как уже упоминалось в п. 5.1.3, аналитическим методом решения систем линейных уравнений
Ах = Ь,Ах = Ь,(5.3.11)
Ах = Ь,
Ах = Ь,
где А=^А, X^iJ^n, б—^, ..., 6Й), х—вектор неизвестных х = ^хъ ..., х„) с определителем det А /О, является правило Крамера. Однако для больших п оно неприменимо, так как становится громоздким.
Другим аналитическим методом решения системы (5.3.11) является формула Фробениуса для обращения блочных матриц.
Определим блочную матрицу. Пусть дана прямоугольная матрица J
Л = (я-;), X^i^m, l^j^n.
Представим ‘ту же самую матрицу в виде
АЦАД l^q^l, l^r^s,
где каждый элемент А Например,
qr может быть
прямоугольной
матрицей.
а1Д
«1,2 1
«1,3
«1,4«1,5
А =
а2Д
азд
«2,2 1
«3,2 1
«2,3
«3,3
«2,4«2,5
«3,4«3,5
= |
^1,1 4^2,1
^1,2^
^2,2/
(5.3.12)
^А-Д
«4,2 1
«4,3
«4,4«4,5
где
-
^1,1
= (аХЛ
\«2,1
«1,2^
«2,2^
1 А ~(ах’3
Г\«2,3
«1,4
«2,4
«i,s\ «2,5/
^2,1
= (аЗЛ
\«4,1
«3,2^
«4,2^
1 А - (°3'3
Ь л2,2— „
\«4,3
«3,4
«4,4
«3,s\
«4,5/
Действия над блочными матрицами производятся по тем же правилам, как и в случае, когда вместо блоков имеются числа. Необходимо только, чтобы разбиение на блоки было одинаковым. Пусть имеем матрицу B = ^bitjY X^i^m, X^j^n, разбитую на блоки тех же размеров, что и А, т. е.
ВЦВД l^q^l, l^r^s.
Сумма С в блочном представлении получается сложением соответствующих блоков
C=A + B=(Aqr+Bqr).
Для умножения блочных матриц А и В необходимо, чтобы все , горизонтальные размеры в разбиении А совпадали с соответствую- | 190 \ I
щими вертикальными размерами в разбиении В. Тогда формула для блочного представления
^=(Q> I AqtkBk,
аналогична формуле для имеем матрицуаналогична формуле для имеем матрицуматриц, состоящихматриц, состоящихиз чисел. Пустьиз чисел. ПустьВ=В=гдегде^1,1^2,1^1,1^2,1^1,2^2,2^1,2^2,2^1,3^2,3^1,3^2,3^1,4^2,4^1,4^2,4^1,5^2,5^1,5^2,5b bt b.b bt b.3,13,15,15,1^3,2^4,2^5,2^3,2^4,2^5,2^3,3^4,3^5,3^3,3^4,3^5,3ь bt b.ь bt b.3,43,45,45,4^3,5 ^4,5 ^5,5.^3,5 ^4,5 ^5,5.^1,1^2,1^1,1^2,1^1,2^2,2.^1,2^2,2.(5.3.13)(5.3.13)^i,i =^i,i =b bb b^2Д = ( Ь4^2Д = ( Ь4'1,1’2,1*3,1'1,1’2,1*3,1'4,1’5,1'4,1’5,1Ь1,2 bl,2 bl,2 Ь*,2 ^5,2Ь1,2 bl,2 bl,2 Ь*,2 ^5,2^1,3 ^2,3 ^3,3 ^4,3 ^5,3^1,3 ^2,3 ^3,3 ^4,3 ^5,3’ ^1,2 —’ ^1,2 —, ^2,2 =, ^2,2 =^1,4 ^2,4 ^3,4 ^4,4 '^5,4^1,4 ^2,4 ^3,4 ^4,4 '^5,4*1,5\ ^2,5/ ^3,5\ ^4,5^у*1,5\ ^2,5/ ^3,5\ ^4,5^у
аналогична формуле для имеем матрицу
аналогична формуле для имеем матрицу
матриц, состоящих
матриц, состоящих
из чисел. Пусть
из чисел. Пусть
В=
В=
где
где
^1,1
^2,1
^1,1
^2,1
^1,2
^2,2
^1,2
^2,2
^1,3
^2,3
^1,3
^2,3
^1,4
^2,4
^1,4
^2,4
^1,5
^2,5
^1,5
^2,5
b bt b.
b bt b.
3,1
3,1
5,1
5,1
^3,2
^4,2
^5,2
^3,2
^4,2
^5,2
^3,3
^4,3
^5,3
^3,3
^4,3
^5,3
ь bt b.
ь bt b.
3,4
3,4
5,4
5,4
^3,5 ^4,5 ^5,5.
^3,5 ^4,5 ^5,5.
^1,1
^2,1
^1,1
^2,1
^1,2
^2,2.
^1,2
^2,2.
(5.3.13)
(5.3.13)
^i,i =
^i,i =
b b
b b
^2Д = ( Ь4
^2Д = ( Ь4
'1,1
’2,1
*3,1
'1,1
’2,1
*3,1
'4,1
’5,1
'4,1
’5,1
Ь1,2 bl,2 bl,2 Ь*,2 ^5,2
Ь1,2 bl,2 bl,2 Ь*,2 ^5,2
^1,3 ^2,3 ^3,3 ^4,3 ^5,3
^1,3 ^2,3 ^3,3 ^4,3 ^5,3
’ ^1,2 —
’ ^1,2 —
, ^2,2 =
, ^2,2 =
^1,4 ^2,4 ^3,4 ^4,4 '^5,4
^1,4 ^2,4 ^3,4 ^4,4 '^5,4
*1,5\ ^2,5/ ^3,5\ ^4,5
^у
*1,5\ ^2,5/ ^3,5\ ^4,5
^у
^1,1^1,1+^1,2 ^2,1 I “*^1,1^1,1+^1,2 ^2,1 I “*1,21,2При таком разбиении матриц А, В блочное представление матрицы С=АВ, равное произведению (5.3.12) и (5.3.13), находится по формулам
^1,1^1,1+^1,2 ^2,1 I “*
^1,1^1,1+^1,2 ^2,1 I “*
1,2
1,2
W2.1 ^2,2/ \а2дв1Д+а2.2в2Д (...7
Представим формулу Фробениуса обращения блочной матрицы. Пусть в (5.3.11) матрица А—квадратная, det А/0 и разбита на блоки
^1,1^1,2 \
А А
л2,1Л2,2/
матрица Л1Д—квадратная, deM14/0. Определим матрицу В=Л2,2—Л2д (Л1 i) 1Л12.
Предположим, что detB/О. Тогда блочное представление обратной матрицы Л-1 задается формулой Фробениуса
/ Mi,i) ^(^i.i) ^1,2^ ^2,1И1,i) 1 । ™(^i,i) yab Ц
Л-1=—I,
\-В-^ДА^)"1I В"17
которую можно проверить прямым умножением матриц Л и Л 1 в блочном виде.
Решение исходной системы уравнений (5.3.11) получается умножением блочной матрицы Л-1 на вектор правых частей, разбитый на блоки в соответствии с разбиением (Л-1).
Главное достоинство формулы Фробениуса состоит в том, что обращение матрицы размерности п сводится к двум обращениям матриц Л1Д и В меньшей размерности, а это может позволить найти аналитическое решение (5.3.11).
Можно продолжить процедуру обращения Фробениуса, разбивая на блоки матрицы Л1Д и В и т. д., но, как обычно, с каждым шагом увеличиваются трудности, поскольку приходится манипулировать громоздкими формулами.
Например, матрицу 16-го порядка за три шага можно свести к обращению матриц 2-го порядка, для которых легко применить правило Крамера и, таким образом, получить при условии выполнимости этих шагов аналитическое решение системы линейных уравнений (5.3.1|), выраженное через элементы матрицы А и вектора Ь.
Как отмечалось выше, решая систему (5.3.11), необходимо знать, обращается или нет в нуль определитель матрицы A, Atл, В. Матрица А называется вырожденной, если определитель det А = О, и невырожденной, если det^/O.
Иногда можно по элементам матрицы легко определить, что матрица А невырождена. Это случай диагонального преобладания Адамара. '
Теорема 5.3. Если для матрицы А выполняются п неравенств \М> t \^Л(5.3.14)
j=i
то матрица А невырождена.
Доказательство. Допустим противное: при выполнении (5.3.14) det^ = O. Тогда существует ненулевой вектор х = (х1? ..., х„) такой, что "
Z амхз = ^^ X^i^n.j = i ’
Выберем число к, соответствующее шах |х;| = | хк|>0. Из послед- l^z<n него равенства для выбранного к получаем
^к,к^к ^ ^kj^p
j^k откуда
IMIX*I< 11 «м 11^1 <1^1 I KA
j=lj=l
Hkj^k
Сокращая на |xk|, получим противоречие с (5.3.14). Теорема доказана.
Обозначим А' транспонированную матрицу к А, А’^а^, \^j,i^n. Так как
det А = det А',
то достаточные условия Адамара (5.3.14) для строк, заменяя А на А\ могут быть преобразованы в условия для столбцов. Матрица А невырождена, если
l«d> £1а>Л 1 <«<«•
7 = 1J i
Условия Адамара перенумерацией строк (столбцов) можно сформулировать в виде det А /0, если в каждой строке (столбце) А имеется преобладающий элемент и эти элементы расположены в различных столбцах (строках).
Пример, det А /0 для следующей матрицы:
15> 1 +2+4, 10>2 + 3+4, 7> 1 +0+1, 10> 1 +1 +2.15> 1 +2+4, 10>2 + 3+4, 7> 1 +0+1, 10> 1 +1 +2.15 12 — 4"
15> 1 +2+4, 10>2 + 3+4, 7> 1 +0+1, 10> 1 +1 +2.
15> 1 +2+4, 10>2 + 3+4, 7> 1 +0+1, 10> 1 +1 +2.
2 3-104
-1701
11210
Те же элементы (15, —10, 7, 10) являются преобладающими и по столбцам.
Определение собственных значений и векторов. Аналитическое определение ХДЛ) собственных значений матрицы А и соответствующих собственных векторов et в конечном виде для произвольных матриц А порядка и >5 невозможно. Это следует из того факта, что Х( удовлетворяют алгебраическому уравнению и-й степени
det (Л-ХЕ) = 0, которое в развернутой записи имеет вид
Х+яД^Ч^Х^+.+^-хХ+я^(5.3.15)
а (5.3.15), как уже упоминалось, в радикалах неразрешимо при п >5.
Поэтому аналитические методы нахождения собственных значений и векторов, т. е. их определение через элементы матрицы А, существенно зависят от и.
Для 1^и^4 можно использовать известные формулы для корней X,- алгебраических уравнений, а затем аналитически решить систему линейных уравнений
Aei=Xiei(5.3.16)
и определить соответствующие собственные векторы.
Для п>5 аналитические решения могут дать методы возмущений (см. 5.4).
Однако если отказаться от желания найти точные формулы для Xt и ограничиться поиском их оценок или, как говорят, решать задачу локализации собственных значений, то здесь имеются простые аналитические методы для произвольных порядков матрицы А. Часто в технических задачах достаточно иметь именно оценку для Хь а не точные значения. Например, в задачах устойчивости дифференциальных уравнений, систем 7 Ю. П. Боглаев193
автоматического управления определяются знаки ReXh а отсюда делается заключение об устойчивости без точного определения Xf (Л).
Критерии локализации собственных значений могут применяться и для задачи локализации корней полиномов, поскольку по любому алгебраическому уравнению (5.3.15) можно выписать матрицу, для
которой это
уравнение
является
характеристическим, т. е.
det (Л — Х£) = 0,
а именно:
0
10...
0 о'
0
01 ...
00
А
=
*0
00...
’ 0""1
ап - 1— ^п - 2
— ti2 —
Первым крЬтерием локализации собственных значений является формула (5.3.10), которая дает оценку модулей собственных чисел. Второй критерий является следствием теоремы 5.3.3.
Все собственные числа матрицы А содержатся в объединении кругов
3 = 1 ИЛИ
3=1
на комплексной Х-плоскости.
Докажем первое неравенство. Пусть оно не выполняется для какого-либо собственного числа X* и всех X^i^n; тогда
1К-«и1> X \aiД
следовательно, по теореме 5.3, матрица
А-Х.Е
невырождена, т. е. det (Л — Х*Е)/0, а это противоречит предположению, что X*—собственное число матрицы А.
Решение линейных интегральных уравнений. В этом пункте представлены некоторые типы интегральных уравнений, которые можно решать аналитически. Это значит, что можно: 1) представить явную формулу для решения в виде интегралов от заданных функций или их преобразований; 2) свести задачу к решению системы линейных алгебраических уравнений и интегрированию заданных функций; 3) представить решение сходящимся рядом, каждый член которого определяется интегрированием заданных функций.
Рассматриваемые интегральные уравнения можно записать следующим образом:
194\
ay(x) + J K(x, s^y^ds=f^x\ xgD,
Di
где у (x)—искомая функция, стоящая под знаком интеграла, отсюда и название интегральное уравнение; f^, К(х, s) — заданные функции; /(х)—неоднородность уравнения; К^х, s)— ядро уравнения; а— константа, если а = 0, то имеем уравнение первого рода, если а^О—второго рода; Dv— область интегрирования по переменной .у; D—область изменения аргумента х.
Обобщением рядов Фурье на непериодические функции являются: интегральное преобразование Фурье — косинус-преобразование функции у(х)
Д (cosxs)y(s)<&=/(x),
о
синус-преобразование функции у(х)
+ 00
/2 Г
- (sinxs) у (s) ds=f (х),
\ Л J
О
комплексное преобразование у(х)
+ 00
V2k J
Эти интегральные преобразования при заданной функции /(х) можно трактовать как интегральные уравнения первого рода относительно неизвестной функции у(х).
Если /(х) абсолютно интегрируема в каждом конечном промежутке и при х—► ± оо монотонно стремится к нулю, то можно применить простые формулы обращения: для косинус-преобразования
/(.у) cos (^х) ds,о
для синус-преобразования
Д$) sin (sx) ds,Д$) sin (sx) ds,оо
Д$) sin (sx) ds,
Д$) sin (sx) ds,
о
о
Для комплексного преобразования
7*
Рассмотрим уравнение, в котором К^х, 5) зависит от разности аргументов: Kta, s^ = K\x—s^—интегральное уравнение с разностным ядром К(х—s)
(5.3.17)(5.3.17)+ 00
(5.3.17)
(5.3.17)
«у(х) + f K^x-s^y^ds=f^x\
+ 00
Интеграл J K^x — s^y^ds называется сверткой функций К и у.
Применим к обеим частям уравнения комплексное преобразование Фурье; допуская, что применима теорема об умножении Фурье- образа свертки [29], находим■
■ J [а - ^2л К (х)] у (х) =^х\
Здесь знаком ~ обозначено преобразование Фурье функции. Предположи^, что функция [д —^л ^(х)]"1 ограничена на всей оси — оо<х<'+оо. Тогда получим следующую формулу для решения (5.3.17):
Уравнения вида (5.3.17) часто имеют место в задачах определения сигнала у^ подверженного преобразованию (ядро К^х—^)), по экспериментально наблюдаемой функции Дх) (измерения).
Другим интегральным уравнением с известным аналитическим решением являемся уравнение Абеля
(5.3.18)(5.3.18)
(5.3.18)
(5.3.18)
Если /(х) непрерывно дифференцируема при х^а, то решение уравнения Абеля можно записать в виде
/ х sin ал ж-—/ х sin ал ж-—
/ х sin ал ж-—
/ х sin ал ж-—
Эта формула получается заменой х на s умножением уравнения (5.3.18) на (х—^)а-1 и интегрированием по s от а до х. При этом используем формулу
1
ds _ лs“(l—s)1-“ sinaK*о
Аналитическое решение следующих интегральных уравнений, которые называются вырожденными, можно свести к аналитичес-
кому решению системы линейных алгебраических уравнений. Вырожденные уравнения
^(х)+ J К^х, s^y^ds=f^x\ xgD,(5.3.19)
D
имеют ядро К (х, s), представимое в виде
K(x,s^= £ ak^bk^s\k=l
Функции ak^x\ bk(s) линейно независимы, а#0. Определим постоянные ск:
Ск= J ^(^У^)^ ^=L 2, ..., п.Ох
Тогда исходное интегральное уравнение запишется в виде
к=1
Умножая это соотношение последовательно на Ь^х) и интегрируя по области D, получим систему линейных алгебраических уравнений относительно с^.
асЛ Z Akjck = dj, \^j^n,(5.3.20)
к=1
где
Akj = f «к W bj (х) dx, dj = f /(х) bj (х) dx. DD
Если матрица AkJ и вектор d5 могут быть определены аналитически, а затем (5.3.20) также решается аналитически относительно Cj, то решение интегрального уравнения находится по формуле
а\ к=1/
Наконец, рассмотрим метод последовательных приближений решения (5.3.19), который при определенных условиях может дать аналитическое решение. Построим по (5.3.19) последовательность функций ук(х) таким образом:
лМ=^(/М- jК(^ ^Ук-Л^^(5.3.21)
Dy
£=1,2,...; j;o(x) = 0. Если последовательность функций {^(х)} имеет предел у (х) в некотором функциональном пространстве, возможен предельный переход под знаком интеграла в (5.3.21)
и при любом к интегралы в (5.3.21) можно взять аналитически, то формула
дает аналитическое решение (5.3.19).
Корни полиномов. Как уже отмечалось, точное аналитическое решение алгебраического уравнения
Рй(х) = ао^"+«1^”"1 + - + «п-1^+«и = 0
для произвольного полинома Рп^ возможно при п <4. Однако для многих приложений, связанных с исследованием устойчивости динамических . систем, важно показать, что корни Рп (х) имеют отрицательный вещественные части, а не определять их точные значения. В данном пункте рассматриваются необходимые и достаточные условия для того, чтобы полином Рп (х) с вещественными коэффициентами имел корни с отрицательными вещественными частями.
Обозначим корни Рй(х): вещественные xb l^i^k; комплексные Zj=а;+iр;, 1 J (л - к\[1.
Теорема 5.4. Для того чтобы выполнялись неравенства xf<0, а;<0 необходимо, чтобы все коэффициенты ai (i^i^n) имели тот же знак, что и а0.
Доказательство. Представим Рп^ разложением на множители следующим образом:
"7 Л (хН*-^) - (л:—лсм)(^с—«I — Z'P1)С^—“i +Z‘P1) -
«о
... (х — а(й_i)/2 — iР(и-k)/2) (^—а(й_k)/2 + iР(й-к)/2) = (х—хх)...
...(х-хк) (х2—2а1х+а2 + р2)...(х2 —2a(n_k)/2x+a2„-k)/2 + P(2-^^^
Поскольку xt-<0, а; <0, в правой части знаки при степенях х строго положительны, а следовательно, все коэффициенты в Рй(х) имеют знак, совпадающий со знаком а0, что и требовалось доказать.
Введем определители Гурвица
Справедлив критерий: для того чтобы полином Рп^ при aQ>$ имел все корни с отрицательными вещественными частями, необходимо и достаточно, чтобы:
^>0, Х^Д^п;
Дй_1>0, Дй_3>0, ....
Корни нелинейных уравнений. Элементарные трансцендентные функции (sinx, tgx и т. п.) имеют на вещественной оси
198
— оо<х<+оо бесконечное число нулей. Однако если ограничиться конечной областью D изменения независимого переменного х и заданной точностью вычислений корней, то при достаточной гладкости функции /(х) в D можно для отыскания корней уравнения
/М = 0(5.3.22)
использовать аналитические методы определения корней полинома. Заменим (5.3.22) отрезком ряда Тейлора с центром в х0 с остаточным членом в форме Лагранжа
/м=ж)^£(х-,0)+^(х-,0)ч...+^
(5.3.23)
где с = с(х)—точка между х и х0. Затем в (5.3.23) следует отбросить остаточный член, найти аналитически корни полинома и-й степени, оценить ошибку в определении корней, связанную с заменой /(х) на РДх\ т. е. показать, что удовлетворяется заданная точность вычисления корней в области D.
Например, если уравнение cosx = 0 в области 0^х^5 заменить уравнением Р4(х) = 0
1 —х2/2+х4/24 = 0
(отрезок ряда Тейлора с центром в точке хо = 0), то точный первый корень — xt^ = Kj2 определяется формулой
^i,2= V6± \/36—24 = Уб+2УЗ'
з
с ошибкой ~0,02, второй—х2,* = -к с ошибкой ~2.
Если разложить cosx в ряд Тейлора с центром в точке х0 = л и оставить слагаемые до четвертой степени включительно, то получим уравнение
откуда первый и второй корень определяются с погрешностью ~0,02:
Х1,2=Я± \/б —^\/3- '
Как и при аппроксимации функций, полином Рп^ может выбираться не только на основе ряда Тейлора, но и любым другим способом. Важно только уметь оценивать погрешность замены /(х) на Рп^—соответствующую погрешность определения корней. Кроме того, можно заменять /(х) дробно-рациональной функцией wn,m^ и искать нули числителя.
Нелинейная оптимизация. Поиск минимума или максимума нелинейной функции /(х) в некоторой области D — простейшая
задача нелинейной оптимизации. Аналитические методы решения этих задач связаны с решением уравнений, вытекающих из необходимого условия экстремума.
Пусть /(х)—дважды непрерывно дифференцируемая функция переменных х = (х1? х2, • •, х„) в открытой области D. Тогда, если в точке x*gD функция /(х) достигает минимума или максимума, в этой точке
^(^,х„)=0, ^xv ..., х„)=0.(5.3.24)
ох 1охп
Соотношения (5.3.24) дают уравнения для определения искомых точек экстремума. Затем следует проверить знак второго дифференциала d2f в дочках эстремума. Если d2f>0, то в этой точке локальный мйнимум, если d2J<0—максимум. Если локальных минимумов или максимумов несколько, то из них выбирается точка х„ которая доставляет наименьшее значение /(х*); эта точка называется точкой глобального минимума, аналогично определяется точка х* глобального максимума.
Рассмотрим случай, когда /(х) является следующей функцией:
/М= X ai,jxixj+ X biXt+c,i,j=li-1
a^j, bb c—вещественные константы, т. e. /(x)—сумма константы с, линейной формы £ Ь^ и квадратичной формы £ Ъ^Хр i=lU=1
где А(а^)—симметричная матрица. В этом случае уравнения (5.3.24) в матричной записи имеют вид
Ах + Ь = 0,
где »=(»!,..., 6„).
Допустим, что систему линейных уравнений можно решить аналитически. Тогда остается проверить знакоопределенность квадратичной формы, поскольку d2f>^ тогда и только тогда, когда квадратичная форма положительно определена.
Для положительной определенности квадратичной формы необходимо и достаточно, чтобы все главные миноры матрицы А были положительны:
Q\1^12#21#22Q\1^12#21#22О, ...О, ...«и - аи апЛ *** ^«и - аи апЛ *** ^
Q\1^12
#21#22
Q\1^12
#21#22
О, ...
О, ...
«и - аи апЛ *** ^
«и - аи апЛ *** ^
Решецие обыкновенных дифференциальных уравнений (ОДУ). Задача Коши. Многие задачи естествознания могут быть сформулированы как задача Коши для ОДУ. Определение поведения механической системы во времени с заданными начальными условиями и функцией Лагранжа, а также концентраций реагирующих веществ с заданными уравнениями химической кинетики и начальными концентрациями и многие другие проблемы сводятся
к задаче Коши для ОДУ. Часто роль независимого переменного, обозначаемого нами х, играет время.
Задача Коши для системы ОДУ формулируется следующим образом: требуется найти вектор-функцию .у (х)^^ (х), у2 М> •••> ..., уп (х)), непрерывно дифференцируемую на интервале а^х^Ь, удовлетворяющую системе уравнений
^=fAx’ Ь> Уъ У»), 1^=fAx’ Ь> Уъ У»), 1(5.3.25)(5.3.25)
^=fAx’ Ь> Уъ У»), 1
^=fAx’ Ь> Уъ У»), 1
(5.3.25)
(5.3.25)
и начальным условиям
^(«Н?.(5.3.26)
Заметим, что условия (5.3.26) могут быть заданы в любой точке интервала [а, b ], важно, чтобы все компоненты у (х) были заданы в этой точке.
Известны условия, обеспечивающие существование и единственность решения задачи Коши, например такие: если /(х, у) непрерывна в некоторой окрестности D точки (а, у0) и существуют в D ограниченные
производные —- (х, у), 1 /, j < и, то для достаточно малых интервалов oyj
[а, 5] ^Ь—а) мало) существует единственное решение задачи Коши.
Условия, приведенные выше, а также им аналогичные обеспечи
вают лишь локальное существование непрерывно дифференцируе
мого решения.
Простой пример задачи Коши
^=1+/, у(о) = 0,
имеющей решение y=tgx, показывает, что непрерывно дифференцируемое решение существует лишь на интервале (0, л/2), так что локальные условия существования имеют небольшую практическую ценность.
Для линейных систем ОДУ
^= X ^.j(x)yj+fi(x), (5.3.27)
с непрерывными функциями а^ (х), /• (х) на интервале [а, 5 ] задача (5.3.27), (5.3.26) имеет единственное решение для любого интервала [я, b ] (глобальное существование решения). В этом факте заключается глубокое различие между линейными и нелинейными ОДУ общего вида.
Существует большое число аналитических приемов решения частных ОДУ, которые можно найти в [11]. Рассмотрим только методы, применимые для широких классов ОДУ, а именно: 1) систем линейных уравнений с постоянными коэффициентами; 2) систем линейных уравнений с переменными коэффициентами; 3) систем нелинейных уравнений.
Рассмотрим задачу Коши
1 1 (5.3.28) л(«)=У°, а^х^Ь,
где вещественная матрица 4=(а^) постоянна. Аналитическое решение этой задачи можно записать по аналогии со скалярным уравнением в виде
у (х) = е+ J eA^"sV^ ds.(5.3.29)
где еАх—матричная экспонента (см. п. 5.3.10), у°=уь У2, •••, Уп, /W=(A(4 -JM
Однако аналитическое представление е через элементы матрицы А в конечном виде возможно лишь для матриц простой структуры, в частности, диагональных. Поэтому систему (5.3.28) предварительно приводят к системе с матрицей простой структуры.
Предположив, что все собственные значения матрицы А различны, обозначим вещественные собственные значения Xt. X^i^k; комплексные у/=а7±/р;, Х^^п-Ц]!. Тогда существует невырожденная вещественная матрица Т такая, что замена
У= Tz
приводит (5.3.28) к системе уравнений
^-=T-YATz-VT-Yf=BzA-T"xf(5.3.30)
с матрицей
структуры
В=В=00
В=
В=
0
0
^к
“1Р1
-Р1«1
0
an-k/2pn-k/2-^п-к^п-к^
легко определяется:
...
...о ...о
2 / cosp„_k/2xsinp„_k^
для которой матричная
экспонента
еВх=
e^iX
v х / —cosPiXsmP^X
0 е®1*I—
\ — sin Р^ cos Р^ у
^0...~ \-sinp„_k/2xcosP„_k^
Решение (5.3.30) с начальным условием
записывается аналогично (5.3.29):
Z (х) = ев(х"л) Т" ^ 0 + J eB(x"s) Т" 4$ ^
с известной матричной экспонентой еВх, а отсюда искомое решение ^(х) находится умножением на Т;
у(х) = Тев(х-в)Т-1у° + f Те^’^Т"1/^ &•(5.3.31)
Если неоднородность /(х) такова, что интегралы в (5.3.31) берутся аналитически, и матрица Т известна, то формула (5.3.31) дает аналитическое решение задачи Коши (5.3.28). Для применения формулы (5.3.31) должна быть решена задача определения собственных значений матрицы А, которая, как известно, для больших п аналитически практически неразрешима.
Задача Коши для системы линейных уравнейий с переменными коэффициентами (5.3.27), (5.3.26) может быть сведена к (5.3.28) следующим образом.,
Запишем (5.3.27) эквивалентным образом:
^=Лау+/(х)+(Л(х)-Л0)у,
где Л 0 — постоянная матрица с различными собственными значениями такая, что
шах || А (х) — А0 || ^К,а^х^Ь'
и для матрицы Ао известно преобразование Т к матрице простой структуры В с известной матричной экспонентой. Тогда, согласно (5.3.31), исходная задача Коши эквивалентна интегральному уравнению. •
у^х^Те^-^Т"^0^- f Te^'^T-^^+^A^-A^y^ds,которое можно решать методом последовательных приближений:
yk+1 (х) — Тев(х~а)Т~1у0 + f Тев^Т"ЦД$)+
+A(s)—A0)yk(s))ds,(5.3.32)
к=0, 1, 2, ...; уо(х)=0.,
Можно показать, что для любого интервала [а, b ] последовательность ^ук (х)} сходится в пространстве функций С [а, й] с нормой
IIУ11= max || у (х) || = max шах (|у;(Д|)a^x^ba^x^bl^i^n
к точному решению задачи Коши >>(х)
уС^НтплМ-
Скорость сходимости определяется константой К; она тем выше, чем меньше К.
Задача Коши для линейных систем ОДУ может быть записана в виде интегрального уравнения
которое также можно решать методом последовательных приближений
Л+1 М=У°+ f (A (s)Л (»)+/(»)) л,(5.3.33)
* -к=0, 1, 2, ...; УоМ^^0-
Теорема 5.5. Последовательность ^ук (х)}, определяемая (5.3.33), сходится к точному решению у(х) задачи Коши (5.3.27) (5.3.26) в пространстве С [я, 6]:
y(x)=timyt(x).
Доказательство. Покажем существование предела {ук(х)}. Для этого докажем сходимость ряда
Уо+(.У1-Уо)+(.У2-.У1)+---+(л-.^(5.3.34)
Так как к-я частичная сумма ряда sk=yk) то отсюда последует существование предела {лМ}- Оценим нормы членов ряда. Имеем
IIУ1 -Уо II = И и У) У ° +/(»)) ^ II ^М(х-а\
где константой М обозначена оценка
II А (х)уй^ К || Л W II II У° II + Il/М II ^^
Пусть || Л (х) IKA/p Тогда
IIУ2 -У1II = II м W (У1 (s)-Jo (s)) ds К f II A (s) II II У! (s)-y0 (s) || <*<
$MVM(s—д)&=(х—d)2.
Аналогично,
II Уз —Уз IK f IM (5) || || у2 ^-У1 (s) II ^^Т^{х-ау.
Отсюда по индукции можно показать, что
IIУ к-Ук -1 К —— Vх - аГ-
Из (5.3.34) следует, что каждый член ряда начиная со второго по норме С [а, /)] меньше соответствующего члена числового ряда с положительными членами
Л/(»-«) + М^^1^ + Л/5^^+... + М^'^^,
который сходится к сумме
S=Me^b-a\
Следовательно, в силу критерия Вейерштрасса ряд (5.3.34) сходится равномерно для всех хе [а, 6]. Каждый член ряда (5.3.34)— непрерывная функция от х, так как интеграл есть непрерывная функция верхнего предела, а поэтому предел {^к(х)} существует и является непрерывной функцией х. Покажем, что предел у^ = Нт ук^ удовлетворяет (5.3.27) (начальное условие (5.3.26) для у^х^ очевидно, выполнено). Для этого в (5.3.23) перейдем к пределу в левой и правой частях равенства при к^сю. Причем из равномерной сходимости ^ук^ следует возможность перейти к пределу под знаком интеграла и получить
j(x)=j°+f(^(s)y(s)+/(s))<fc.
Таким образом, у^—решение задачи Коши, что и требовалось доказать.
Заметим, что доказана не только сходимость последовательности (у*(х)}, но и оценена скорость сходимости; {лМ} сходится к пределу не медленнее ряда для экспоненты в точке М^Ь-а).
В том случае, когда Л/Дй—а) велико, применяется более сложный для вычислений метод (5.3.32), который при определенных условиях может дать более высокую скорость сходимости.
Метод последовательных приближений для задачи (5.3.25), (5.3.26), аналогичный (5.3.33), определяется формулой
Уи М=У® + f/i (», У1Л (4 У 2,к (s),У.* (5)) ds, (5.3.35)
k = 0, 1,2, ...; ^к(х)=.у?, X^i^n.
Если все интегралы в (5.3.35) для к = 0, 1, 2, ... вычисляются аналитически, то решение ^(х) находится в аналитическом виде как предел
Ji(x)=lim у;л(х).
Аналогично доказательству теоремы 5.5 можно доказать существование предела при условиях, обеспечивающих существование и единственность решения задачи Коши.
Для примера решим задачу
^=1+Л у(0)=0.
Имеем
У1+1М= $(1+у* (»))<&, Уо(»)=0,
О
хX3
У1М=^ ьМ= f(l+i)2^=x+—, о2
b(4= jp + P+v) )<fc=x+—+—Х5+—, .
Таким образом, получаем правую часть следующего тождества (при £->со): ‘ .
' х3 2 522к(22к-1)Вк 2к.
tgx=,+y+-.5+...+^w^x2‘
где Вк—числа Бернулли; ряд сходится для х<п/2, т. е. при к-^ш получаем точное решение задачи.
Вторым аналитическим методом решения нелинейной задачи Коши является метод разложения решения в ряд Тейлора. Если метод последовательных приближений основан на процедуре интегрирования, то метод рядов Тейлора основан на дифференцировании.
Пусть /(х, у) имеет т непрерывных производных по всем аргументам в области D. Решение у^х^ ищется в виде отрезка ряда Тейлора:
^тМ=У((а) + ^(«)(х-а) + ^^(а)(х-а)2 + ...+
+АЙ(«)(*-«)т-(5.3.36)
•т\ dxm' ,v ’
Из исходной задачи получаем
У^=Ун
Затем из (5.3.25) находим
^>2 = ^ . у (^Лгdx2 дх j=1 \dyj) j
~-о^3Л(й)
с последующей подстановкой х=а, у^, затем ^3 и т. д. Остаточный член ряда Тейлора дает погрешность приближения Уцт(х) к точному решению у^х) задачи Коши.
206' \
Для примера решим методом рядов Тейлора задачу ^ = х+еау, у(0) = 0,
где а—параметр. С точностью до О(х4) получаем у3(х)=х+(1 + а)у + ^-^^х3 + О(х4).
Обратим внимание на то, что аналитическое решение дает приближенную формулу для произвольных значений параметра а; такой результат нельзя получить в рамках численных методов.
Решение ОДУ. Краевые задачи. Краевые задачи отличаются от задачи Коши тем, что дополнительные условия для дифференциальных уравнений задаются не в одной точке, а в двух: на краях интервала а^х^Ь, т. е. в точках х = а, х = Ь.
Покажем, как в приложениях возникают краевые задачи.
Пример 1. Найти траекторию механической системы, связывающую начальное и конечное состояния системы, задаваемые обобщенными координатами qb X^i^n, в момент времени t = t0; qi(to) = qi» в момент времени t = t<. q^ti^qi. Эта задача эквивалентна решению уравнений Лагранжа
с дополнительными условиями
9iM = q?, q^x^qh l^n.
Роль независимой переменной х здесь играет время Z, на концах интервала [z0, tY ] задаются дополнительные условия для определения решения системы ОДУ—уравнений Лагранжа.
Пример 2. Найти химическую кинетику реакции с заданной концентрацией некоторых исходных и конечных продуктов реакции (кинетика реакции—это решение системы ОДУ ^(z), удовлетворяющее краевым условиям).
Уравнения химической кинетики записываются в виде ^=/i(ci,С„), f0<'<G, 1<г<и,
с начальными условиями для концентраций q с^^ = с^ X^i^n — k, Х^к^п—Х, и конечными условиями для концентраций с^ с^1^ = си n-k-VX^i^n.
Число дополнительных условий на левом и правом концах интервала [z0, zx ] равно порядку и системы ОДУ.
Другим важным источником краевых задач является метод разделения переменных решения уравнений с частными производными
(п. 5.3.19). Во многих случаях метод приводит к решению линейного дифференциального уравнения вида
«Мул + ьМу + с(х)у+1^(х)у=/(х)(5.3.37)
ахах
на интервале a<x<b (X—параметр) со следующими условиями на краях интервала:
а0у(а)+а1^(а)=а2;
М^)+Р1^(6)=Р2,(5.3.38)
где а(, (^—заданные константы, ao + af/O, Po + Pi/O.
Если однородное уравнение (/(х) = 0), соответствующее (5.3.37), имеет коэффициентами а(х\ b(x\ с(х), g(x)— полиномы, то для некоторых из них общее решение выражается через специальные функции (см. [11]). В таких случаях аналитическое решение краевой задачи (5.3.37), (5.3.38) сводится к вычислению интегралов от произведения /(х) на комбинации специальных функций и решению системы линейных алгебраических уравнений второго порядка.
Пусть, например, в (5.3.37) a(x)=g(x) = 1, />(х) = с(х) = 0, X—вещественный параметр, Х<0. Обозначим Х=—v2 и положим в (5.3.38) af = Pi=l, z=l,2, a = 0, b=L Имеем краевую задачу
У-у2у=/(4
Решение y(x) ищем в виде суммы y(x) = u(x)+w(x), где w(x) является решением краевой задачи d2U 2 л
-v2M=0, dx2
«(o)+>)=i, «(i)+>=i-4i)-^(i)
с однородным 'уравнением и неоднородными краевыми условиями, w(x)—решением задачи Коши
^-v2w=/(4 w(0)=0, ^(0)=0.
Решим последнюю задачу методом вариации произвольных постоянных. Имеем
w(x) = cY (х) evx + с 2(х) е “vx.
208\
Тогда
&W-dxe + +C1Ve•
Положим
^levx + $Vvx=0;(5.3.39)
dx ax
следовательно, d^W dc^de2।2 vx ।2 — vx
-—- = —-vevx——ve vx + CiV2evx + c2v e vx. dx dx dx
Отсюда и из исходного уравнения для w находим
— vevx ——ve” ”=/(%).(5.3.40)
dx dx
Из (5.3.39), (5.3.40) определяем
^ __ 2vx dc2
dxdx ’
(—e “ 2vxvevx—ve “vx)^ = Дх\
откуда
UAq V
p-vxx ,
Значения констант с?, с ° находим из начальных условий для w(x):
0 = w(0) = [ci — J ^e~vy(s) &]evx + [c2 — J^evy(s) &]e"vx=ci + c^^ оо
Xx
0=^(0)=[ci - J^e"v7(s)]vevx-[c2- ^ev7(s)dk]ve-"=c?v-c!v. 00
Получаем c? = 0, c2 = 0. Окончательно имеем
w(x)= +evx J ^e"vs/(^) ds—e-vx J^evs/(s) ds,оо
^(x)= +evx J ^e"vs/(^) ds-t-e"vx J ^evsf^s)ds.оо
Для функции w(x) краевое условие в точке х=1 перепишем с учетом формул для w(x), так: ах
l±^e-v(S-D_L2Yev(«-i) дла$.
2v2v?
Решение краевой задачи
w(x) = c1evx + c2e"vx
сводится к определению констант q, с2 из краевых условий
Jq + c2=l,
1
c1vev — c2ve“v = l + J ^-[— (1+2v)e-v(s-1) —о
-(l-2v)ev(s"1)]/(5)&.(5.3.41)
Отсюда находим q, с2 и искомое решение j^(x): 1
Wx)=—2^—JIr-p+^e-’f-Ml-^e^"'’^
zv ' —v(e~v+ev)[j2vL v ’'’ J
0
1
)p-VX (Г 1
x/(s)^j. + —^-^|-ve''+l + J-[-(l+2v)e-''(s-1>- 0
-(1 - 2v) ev<$- ^/(s) ds | - e” J le"v7(s) <Z$+e"vx J ^f^ ds. 00
Рассмотренная краевая задача имеет единственное решение. Этот факт связан с тем, что определитель системы линейных уравнений (5.3.41) отличен от нуля:
-v(e"v+ev)/0, v/0.
Можно привести примеры неразрешимых краевых задач, а также краевых задач, имеющих бесчисленное множество решений. Эти свойства задач определяются системой линейных алгебраических уравнений типа (5.3.41), так как неразрешимость или бесчисленное множество решений системы приводит к аналогичному свойству исходной краевой задачи.
В том случае, когда решение однородного уравнения, соответствующего (5.3.37), не выражается в известных элементарных и специальных функциях, можно применять эффективный метод решения (5.3.37), (5.3.38)—метод прогонки. Суть этого метода состоит в сведении краевой задачи к некоторым задачам Коши.
Для простоты изложения рассмотрим уравнение
(5.3.42)
с краевыми условиями
^(a)=otoy(a)+oc2;(5.3.43)
d£^=WbW-(5.3.44)
Будем искать линейную комбинацию
^=А^у+В^(5.3.45)
(с неизвестными пока функциями Л(х), В^) такую, чтобы при подстановке (5.3.45) в уравнение (5.3.42) оно стало тождеством. Для этого в соотношении
^у + А(Ау + В)+^+В(Ау+В) + су=/
Сел
приравняем отдельно коэффициенты при у1, у0. Получим уравнения
для Л(х), В^х^а<х<Ц с начальными условиями из (5.3.43):
= — А2 — ЬА — с, Л(я) = а0;(5.3.46)
ахх '
^ = -AB-bB+f, В(а)=а2.(5.3.47)
ах
Предположим, что решение задачи Коши (5.3.46) Л(х) существует на интервале а^х^Ь и может быть определено аналитически. Тогда решение (5.3.47) записывается явно
2?(x)=a2e-pW+6(^+fe^^
Предположим, что Л(й) —Ро/0. Тогда из (5.3.44), (5.3.45) находим
у^=тйЗ-(5'зл8)
Ро
На этом завершается прямая прогонка, смысл которой состоит в перегоне условия (5.3.43) слева направо от точки х = а в точку х = Ь и в определении у (6).
Обратная прогонка — это решение второй задачи Коши: уравнения (5.3.45) с условиями (5.3.48) на правом конце интервала а^х^Ь. Окончательно получаем решение исходной краевой задачи
y(x)=y(^ePW*+h?W*2^)^ а^Ь.
В том случае, когда принятое предположение не выполняется, краевая задача либо неразрешима, либо имеет бесконечно много решений.
Из аналитических методов решения нелинейных краевых задач рассмотрим метод сведения к интегральному уравнению. Пусть имеем краевую задачу
d^4k^yY У^Н^=»- (5-3.49)
^М=1^(Л> 5)^)Л’ о^М=1^(Л> 5)^)Л’ оЕсли бы правая часть была известной функцией от х, например то с помощью подстановки проверяется, что решение краевой задачи имеет вид
^М=1^(Л> 5)^)Л’ о
^М=1^(Л> 5)^)Л’ о
где
Используя эту формулу, сводим задачу (5.3.49) к решению следующего интегрального уравнения:
у^= f ^^ sW(sY №.О
Если метод последовательных приближений
a+iW= f^ ^fb^Y ^
О
(k = 0, 1, 2, ...; ^0(х)—заданная функция) сходится к точному решению >>(х) и для любого к интеграл в правой части можно вычислить аналитически, то точное решение
УМ= lim у№-
Вопрос о единственности требует специального рассмотрения.
Обычно он снимается в результате анализа прикладной задачи.
Например, для краевой задачи
-^ = -у2+ух2+2-х2(х-1), у(0)=у(1)=0
метод последовательных приближений
Л+1М = (л:-1)Р[-^+Л^2+2-52(5-1)]Л+У(5-1)[-3'к+л^2 + Ох
+ 2 — s1^— 1)]А, А:=0, 1, 2,^о(х) = 0,
дает первое приближение
отличающееся от точного решения
х х4 х530+Т2-20х х4 х530+Т2-20~0,02.~0,02.у(х) = х(х — 1) не более чем на величину
х х4 х530+Т2-20
х х4 х530+Т2-20
~0,02.
~0,02.
шах |^(х)—^х (х)| = шах
0^х<10<х<1
Заметим, что эта точность достигнута в результате небольшого объема вычислений, а приближение найдено в виде формулы. Для сравнения «вычислительных затрат» можно рекомендовать решить эту задачу разностным методом (см. 10.4) с той же точностью.
Решение уравнений с частными производными. Из аналитических методов решения задач для уравнений с частными производными рассмотрим метод Фурье (метод разделения переменных) на примерах основных линейных уравнений математической физики и метод подобия для нелинейного уравнения теплопроводности. Для дальнейшего изучения рассматриваемых вопросов рекомендуется [31].
Волновое уравнение. Малые поперечные колебания однородной струны описываются уравнением
д2и и
1?=а^^х’(5-3-5°)
где независимые переменные (х, z)gD = {0^x^Z, O^t^tt), решение w(x, z)—это отклонение от положения равновесия (w = 0) струны в точке х в момент времени Z (рис. 5.4). Здесь константа а1 определяется формулой
«2 = 77Р,
и а
где Т—сила натяжения струны, р—ее, .
плотность.tХ*
Неоднородность /(х, t) = F(x, z)/p;И
F(x, t)—нагрузка, действующая наТ^ПП I LI I ILLI
струну в точке х в момент времени Z.т^——>
Для определения решения и^х, z)
задаются начальные условияРис. 5.4
Цх, 0) = <ро(х), 0<х^7,
Зи,,(5.3.51)
—(х, 0) = Ф1(х).v
Здесь ф0(х)—начальная форма струны,ф t (х)—начальнаяскорость.
Кроме того, следует задать граничные условия. Например, если левый
конец струны закреплен, а правый свободен, то граничные условия следующие:
м(0, r) = 0, ^(/, f) = 0;
Jv 7 dxv 7
если закреплены два конца, то
;w(0, z)=0, и^ z) = 0.(5.3.52)
Уравнение (5.3.50)—одномерное волновое уравнение, так как в нем одна пространственная переменная х.
Малые поперечные колебания мембраны описывает двумерное волновое уравнение
Здесь (х, y^eD0) O^Z^Zi, w(x, у, z)— отклонение мембраны от нуля (положение равновесия мембраны) в точке х, у в момент времени t (рис. 5.5).
а2 и 7—^=аat2а2 и 7—^=аat2Распространение волн в трехмерной однородной среде (я2 = = const) описывается трехмерным волновым уравнением
а2 и 7
—^=а
at2
а2 и 7
—^=а
at2
а2и а2и а2идх2^ ду2 + dz2
Уравнение теплопроводности или диффузии. Процесс распространения тепла или диффузии частиц в одномерном случае описывается уравнением
ди ^а2и хди ^а2и х(5.3.53)(5.3.53)
ди ^а2и х
ди ^а2и х
(5.3.53)
(5.3.53)
где (х, z)eZ> = {0<x</, O^Z^Zi}. Решение w(x, z)—это температура бесконечно тонкого стержня в точке х в момент времени z (для задачи теплопроводности). Коэффициент
<z2 = fc/(cp),
где к—коэффициент теплопроводности, с—удельная теплоемкость, р—плотность материала стержня. Функция
F^x, t)
СР
где F^x, z)—плотность тепловых источников в точке х в момент времени Z (рис. 5.6).
Для однозначного определения решения задаются начальное условие и^х, 0) = фо(х), 0<х</(5.3.54)
(ф0(х)—начальное распределение температуры в стержне) и граничные условия, например вида
м(0, z) = p0(z), w(7, z) = p1(z)(5.3.55)
(Ho, Hi—заданные температурные режимы на краях стержня) или
§0, O = v0(z)
(задан тепловой поток на левом конце стержня); возможны различные комбинации краевых условий./
д2и d2u\8х2^" ду2 уд2и d2u\8х2^" ду2 уди з — = а dtди з — = а dt+f^, у, t).+f^, у, t).Двумерное уравнение теплопроводности или диффузии имеет вид
д2и d2u\8х2^" ду2 у
д2и d2u\8х2^" ду2 у
ди з — = а dt
ди з — = а dt
+f^, у, t).
+f^, у, t).
Здесь (х, y^eD—плоская область, O^z<zt Трехмерное уравнение
ди з — = а dt
Здесь (х, у. z^eD, Do—трехмерная область, где ставится задача определения температуры w(x, у, z, t) в момент времени t. Для
выделения однозначного решения задаются дополнительные условия, аналогичные (5.3.54), (5.3.55).
Волновое уравнение и уравнение теплопроводности—примеры нестационарных уравнений, описывающих нестационарные процессы (есть зависимость решений от времени z).
Стационарные уравнения. Стационарные процессы описывают решения уравнений с частными производными w = w(x, у, г"), в которых отсутствует зависимость от времени Z. Если в волновом уравнении и уравнении теплопроводности положить
w(x, у, z, t) = u(x, у, Z), /(х, у. z. z)=/(x, у, z)
и считать, что граничные условия не зависят от Z, то приходим к стационарному уравнению вида
82и 82и 82и г.х
илиили' т^+т^+тт =/(Х’ ^ z)8х2 бу2 6z2 ''
или
или
ku=Lku=L(5.3.56)
ku=L
ku=L
д2 d2 д2
где А=-—+—+—-—оператор Лапласа. ox2 dy dz7
В отличие от нестационарных уравнений начальные условия для (5.3.56) не задаются, остаются лишь граничные.
Уравнение (5.3.56) называется уравнением Пуассона. Однородное (/=0) уравнение Пуассона
Дм = 0(5.3.57)
является уравнением Лапласа.
Решение (5.3.56) или (5.3.57) ищется в области D. Для однозначного определения решения задаются на границе Г области граничные условия
ы|г = Фо(^ У, z)
ди дпди дп(задача Дирихле) либо
ди дп
ди дп
= Ф1(^ Ь z)г
(задача Неймана) или их комбинация.
Перечислим физические процессы, изучение которых сводится к решению уравнений (5.3.56), (5.3.57): распределение стационарного температурного поля в однородной среде, стационарная диффузия, электростатика однородной изотропной среды, магнитостатика, распределение поля постоянного электрического тока, потенциальное течение несжимаемой жидкости [31].
Корректность постановки задач для уравнений с частными производными. Задачу называют корректно поставленной, если решение:
существует в некотором классе функций;
единственное в некотором классе функций;
непрерывно зависит от входных данных задачи (начальные, граничные условия,; коэффициенты в уравнении и т. д.).
Это определение корректности распространяется и на другие математические задачи. Смысл его состоит в том, что класс корректно поставленных задач составляют только те задачи, решение которых «мало» изменится, если задачу «мало» изменить (возмутить). Математические задачи являются идеализацией естественных явлений, они получаются отбрасыванием многочисленных «не важных» деталей. Поэтому, решая конкретную задачу, необходимо быть уверенным, что она корректно поставлена, а значит, ее решение «близко» к естественному процессу.
Условия, обеспечивающие существование, единственность решения задачи Коши для ОДУ (см. п. 5.3.17) определяют корректно поставленные задачи.
Ниже рассматриваются краевые задачи для уравнений с частными производными также корректно поставленные.
Приведем пример некорректно поставленной задачи для уравнения Лапласа (пример Адамара). Рассмотрим уравнение
с условиями
И (о, у) = о, ^(0, у)=^8шХ>.
Если перейти в условиях к пределу при ^-^оо, то предельная задача имеет решение
м(х, у) = 0.
Решение исходной задачи
w(x, у, ^) = ”Sh^xsinКу.
Заметим, что при К^оо
м(х, у, К)-н>0, а это означает, что нарушено условие непрерывной зависимости решения от входных данных задачи (от К), т. е. задача некорректно поставлена.
Может сложиться впечатление, что решать некорректно поставленные задачи вообще не имеет смысла, а их постановка свидетельствует о неадекватной математической модели изучаемому явлению. Это мнение, широко распространенное до 60-х годов нашего столетия, было опровергнуто в работах советского математика А. Н. Тихонова, который показал естественные источники некорректно поставленных задач и предложил эффективные методы их решения [29, 30].
Метод Фурье для уравнения свободных колебаний струны. Рассмотрим задачу (5.3.50), (5.3.51), (5.3.52) с неоднородностью /=0, т. е. свободные колебания закрепленной на концах струны с начальным профилем ф0 (х) и начальной скоростью фДх).
Ищем частные решения, не равные тождественно нулю, уравнения (5.3.50) в виде
u(x, t^X^T^.
Подставляя в уравнение это выражение, найдем
ТЧ^ Х''2^_
равенство для функций переменных t и х возможно только тогда, когда X—постоянное число, откуда получаем два дифференциальных уравнения:
Т"+я2ХТ=0;(5.3.58)
А^+М^О.(5.3.59)
217
Чтобы получить не равные тождественно нулю функции Х(х) с условиями
(5.3.60)(5.3.60)У(0) = 0, ^(/) = 0,
(5.3.60)
(5.3.60)
вытекающими из (5.3.52), следует решить задачу (5.3.59), (5.3.60) — задачу на собственные значения (задачу Штурма—Лиувилля): определить те значения X, при которых она имеет нетривиальное решение. Эти значения называются собственными, а соответствующие решения ^(х) — собственными функциями.
Рассмотрев значения Х<0, Х = 0, Х>0, можно найти, что собственные значения
у) , к=1, 2, а соответствующие собственные функции
Xfc(x) = sin^, к=\, 2, ....
Отрицательные значения к приводят к собственным функциям, отличающимся множителем (— 1), поэтому ниже рассматриваются лишь положительные к.
Для значений Х=Хк общее решение уравнения имеет вид (5.3.58):
/ хkuat , . kuat
TkV)=akcos—+bksm—,
где ак, Ьк—произвольные константы. Функция
/\\ ™ \ I kuat _ . kuat \ . ких
иДХ, 1) = ХДх)Тк^) = икСО8 — + Ьк81П— Ism—
удовлетворяет уравнению
д2и 2д2и
и граничным условиям
w(0, t) = 0, иЦ, z) = 0
при произвольных ак, Ьк. Это же верно и для конечной суммы решений ик^х, z), а также для ряда
и(х, 0= Е иЛх’ Й'
к = 1
если ряд сходится и его можно почленно дважды дифференцировать по х и t.
Определим константы ак, Ьк, чтобы удовлетворить начальным условиям (5.3.51). Для этого следует положить
/ х. ких , х киа. . ких ди
( = 0( = 0ФоМ= L akSin—, Ф1(х)= L —bksm—=— к=11к=Х 1101
( = 0
( = 0
т. е. найти коэффициенты разложений функций ф0(х), Ф1М в ряд Фурье; получаем
2 ,•/ \ • ккх . f 2 г \ • kitx f
«к=~Л <PoWsm—<&, bk=—\<p1(x)sm—dx.< о/кка о
Окончательно решение поставленной задачи записывается в виде
/\/ 2 р \ • ккх , \ k*n,crt
и\х, t) =ф0(х)81П — dx Icos——Н
k=lLWo11
(
2 !• z х . кюс . \ . ккаг"! . ккх
-—фЛя^т —— dx sin-—— sin——. (5.3.61) кка о1/ J 7
Если начальные функции ф0(х), Ф1(*) удовлетворяют условиям
Фо(х)еС3 [0, 7], ф1(х)еС2[0, 7],
Фо(0) = Фо(/) = 0, фо(0) = ф'6(7) = 0, Ф1(0) = Ф1(7) = 0,
то возможно почленное дифференцирование ряда и полученные ряды сходятся абсолютно и равномерно при 0<х^7 и любом t. Если указанные условия нарушены, то может не существовать дважды непрерывно дифференцируемого решения (задача некорректно поставлена в классе дважды непрерывно дифференцируемых функций; в этом случае решение определяется по-другому [31]).
Предположим, что интегралы в (5.3.61) можно взять
аналитически, а ряд просуммировать; тогда получим аналитическое решение поставленной задачи методом Фурье. Очевидно, что если ф0, ф! представляют собой конечные суммы синусоид вида sin^^ (т—целое), то ряд (5.3.61) сводится
к конечной сумме.
Методом Фурье, по аналогии с рассмотренной задачей, исследуются [31]: вынужденные колебания струны (//0); радиальные колебания газа в сфере и цилиндре; колебания прямоугольной и круглой мембраны и другие задачи.. При этом собственные функции задачи Штурма—Лиувилля могут выражаться через специальные функции, например функции Бесселя.
Метод Фурье для уравнения теплопроводности. Рассмотрим задачу определения температуры в однородной тонкой
пластине, контур которой поддерживается при температуре w = 0.
Начальное распределение температуры задано — ф(х, у) (рис. 5.7). Эта задача сводится к решению уравнения
(5.3.62)(5.3.62)5м _ 2( ^2м ^2м5/ ° I дх2 + бу2
(5.3.62)
(5.3.62)
в области Do = ^0^x^p, O^y^q}, O^z^z1? с начальным условием
и(х, у, О) = ф(х, у), х, yeD0(5.3.63)
при граничных условиях
Цх, у, t)L=o = u(x, у, t)Up = 0, О^у^д,
и(х, у, г)1у=о = м(^ У, Oly=q = 0’ О^х^р. (5.3.64)
Согласно методу Фурье, частные решения (5.3.62) ищем в виде
Для определения X, У, Т получаем уравнения
J^2 + Vx=0,
j у;2+ц2у=о,
т;+д2(х2+ц2)7=о,
где X2, ц2—константы. Общие решения этих уравнений:
Х^х^С! cosXx + c2sinXx,
.K(^) = c3cos px + c4sinpx,
TW = Cse-a4X2+^t.
Граничные условия приводят к следующим собственным значениям:
Л тк ПК
к=—, ^—> т’ п=х’ 2’ 3
Частные решения, удовлетворяющие (5.3.62) и (5.3.64), таковы:
,-a2n2(^-+^t • ти .ли
ит,п=ат,„е V ?2/ sm—xsm-y.
Образуем ряд
Цх, у, z)= У, ит.Дх, у, /).
Неизвестные коэффициенты атп определим из начального условия / х £. ткх . пку
Ф ^ Я= L ат,п^Sin,m,n=lР ?
т. е. ат п — коэффициенты двойного ряда Фурье:
ат п = — Ф х, yjsinsin — ахау.
’ PQooР q
Окончательно решение поставленной задачи записывается в виде/\4 / ? ? z х . тк пку , , \
и\х, у, t)= 2j —I JJTV*’ ^)sm —xsm — dxay )x
m, n=ipq\oop q /
—a2K2(m2lp2+n2lq2\t • ^^• и^
xeH IPpsm xsm—y.
Рис. 5.8 тепла в бесконечном задачи распространенияРис. 5.8 тепла в бесконечном задачи распространенияЕсли ф(х, у) представима в виде конечной суммы слагаемых вида
Рис. 5.8 тепла в бесконечном задачи распространения
Рис. 5.8 тепла в бесконечном задачи распространения
. тк . пк
sin — xsm—у, то аналитическое ре- Р Q
шение также сводится к конечной сумме элементарных функций. Методом Фурье, по аналогии с рассмотренной задачей, исследуются [31]: неоднородное уравнение теплопроводности; задачи распространения цилиндре и цилиндре конечных размеров; тепла в однородном шаре и др.
Метод Фурье решения задачи Дирихле для уравнения Лапласа в круге. Рассмотрим уравнение (5.3.57) в круге
2
с условием
и|г=Фо,и|г=Фо,(5.3.65)
и|г=Фо,
и|г=Фо,
где Г — граница круга (рис. 5.8).
Введем полярную систему координат (г, ф) и запишем уравнение Лапласа в полярных координатах
(5.3.66)(5.3.66).1 5 / du\ 1 д2 у А
(5.3.66)
(5.3.66)
=+ 2Г2=0-
г or у or 1 Г2 Оф
Ищем частные решения (5.3.66) в виде м = А(г)Ф(ф).
Для определения функций R(г), Ф(ф) получаем уравнения
ф;2+х2ф=о,
d ( dR \ л 2 п л г— г— 1-Х 2Я = 0. .dry dr )
Общее решение первого уравнения
Ф(ф)=с^озХф + с^шХф.
т. е.т. е.Функция Ф(ф) должна быть периодической с периодом 2л, Ф(ф + 2л) = Ф(ф).
т. е.
т. е.
Последнее равенство влечет условие
Х=и,где и—целое число. Общее решение второго уравнения
Поскольку ищется решение и (г^ ф) дважды непрерывно дифференцируемое в круге (т. е. и при г = 0), следует положить с4 = 0. Итак, частные решения
м„(г, ф) = г"(аисо8Иф + 6я8тиф), 0^г^го, 0<ф^2л, где ап, Ьп—произвольные константы. Образуем ряд
«(^ ф)= Е мЛг* ф);и = О
неизвестные коэффициенты ап, Ьп определим из граничного условия м(г0, ф) = Фо(ф), 0<ф^2л; фо — заданная функция. Имеем
J Фо(ф)= Е го(а„со8Лф+6я$шпф). и = 0
Отсюда находим
1 й°~2л1 й°~2л^п гп Г о ТЕ^п гп Г о ТЕJ ф0 (ф)сО8Иф*/ф,J ф0 (ф)сО8Иф*/ф,
1 й°~2л
1 й°~2л
^п гп Г о ТЕ
^п гп Г о ТЕ
J ф0 (ф)сО8Иф*/ф,
J ф0 (ф)сО8Иф*/ф,
^»=4; фо(ф)8тлф(/ф.
ПК J
Окончательное решение поставленной задачи имеет вид
1 Г00«(г, ф)=^ I Фо(фНф+ Е-Л1 Г00«(г, ф)=^ I Фо(фНф+ Е-Л^ J ф0(ф)сО8Иф^ф)сО8Иф +^ J ф0(ф)сО8Иф^ф)сО8Иф +
1 Г00
«(г, ф)=^ I Фо(фНф+ Е
-Л
1 Г00
«(г, ф)=^ I Фо(фНф+ Е
-Л
^ J ф0(ф)сО8Иф^ф)сО8Иф +
^ J ф0(ф)сО8Иф^ф)сО8Иф +
+ 1 - ф0(ф)81ПИфаф 181ПИф .
Последняя формула дает аналитическое решение для функций ф0 (ф), представимых конечным отрезком ряда Фурье, а также в том случае, когда интегралы берутся в явном виде и ряд суммируется аналитически.
Приведем некоторые общие замечания относительно метода Фурье. Основная идея метода—свести решение уравнения с частными производными к системе обыкновенных дифференциальных уравнений, решение которой выражается в элементарных или специальных функциях. Однако для успешного применения аналитического метода необходимо, чтобы область пространственных переменных была ограничена координатными поверхностями тех систем координат, в которых переменные рассматриваемого уравнения разделяются. Именно поэтому выше рассмотрены прямоугольник и круг (более подробно см. [31]). Кроме того, аналитический метод эффективен в случае начальных и граничных условий, представляемых в виде конечной суммы по собственным функциям однородной задачи для данной области.
Если имеется возможность в технической задаче выбирать область, начальные и краевые условия, то следует принимать во внимание, что разумным их выбором можно получить аналитически решаемую задачу.
Метод подобия в нелинейной задаче теплопроводности. Рассмотрим уравнение теплопроводности или диффузии в том случае, когда коэффициент теплопроводности зависит от температуры, т. е. k=k^u)\
ди д I, х ди\
=^(и\ —(5.3.67)
dt дх\ v 'дх)v 7
в области 0^х<оо, 0^z<oo с начальным условием
и^х, 0) = мо(5.3.68)
и граничным условием
и^ t^ = uv(5.3.69)
где м0, uv—константы. Это задача определения температуры тонкого полубесконечного стержня с начальной температурой w0, к которому на границе (х = 0) подключен тепловой резервуар, обеспечивающий на конце стержня температуру, равную uv
Заметим, что уравнение (5.3.67) не изменяется при преобразованиях независимых переменных:
xY=qx, t1=q2t,
т. е. остается подобным себе, если масштаб длин изменить в q раз, масштаб времени—в q2 раз. При этих преобразованиях не изменяются и дополнительные условия (5.3.68), (5.3.69). Поэтому для решения поставленной задачи при любых х, t, q должно выполняться равенство и^х, t) = u(qx, q2t\(5.3.70)
Положим q=\!^t. Тогда из (5.3.70) получим, что и^х, z)—функция одной переменной z = x\^ft
и^х, t^ = u^x{^t, l) = y(z).
Отсюда находим
диdv^— 1)хди1 dvд1 d
dtdz 2z3/2 ’dxt1'2 dz^dxZ1/2 dz
Подставим эти выражения в (5.3.67), получим уравнение
d /, / х dv\1 dv
Т^Мт =-сРэ2Т(5.3.71)
dzy х ’ dz) 2 dz
с дополнительными условиями из (5.3.68), (5.3.69)
г(0) = м15 v(oo) = wo.(5.3.72)
Таким образом, исходная задача для уравнения с частными производными свелась к краевой задаче для ОДУ. Аналитическое
решение задачи (5.3.71), (5.3.72) дает аналитическое решение исходной задачи.
• 5.4. Методы возмущений
В методах возмущений важную роль играют такие понятия, как асимптотические формулы и ряды; определим их предварительно.
.4.1. Асимптотические формулы, оценки и ряды. Пусть функция /(х) определена на множестве D изменения переменной х, пусть точка а—предельная точка D. Напомним понятие символов порядка о и О. Соотношения
•/(х) = о(ф(х)),х->а,xeD,
J/(х)~<р(х),х^а,xeD,
/(х) = О(ф(х)), xeD,( ' ' )
./(х)=О(ф(х)),х->а,xeD,•
эквивалентны следующим:
./(х)/ф(х)->0, х-^а, xeD,
/(х)/ф(х)^1, х^а, xeD, |/(х)/ф(х)|^с<оо, xeD, |/(х)/ф(х)|^с<оо, х-^а, xeD, где с—константа. Например, при х^О, х>0
sh^=O(e1/x), е"1/х = о(1), sinx~x, cosx = O(l),
11 1 АЛ
lnln- = o In- ;
x \ xl для комплексной переменной z
^^=o(e|Im21), z->oo, 1— e"z = O(z), Rez>0;
для натуральных чисел и 1пи!~и1пи, и->оо.
Формулы (5.4.1) называют асимптотическими формулами или оценками.
Пусть имеется последовательность (ми(х)}, xeD, п = 0, 1, ..., такая, что
. hm -0; х^а W)
такая последовательность называется асимптотической.
Будем говорить, что ряд
Е «п“»Мп = 0
(не обязательно сходящийся) является асимптотическим рядом функции f^ по асимптотической последовательности (м„(х)}, если для любого п
/М-I а„и„(х)=о(ип(х)'), х->а.k = 0
Хотя асимптотический ряд может быть расходящимся, его применение в вычислениях оказывается эффективным, поскольку можно фиксировать п и использовать его при х-^а. Таким образом, при фиксированном п вопрос о сходимости асимптотического ряда не имеет смысла, так как имеем конечную сумму п слагаемых.
Если асимптотическая последовательность фиксирована и асимптотическое разложение /(х) существует, то оно единственно и его коэффициенты определяются формулой
/W- Е
а„ = Пт—.
х^а^п
Этот факт записывается следующим образом:
Е апМпИ-п = 0
Сравним характер поведения членов трех типов рядов: а) ряд сходится в теоретическом и практическом смысле; Ь) ряд сходится в теоретическом смысле и «расходится» в практическом; с) ряд сходится в теоретическом смысле, являясь асимптотическим (рис. 5.9).
Пример ряда а) для малых значений х
7 Г7 соу2и+1
erfx=—: e-s2ds = — ^ (-1)" ., 1V Х2<со. (5.4.2) оv
Пример ряда Ь): тот же ряд (5.4.2) для больших значений х, так как если х велико, то велико и число больших членов, ряда. На практике этот ряд для вычислений erfx при больших
а)Ь)с)
Рис. 5.9
значениях х не применяется. Более удобен следующий асимптотический ряд—пример ряда с):
(5.4.3)(5.4.3),. e"xVi I 1*3 1-3-5\
(5.4.3)
(5.4.3)
erfx-l l-T-2+^2-4-^-6+••• •
Заметим, что ряд (5.4.3) расходится, но если оборвать ряд, например на втором члене, то получим формулу
erfx=l-^-^l 1-^ ) + <?(—х^оо, которую удобно использовать для достаточно больших х. Впервые асимптотические ряды в вычисления ввел французский математик Ивер Лаплас (1749—1827). Современная теория асимптотических разложений берет начало с работ французского математика Анри Пуанкаре (1854—1912). Методы возмущений очень часто используют в качестве рядов по параметру возмущения 8 асимптотические ряды
' 'Ле)~ Е ап£".
п = 0
где асимптотическая последовательность — степенная {е"}, 8->0, 8>0. Поэтому очень важно понимание свойств этих рядов.
Над асимптотическими рядами можно производить некоторые операции. Приведем основные свойства степенных асимптотических рядов:
Теорема 5.6. Если
/(е)~ X а„е", g(e)~ X Ьпгп, е^О, е>0, и = 0п = 0
то
/(e)+g(e)~ X с„е”, /(e)g(e)~ f dn£n, с^О, £>0,п = 0п = О
зде сп un-Vbn, dn ^ и^Ьп_к.
к = 0
Доказательство. Докажем справедливость формулы суммирования. По определению имеем (для N^V)
N-lN—1
f^ = X aneK+O^£N'), g^= X b„£n + O^N\ n=0n=0
Складывая, находим
/(e)+g(e)= X ^«n+b^^ + O^,
n = 0
отсюда, обозначая cn = an-Vbn, получаем формулу суммирования.
Аналогично доказывается формула умножения.
Введем понятие равномерности асимптотических формул, оценок, рядов. Пусть в формулах (5.4.1) функция /=/(%, у) зависит
Л.
еще от одной переменной у. пусть также yeDv Тогда, если в соотношениях (5.4.1) предельный переход выполняется равномерно по у, а константу с можно выбрать не зависящей от у, будем говорить о равномерных асимптотических формулах, оценках для /(х, .у) по у. Например,
/(х, ^) = о(1), х-^а, xeD, yeD^
— равномерная оценка, если /(х, ^)-^0, х^а, xeD равномерно ПО yeDv
Приведем теорему об интегрируемости и дифференцируемости степенных асимптотических рядов, которая использует равномерность оценок.
Теорема 5.7. Пусть
ф^х^^а^х^г”, 8^0, 8>0, а^х^Ь, п = 0
равномерно по х. Тогда
J/(e, x^dx^ £ ^f а„(х) Jx^e", s^O, 8^0(5.4.4)
Пусть функция ф^г, х) дифференцируема по х и имеет место
£ Ьп^гп, 8—>0, 8>0, а^х^Ь.
dx п=0
Тогда Ь„{х)=^^-.
dx
Рассмотрим пример
Г1 \/ rL eV/2 Г~к 18 0/2)(1/2)/е\2\
/(е, x) = Vx+8 = Vx !+- =Vx l+i-+—7—I- +"•)•
'7 v v у xy v у 2x 2\x) J
При 8—>0 ряд в правой части равенства—равномерный асимптотический ряд на интервале а^х^Ь, где а не зависит от 8, а>0, и неравномерный на интервале 0<х</). Для неравномерного асимптотического ряда утверждение теоремы 5.7 может быть неверным, что можно проверить на приведенном примере.
Асимптотическое разложение интегралов, содержащих параметр. Простейший пример асимптотического разложения интеграла дает первая часть теоремы 5.7. — формула (5.4.4). Такое разложение можно трактовать как ряд возмущений по параметру возмущения е, причем это регулярный ряд возмущений. Таким образом, если подынтегральная функция разлагается в равномерный по х асимптотический ряд при е—>0, 8>0, то асимптотическое разложение получается почленным интегрированием этого ряда.
Например, для приведенного выше примера при я>0 имеем
ь ь
f-Ух"+ё^х = (х3/2 + ех1/2) + О(е)2, 8—>0, е>0,
но интегрално интеграль J ^x-V^dx = -^x-V^Y*2о3ь J ^x-V^dx = -^x-V^Y*2о3ь 222/Л3!1=>(/,+е)з/2_^ез/2=^з/2/1+|}-о 3 х '33\ vь 222/Л3!1=>(/,+е)з/2_^ез/2=^з/2/1+|}-о 3 х '33\ v2 з/2_2 1.3/2/1 1 2 6 1 3/2-1/2е2з Г V 262 622 з/2_2 1.3/2/1 1 2 6 1 3/2-1/2е2з Г V 262 62(5.4.5)(5.4.5)v^3/2уже имеет, нерегулярный по £ член j£v^3/2уже имеет, нерегулярный по £ член j£(дробную степень е).(дробную степень е).Этот пример свидетельствует, что важнейшим моментом в асимптотическом разложении интегралов по параметру £ является определение асимптотической последовательности ип^ такой, чтобы выполнялась соотношениеf/(x, s)dx~ X ««иД^ е-*0, £>о. 1ап = ОИз (5.4.5) следует, что {м„(е)} = {е°, е1, е3/2, е2, ..., е", ...}. Часто не удается определить всю последовательность {w„(e)} (а на практике это и не нужно) и тогда ограничиваются поиском первых ее членов ^их (е), м2(8)> •> un^£^ и доказательством соотношенияbN-1^f^x, &)dx= X anun^+O^uN^, е^О. аи —ОЭтот пример свидетельствует, что важнейшим моментом в асимптотическом разложении интегралов по параметру £ является определение асимптотической последовательности ип^ такой, чтобы выполнялась соотношениеf/(x, s)dx~ X ««иД^ е-*0, £>о. 1ап = ОИз (5.4.5) следует, что {м„(е)} = {е°, е1, е3/2, е2, ..., е", ...}. Часто не удается определить всю последовательность {w„(e)} (а на практике это и не нужно) и тогда ограничиваются поиском первых ее членов ^их (е), м2(8)> •> un^£^ и доказательством соотношенияbN-1^f^x, &)dx= X anun^+O^uN^, е^О. аи —ООдним из простейших способов получения асимптотических разложений интегралов является метод интегрирования по частям. Найдем для примера асимптотику по £ следующего интеграла F^ для /(x)gCn[0, 00):Одним из простейших способов получения асимптотических разложений интегралов является метод интегрирования по частям. Найдем для примера асимптотику по £ следующего интеграла F^ для /(x)gCn[0, 00):F^=^e Xl^f^dx=—£еоF^=^e Xl^f^dx=—£ео+ е J е Xl£f^dx = о о+ е J е Xl£f^dx = о о
но интеграл
но интеграл
ь
J ^x-V^dx = -^x-V^Y*2
о3
ь
J ^x-V^dx = -^x-V^Y*2
о3
ь 222/Л3!1
=>(/,+е)з/2_^ез/2=^з/2/1+|}-
о 3 х '33\ v
ь 222/Л3!1
=>(/,+е)з/2_^ез/2=^з/2/1+|}-
о 3 х '33\ v
2 з/2_2 1.3/2/1 1 2 6 1 3/2-1/2е2
з Г V 262 62
2 з/2_2 1.3/2/1 1 2 6 1 3/2-1/2е2
з Г V 262 62
(5.4.5)
(5.4.5)
v^3/2
уже имеет, нерегулярный по £ член j£
v^3/2
уже имеет, нерегулярный по £ член j£
(дробную степень е).
(дробную степень е).
Этот пример свидетельствует, что важнейшим моментом в асимптотическом разложении интегралов по параметру £ является определение асимптотической последовательности ип^ такой, чтобы выполнялась соотношение
f/(x, s)dx~ X ««иД^ е-*0, £>о. 1ап = О
Из (5.4.5) следует, что {м„(е)} = {е°, е1, е3/2, е2, ..., е", ...}. Часто не удается определить всю последовательность {w„(e)} (а на практике это и не нужно) и тогда ограничиваются поиском первых ее членов ^их (е), м2(8)> •> un^£^ и доказательством соотношения
bN-1
^f^x, &)dx= X anun^+O^uN^, е^О. аи —О
Этот пример свидетельствует, что важнейшим моментом в асимптотическом разложении интегралов по параметру £ является определение асимптотической последовательности ип^ такой, чтобы выполнялась соотношение
f/(x, s)dx~ X ««иД^ е-*0, £>о. 1ап = О
Из (5.4.5) следует, что {м„(е)} = {е°, е1, е3/2, е2, ..., е", ...}. Часто не удается определить всю последовательность {w„(e)} (а на практике это и не нужно) и тогда ограничиваются поиском первых ее членов ^их (е), м2(8)> •> un^£^ и доказательством соотношения
bN-1
^f^x, &)dx= X anun^+O^uN^, е^О. аи —О
Одним из простейших способов получения асимптотических разложений интегралов является метод интегрирования по частям. Найдем для примера асимптотику по £ следующего интеграла F^ для /(x)gCn[0, 00):
Одним из простейших способов получения асимптотических разложений интегралов является метод интегрирования по частям. Найдем для примера асимптотику по £ следующего интеграла F^ для /(x)gCn[0, 00):
F^=^e Xl^f^dx=—£е
о
F^=^e Xl^f^dx=—£е
о
+ е J е Xl£f^dx = о о
+ е J е Xl£f^dx = о о
= £/(0)-£2е xlefM= £/(0)-£2е xlefM+ е2 J е xlV4x)dx = £f^-^£2f^4- 0 о
= £/(0)-£2е xlefM
= £/(0)-£2е xlefM
-Ve3 ff^4-...4-£N fN ^Oj+c^Je ^fN^dx. о
1^)1 = **1^)1 = **Асимптотический характер получающегося ряда устанавливается оценкой остаточного члена
1^)1 = **
1^)1 = **
Je x,efN^dx ^£Nc J e x,%dx = c£N^\ о0
где константа с оценивает JN ^xy\JN^\^c на интервале О^жоо.
Рассмотрим асимптотические разложения интегралов от быст- роосциллирующих функций. Численное интегрирование таких функций тем сложнее выполнить, чем выше частота осцилляций (см. гл. 7). Пусть фMeC^[«, 6], тогда интеграл
F^ = J е1 е ф (х) dx(5.4.6)
(здесь i—мнимая единица) представляет собой интеграл от быстро- осциллирующих функций (рис. 5.10):
ф(х)со8(х/£), ф(х)$т(х/£), £->0, £>0.
Частота осцилляций со = со (с)
со = (2л/£)^оо; £—>0.
По сравнению с численными методами асимптотические методы обладают свойством: чем выше частота ©(c), тем меньше нужно брать членов асимптотического ряда для достижения одинаковой точности.
Этот ряд получается также интегрированием по частям. Имеем
W-lаb
^(е) = Е ^Ч^Ф^-е'^"^)^"4^^^)’ п = О
где
RN (8)= ^N^ f е*6 срN ^dx.
Так как функция ф^(х) непрерывна, то в силу леммы Римана b х
J е*6 ф^х^х-^О при £—>0.
Таким образом,
RN^~o^N\
Обобщением (5.4.6) является следующий интеграл: b f (х)
F(£) = fe* 6 <p^dx.(5.4.7)
В (5.4.7) функцияВ (5.4.7) функцияФ (х) называетсяФ (х) называетсяамплитудой,амплитудой,1818/(х)—фазой/(х)—фазой
В (5.4.7) функция
В (5.4.7) функция
Ф (х) называется
Ф (х) называется
амплитудой,
амплитудой,
1
8
1
8
/(х)—фазой
/(х)—фазой
подынтегральной функции. Вычисление асимптотического разложения F^ при £—*0 производится методом стационарной фазы. Идея этого метода состоит в том, что главные члены асимптотики
F(e) определяются малыми окрестностями точек а, b и тех точек xt интервала ^а, Ь\ где фаза -/(х) стационарна (рис. 5.11), 8
т. е. /'(х,)=0.
Рассмотрим конечное число стационарных точек xt таких, что Г'^х^О. Очевидно, что [а, /)] можно разделить на конеч-
Рис. 5.12Рис. 5.12ное число замкнутых интервалов, в каждом из которых / (х) или не обращается в нуль, или обращается в нуль в одном из концов этого интервала. Рассмотрим эти три случая отдельно (рис. 5.12).
Рис. 5.12
Рис. 5.12
Теорема 5.8. Случай а). Пусть /(х) не имеет стационарных точек на [а, Р]. Пусть /(х)еС2[а, PJ, ф(х)еС1[а, Р]. Тогда
G(e)=Je‘ Е <РМ^=7|_у^е е -J^e Е J+°^‘
Случай Ь). Пусть /(х) имеет одну стационарную точку х = а на [а, Р]. Пусть /(х)еС3[а, Р], ф^еС1 [а, р]. Тогда
f (х) Ui
Ф (а) е1 £ " 4 + О (е),
где знак плюс соответствует /"(а)>0, знак минус—/"(а)<0.
Случай с). Пусть /(х) имеет одну стационарную точку х = Р на [а, Р]. Пусть /(х)еС3 [а, Р], ф(х)еС1 [а, Р]. Тогда
РГе1 е ф(х)б/х=РГе1 е ф(х)б/х=±Г№±Г№/ (X) ui
Р
Г
е1 е ф(х)б/х=
Р
Г
е1 е ф(х)б/х=
±Г№
±Г№
<р(Р)е’ « ±4 + О(е),
где знак плюс соответствует /"(Р)>0, знак минус—/"(Р)<0.
Доказательство. Докажем наиболее простую часть теоремы—случай а). Интегрируя по частям, получаем
^Г^е'^^Г^е'^х 8 Гф d (.
^Г^е'^
^Г^е'^
G^ = - Ьт е
v ' I J / dx х '
Л«)Л«)р е ср е се Е — —J—7 dx.dx\f^)е Е — —J—7 dx.dx\f^)
Л«)
Л«)
р е с
р е с
е Е — —J—7 dx.dx\f^)
е Е — —J—7 dx.dx\f^)
Очевидно, что G^ имеет порядок 0(e). Функция
удовлетворяет тем же условиям, что и ф(х), поэтому интеграл
0
J е16 \|/(x)dx
есть величина 0(e), что и доказывает первую часть теоремы.
Теорема Пуанкаре. Как отмечалось в п. 5.1.4, имеется два основных типа рядов возмущений и соответственно два типа методов возмущений: регулярные и сингулярные. Теорема Пуанкаре относится к регулярным методам возмущений решений обыкновенных дифференциальных уравнений. Полученные ниже ряды возмущений по 8 оказываются не только асимптотическими, но и сходящимися. Асимптотическая последовательность, используемая для построения рядов, степенная {е"}.
Рассмотрим систему дифференциальных уравнений
8).(5.4.8)
Здесь у—вектор (у^, у2, ..., уп\ а^х^Ь, 8—параметр возмущения.
Для (5.4.8) задаются начальные условия
у(а)=у°.(5.4.9)
Будем предполагать, что функция /(у, х, е) является аналитической функцией всех своих аргументов в области
^ = {11^11^^ а^х^Ь, О^8^80},
где ||у0
Рассмотрим невозмущенную систему уравнений, соответствующую (5.4.8),
^=Ж 0)(5.4.10)
с начальными условиями (5.4.9). Предположим, что решение (5.4.10), (5.4.9), ^0(х) существует на интервале а^х<,Ь, ||у0К^ Будем искать решение (5.4.8), (5.4.9) в виде ряда
^к е)= ук^гк.(5.4.11)
к = О
Для определения ук^х\ к=0, 1, 2 ..., подставим (5.4.11) в (5.4.8) и, сравнивая коэффициенты при одинаковых степенях ек, получим системы уравнений для определения неизвестных вектор-функций
лМ = (л,1(^Л,2М. -,Л.ПМ), ^=0, 1, 2, ....
В нулевом' приближении (8°) имеем
т. е. невозмущенную систему уравнений. Зададим для ^0 (х) начальное условие (5.4.9); тогда в силу единственности решения задачи Коши найдем, что ^0(х)—невозмущенное решение (5.4.10), (5.4.9).
В первом приближении (е1) имеем
^= ZО^и+ёМ*)’ X, 0), UzO- (5.4.12)
В к-м приближении (sk, к >2) имеем
^7= 1 S^oM’х’ о)л,,+Фк(уо(4 л-Л4 х\ ил j = i vyj
l^n, к=2,3,....(5.4.13)
Функция Фк(^0(х), ... ^.Дх), х) получается разложением в ряды по у, 8 функции /(у, х, е) и последующей подстановкой в них (5.4.11).
Для систем уравнений (5.4.12), (5.4.13) зададим нулевые начальные условия
ук^ = 0,^=1, 2, ....(5.4.14)
Заметим, что к-е приближения к^Л определяются линейными системами ОДУ с одной и той же матрицей
^С^.О), l^z, j^n,
и различными Фк, причем в к-ю функцию Фк входят только предыдущие приближения .УоМ» —> Ук-Лх\ Таким образом, последовательно можем определить все ук(х) и ряд (5.4.11). Теорема Пуанкаре решает вопрос о сходимости полученного пока формального ряда (5.4.11); сформулируем ее без доказательства.
Теорема 5.9. Пусть Ду, х, г)—аналитическая функция своих аргументов в области D. Пусть также невозмущенное решение 232
^0(x)gZ>. Тогда ряд (5.4.11) сходится при достаточно малых £ (0<8<80) к решению (5.4.8), (5.4.9) и имеет место равенство
У^Х, е)= £ ^к(х)8к + 6>(8^),8—>0, 8>0.
к = О
Покажем, что в том случае, когда известен общий интеграл (5.4.10), т. е.
y^x^F^x, с19 ..., с„), l^i^n,(5.4.15)
где ct—произвольные постоянные, задача определения любых ук^х), к^Л, сводится к процедуре дифференцирования функций Ft и интегрированию.
Матрица
определяет фундаментальную матрицу решений однородной системы, соответствующей (5.4.12), (5.4.13). Действительно, имеем
dt^jdxdt^jdxd_dFidx dcjdfidFkd_dFidx dcjdfidFkA 6Fk 6csA 6Fk 6cs=Т"Тр1=^~^^р^х’ с)’ х’ °)= oc^dx ckj= У,^^х.0Ука, i^j^nк=1 °Ук=Т"Тр1=^~^^р^х’ с)’ х’ °)= oc^dx ckj= У,^^х.0Ука, i^j^nк=1 °Ук
dt^jdx
dt^jdx
d_dFidx dcjdfidFk
d_dFidx dcjdfidFk
A 6Fk 6cs
A 6Fk 6cs
=Т"Тр1=^~^^р^х’ с)’ х’ °)= oc^dx ckj
= У,^^х.0Ука, i^j^n
к=1 °Ук
=Т"Тр1=^~^^р^х’ с)’ х’ °)= oc^dx ckj
= У,^^х.0Ука, i^j^n
к=1 °Ук
Пусть выбраны константы с ° так, чтобы ^ = F^a, с*!, ..., с®);
тогда
ах k = 1
При этом можно показать, что
det^(a,c?, ..., с„°)^0ocj. *
и, следовательно, R^—фундаментальная матрица решений однородной системы (5.4.12); (5.4.13).
Теперь, используя R^x), можно записать решения для ук^, к^Л. Например, для к>2 получаем
лМ=^М1 Я'ЖМ), ^-1(5))^-(5.4.16)
Таким образом, действительно, определение ук^ сводится к процедуре дифференцирования Ft для определения R^ и интегрирования по формулам вида (5.4.16).
В качестве примера рассмотрим уравнение колебаний тела массы т
d^1 V
т 5х^~^а^~^^3=^’^<х<Ь,
притягиваемой к положению равновесия упругой силой ау + Ру3, а>0, Р>0, начальные условия имеют вид
у^=у°,^(°)=0;(5А17)
переменная х имеет смысл времени. Обозначим (о2 = а/ти, г = ^]т. Исходное уравнение приведем к виду
^ + со21у+£1у3 = 0(5.4.18)
и будем искать асимптотику задачи (5.4.18), (5.4.17) в виде ряда по £? А00
у^ 8)= I У1АФк-к = 0
Запишем приближение с точностью до О(е2). Имеем
&+«>Ч-0, Л(0)-А ^(0)-0,^г+со2^-^, Ji(0)=0, ^(0) = 0,
откуда находим
Уо(х) = у° COStoX, 3(у
Т1 (^) = ~ ^ (То)3 х sin юх+(cos 3 (ox — cos (ox).
Следовательно, 2
ку )3
У^Х, £) = ^°COS(OX + £ ^^(cos3(ox— coscox)-
(5.4.19)(5.4.19)— 3 xsintox + <9(£2).
(5.4.19)
(5.4.19)
8(0x '
Формула (5.4.19) содержит слагаемое
— £—Sin (OX, 8(0
которое соответствует амплитуды колебания сохранения энергии1 /2т\которое соответствует амплитуды колебания сохранения энергии1 /2т\бесконечному росту (при увеличении х) и находится в противоречии с закономбесконечному росту (при увеличении х) и находится в противоречии с закономdyV 12 Р иs) + -«, +;, -const.dyV 12 Р иs) + -«, +;, -const.
которое соответствует амплитуды колебания сохранения энергии
1 /
2т\
которое соответствует амплитуды колебания сохранения энергии
1 /
2т\
бесконечному росту (при увеличении х) и находится в противоречии с законом
бесконечному росту (при увеличении х) и находится в противоречии с законом
dyV 12 Р и
s) + -«, +;, -const.
dyV 12 Р и
s) + -«, +;, -const.
поскольку из этого равенства следует, что y2<2const/a.
Таким образом, формула (5.4.19) справедлива только на интервале 0<х^Ь, длина b которого не зависит от £.
234'
На интервалах длины порядка 0(1/е) уже применяются иные асимптотические разложения, нежели (5.4.11), и отличные от метода Пуанкаре асимптотические методы [19].
• 5.5. Численные методы
Рассмотрим некоторые общие вопросы численного анализа. Численные методы в конкретных классах математических задач изучаются в гл. 6—11.
Как уже отмечалось в 5.1, численным мы называем метод решения задачи, который сводится только к арифметическим действиям над числами. В этом состоит их существенное отличие от аналитических методов и методов возмущений, которые могут иметь дело с объектами, отличными от чисел, например с функциями.
Заметим, что аналитические методы после этапа манипулирования с формулами на этапе получения численного результата также сводятся к численным методам. Действительно, если результат представлен в виде конечного числа или бесконечной последовательности формул, а необходимо получить числовое значение результата, то обязательно приходим к этапу арифметических действий над числами. После аналитического представления решения задачи (получение формул) следует провести вычисления с числами, оценить погрешность результата, а это уже область действия численного метода. Таким образом аналитические методы ведут к численным. Поэтому роль численных методов в вычислительной математике столь значительна.
Реализация численных методов. Так как в ЭВМ числа записываются конечным набором двоичных разрядов, то можно сделать следующие выводы:
на ЭВМ существует возможность представить лишь ограниченное количество чисел;
на различных ЭВМ множество этих чисел может быть различным из-за отличия количества разрядов и формы представления числа.
На ЭВМ с двоичным представлением чисел есть такие числ^, как 1/2, 1/8, но нет таких, как 1/3, 2/5. Эти числа заменяются в вычислениях приближенно теми близкими числами, которые могут быть представлены в ЭВМ.
Кроме того, в различных ЭВМ может быть по-разному реализована арифметика чисел, например округление после выполнения операций, что также следует учитывать при реализации численных методов.
Таким образом, имеет смысл говорить о теоретическом численном методе и реализации численного метода.
Теоретический численный метод строится на бесконечных множествах целых и вещественных чисел и арифметике, его реализация основана на конечном множестве чисел ЭВМ и арифметике ЭВМ.
В дальнейшем будем рассматривать теоретические численные методы, опуская при этом термин «теоретические». Особенности, которые появляются при реализации численных методов, обсуждаются в 5.6.
Прямая и обратная вычислительная задачи. В математической постановке задач можно выделить два класса, к которым относятся многие из рассматриваемых задач в численном анализе.
Прямая вычислительная задача: по заданному элементу у, принадлежащему некоторому пространству У и оператору F, переводящему элементы У в элементы пространства Z, найти
‘ jz = F^.(5.5.1)
Например, нахождение интеграла от j>(x)gC[0, 1]—прямая вычислительная задача. Здесь
о
z—это число, У=С[0, 1], Z=RX.
Обратная вычислительная задача: по заданному элементу zeZ и оператору F, переводящему элементы У в элементы Z, найти такое у, чтобы выполнялось (5.5.1), т. е. следует решить уравнение (5.5.1).
Например, решение уравнения
z(x)=y(x) + Jj^^)^, O^x^l,(5.5.2)
о
при заданной функции z(x)gC[0, 1], т. е. определение j>(x)g gC[0, 1] — обратная вычислительная задача. Здесь
^)=^-}^)^ y=z=c[o, 1].
о
Заметим, что если известен обратный к F оператор F-1(z)=y, то обратная задача является прямой вычислительной задачей.
Например, в задаче (5.5.2)
у^ = г^ —е~х J esz(s)ds=F-1 (z).(5.5.3)
о
В том случае, когда F1 неизвестен, решение обратной задачи состоит в построении F-1 или его приближении с помощью комбинации прямых вычислительных задач. Например, если бы мы не знали явный вид обратного оператора в (5.5.2), то приближения к F"1 можно найти методом последовательных приближений:
К+1М = г(х)-Ук(^, и = 0, 1-; УоМ = ^Ьо
\
откуда
yi(x) = z(x)-Jz(s)</s, о
У 2 (x)=z(x)-jz(s)ds+j]z(s1)ds1 ds,
О0 0
хх sх sn_ 2
ynM=zM-fz(s)rfs+f fz^s^s+.-.+t-^ f z(s„_1)</s„_1.
ООО00
Меняя порядок интегрирования, находим
Следовательно,
y„(x)=z(x)-Г £ Ё-^^^ф^). (5.5.4)
J к = 0 о
Таким образом, обратная вычислительная задача свелась к последовательности (л=1, 2, ... ) прямых вычислительных задач—интегрированию по формулам (5.5.4). Одновременно мы построили приближения к оператору F-1, а именно Ф„, а также приближения у„(х) к точному решению (5.5.2).
Если заданная функция z(x) такова, что интегралы в (5.5.3) или (5.5.4) аналитически не берутся, то применяется численный метод интегрирования.
Вообще в численных методах решения обратных вычислительных задач обязательно присутствует этап сведения к прямым вычислительным задачам: одной или последовательности. Способы сведения могут быть различными, что порождает и разнообразие численных методов в конкретных задачах.
Дискретизация в непрерывной задаче. Многие вычислительные задачи, прямые и обратные, имеют в качестве элементов У, z в (5.5.1) элементы бесконечномерных пространств У, Z, например функции у^х\ z(x)gC[0, 1], как в примере (5.5.2). Такие задачи будем называть непрерывными в отличие от Дискретных, где у, z в (5.5.1)—элементы конечномерных пространств. К дискретным задачам можно отнести вычислительные задачи линейной алгебры. Например, решение системы линейных Уравнений
Ay = z,
где векторы y=(yt, у„), z=(zt, z„), матрица Л = (^Д 1 < is j и,— дискретная задача.
Аналитические методы и методы возмущений могут оперировать с такими объектами, как функции. Численные же методы, если предполагается их реализация на ЭВМ, не могут оперировать с объектами, для описания которых требуется бесконечный набор чисел из-за конечного запаса чисел ЭВМ.
Действительно, функция j(x), отличная от полинома, разлагающаяся в ряд Тейлора с центром в точке х = а. т. е.
у(х)=у(а)+^(х-я) + ^(х-я)2 ++^(х-а)"+ ...,
требует для своего точного описания бесконечного числа значений {у(я), у'^У, у"(аУ - У^У ...} и не может быть представлена конечным Набором чисел. Поэтому важнейшим элементом численного анализа непрерывных задач является замена исходной задачи (5.5.1) последовательностью других, в некотором смысле «близких» дискретных задач
^1 = ЕМУ^ z=l, 2, ....(5.5.5)
Процедура перехода от (5.5.1) к (5.5.5) называется дискретизацией непрерывной задачи. Замена должна быть такой, чтобы решения (5.5.5) аппроксимировали в некотором смысле, который следует определить, точное решение (5.5.1) тем точнее, чем больше членов последовательности берется.
Заметим, что в предложенном подходе к численному анализу содержится предположение: исходная задача, если она обратная, имеет решение, т. е. вопросы существования, единственности решения (5.5.1) мы не затрагиваем, а занимаемся построением последовательностей {z1? Ft, ^i}/, которые дают сходящиеся по некоторой норме решения (5.5.5) к точному решению (5.5.1).
Методы дискретизации непрерывных задач весьма разнообразны. Некоторые из них рассматриваются в гл. 6— 11.
Для примера рассмотрим один из способов перехода к дискретной задаче в уравнении (5.5.2). Разобьем интервал O^x^l на N интервалов точками x^ih. O^i^N, h=\]N. Вычислив в точках Х( функцию г^хУ получим вектор z^xty O^z^N.
По теореме Вейерштрасса непрерывную функцию >>(х) можно с любой точностью приблизить полиномом А-й степени при А-юо в норме пространства С[0, 1]. Поэтому есть надежда, что если в (5.5.2) выполнить замену ^(х)-» £ czx\ само уравнение i = 0
заменить системой равенств
NN xj
z(xj) = X cixj+ И f c^ds, Q^j^N,(5.5.6)
i = 0 i = 0 0^4
решить систему линейных уравнений (5.5.6), т. е. найти коэффициенты (с0, с15 ..., cN\ то при N-*co полином
PN^= Е ^
i = 0
будет равномерно сходиться к точному решению (5.5.2), а именно
max IPjv^)—у(х)| -►(), N^co.(5.5.7)
O^x^l
Переход от (5.5.2) к (5.5.6) и есть дискретизация непрерывной задачи.
Сравнивая (5.5.6) с (5.5.5), находим, что zT =(z(xj), y1 = PN^x\
O^i^N. Оператор Ft представляется матрицей с элементами
O^Z^TV.
В развернутой форме (5.5.6) имеет вид
z(0) = co,
A2hN+1
z(h)=c0+c1h+ ...+cNhN+coh + cl —+ -+сНн—р
z(2A)=c0+c12A+...+clv(2A)JV+c0(2A)+c1^- + ...,
z^Nh^=c0+c^Nh^+... +cN^hf+c0^Nh^-H^^ + ...+c^^
Обоснование сходимости приближений (доказательство (5.5.7)), оценка скорости сходимости (зависимость от N\ обоснование разрешимости системы линейных уравнений (5.5.6) и определение способа решения (5.5.6) — вот круг вопросов, которые решаются в рамках численного анализа.
Как правило, способ перехода от непрерывной задачи к дискретной и отличает один численный метод от другого в одном и том же классе задач.
• 5.6. Оценка результатов вычислений
Обращая внимание на схему решения технической задачи (см. рис. В.1), замечаем, что результаты вычислений на ЭВМ необходимо оценить с точки зрения поставленной задачи. В первую очередь необходимо иметь оценку допущенной погрешности в вычислениях. Роль этого этапа в вычислительном процессе сильно зависит от характера принимаемых решений в технической задаче на основе результатов вычислений. Если ошибка в третьем знаке после запятой некоторого числа может привести к тому, что
вычислитель «взлетит на воздух», то, по-видимому, он должен уделить большое внимание оценкам возможных погрешностей и провести вычисления с пятью верными знаками.
Оценка погрешности, которая может быть получена до проведения вычислений, называется априорной, после проведения—апостериорной.
Три типа погрешностей. В процессе решения задачи возникают следующие погрешности:
погрешность математической модели;
погрешность численного метода;
погрешность вычислений на ЭВМ.
Рассмотрим три типа погрешностей на примере. Предположим, что решается-,) задача определения одномерного движения материальной точки массы т, которая сводится к интегрированию уравнения Ньютона
^2^ Л dy\ t f dyА
m, У, x +8 —, y, x I, a^x^b, (5.6.1) dxz ydxJу dxJ
с начальными условиями
у(»)=Уо, ^^У!’(5-6-2)
здесь у—координата точки, х—время.
В правой части (5.6.1) сила, действующая на тело, которое идеализированно заменено точкой, разделена на два слагаемых: / и с. Первое слагаемое—это учитываемые силы, второе— неучитываемые, они фактически отбрасываются, и математическая модель описыва$тся уравнением
d2y Jdy\
^=/ —, у, х .(5.6.3)
dx ydx/
Если считать, что реальный процесс j>(x) дает решение задачи (5.6.1), (5.6.2), то, обозначая решение модельной задачи (5.6.3), (5.6.2) через у^х), получаем
31(х)=у(х)-у1(х), а^х^Ь,где ЗДх)—погрешность математической модели.
Предположим, что точное решение задачи (5.6.3), (5.6.2) представляется сходящимся степенным рядом
лМ= Е А(х-а)к,(5.6.4)
к = 0
где коэффициенты Ак определяются функцией / и могут быть найдены для любого к по известным формулам.
В качестве численного метода предложим нахождение Ак, Y^k^N, по этим формулам и определение TV-й частичной суммы ряда (5.6.4) (дискретизация)
N
у2М= Е Мх-Ф(5-6-5)
к = 0
\
Таким образом появляется погрешность 32M=Jl(^)-y2M, где 32(х)—погрешность численного метода.
Если в задаче требуется найти значение >>(х)—положение тела в точке х. то следует реализовать вычисления Ак, суммирование и возведение в степень на ЭВМ по формулам
N
'Тз(х*)= X А$®^х*@а*)к-(5.6.6)
к = 0
В (5.6.6) звездочкой отмечены числа ЭВМ, которые, как уже известно, записываются с округлением в конечное число разрядов и отличаются от точных в (5.6.5), хотя и близки к ним. Знаки ®, 0 соответствуют арифметическим операциям х, —, реализованным на ЭВМ. Результаты арифметических операций ЭВМ также могут отличаться от точных. Эти вопросы подробнее рассматриваются в п. 5.6.5.
Сравнивая (5.6.6) с (5.6.5), находим
8з(*)=ь(*)-Уз(**).
где 83(х)—погрешность вычислений на ЭВМ.
Полная погрешность 8(х) численного решения задачи на ЭВМ — это сумма трех указанных выше погрешностей:
8(х) = 81(х)+82(х) + 83(х)=у(х)- £ ^*®(х*©^*)\к = 0
Чтобы оценить погрешность, вводят какую-либо норму для функций 8z(x), например равномерную С[а, 6], затем оценивают каждую погрешность отдельно и используют неравенство
II 8(х) К || §1 (х) || + || 82 (х) || + || 83 (х) ||.(5.6.7)
Для 8Х обычно находят априорную оценку, используя специальные технические знания. Получение оценки 32, априорной или апостериорной,— одна из основных задач создания методов вычислений и является составной частью метода. Оценка 83, как правило, получается апостериорно.
Из (5.6.7) вытекает следующая практическая рекомендация: при решении задачи величины погрешностей (нормы) трех типов 315 82, 83 желательно, чтобы были одного порядка. Действительно, значительная разница в 8t и 82, а именно ||82|| ^ II8JI, может привести к бессмысленной трате машинного времени, так как точность решения задачи лимитирует величина H8JI.
Несколько сложнее обстоит дело с выполнением соотношения II83 || ~ II82 ||. В некоторых вычислениях оказывается, что || 83 || с «с || 821| из-за характеристик ЭВМ, имеющих большое число разрядов для хранения чисел, а следовательно, приводящих к избыточной точности вычислений. Создается впечатление, что повышенная точность вычислений «дается даром», а ситуацию нельзя
изменить. Но это не так. Лишние разряды машинного слова могут использоваться для более плотной упаковки в памяти ЭВМ чисел или перехода к целочисленной арифметике — все эти операции приводят к ускорению вычислений, но техника таких вычислений выходит за рамки настоящей книги.
Если оказывается, что || 83|| > || 32||, то обычно переходят к вычислениям с двойной точностью, т. е. к использованию описания чисел типа DOUBLE PRECISION. Это дает возможность в представлении чисел держать ~ 17 десятичных разрядов после запятой, но при этом увеличивается время вычислений.
Абсолютная и относительная погрешности чисел. Результатом вычислений на ЭВМ являются числа. Поэтому погрешность вычислений—7^то погрешность чисел, полученных в результате вычислительного процесса.
Для записи чисел и указания их погрешности часто применяются понятия абсолютной и относительной погрешностей. Пусть а—точное значение некоторой величины, а^—приближение к а.
Абсолютной погрешностью приближения а* называется величина А (а*), удовлетворяющая неравенству
|«*-а| ^А(а*).
Например, а = к, а* = 3,14; тогда
|3,14-л| ^0,002 = Д(3,14);
пусть а* = 3,141, тогда
|3,141 —л| ^ 0,0006 = А(3,141).
Относительной погрешностью приближения а* называется величина 5(я*), удовлетворяющая неравенству
В качестве Ца*) можно взять
Имеем
8(3,14)=^ ^0,064%,8(3,141)=^^ ~ 0,002%.
Абсолютная и относительная погрешности записываются в виде чисел с одной или двумя значащими цифрами, при этом производится округление с избытком. Абсолютная и относительная погрешности указываются в записи чисел следующим образом:
я = я*±А; я = а*(1 + 8).
Например,
к = 3,14 + 0,002; л = 3,141 (1 + 0,002%).
242\
Значащие цифры десятичного числа—это все его цифры начиная с первой ненулевой слева.
Например, в записи числа 0,002306 подчеркнуты значащие цифры.
Значащая цифра в записи числа верна, если абсолютная погрешность числа меньше или равна пяти единицам разряда, следующего за этой цифрой.
Например, в записи чисел
0,002306 ± 0,00001; 0,002306 ± 0,00006
подчеркнуты верные значащие цифры.
Потеря верных значащих цифр при вычитании близких чисел. Это явление легко продемонстировать на примере. Пусть имеем два близких числа
jct =0,01234, х2 = 0,01231
с абсолютной погрешностью 0,000002 (подчеркнуты верные значащие цифры). Разность чисел
у = х1—хг = 0,00003
имеет только одну верную значащую цифру с абсолютной погрешностью 0,000004 (см. п. 5.6.4). Произошла потеря трех верных значащих цифр. Этот факт следует учитывать при составлении алгоритма. Можно пытаться избежать потери точности с помощью алгебраических преобразований.
Например, решение квадратного уравнения
х2+рх+#=0
при малых q
xv,2=-Pi2±Vp2l4-q
следует представить в эквивалентном виде
xv = -p!2-Vp2!4-q, х2=——Л,, ■ ’P/2 + VP/4-9
чтобы в вычислениях не содержалось вычитание близких чисел pj2 и ^р!4-д.
Изменение последовательности вычислений также может привести к повышению точности результата. Например, расстановка скобок в выражении
у = (« — />) +с = «+(с — Ь)
во втором варианте предпочтительнее при близких по значению числах а и Ь.
Оценка погрешности функции по погрешности аргументов.
Пусть для простоты изложения имеется функция двух переменных
У у*+дуУ* у*-дуУ у*+дуУ* у*-дуХ*-ДХ X* х*+дхХ*-ДХ X* х*+дх' Аф*,У*)=тахG' Аф*,У*)=тахGАх+maxGАх+maxGAy.Ay.
У у*+ду
У* у*-ду
У у*+ду
У* у*-ду
Х*-ДХ X* х*+дх
Х*-ДХ X* х*+дх
' Аф*,У*)=тах
G
' Аф*,У*)=тах
G
Ах+max
G
Ах+max
G
Ay.
Ay.
w(x, у), значение которой вычисляется в точке (х, у), заданной приближениями (х*, у*), а именно
х=х*±Дх, у=^*±А^т. е. аргументы задаются с абсолют-ной погрешностью Ах, Ду, а сле-довательно, областью неопределен-
Рис. 5.13 ности точных значений (х, у) является область G = {(x, у) :х* — Ах ^х ^х*+Ах, у* — Ду ^у ^у* + Ду} (рис. 5.13). Требуется оценить абсолютную погрешность функции
■Аи(х*, У*),
удовлетворяющею неравенству
1«(*,у)-+*,у*)1 ^Мх^уД
Теорема ‘5.10. Пусть функция и(х,у) непрерывна вместе со своими первыми производными по х, у в области G. Тогда
Доказательство. Представим функцию н(х, у) формулой Тейлора
Ф’ у)=и(х„ У^+^х^+^х-х^, У*+^-у*^
^х-х^+^х*+Цх-хД у*+е(у-у*))(у-у*), где О<0<1. Переходя в этой формуле к оценкам, получим
*>*>GGдидхдидхди ,,ди .ди+ тах — у — yJ ^тах — Ах + тах — Ду,ди ,,ди .ди+ тах — у — yJ ^тах — Ах + тах — Ду,дидидидиG бУG бУGGGGдуду
*>
*>
G
G
ди
дх
ди
дх
ди ,,ди .ди
+ тах — у — yJ ^тах — Ах + тах — Ду,
ди ,,ди .ди
+ тах — у — yJ ^тах — Ах + тах — Ду,
ди
ди
ди
ди
G бУ
G бУ
G
G
G
G
ду
ду
что и требовалось доказать.
Из теоремы 5.10 следует, что для функций w(x, ^) = х±у абсолютная погрешность Ам = Ах+А^, т. е. абсолютная погрешность суммы и разности двух чисел равна сумме абсолютных погрешностей этих чисел.
Вычислим относительную погрешность функции:
н(х, у^=ху.
Из теоремы 5.10 находим
би =би =^и1^*^*1^и1^*^*1тах|у| Ах+тах |х|Аутах|у| Ах+тах |х|АуGGGG= (1У* I + A^Ax+dx* | + Дх)Ду == (1У* I + A^Ax+dx* | + Дх)Ду =
би =
би =
^и
1^*^*1
^и
1^*^*1
тах|у| Ах+тах |х|Ау
тах|у| Ах+тах |х|Ау
G
G
G
G
= (1У* I + A^Ax+dx* | + Дх)Ду =
= (1У* I + A^Ax+dx* | + Дх)Ду =
= 5х+5у + 25х5у,
т. е. относительная погрешность произведения двух чисел с точностью до членов второго порядка малости равна сумме относительных погрешностей этих чисел, а именно
5м ~ 5х + 5^.
Влияние ошибок округления. Большинство задач вычислительной математики сводятся к четырем арифметическим операциям над целыми и вещественными числами.
Заметим, что сложение, вычитание и умножение целых чисел выполняется точно. Деление целых чисел осуществляется с округлением по следующему правилу: результат деления двух целых чисел, состоящий из целой и дробной частей, заменяется целой частью, например 20/7 = 2, 1/3 = 0, 9/3 = 3. При таком округлении возникает абсолютная ошибка е, которая имеет оценку |е| < 1 и имеет знак, противоположный знаку округляемого числа. Заметим, что такой способ округления может давать по сравнению с общепринятым правилом округления в десятичной системе счисления ошибку почти вдвое большую.
Если в вычислениях на ЭВМ присутствует большое число операций деления в арифметике целых чисел, то это может привести к существенному искажению результата — большой погрешности из-за ошибок округления.
В арифметике вещественных чисел на ЭВМ все четыре действия, как правило, выполняются с округлением. Исключение составляют те числа и такие операции, которые не выводят исходные числа и результат операции за рамки 32-разрядного слова ЭВМ (в арифметике одинарной точности) двоичного представления чисел.
Продемонстрируем возникновение ошибки операции сложения на следующем примере. Пусть производится сложение чисел 0,1234011 и 0,1234067 ♦ 10"3. При сложении на ЭВМ предварительно выравниваются порядки чисел до большего, а затем мантиссы суммируются. Второе число при выравнивании порядка представится в виде 0,0001234067. Учитывая, что в 32 разрядах точность представления чисел ~7 знаков после запятой, замечаем, что подчеркнутые цифры выходят за рамки 32 разрядов, они округляются и сумма 0,1235245 имеет погрешность ~ 10"8.
Операция округления осуществляется в двоичном представлении, где точность определяется 24 двоичными цифрами мантиссы. Обозначим точное число — х, округленное—х. Тогда относительная ошибка округления 5 имеет оценку
|8| ^2"25~3-10"8;
следовательно,
х = х(1 +8).
Получить априорную оценку погрешности округления для сколько-нибудь содержательных вычислений — крайне трудная задача.
Апостериорная оценка погрешности во многих задачах может быть найдена повторением всего процесса вычислений в арифметике двойной точности и сравнением результатов с полученными в одинарной точности.
• 5.7. Особенности серийных вычислений
В этом пункте рассматриваются особенности методов вычислений, связанные с тем, что задача может решаться многократно (серийные вычисления). При многократном использовании одной и той же программы решения задачи требуется обратить пристальное вниманйе на ее эффективность, в частности время решения одного варианта.
Пусть время выполнения одного варианта равно Г, количество повторений вычислений — N, стоимость единицы времени ЭВМ—q. Тогда стоимость всей серии qNT. Если удается снизить время Т на АТ, то экономия стоимости вычислений qN^T при больших N может быть значительной величиной.
В серийных расчетах вводится понятие предвычислений. Это вычислительная работа, которая поизводится для подготовки вычислений одного варианта. Если серия большая (А велико), то можно проводить и большие предварительные вычисления. Пусть время предвычислений Т„; тогда общее время вычислений серии
Тп-^^Т-М\
Пусть также АТ=сТ„, с = const, т. е. снижение времени вычисления варианта пропорционально Тп. Тогда общее время вычислений серии*
'Tn + N^T-cTn^
и уже при длине серии N, удовлетвряющей неравенству
Tn — NcTn<0, N>X/c, целесообразно проводить предвычисления.
Для примера рассмотрим задачу интегрирования уравнения^=(sinx)y2 +ЛМ, j(0)=0, 0<х^а,
на интервале [0, а\ для серии функций fk^x\ X^k^N, методом Эйлера с шагом И. Имеем
У,+1 =У1+h[(sinх;)Ji +Л (xf)], Jo = О,' Xi = ih, К/^[а/й].
Если серия велика, то целесообразно составить таблицу функции sinx в точках xt заранее, вычисления вариантов уже вести не обращаясь к функции sinx, а только к таблице. Пусть [я/А] = 1000. Время
T„=1000Tsin,
где Tsin— время вычислений sinx в одной точке. Пусть Тв—время выборки числа, взятое из таблицы. Получаем
АТ= 1000[rsin — Гв] ~ Г„,
поскольку TB<$:Tsin. При серии 7V= 1000 сокращение времени вычислений 106 Tsin.
В большинстве случаев смысл предвычислений состоит в составлении таблиц чисел, обращение к которым значительно сокращает вычислительное время варианта. Может оказаться, что даже таблица умножения окажется предпочтительнее арифметической операции в какой-либо конкретной задаче.
Программирование алгоритмов серийных вычислений также обладает рядом особенностей:
во-первых, возможна оптимизация фортран-программы (см. п. 3.4);
во-вторых, написание часто повторяющихся фрагментов программы на машинно-зависимом языке типа макроассемблера;
в-третьих, аппаратная реализация некоторых фрагментов программы.
Последние два указанных приема относятся уже к более высокому уровню владения вычислительной техникой, нежели тот, который принят в данной книге.
Глава 6ТЕОРИЯ ПРИБЛИЖЕНИЙ
• 6.1. Введение
Если понятие «приближение» трактовать в широком смысле этого слова, то большая часть методов вычислений окажется элементами теории приближений. Однако в этой главе под теорией приближений понимается узкий круг вопросов, связанных с приближением функций одного или Нескольких переменных с помощью других функций. Часто этот круг задач называют задачами аппроксимации функций.
Рассмотрим некоторые практические задачи, приводящие к аппроксимации функций.
Ускорение времени вычислений функций на ЭВМ. Предположим, что решение задачи требует многократного вычисления функции /(х) в различных точках интервала а^х^Ь. Функция Дх) задана громоздким аналитическим выражением, например
(
._
2sinl /х2 + S со^кх I), а^х^Ь.
Тогда естественно стремление заменить функцию /(х) в некоторомсмысле близкой функцией g(x) (аппроксимировать /(х)) так, чтобы||/(х)-^(х)|| <е,
где 8 — точность аппроксимации. При этом вычисление g(x) должно быть значительно более быстрой процедурой, нежели /(х). Возможно, удастся найти полином 4-й степени Р4(х) = а0+а1х+а2х2 + + а3х3 + а4х4 такой, что
шах |/(х)—Р4(х)|<е,(6.1.1)
а^х^Ь
с удовлетворительной точностью 8 аппроксимирующий /(х). Тогда вычисление /(х) заменяется вычислением P4(x)=g(x);
/(x)~g(x).(6.1.2)
Количество арифметических операций при этом сокращается в сотни раз.
Экономия памяти ЭВМ. Предположим, что функция /(х) задается своими значениями в узлах xb X^i^n, интервала а^х^Ь:
(6.1.3)
fW Дх^ Дхг^ ... Дх„\
Рис. 6.1
Далее в вычислительном процессе используется эта таблица. При большом числе и хранение таблицы (xi? /(xf)) в памяти ЭВМ может оказаться слишком обременительным либо вообще невозможным. Тогда естественно возникает задача аппроксимации /(х) близкой функцией g(x), зависящей от небольшого числа параметров, например от пяти (а0, аг, а2, а3, а4)
8^=РДх\
так, чтобы выполнялось условие (6.1.1). При этом в памяти хранится только пять чисел—значения параметров. Значения /(х) теперь не хранятся, а вычисляются приближенно по формуле (6.1.2).
Поиск эмпирических закономерностей по экспериментальным (табличным) данным. Экспериментальные результаты обычно представляются в виде таблиц типа (6.1.3). Экспериментатор на основе практического опыта предполагает, что полученная таблица /(х) является реализацией эмпирического закона g(x, а) с неизвестным параметром а, параметр может быть вектором. Тогда возникает естественная задача определения такого параметра а. при котором эмпирическая закономерность, т. е. g(x, а), наилучшим образом аппроксимировала экспериментальные данные, т. е. Дх\
Например, при исследовании состава , вещества на основе спектрального анализа может быть получена таблица функции (6.1.3), изображенная на рис. 6.1. Можно предположить, что спектр (х^Дх^) получается суперпозицией спектров двух веществ. Каждое вещество дает спектр вида (рис. 6.1)
g^x, а^ = а2Ле"а1’1кх"а°^\ /=1, 2.
Возникает задача поиска параметров (a0J, а1Ь а2Д таких, что
2 2
|| 5 аг^-в^х"в^ -/MlHmin. (6.1.4) i=l ’
Решив эту задачу, можно получить разложение экспериментального спектра на составляющие, т. е. найти оценку вклада каждого компонента в результирующий спектр, а отсюда можно сделать вывод о содержании каждого компонента в веществе.
Классификация задач теории приближений. Простейшая классификация содержит следующие две основные характеристики задачи:
норму, в которой осуществляется аппроксимация ||/(х) — ~g(x, а) II;
вид зависимости от параметров а в семействе функций g(x, а). Мы будем рассматривать только два типа норм:
равномерную непрерывную норму
||/||= max |/(х)| ,
а^х^Ь
среднеквадратичную интегральную норму ь
или дискретную норму
1^1 = (^тт
\'""г 1 j = o ]
согласованную с интегральной в том смысле, что
когда предел существует.
Задачи аппроксимации, использующие норму а) в качестве меры близости, называются задачам и равномерного приближения. Основополагающие работы в этом направлении принадлежат русскому математику П. Л. Чебышеву (1821 —1894).
Задачи аппроксимации, использующие норму б) в качестве меры близости, называются задачами среднеквадратичного приближения. Первые работы этого направления связывают с именем немецкого математика К. Гаусса (1777—1855).
По второму признаку задачи теории приближений делятся на линейные и нелинейные. В линейных задачах параметр а = = (аг, .... ат) входит в семейство g(x. а) линейно, т. е.
g^x, а)= S а^Дх),j=i
при этом функции gjM нелинейны. Например,
g^x, й)= Е ajX^1,
g(x,a) = Е а^ sin (ух).
j=i
В нелинейных задачах параметр а входит в семейство нелинейно, например
g^x, а) = а3с~а2(х~аУ,
g(x,a) = 2 sin^x).(6.1.5)
j=i
Если в семействе (6.1.5) параметры av а2 известны, то задача приближения становится линейной.
В этой главе в качестве семейств функций g^x, а) рассматриваются полиномы Рп(х) на всем интервале [а, б] либо функции Sn(x), являющиеся полиномами на подынтервалах х{<х<хН1 (х^ [a, Z>]), так называемые сплайны.
Пусть в задаче приближения заданной функции /(х) семейством g(x, а) определяется элемент, реализующий условие
min ||/(х)-#(х, а)||,
тогда этот элемент называется наилучшим.
Например, если
g^x, а)=Р„(х) = £ сцх‘1 = 0и выбирается равномерная норма, то полином, который доставляет
min max |/(х) — ^ aixi\,a^x^bi = o
называют полиномом наилучшего равномерного приближения; если выбирается среднеквадратичная норма, то полином, который доставляет
(
i mи\ 1/2
- 2 №)-2 а<^)2 - т ;=1t = o /
называют полиномом наилучшего среднеквадратичного дискретного приближения.
• 6.2. Интерполяция
Приближение заданной функции /(х) полиномом и-й степени Рп(х) можно выполнить множеством способов.
Например, если /(х) разлагается в ряд Тейлора на интервале а^х^Ь, то отрезок ряда—многочлен Тейлора и-й степени—дает полином, аппроксимирующий /(х):
Оценка погрешности аппроксимации следует из формулы остаточного члена отрезка ряда Тейлора
max 1/М-Л(^)1^^77й- max |/',+ 1)(х)|.
Та же функция может быть представлена многочленом Тейлора с центром в любой точке се[а,Ь], а именно
/(x)^/(c)+^(x-c) + - V-^^x-су.
Пусть известны значения /(х) в узлах Xj интервала [а, 6], х0<х1<...<хт, а=х0, ь=хт, а именно: Дх0\ ДхД ... Дхт\ Задача интерполяции состоит в том, чтобы найти приближенное значение /(х) в точке x/Xj (рис. 6.2). Можно предложить метод решения этой задачи, в основе которого лежат ряды Тейлора с центрами в узлах Xj.
Положим
V^x-x^... Д^£_х.у,(6.2.1)
где Xj—ближайший к х узел. Формула (6.2.1) дает пример интерполяционных формул. Основной ее недостаток состоит в том, что используются значения производных функции /(х) в узлах, которые могут быть неизвестны, например, если /(х) задана таблично.
Интерполяционный полином Лагранжа. Свободным от указанного выше недостатка является полином Лагранжа Р„(х), который определяется только значениями /(х;) из условия
Р^Н^зУ ^J^(6-2-2)
Условие (6.2.2) означает, что график полинома и-й степени должен проходить через точки плоскости (х, у) с координатами (х^ f(Xj)) (рис. 6.3).
Покажем, что условие (6.2.2) обеспечивает существование и единственность интерполяционного полинома Р„(х) = а0 + а1х+...+а„х".
Теорема 6.1. Для любых значений f(Xj) и различных узлов Xj, О^у'^и, существует единственный интерполяционный полином.
Доказательство. Покажем, что условие (6.2.2) эквивалентно системе линейных алгебраических уравнений относительно коэффициентов полинома a = (aQ, av .... ап) с определителем, отличным от нуля. Действительно, (6.2.2) в развернутом виде
Z xjal=fVxj\ O^z, j^n,
1 = 0
представляет собой систему уравнений относительно вектора а
Ха=у,(6.2.3)
где матрица X имеет элементы Ххл=х\. вектор у = (/(х0),/(х1), ...,/(%„)). Определитель матрицы X—это определитель Вандермонда
dety =dety =1 х0 ^о-^о1 Хх Х1...Х"1 х0 ^о-^о1 Хх Х1...Х"1 х„ xL..x"1 х„ xL..x"= П(xj — х,)^0,O^i^j^n= П(xj — х,)^0,O^i^j^n
dety =
dety =
1 х0 ^о-^о
1 Хх Х1...Х"
1 х0 ^о-^о
1 Хх Х1...Х"
1 х„ xL..x"
1 х„ xL..x"
= П(xj — х,)^0,
O^i^j^n
= П(xj — х,)^0,
O^i^j^n
равный произведению П всевозможных разностей узлов. В силу того что узлы различны, detZ/O. Поскольку detZ/O, решение системы уравнений (6.2.3) существует и единственно, а отсюда следует утверждение теоремы.
Интерполяционный полином Лагранжа можно записать, не решая систему (6.2.3), в виде
+Дх„)
^X-Xq^X-XiV.^X-X,-^ .
Легко видеть, что Рп(х)— полином и-й степени и что выполняется (6.2.2), тогда из теоремы 6.1 следует, что это интерполяционный полином Лагранжа.
Определим полином (и+1)-й степени:
®.+iW=(^-^)(^--ti)-(^-4
Оценка погрешности интерполяции /(х) с помощью полинома Лагранжа дает следующая теорема.
Теорема 6.2. Пусть Дх)е С(" + 1) [a, b ], х, XjE [а, b ]. Тогда
./(^р^+'^со,,^),(6.2.4)
где точка ^^(х)е [а, b ].
Доказательство. Определим функцию
; 'w(x)=/(x)-Pn(x)-^con+1(x).(6.2.5)
здесь к—не известная пока константа. Заметим, что и^ имеет йа [а, b ] по крайней мере п +1 нулей, а именно:
м(х;) = 0, O^j^n.
Покажем, что число . к можно выбрать так, чтобы
w(x) = 0, x/xj, хе^а, b\
Для этого следует положить
Л*) - Рп^ -кюп+1 (х) = 0.
Поскольку со„ + 1(х)/0, можно найти
Выразим к через производную f(x). Функция и^ имеет на [а,Ь] л+ 2 некратных нулей, функция и'(х)— и+1 нулей, ..., и<п+1\х) — 1 нуль. Обозначим его £, значение ^ зависит от точки х, т. е. £ = £(х). Имеем
м(«+1)(у = 0
или
(6.2.6)(6.2.6)Но для любого- полинома и-й степени Р£,"+1) = 0, для полинома (и+1)-й степени to^++i1) = (^+1)- Из последнего соотношения находим
(6.2.6)
(6.2.6)
Из (6.2.5), (6.2.6) следует утверждение теоремы.
Таким образом, погрешность аппроксимации /(х)~Р„(х) имеет оценку
1/(*)-Л(*)1<т-^«>л+1(*) max |/<и+1’(х)|.
Если нет необходимости находить интерполяционный полином Р„(х), а следует вычислить лишь его значение Рп(х), то применяется вычислительная схема Эйткена. По этой схеме вычисляются последовательно в точке х полиномы
Д\ г+1(Х) ~Д\ г+1(Х) ~1Х^! —X;1Х^! —X;Ж)Ж+1)Ж)Ж+1)Xf —XXf —Xх/+1-хх/+1-х^i,i + l^) Д + l.i + Z^)^i,i + l^) Д + l.i + Z^)
Д\ г+1(Х) ~
Д\ г+1(Х) ~
1
Х^! —X;
1
Х^! —X;
Ж)
Ж+1)
Ж)
Ж+1)
Xf —X
Xf —X
х/+1-х
х/+1-х
^i,i + l^) Д + l.i + Z^)
^i,i + l^) Д + l.i + Z^)
и т. д. Можно показать, что
Л^) —А),1,2,...,л(Х)-
Вычисления проводятся до тех пор, пока не будет выполняться неравенство
<£? ^к^п,(6.2.7)
где 8—заданная точность, т. е. в процесс вычислений не вовлекаются лишние узлы, а используется лишь столько узлов, сколько обеспечивает заданную точность 8.
Пример построения интерполяционного полинома Лагранжа.
Рассмотрим таблицу
х; -1235
Ж) -1324
Следуя формуле (6.2.3), находим
, х = ,x_Jx-2)(x-3^^
3V ,'(-1-2)(-1-3)(-1-5) и(2+1)(2-3)(2-5)
, х (х+1)(х—2)(х—5) z х (х+1)(х-2)(х-3)
' Ц3 + 1)(3—2)(3 —5)Ц5 +1)(5 —2)(5 —3)
Можно вычислить приближенное значение /(х) в точке х = 2,5 по формуле
/(2,5) ^Р3 (2,5).
Однако, не зная оценки модуля четвертой производной L/n(ZK)(x)| на интервале [—1,5], нельзя оценить погрешность полученного интерполяционного значения. Более того, легко привести пример Функции /(х), имеющей те же табличные значения и неограниченной в точке х = 2,5:
/(х) = Р3(х)+со4(х)
1
(х—2,5)"
Этот пример показывает, что, хотя для формального построения интерполяционного полинома достаточно иметь лишь таблицу значений функции /(х), оценка погрешности требует дополнительной информации о поведении /(х) и ее производных на интервале интерполяции. Без оценок соответствующих производных интерполяция практически лишена смысла. Другие формы интерполяционных полиномов можно найти в [2, 4, 24].
Применение программы АЗАО. Для вычисления значения интерполяционного полинома Лагранжа в точке х по схеме Эйткена можно применять программу АЗАО. Пусть функция /(х) задана таблицей
•Л х•Л х1,01,11,31,51,61,01,11,31,51,6
•Л х
•Л х
1,01,11,31,51,6
1,01,11,31,51,6
/(х) 1,000 1,049 1,140 1,225 1,265
Требуется‘вычислить приближенное значение /(1,15) с точностью е=10-3. Программа может иметь следующий вид:
INTEGER N, I
REAL X(5),Y(5),Z,E,F(5),P
DATA X/L, 1.1, 1.3, 1.5, 1.6/
DATA Y/L, 1.049, 1.14, 1.225, 1.265/
DATA Z/1.15/, Е/0.001/
N = 5
CALL A3A0(N,X,Y,Z,E,F,P,I)
СВЫВОД НА ТЕРМИНАЛ
WRITE (5,1)I,P
FORMAT (2X,T = ,I2,2X,'F = ,E10.3)
END .
Примеры сплайнов: ^(х) с дефектом d=\, S2(x) с дефектом d=2— приведены на рис. 6.4. Наиболее распространены сплайны дефекта 1, ниже рассматриваются только такие сплайны.
Параболическая сплайн-интерполяция. Рассмотрим задачу аппроксимации функции /(х), заданной таблично в узлах xjs f(x;\ сплайном S2(x) дефекта 1. Определим S2(x) следующим образом:
Зг^х^З^х^а^А-а^х-х^А-а^х-х^ (6-31) на каждом интервале [х;, х;+1]. Формула (6.3.1) определяет полином 2-й степени—параболу. Потребуем выполнения во всех узлах условий
MxjWH S2Jxj+1)=f(xj+1),(6.3.2)
0<уХи— 1,
и дополнительно условий непрерывности первой производной во внутренних узлах, т. е.
»Xх у+1)=^2, j+1 (^+1) >(б.з.з)
0^j^n — 2.
Для определения сплайна S2(x) по формуле (6.3.1) необходимо найти Зи неизвестных:
а^ аи> a2j> o^j^n—l.(6.3.4)
Условия (6.3.2), (6.3.3) дают Зи—1 соотношения для определения коэффициентов (6.3.4). Для того чтобы найти коэффициенты, требуется задать еще одно дополнительное условие. Это может быть, например, условие
(6.3.5)
либо аналогичное условие на правом конце интервала [а, b ].
Теорема 6.3. Условия (6.3.2), (6.3.3), (6.3.5) достаточны для определения единственного сплайна 52(х).
Доказательство. Покажем, что указанные условия дают возможность определить все коэффициенты (6.3.4). Из (6.3.5) находим
Из (6.3.2) имеем ао,з=Лхз\
«О, j + “l ,Axj + 1 -^) + «2,;к + 1 "^У =ДхтУ
Отсюда получаем
°i,Axj+!-хД+а2>Ахи!-Xj)2=f(xj+ Д-ДхД.(6.3.6)
a1J-^2a2j(x]a1J-^2a2j(x]Из (6.3.3) имеем
a1J-^2a2j(x]
a1J-^2a2j(x]
откуда
(6.3.7)
Подставляя' (6.3.7)Подставляя' (6.3.7)в (6.3.6), получаем формулу
Подставляя' (6.3.7)
Подставляя' (6.3.7)
л . _AAxiл . _AAxi— a— al3.:l3.:
л . _AAxi
л . _AAxi
— a
— a
l3.:
l3.:
Xj+1-Xj
которая последовательно дает возможность определить все значения
aY и 2? ai л-1 по известному коэффициенту = Затем по ’’’’ ах
формуле (6.3.7) находим значения я2,о> ^2,1» - а2,п-г- И, наконец, из (6.3.6) находим
=ДхпДДхп-А _
2>""1(x„-x„_J2
Таким образом, все коэффициенты (6.3.4) определяются однозначно, что и требовалось доказать.
Построенный сплайн S2(x) можно теперь использовать для решения задачи интерполяции, а именно определения Дх\ x^Xj. Положим Дх)~32(х\ Справедливо следующее утверждение.
Теорема 6.4. Пусть /(х)еС3 [а, b ], хе(а, Ь\ Тогда
l/M-^Ml^cA3,
где h = max |^+1 — ^.|, константа с не зависит от /z. О^У^л— 1
Кубическая сплайн-интерполяция. Интерполяция кубическими сплайнами наиболее популярна в настоящее время. Имеется большое число фортран-программ, реализующих такие алгоритмы [9]. По аналогии с п. 6.3.2 сплайн ^(х) дефекта 1 задается следующим образом:
8зМ = 83,Ах^ = аоа+а1_^х-х^ + а2,Ах-хУ + аза(х-хУ
на каждом интервале [^-, xj+1 ]. Дополнительные условия, определяющие коэффициенты а0 j, aYJ, a2J, a3j, 0^j^n—\, следующие:
SstaWM’ S3(xm)=.f\xj+1\ О^п;
во внутренних узлах
TxS^*TxS^-°Y
d2d2
"Гл ^3 ^Xj + 0) = —у S3 (Xj — 0).
\
Общее число неизвестных 4/7, число дополнительных условий равно 4п — 2. Недостающие условия задают обычно на краях интервала при х = х0, х = хп. Полученная система линейных уравнений приводится к специальному, так называемому трехдиагональному виду. Такие системы эффективно решаются методом прогонки (см. гл. 10). Пусть задаются следующие краевые условия:
d2S3 "dx2d2S3 "dx2
d2S3 "dx2
d2S3 "dx2
При этом сплайн S3^ определяется единственным образом. Справедливо следующее утверждение.
Теорема 6.5. Пусть Дх)еС4[я, £], хе^а, Ь\ Тогда |Д%)-^(х)|^сЛ4,
где h= max |xj+i — Xj\, константа с не зависит от h.
Заметим, что главное отличие интерполяции сплайнами от интерполяции полиномами состоит в том, что повышение точности связано не с повышением степени полинома, а с уменьшением расстояния h между узлами. Кроме того, повышение точности не влечет за собой требования существования у /(х) производных все более высокого порядка.
Кубические сплайны дефекта 1 нашли широкое распространение из-за того, что это сплайны минимальной степени, которые в узловых точках имеют непрерывную вторую производную, а следовательно, непрерывную кривизну:
d2S
, dx2
АЗА1. Двумерная поверхность.АЗА1. Двумерная поверхность.Непрерывность кривизны является обычным требованием при проектировании кривых и поверхностей различных технических объектов. Проектирование поверхностей связано с двумерной интерполяцией и применением двумерных сплайнов.
АЗА1. Двумерная поверхность.
АЗА1. Двумерная поверхность.
Применение программы задается набором точек, например, на прямоугольнике D плоскости (х, у) (рис. 6.5). Задача интерполяции, как и в одномерном случае, состоит в приближенном определении Дх, у), где (х, у)/
л)-
Двумерный сплайн—функция, «сшитая» из кусков двумерных полиномов. Пусть область ° = {^о^^^^л; y0<y<Jm} разби-
та на ячейкиРис. 6.5
Пм=Ух^х^хН1; y^y^yj+i}, O^z^zz-l, O^j^m— 1.
Двумерный бикубический сплайн определяется на каждой ячейке 1 Dij в виде произведения одномерных кубических сплайнов:t
S^x,y) = A3^B3(y\
Л3 (x^ = a0^aYx^a2x2-ya3x\f
B3^=b0+bvy+b2y2+b3y3.X
Такое представление позволяет, сопоставляя функции Дх, у), заданной таблицей* интерполяционный бикубический сплайн, конструировать его на* основе одномерных сплайнов.
В программе АЗА1 реализована интерполяция (приближенное определение Дх, у) по таблице Дхь у}) с помощью одномерной интерполяции, с двумя последовательностями шагов.
Первая последовательность:
фиксация уь определение SY (х, у^, 50, i (х, j).
Вторая последовательность:
фиксация хь определение 50 (xh у), Si^x, у)-
Значения 5o.i(x, j), 5i,0(x, j>) можно принять в качестве приближения к Дх, у\ Модуль разности |50.i(x, у) — 51>0(х, у) служит оценкой вычислительной погрешности.
В качестве примера применения программы АЗА1 рассмотрим задачу определения / (0,15, 0,25) по таблице Дхь у^:
*f^t, ^-) = (8Ш^)(81п^),
x,=0,lz, 0^z<10, yj=0,2j, 0^J<5.
Программа может иметь следующий вид:
REAL XC,YC,S01 ,S 10,Х( 11),Y(6),F(11,6),HX,HY,
* Wl(l 1),W2(11),W3(11),W4(11)
INTEGER I,J,M,N
DATA IJMN/0,11,6,11 /,XC, YC/0.15,0.25/
HX=0.1
HY=0.2
С ВЫЧИСЛЕНИЕ ЭЛЕМЕНТОВ МАССИВА X,Y,F
DO 1 11 = 1,11
X(I1)=HX*(I1-1)
DO 2 JI = 1,6
Y(J1)=HY*(J1 — 1)
DO 3 11 = 1,11
DO 3 JI = 1,6
F(11 ,J 1)=(SIN(X(11)))*(SIN(Y(J1)))
СОБРАЩЕНИЕ К ПРОГРАММЕ A3A1
CALL АЗА 1 (XC,YC,X,Y,F,SO 1 ,S 10,1,W1,
* W2,W3,W4,J,M,N)
сВЫВОД НА ТЕРМИНАЛ
WRITE (5,4) SO1,S1O
4FORMAT (2X/S01 =',E13.6,2X/S10 = ',E13.6)
END
• 6.4. Равномерные приближения
В 6.2 и 6.3 в качестве критерия выбора из класса функций (полиномов или сплайнов) рассматривалось совпадение в узлах Xj функции Дх) и аппроксимирующей функции g^x, а). Получаемая при этом погрешность как в равномерной норме, так и в среднеквадратичной, вообще говоря, может быть уменьшена.
Уменьшить погрешность можно, во-первых, за счет специального распределения узлов интерполяции Xj на интервале [х0, х„], если есть возможность выбирать узлы. Ниже будет показано, как следует располагать узлы для интерполяции полиномами.
Во-вторых, можно заменить критерий выбора из класса функций, а именно искать элемент наилучшего приближения, т. е. доставляющий
min||/(x)-g(x, а)||.
В этом пункте рассматривается равномерная норма.
Другими словами, интерполяция состоит в требовании совпадения Дх) и g^x, а) в заданных узлах х^ погрешность аппроксимации такая — «какая получится»; поиск элемента наилучшего приближения состоит в минимизации погрешности аппроксимации, совпадение Дх^ и g(x, а) в некоторых точках такое — «какое получится».
Важную роль в теории равномерного приближения играют полиномы Чебышева. Рассмотрим их основные свойства.
Полиномы Чебышева. Определим полиномы Чебышева исходя из тригонометрических функций cos и 9, и = 0, 1, 2, .... Примем в качестве
9 = arccosx, — 1 ^х< 1.
Обозначим
Тп (х) = cos (и arccos х).(6.4.1)
Покажем, что Тп^— полином от х, т. е. полином Чебышева. Действительно, по формулам Муавра и бинома Ньютона имеем
coszz9 + zsinTz9 = (cos9 + zsin9)” = £ Ckcosn~kQik sink9. k = 0
Отсюда, приравняв действительные части, получим
coszz9= £ C2Zcos"“2Z9z2/sin2z9.
1 = 0
ЗаменимЗаменим
Заменим
Заменим
sin2 в = (1 — cos2 0).
Окончательно имеем
[л/2]
cosw0= £ C2/cos"“2/0z2/ (l-cos26)z.(6.4.2)
1 = 0
Из (6.4.2) следует, что cosmO—полином степени и от cos 6, но cos (arccos х) = х. Поэтому
№1
1 = 0-1^1.1 = 0-1^1.•J—полином и-й степени от х,•J—полином и-й степени от х,. ' Tn(x) = cos (и arccos х) = £ C2zx"”2z(x2—l)z
1 = 0
-1^1.
1 = 0
-1^1.
•J
—полином и-й степени от х,
•J
—полином и-й степени от х,
Связь полиномов Чебышева и тригонометрических функций приводит к соотношениям ортогональности полиномов Чебышева на непрерывном интервале и дискретном множестве точек:
+ 1яf
Г 'dx С°’ т^п,
Тт(х) Тп^ —, — = \cosm^cosn^d^ = < к}2,т = п#0, (6.4.3)
JV1-^2 JI л, ^ = « = 0;
-iо
^-l^-lf О, т^п,
£ Тт^х^ТДх^ = £ cosmGjCosnQj= < N(2, m = n^0,(6.4.4)
j=oj=o\^N,m = n = 0,
здесь x7=cos07; 9j = KjIN, O^j^N-L
Из (6.4.3) следует, что полиномы Чебышева ортогональны на интервале [—1, 1] с весовой функцией
>v(x) = —
Известна замечательная роль ортогональных систем функций, в частности тригонометрических, для представления функций рядами Фурье.
Ортогональные полиномы, в частности полиномы Чебышева, обладают рядом дополнительных свойств: они удовлетворяют трехчленному рекуррентному соотношению, их легко вычислять и преобразовывать с их помощью степенные ряды.
Трехчленное рекуррентное соотношение
. Т,+ 1(х)+Т„-1 (х)=2хТ„(лг), и^1,(6.4.5)
является следствием тождества
cos (и+ 1) 0-Ь cos (tz — l)0 = 2cos0cos п9.
Из (6.4.5) можно последовательно определять Тп(х^ п^2, Т0(х)=1; Т1(х)=х; Т2(х) = 2х2-1; Т3(х) = 4х3-Зх; Т4(х) = 8х4-8х2 +1; Т5(х)= ’ = 16х5-20х3 + 5х; Т6(х) = 32х6-48х4+18х2-1; ...
\
Графики полиномов Г0(х)-Т5(х) на интервале [—1, 1] приведены на рис. 6.6.Можно выразить степени переменной х в виде линейных комбинаций полиномов Чебышева1 [п/2]С„Тп-2к^хУ(6.4.6)Отсюда для первых степеней получаем:Графики полиномов Г0(х)-Т5(х) на интервале [—1, 1] приведены на рис. 6.6.Можно выразить степени переменной х в виде линейных комбинаций полиномов Чебышева1 [п/2]С„Тп-2к^хУ(6.4.6)Отсюда для первых степеней получаем:У|Т4(х)У|Т4(х)У*Т3(х)У*Т3(х)Рис. 6.6Рис. 6.6У | т2(х)У | т2(х)У Т5(х)У Т5(х)
Графики полиномов Г0(х)-Т5(х) на интервале [—1, 1] приведены на рис. 6.6.
Можно выразить степени переменной х в виде линейных комбинаций полиномов Чебышева
1 [п/2]
С„Тп-2к^хУ
(6.4.6)
Отсюда для первых степеней получаем:
Графики полиномов Г0(х)-Т5(х) на интервале [—1, 1] приведены на рис. 6.6.
Можно выразить степени переменной х в виде линейных комбинаций полиномов Чебышева
1 [п/2]
С„Тп-2к^хУ
(6.4.6)
Отсюда для первых степеней получаем:
У|Т4(х)
У|Т4(х)
У*Т3(х)
У*Т3(х)
Рис. 6.6
Рис. 6.6
У | т2(х)
У | т2(х)
У Т5(х)
У Т5(х)
1 = Т0(4 х=Ш х2 = 1(Т2(х)+Т0(х));
^^^зМ+ЗЛМ); х4=1(Г4(%)+4Т2(х)+ЗГ0(х));...
Используя соотношение (6.4.6), полином
Рп (х) = а0+aYx+... + апхп
можно выразить через полиномы Чебышева (разложить по Т„(х)). Например, Р2^ = 1 — 2х + 3х2 имеет вид
353
Определим нули и точки экстремумов Тп^ на интервале [—1, 1]. Нули Т„(х) определяются из уравнения
cos (л arccos х) = 0.
Отсюда
п arccos х = л/2 + к л,
/л(2£+1)\
xfc = cos—— , к = 0, 1, ..., и—1.
к \ 2п J
Точки экстремума Тп^ определяются из уравнения cos (и arccos х) = ± 1.
Отсюдаи arccos х = л т.
xm = cos—, m = 0, 1, ..., и.
Итак, Т„(х) на интервале [—1, 1] имеет п вещественных нулей и л+1 точку экстремума, при этом экстремальные значения, равные ±1, чередуются. На оси х эти точки получаются проекцией
пересечения полукруга с множеством прямых, имеющих между собой равные углы. На рис. 6.7 представлен вариант л = 4, знаком * обозначены нули Т4(.х), знаком 0—точки экстремума.
Заметим, что старший коэффициент (при х") у полинома ТДх) равен 2я-1.
Теорема Чебышева. Из всех полиномов Рп(х) п-й степени со старшим коэффициентом, равным единице, у полинома
-1
2^^”(Х)
максимальной абсолютное значение на интервале [—1, 1 ] наименьшее, т. е.
max |P„Ml> max |7Дх)|=-^г.
-l^x^l-1<х«12
Доказательство. Предположим противное:
max IP,^)^-^.(6.4.7)
— 1<х^ 12
Рассмотрим полином (л—1 )-й степени
Р„_1(х)=Р„(х)-Т„(х).
В силу (6.4.7) в точках экстремума Тп^—хт, т = 0, 1, ..., п, полином An-^xJ принимает поочередно разные знаки. Следовательно, между соседними точками хт полином Aw-i(x) имеет по крайней мере один нуль, а их общее число равно п, что невозможно для полинома (и—1)-й степени. Противоречие доказывает утверждение теоремы.
Другими словами говорят, что полиномы Чебышева Тп^— наименее уклоняющиеся от нуля в равномерной норме на интервале [-1, И-
Теперь очевидным образом решается следующая задача: пусть /(х) = 0, — l^x^l. Найти полином фиксированной п-й степени g^x, а) = Рп(х) = а0-[-а1х+... + ап-1хп~1+хп
наилучшего равномерного приближения к Дх^, т. е. доставляющийmin max |Р„(х)|.
а -1<х<1_
Теорема Чебышева сразу дает ответ: это полином ТДх).
Для произвольных непрерывных Дх^ неизвестны формулы для полинома наилучшего равномерного приближения. Для некоторых классов функций, например рациональных, соответствующие формулы можно найти в [2].
264
Произвольный интервал [а. b ] линейной заменой 2х-(/> + л)
Xi =—У-, a^x^b,
Ь — а
приводится к интервалу — l^x^l, где затем и решается задача равномерного приближения.
Важным критерием, устанавливающим свойство полинома наилучшего равномерного приближения, является критерий Чебышева. Сформулируем его без доказательства.
Критерий Чебышева. Для того чтобы полином Рп (х) был полиномом наилучшего равномерного приближения к непрерывной функции Дх), а^х^Ь. необходимо и достаточно существование на [а. Ь^ по крайней мере п + 2 точек х0, хъ .... xn+i таких, что f^-P^ ±(- О' №-Л WII-(6.4.8)
Точки хь в которых выполняется (6.4.8), называются точками чебышевского альтернанса.
Пример 1. Для любого п
Pn^ = aQ+avx+... + anxn наименее уклоняющимся от нуля на \а. b ] полиномом является Р„(х) = 0 (нет ограничения я„=1).
Пример 2. Для п = 0 полином Р0(х) = я0 наилучшего равномерного приближения к непрерывной Дх) есть
Ро (х) = ™ ^, т = min Дх), М= max Дх).а^х^Ьа^х^Ь
Точки чебышевского альтернанса отмечены на рис. 6.8.
Пример 3. Для п=\ полином Р1(х) = а0 + а1х наилучшего приближения к непрерывно дифференцируемой выпуклой на [а, b ] функции Дх) строится согласно рис. 6.9. Это прямая, параллельная хорде, соединяющей Да) и ДЬ\ которая делит пополам расстояние между этой хордой и касательной к Дх), параллельной хорде.
Минимизация оценки погрешности интерполяции за счет выбора узлов. Рассмотрим интерполяцию функции Дх) на интервале [—1, 1]. Согласно формуле (6.2.4) имеем
где £ = £(х), х принадлежит интервалу [—1, 1]. Отсюда оценка погрешности интерполяции следующая:
max |/(х)-Р„(х)|57—i— max |/(n+1,(x)| max |co„+i(x)|.
-15x51"15x51
Заметим, что полином co„+i(x) имеет старший коэффициент при х” + 1, равный 1. Из теоремы Чебышева вытекает, что
max |®»+i(x)|^—.
-15x512
Если взять в качестве узлов интерполяции нули полиномов Чебышева Тл + 1(х)
"Jл(2Л+1) ,, ,
xt = cos 2(п+1) ’ * = 0’
ТО полином k
<oB+i(x) = fB+i(x)и оценка погрешности интерполяции будет минимальной, а именноmJ» № - Л (*) 15 у^^, max |/<" + ° (х) |.
Таким образом, получаем следующую практическую рекомендацию: если интерполяция может выполняться с произвольным выбором узлов на интервале [—1,1], то целесообразно в качестве узлов выбрать нули полиномов Чебышева.
Экономизация степенных разложений. Многие вычисления основаны на использовании степенных разложений функций /(х)
/(х)= ^ а^.(6.4.9)
к = 0
При этом бесконечный ряд (6.4.9) заменяется конечной и-й частичной суммой:
/(х)^ £ акхк = 8Дх\(6.4.10)
к = 0
Пусть ряд сходится на интервале — l^x^l. Замена (6.4.9) на
0) приводит к погрешности. Частичная сумма Sn^ приближает /(х) на интервале [—1,1] с точностью 8, если
max |/(х) — Sn (х) | < 5 < 8.
-15x51
Пусть существуют точки х* на интервале [—1, 1] такие, что (и—1)-я частичная сумма 5и-1 не приближает Дх^ в этих точках с точностью 8, т. е.
|/(x.)-S„-i(x.)|>e.
Можно поставить следующий вопрос: есть ли полином (и — 1)-й степени P„-i(x) такой, чтобы он приближал Дх^ с точностью 8, и как его построить? Ответ дает следующее утверждение.
266.
Теорема 6.6. Пусть выполняется неравенство
5<8.(6.4.11)
Тогда существует полином Pn-i^, аппроксимирующий /(х) с точностью е:
max |/(х)-Р„_1(х)|<£,(6.4.12)
-1«х«1
Р^Дх) может быть представлен формулой
Л-^Мл-^+Цх"-^/;^.(6.4.13)
Доказательство. Представим разность f^—Pn_x^ в виде ДД - Р„ - ! (х) = (Дх) - SB (х)) + (S„ (х) - Рв _ ! (х)).
Из (6.4.13) получаем
Дх)-Р„_Дх)=(Дх)-5Дх))+^а„.
Отсюда и из (6.4.11) получаем цепочку неравенств
max |Дх)-Р„_1(х)|^ max |ДД-5„(Д|+^ ^3+^4<е, -1«х«1-1<х<122
т. е. полином (6.4.13) (п — 1)-й степени удовлетворяет неравенству (6.4.12), что и требовалось доказать.
Процесс перехода от аппроксимации /(х) полиномом п-й степени к аппроксимации полиномом (п — 1)-й степени с сохранением точности равномерного приближения называется процессом экономизации степенного разложения. Этот процесс можно продолжать до тех пор, пока выполняются условия типа (6.4.11).
Для примера найдем полином наименьшей степени, аппроксимирующий sinx, — l^x^l, с точностью 8=10"3. Имеем ряд Маклорена
sinx = x-—+—+....
Погрешность S5(x) не больше максимума модуля первого отброшенного слагаемого (так как ряд знакопеременный):
(
уЗ1о
*-а+^)|^<2-10-4-
Проверим условие (6.4.11):
2 • 10'4+^—^=7-2 • 10~4< 10-3.
Находим
• 6.5. Среднеквадратичные приближения
Здесь рассмотрим приложение широко распространенного метода вычислений — метода наименьших квадратов — в теории приближений.
Среднеквадратичное интегральное приближение. Поставим задачу аппроксимации непрерывной функции Дх^ на интервале а^х^Р элементом семейства g(x, а\ a=(aQ, ^, .... а^.
g{x, a)=aogo^x)+a1g1^x)-V...+aHgn(x), (6.5.1)
где gf(x)—лицейно независимые на [а, Р] непрерывные функции. При этом выберем g^x, а) таким, чтобы норма отклонения
R=\\f—g^, a)||=(f(/(x)-g(x, a^2dxY12 (6.5.2)
была минимальной, т. е. найдем элемент наилучшего среднеквадратичного интегрального приближения к /(х).
Если ^(х)—полиномы степени /, например gt=\x\ O^i^n} или gi = \t^x\ ^^i^nY то это задача поиска полинома наилучшего среднеквадратичного приближения; если g( = {cos ix, Q^i^n}. то ищется тригонометрический полином, минимизирующий (6.5.2), и т. д. Основное требование к набору g^x)—линейная независимость функций.
Заметим, что при фиксированных функциях /(х), gt(x), O^i^n, норма отклонения R является функцией коэффициентов (а0, аъ .... ап) в линейной комбинации (6.5.1):
^=^(«о, аъ .... ап).
Выбрать наилучший элемент (6.5.1)—значит найти такие числа a = ^d0. av .... а^. которые доставляют минимум (6.5.2). Следовательно, в точке а с необходимостью должны выполняться соотношения
М_о — да0 ’ дагМ_о — да0 ’ даг0,0,^-0.^-0.(6.5.3)(6.5.3)
М_о — да0 ’ даг
М_о — да0 ’ даг
0,
0,
^-0.
^-0.
(6.5.3)
(6.5.3)
Выполняя дифференцирование по а{ в (6.5.2) и подставляя в (6.5.3), получаем систему линейных алгебраических уравнений (и-Ц)-го порядка относительно неизвестных а0, av ..., ап:
f №) - «о^о И - «181М- - - а^„ М)&> И dx = О,
У№)-«о8о^-«181^- --«ng,(*))Si(*)dx = О,
1(6.5.4)
У №) - «о8о (x)-a18i(x)-...-a„g„(x))gn(x)dx = 0. а\
Вводя обозначения для скалярного произведения
(и, р) = Ju^x)v^x)dx,
перепишем систему (6.5.4) в виде
Uo, £o)«o+Uo, gi)«i + -+Uo. g^a» = (goJ\(gi, go)ao+(gi, 51)я1 + ...+(^, g^a^gyJY
(g^ go)ao+(g„, gi)«i +-+Up g^a„ = <g„J\
Теорема 6.7. Пусть система функций ^(х)—линейно независима на [а, р]. Тогда для любой непрерывной функции f^ существует единственный элемент наилучшего среднеквадратичного интегрального приближения вида (6.5.1).
Доказательство. Покажем, что решение системы (6.5.5) существует и единственно. Действительно, определитель этой системы
(^0’ ^о) (#0> ^1)-(^0? &,)(^р^о) (^1,^1) -(^1^„)
(^«5 g0) (g«> Я1)-(^ gn)
является определителем Грама системы функций &(х). Можно показать [8], что определитель Грама равен нулю тогда и только тогда, когда система функций &(х) линейно зависима. Следовательно, в силу предположения определитель системы (6.5.5) не равен нулю, т. е. решение а существует и единственно.
Покажем, что в точке а = ^а0, av ..., а^ достигается именно минимум. Заметим, что
R2 = V-g^x, <z), f-g^x, а^ = Ц-а^0-...-а^„, f-aogti-...-а^ =
= U/) + Е Up &)аА~2 Е (/’ g^ai- (6-5-6) i,k = 0i = 0
Правая часть в (6.5.6)—квадратичная форма относительно коэффициентов а(; причем в силу того, что R^0 для любых аь форма в точке экстремума достигает своего неотрицательного минимума; следовательно, и >Jr^ достигает в точке а минимума, что и требовалось доказать.
В качестве примера найдем среднеквадратичную интегральную аппроксимацию функций
f^ = >Jx, 0<х<1, полиномом первой степени
g(x, а) = а0 + ахХ, g0(x)=l, gL(x) = x.
Имеем
11
(go, g0)=fi2^=i; (go, gi)=f^=^,00z
(gi, gi)=f^=|; (go, Л^^^Ц,
(gi, Л = $х7^<Ьс=1-0D
Система (6.5.5) принимает вид
12
.jflo + ^i^’
112
7«o + 7«l=7-
»235
Находим: а0 = 4/15, ^=4/5.
Искомое решение
^Л^Ц*-(6‘5-7)
Для этой же функции найдем полином первой степени наилучшего равномерного приближения по схеме примера 3 п. 6.4.2 (рис. 6.10). Точка чебышевского альтернанса хх находится из условия f ^)=1. Имеем 1/2х/х=1; x^l/4. Полином наилучшего равномерного приближения
ЛМ=|+х. (6.5.8)
!i!iСравнивая (6.5.7), (6.5.8), легко заметить, что полином gfx) минимизирует среднеквадратичное отклонение от f (х\ но допускает отдельные ошибки, большие чем РДх), например при х = 0. Наоборот, полином Рх (х) минимизирует наибольшую ошибку, допуская большее среднеквадратичное отклонение, чем g(x\
!i
!i
Наиболее простую форму уравнения (6.5.5) имеют в том случае, когда система функций gb O^i^n, ортогональна, т. е.
ь
(gt, gtHfgiMgitM^0’ i^k.
' (gi, gi) ’' (gi, gi) ’В этом случае коэффициенты аг записываются из (6.5.5) в явном виде:
' (gi, gi) ’
' (gi, gi) ’
Поэтому, решая задачу среднеквадратичного приближения, це- \
лесообразно выбирать в качестве аппроксимирующих системы ортогональных функций.
Пусть непрерывная функция /(х) задана на интервале [0, л].
Возьмем в качестве системы функций
ПолучаемПолучаемя0, i^k,(&> £k) = fcosixcoskxdx = < л/2, i^k^O,я0, i^k,(&> £k) = fcosixcoskxdx = < л/2, i^k^O,оо1л,1л,i=k = 0.i=k = 0.
Получаем
Получаем
я0, i^k,
(&> £k) = fcosixcoskxdx = < л/2, i^k^O,
я0, i^k,
(&> £k) = fcosixcoskxdx = < л/2, i^k^O,
о
о
1л,
1л,
i=k = 0.
i=k = 0.
/^)-у + X «< cosix,2 i=l
2 c (6.5.9) cl=- /Yx)cosixdx, O^i^n.
о
Формула (6.5.9) наилучшего среднеквадратичного интегрального приближения по coszx оказывается представлением f (х^ рядом Фурье на интервале [0, л].
Погрешность аппроксимации для ортогональных систем функций gL получим из формулы (6.5.6), которая принимает следующую форму:
К2ЦА /)+ X (^’ g^l-l X ^ ^)«?=ll/ll2- X II^i II2«?-
i = 0i = 01 = 0
Для ортонормированных систем (||& ||2 = 1) формула погрешности упрощается:
R2=\\f\\2-iaLi = 0
Если функция //х) задана таблично или интегралы в правой части (6.5.5) аналитически не вычисляются, то переходят к среднеквадратичной дискретной аппроксимации.
Среднеквадратичное дискретное приближение. В качестве нормы аппроксимации функции //х) семейством функций g^x, а) на заданном интервале переменного х принимаем
(
1 т\1/2
^Tij^A^-g^j, я))2) ,(6.5.10)
где Xj—фиксированные узлы интервала. Заметим, что эта норма функций определяется следующим скалярным произведением:
(“’ v)=^tt X мМуМ, И“И2=~и X u4xj\ (6-5Л1)
Формула (6.5.10) может быть записана точно так же, как и (6.5.6), а именно
Д2=(/(х)-£(х, я), /(x)-g(x, я)).
Здесь только нужно помнить, что скалярное произведение задается в ти-мерном пространстве векторов (и^х^, и^х^, ..., и(хт)) формулой (6.5.11).
Так же, как в п. 6.5.1, поставим задачу аппроксимации функции f(x^ элементами семейства g^x, а\ а = ^а0, аъ ..., ап\ При этом выберем элемент g^x, а) таким, чтобы норма отклонения от f(x^
R=\\f-g(x, а) ||,
заданная формулой (6.5.10), была минимальной в семействе g(х, а)=й-о^о (х)+avgx (х)+...+a„gn (х),
т. е. найдем ‘ элемент наилучшего среднеквадратичного дискретного приближения. J
Повторяя рассуждения п. 6.5.1, получим, что коэффициенты аь O^z^и, должны удовлетворять системе линейных алгебраических уравнений (6.5.5). Справедлива следующая теорема.
Теорема 6.8. Пусть п^т, узлы Хр O^j^m, таковы, что определитель матрицы
Gi.k = ^gt, g^, O^z, k^n, отличен от нуля. Тогда для любой функции f (х) существует единственный элемент наилучшего среднеквадратичного дискретного приближения в семействе g^x, а\
Коэффициенты at определяются решением системы (6.5.5).
При наличии п = т и различных узлов Xj элемент наилучшего приближения является интерполяционным полиномом, в этом случае 7? = 0.
Рассмотрим некоторые примеры выбора семейств функций gU, а).
Пример 1. Семейство g^x, а)—полиномы п-й степени
g(х, а) = а0 + агх + а2х2 +... + апхп.(6.5.12)
Из (6.5.12) определяем g^x), O^i^n,
g0M=l; gi(x)=x; g2(x)=x2; ...; gn^=x”.
Скалярные произведения
1 w
1 m
Ub f^-^^giUiWi)с учетом того, что g^x)=x\ принимают видGix^gb gk)=-^T Z х?к’ °<^ k^»’
bi = ^gb Л=ТГИ I XjfUjY O^z^n.
Можно доказать, что если все узлы х0, хх, ..., хт различны, п^т, тоdet Gitk + 0.
Систему (6.5.5) представим в форме
X 61Лак=Ьъ О^Кп.(6.5.13)
к = 0
Решение (6.5.13) — (а0, av .... а^—определяет полином, наилучший в смысле среднеквадратичного дискретного приближения.
Пусть функция f(x^ = ^fx задана таблично:
Xj 00,10,2 0,40,60,91,0 '
Дх^ 0,000 0,316 0,447 0,632 0,775 0,949 1,000
Из (6.5.13) найдем полином первой степени:
g^ а^=а0^ахх.
Имеем
7^0 + 3,2^=4,119,
3,2^ + 2,38^=2,693;
отсюда ао = 0,185, ах =0,883, искомый полином
Рх (х) = 0,185 + 0,883*.
Следует обратить внимание на тот факт, что при больших и определение полинома наилучшего приближения вида (6.5.12) становится практически невозможным. Это связано с тем, что строки матрицы Gitk оказываются почти линейно зависимыми, а определитель Giik имеет значение, близкое к нулю.
В качестве иллюстрации этого явления запишем две последние строки матрицы Gitk рассматриваемого примера при и = 5. Имеем ^4 = X ^«о+X ^av +Х^у «2+Цх]а3+^ xja4+X х^а5, 65=X Xj«o+X х^ + Y X ]а2+X х^а3+X х^а4+X х)°а5.
Вычисляя суммы, получим
b4 = 1,813tz0 +1,679^ +1,582я2 +1,508я3 +1,448я4 +1,397я5 = 1,739, °
b5 = 1,679д0 +1,582^ +1,508а2 +1,448tz3 +1,397я4 +1,354я5 = 1,627.
Нетрудно проверить, что
(
5
i = 0
где числа az имеют порядок 1, т. е. с точностью до 0,03 эти строки линейно зависимы.
Решение таких систем линейных уравнений приводит к большой вычислительной погрешности. Чтобы избежать этого, при больших и рекомендуется применять другие семейства g^x, а\ в частности
разложения по полиномам Чебышева, которые рассматриваются в примерах 2 и 3.
Пример 2. Пусть аппроксимируемая функция f (х) задана на интервале [—1, 1]. Пусть имеется возможность выбрать узлы х^ O^j^m, на которых минимизируется среднеквадратичное дискретное отклонение g^x, a)—f(x).
Выберем в качестве узлов Xj те, на которых ортогональны полиномы Чебышева (см. (6.4.4)), а именно:
x.-cosO.-, 0.=-^-,333 w+1
В качестве семейства g^x, а) возьмем Jи
g^x, а^= £ ^^(х), п^т,(6.5.14)
.i = O
т. е. gt (х), 0 < i^п,— полиномы Чебышева
gt (х) = Т\ (х), 0 ^ i < и.
Скалярное1 произведение, вычисленное с помощью (6.4.4), (gb gk) = 0, i^k, указывает, что система функций ^(х) ортогональна. Следовательно, как и в интегральном случае, находим коэффициенты at элемента наилучшего среднеквадратичного приближения в явном виде:
Из (6.4.4) следует^ что
Ub &)=|Ub &)=|z = 0,
Ub &)=|
Ub &)=|
1/2, z/0. Таким образом, получаем формулы
1 m
Пример 3. Пусть функция f(x) задана на интервале [—1, 1] таблично в произвольных узловых точках х^ O^j^m. В качестве семейства функций g^x, а) возьмем (6.5.14). Теперь система функций &(х), вообще говоря, не является ортогональной и необходимо решать систему линейных уравнений (6.5.13).
Однако в отличие от примера 1 при больших значениях и не возникает трудностей с решением этой системы.
Применение программы АЗА2. Определение коэффициентов элемента наилучшего среднеквадратичного дискретного приближения в случае примера 3 можно выполнить с помощью программы АЗА2. В качестве таблично заданной функции возьмем таблицу \
274
из примера 1. Найдем элемент семейства (в обозначениях описания программы АЗА2):
^5 М = ^ Г0 М + «6,2 Л М + «6,3^2 (Х) + • • ■ + «6,6 T’s М<
или в обозначениях (6.5.14)
g^x, a) = a0T0(x) + a1T1(x)+...+a5T5(x),
минимизирующий (т = 6)
(
1 m\1/2
—j" I VX^-g^j, °))2) ’
или (в обозначениях описания программы)
е6=( I w^-P^2 ) .v=l/
Заметим, что интервал задания /fx) должен быть [—1, 1].
Сравнивая Р5(х) и g^x, а\ R и еб, получаем соответствие:
^0 = а6,1/^ ^1=^6,2J ^2=^6,3> - ^ ^5=^б,б>
мЦ, /=1, 2,7, yt=f (х^),
/=1, 2,7.
Кроме того, следует выполнить преобразование х, к интервалу [-1, 1]
xi = 2xi_1 —1, /=1, 2,7.
Программа может иметь следующий вид:
INTEGER M,K1,N,I
REAL X(7),Y(7),W(7),W1(3,7),W2(2,6),A(6,6),E(6)UKsI
DATA Х/0.,0.1,0.2,0.4,0.6,0.9,1.0/
DATA Y/0.,0.316,0.447,0.632,0.775,0.949,1.0/"^^
DATA M,K1,N,I/7,6,6,O/
СПРИВЕДЕНИЕ МАССИВА X К СТАНДАРТНОМУ ИН-
СТЕРВАЛУ
СЗАДАНИЕ ВЕСОВЫХ КОЭФФИЦИЕНТОВ
DO 1 L=l,7
X(L)=2.*X(L)-1.
1W(L)=l./7.
СОБРАЩЕНИЕ К ПРОГРАММЕ АЗА2
CALL АЗA2(M,K,N,X,Y,W,W 1 ,W2,A,E,I)
СВЫВОД НА АЦПУ
WRITE (6,2) (A(6,I),I=1,6),E(6)
2FORMAT (2Х,6Е10.3,2Х,Е10.3)
END
Глава 7ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ
• • 7.1. Введение
Числешфе интегрирование. Во многих научных и технических задачах интегрирование функций является составной частью решения полной проблемы. Вычисление площадей и объемов, определение центра и моментов инерции тел, вычисление значения работы, произведенной некоторыми силами, и многие другие задачи приводят к интегрированию функций. Геометрический смысл простейшего определенного интеграла
(7.1.1)(7.1.1)ь
(7.1.1)
(7.1.1)
MAVX
от неотрицательной функции /(х)>0, как известно, состоит в том, что значение /—это площадь, ограниченная кривой у=/^, осью абсцисс и прямыми х=а, х=Ь (рис. 7.1).
Заметим, что неопределенные интегралы от элементарных функций могут уже не выражаться через элементарные функции, например
fsinx ,ах.
Тогда, если нет возможности выразить интеграл в известных специальных функциях, для которых имеются таблицы или программы вычисления на ЭВМ, то применяется приближенное численное интегрирование (7.1.1). Кроме того, если /(х) задана таблично, то приближенное определение интеграла (7.1.1) также выполняется численно.
Напомним определение интеграла Римана от /(х), формально записываемого в виде (7.1.1). В этом определении фактически уже заложена основная идея численного интегрирования.
Пусть вещественная функция /(х) определена и ограничена на замкнутом интервале \а, 6]. Разобьем \а, Ь] \
на и частичных интервалов [xf, Xi+i], O^i^n — 1, xn = b, x0 = a. Выберем в каждом частичном интервале произвольную точку ^, Xt^i^Xi-ц, и составим интегральную сумму (рис. 7.1):
8=1ДШ^1-Х1У(7.1.2)
i = 0
Если существует предел S при стремлении длины наибольшего частичного интервала к нулю и произвольных ^, то этот предел называется интегралом Римана от /(х)
1= lim 5.(7.1.3)
max|xl+1 — xj ->0
Интеграл Римана существует (существует предел (7.1.3)), например, для непрерывных функций f(x)eC[a, 6].
Вычисление суммы (7.1.2), если не переходить к пределу (7.1.3), дает простейший пример численного интегрирования. А верхняя S2 и нижняя ^i суммы Дарбу определяют величину погрешности S, а именно:
Iz-SK^-^
И — 1
Si= I т^+г-х^; mt= min f^,i = 0x.<x<x.+ 1
n- 1
S2 = £ МД(+1—х^, Mt= max /(x).i = 0x^x<x.+ 1
Разнообразные формулы численного интегрирования, по существу, отличаются от (7.1.2) только явным указанием способа:
выбора хн ^-;
ускорения сходимости в (7.1.3);
оценки погрешности, использующей дополнительную информацию о поведении /(х) (например, информации, что ДДе
[а, 6]).
Если же об интегрируемой функции /(х) ничего не известно,. кроме того, что /(х) непрерывна, то вычисление суммы (7.1.2) и оценка погрешности (7.1.4) являются наиболее естественной формулой численного интегрирования.
Определение квадратурной формулы. Обобщим понятие интегральной суммы (7.1.2).
Точки ^, в которых вычисляются значения /(х), назовем узлами, а коэффициенты (xi+i— xj в (7.1.2) заменим некоторыми числами ^, не зависящими от /(х), называемыми весами. Тогда формула (7.1.2) заменяется следующей:
Q=Y.4ifH(7.1.5)
1 = 0
где a^^b. Запишем интеграл (7.1.1) в виде
bп-1
№dx= X qJWR-(716)
ai = 0
Формула (7.1.5) называется квадратурной формулой, R в (7.1.6) — погрешностью квадратурной формулы.
Каждая конкретная квадратурная формула считается заданной, если указано, как выбирать ^, соответствующие веса qb а также оценка погрешности R для определенных классов функций.
Точные квадратурные формулы. Для некоторых классов функций можно записать квадратурные формулы с погрешностью
..)А = 0
сразу для всего класса. Такие квадратурные формулы называются точными. ,
Запишем тЬчные квадратурные формулы для полиномов степени т, т. е. для
,Рт(х)=а0+а1х+...+атхт
на интервале [а, 6]. Определим на [a, Z>] произвольные попарно различные узлы ^, O^i^m. Найдем веса qk такие, что
(7-1.7) ai = О
Перепишем Рт^ в' виде интерполяционного полинома: рР
Условие (7.1.7) приводит к следующим значениям для весов O^i^m;
’ПКЧЛДм^Жч^М^ <7'L8)
Итак, если взять произвольные различные узлы ^ на \а, 6], вычислить значения весов по формулам (7.1.8), то для любого полинома степени т квадратурная формула
Q= t qiPm^i = 0
является точной, т.е. справедливо соотношение (7.1.7).
278278Может оказаться, что формула (7.1.7) точна для полиномов степени, большей чем т. Это произойдет, если специальным образом на интервале ^а, Ь^ выбирать узлы ^. Соответствующие квадратурные формулы построены Гауссом (см. 7.5). Можно так расположить узлы ^, O^i^m, что квадратурная формула Гаусса будет точна для полиномов степени 2^+1.
278
278
\
Очевидно, что применение точных квадратурных формул для интегрирования полиномов не имеет смысла, так как для них легко находится первообразная Pm+i(x) и интеграл
1=Рт+ЛЦ-Рт+Х^
определяется вычислением полинома Рт+1(х) в точках а и Ь.
Практический смысл точных квадратурных формул проявляется при интегрировании таких классов функций /(х), которые могут быть хорошо аппроксимированы полиномами на интервале \сц /)]. Тогда, применяя такую формулу к /(х), есть надежда получить малую погрешность R в (7.1.6) для рассматриваемого класса функций.
• 7.2. Простейшие квадратурные формулы
Приведем квадратурные формулы для одного интервала [xz, xi + 1], которые затем обобщаются на весь интервал \а, Ь^ в виде составных квадратурных формул (см. 7.3).
Формула прямоугольников. Пусть рассматривается интервал [—й/2, Л/2], где h>0 (рис. 7.2). Предположим, что подынтегральная функция Дх) дважды непрерывно дифференцируема на [ —А/2, Л/2], т. е. Дх) е С2 [ —Л/2, Л/2]. Запишем соотношение (7.1.6) в виде
й/2й/2J f^x)dx=h-f^+R, -h/2J f^x)dx=h-f^+R, -h/2(7.2.1)(7.2.1)
й/2
й/2
J f^x)dx=h-f^+R, -h/2
J f^x)dx=h-f^+R, -h/2
(7.2.1)
(7.2.1)
квадратурная формулаквадратурная формулавес q=h. Получаемаявес q=h. Получаемая(7.2.2)(7.2.2)
квадратурная формула
квадратурная формула
вес q=h. Получаемая
вес q=h. Получаемая
(7.2.2)
(7.2.2)
где взят один узел ^ = 0, соответствующий
Q=hf^
называется формулой прямоугольников для одного шага.
Название оправдывается тем, что (7.2.2) является (для /(0)>0) формулой для площади прямоугольника с высотой ДО) и основанием h.
Из рис. 7.2 можно заметить, что если интервал h достаточно
мал, а функция Дх)—гладкая (мы уже потребовали, чтобы Дх)е С2 [—й/2, А/2], то погрешность R будет стремиться к нулю при h-*^. Точный результат докажем в следующей теореме.
Теорема 7.1. Пусть fkx^E sC2^ — hlls Л/2]. Тогда погрешность квадратурной формулы прямоугольников R^h, f) имеет вид
R(h, П = (7.2.3)
где ^—некоторая точка интервала [ — /z/2, 2].
Доказательство. Перепишем левую часть (7.2.1) в виде й/2й/2й/2/,\/ ,\
f f^dx= J J^dx- J f(x)dx=fl - l-Fl -- ). (7.2.4)
-й/200V/\
Здесь функция F^ определяется формулой F^ = ^f^ds. Заметим, что F(0) = 0, F'(0)=/(0), F"(0)=/'(0), Р'ЦхНЧ4
По формуле Тейлора с остаточным членом в форме Лагранжа запишем
^О-^+^^Ч77"^(7'2'5)
^ 4)₽г(оьпо)?4по)^У4^^(7-2-б)
\ Д Jд д\ д / о\ д /
где О^^^й/2, —Л/2^^2^0. Подставив (7.2.5) и (7.2.6) в (7.2.4), получим ’
7 Дх^ах=НДоу^^(7.2.7)
Поскольку /"(*) непрерывна на интервале [ — /z/2, /z/2], существует точка ^e^—hjl, /z/2] такая, что ^-^^|^^Теперь, срав
нивая (7.2.7) и (7.2.1), имеем (7.2.3), что и требовалось доказать.
Квадратурная формула прямоугольников (7.2.2) является точной для полиномов первой степени Рг (х) = а0Н-а1 х. Действительно,
й/2
J ^ao-VaYx^dx = aoh.
-на
Иногда на интервале [-/z/2, /z/2] применяют формулы прямоугольников вида Q = hf^ — /z/2) или Q = A/(/z/2). Нетрудно заметить, что эти формулы точны только для полиномов нулевой степени, т. е. констант.
Формула трапеций. Пусть [0, A], А> О (рис. 7.3),— рассматриваемый интервал.
Предположим, что /(x)gC2[0, А]. Запишем соотношение (7.1.6) в виде
^f^dx=h/-M^+R,(7.2.8)
О2
где взяты два узла ^о = О, ^=/z и соответствующие веса qo = Qi=hl2. Получаемая квадратурная формула
е=/гЖ±Ж(7 2.9)
280
Рис. 7.3R^h, /) имеет видРис. 7.3R^h, /) имеет видназывается формулой трапеций для одного шага. Название связано с тем фактом, что (7.2.9) при положительных /(0), /(Л) является формулой для площади трапеции с основаниями /(0), /(/z) и высотой h.
Рис. 7.3
R^h, /) имеет вид
Рис. 7.3
R^h, /) имеет вид
Приведем без доказательства утверждение об оценке погрешности R в (7.2.8).
Теорема 7.2. Пусть ф^е е С2 [0, Л]. Тогда погрешность квадратурной формулы трапеций
И3
R^h, ф>--Г^.(7.2.10)
где £—некоторая точка интервала [0, Л].
Так же как формула прямоугольников, квадратурная формула трапеций (7.2.9) точна для полиномов первой степени.
Формула Симпсона. Пусть [—/z, A], /z>0 (рис. 7.4),— рассматриваемый интервал. Предположим, что /(x)gC4[-h. h\.
Запишем соотношение (7.1.6) в виде
W^dx=-f(—h) + уДО) + -Дй) + R,(7.2.11)
где взяты три узла £о= — К £i=0, ^ = h и соответствующие веса 4
qo = qi = h!3s qi=-h. Получаемая квадратурная формула
е=|(Л-л)+4До)+дл))
(7.2.12) называется формулой Симпсона или формулой парабол. Последнее название связывается с тем, что (7.2.12) — формула интеграла от параболы, проведенной через точки (—Л, /(-/z)), (0, /(0)), (/z,
/(Л)) плоскости (х, у). Покажем это. Парабола, проходящая через указанные точки, записывается в интерполяционной форме:
, x(x-h) , V (х+й)(х-й), , x^x+h)
п)_ц_к-нуА ’ h(-h) JV) kik
Вычисляем интеграл
/1
h
h
-h
hA з
h
-h
Ж( ^_^,\2Л2( 32 Н)
_л-^+№1+№
-к555
и получаем правую часть (7.2.12).
Приведем без доказательства утверждение об оценке погрешности R в (7.2.11).
Теорема 7.3. Пусть f^eC4\ — h,h\. Тогда погрешность квадратурной формулы Симпсона R(h,f) имеет вид
^к’Л=-ад/(т^(7.2.13)
где £— некоторая точка интервала [ —/z, Л].
Из (7.2.13) следует, что квадратурная формула Симпсона точна для полиномов третьей степени.
Применение простейших квадратурных формул требует вычисления значения подынтегральной функции /(х):
в одной точке—для формулы прямоугольников, ' в двух точках—для формулы трапеций, в трех точках—для формулы Симпсона.
Однако, несмотря на малый объем вычислений, область практических приложений простейших формул ограничена лишь малыми интервалами, поскольку при увеличении h погрешность становится значительной. Это следует из формул (7.2.3), (7.2.10) и (7.2.13).
На конечных интервалах интегрирования обычно применяют составные квадратурные формулы.
• 7.3. Составные квадратурные формулы
Если длина интервала \а, 5] велика для применения простейших квадратурных формул, то поступают следующим образом:
интервал \а, /)] разбивают точками xb O^i^n, на п интервалов по некоторому правилу;
на каждом частичном интервале [xf, xi+1] применяют простейшую квадратурную формулу, находят приближенное значение интеграла
•f /M^^Sm O^z^w;
из полученных выражений Qt составляют (отсюда название составная) квадратурную формулу для всего интервала [а, /)];
абсолютную погрешность R составной формулы находят суммированием погрешностей Rt на каждом частичном интервале.
Составные квадратурные формулы с постоянным шагом. Одним из наиболее простых правил разбиения интервала [а, /)] на частичные интервалы [xf, х1 + 1] является условие
хН1—х( = Ь, O^i^n— 1, x0 = as xn = b.
Рис. 7.5
Шаг определяется равенством h=(b—d)ln.
Пусть f^GC2^, /)]. Обозначим значение функции Дх^ в середине интервала [^ь *i + i] (Рис- 7.5)
Тогда можно переписать (7.2.1) для каждого интервала в виде
(7.3.1)
Суммирование по i (7.2.14) приводит к составной формуле прямоугольников с постоянным шагом
bИ-1,3 И-1
№ах=ь^лц+н-ут
аi = 02( = 0•
В силу равенства
x^rwm n=b-^ п 1 = 0
составная квадратурная формула прямоугольников с погрешностью R принимает окончательный вид
\f^dx=h^ f^R,а1 = 0
(7.3.2)
R=h^^m
Обозначим (рис. 7.6) значение функции Дх) в точках xt У А
9 fl
Тогда по аналогии с формулой прямоугольников из (7.2.8) по-у"
лучим составную квадратур- Г~х х ” X- ... х^ х ную формулу трапеций с по- 011
стоянным шагом:Рис. 7.6
(7.3.3)
Здесь ^—некоторая точка интервала [а, 6].
(рис. 7.7):(рис. 7.7):Для построения составной формулы Симпсона разобьем интервал \а, /)] на четное число частичных интервалов 1т
(рис. 7.7):
(рис. 7.7):
lm = {b — a^jh. Суммируя (см. (7.2.11))
формулуформулу12 Ax)dx=^f2i+4f2HV+f2H2\ 0^i<m-\, по i от 0 до хт— 1, получим составную квадратурную Симпсона с постоянным шагом:
формулу
формулу
b1 /тт~ 1\
J/(x)^=- /o+4X/2i-i+2 I f2i+f2m +Л
(7.3.4)(7.3.4)а5 \-i=li=l/
(7.3.4)
(7.3.4)
р^ (^ ^/TV/£\
Здесь ^—некоторая точка интервала [а, 6].
Введем обозначения для квадратурных формул. Формула прямоугольников
(7.3.5)(7.3.5)Q^h^f^.
(7.3.5)
(7.3.5)
t = o
Формула трапеций
е?=Д/0+2 еД+уДе?=Д/0+2 еД+уД(7.3.6)(7.3.6)
е?=Д/0+2 еД+уД
е?=Д/0+2 еД+уД
(7.3.6)
(7.3.6)
(7.3.7)(7.3.7)УУ1-0 а^— х0 х, х21-0 а^— х0 х, х2l-m-1l-m-1ььс помощью трех квадратурных формул и сравним ответ с точнымс помощью трех квадратурных формул и сравним ответ с точным*ее Х2т-2Х2т-1Х2т ХРис. 7.7*ее Х2т-2Х2т-1Х2т ХРис. 7.7значениемзначениемJ=e—1=J=e—1== 1,7182818. Пусть А = 0Д. Тогда= 1,7182818. Пусть А = 0Д. Тогда
(7.3.7)
(7.3.7)
У
У
1-0 а^— х0 х, х2
1-0 а^— х0 х, х2
l-m-1
l-m-1
ь
ь
с помощью трех квадратурных формул и сравним ответ с точным
с помощью трех квадратурных формул и сравним ответ с точным
*ее Х2т-2Х2т-1Х2т Х
Рис. 7.7
*ее Х2т-2Х2т-1Х2т Х
Рис. 7.7
значением
значением
J=e—1=
J=e—1=
= 1,7182818. Пусть А = 0Д. Тогда
= 1,7182818. Пусть А = 0Д. Тогда
Формула Симпсона
/ /m-1т-1
бл=й(/о+4 X /г<-1+2 X fu+fim
Для примера вычислим интеграл 1 1= ^exdx lо
65,1 =0,1 (е°-05+е°-15+е°-25 +е°’35+е°’45+е°’55+е°’65+е°’75 + +е°-85+е°'95)= 1,7176;
65,i = 0,05(е°-°+2(е°-1+е°-2+е°-3+е°-4+е°'5+е°-6+е°-7 +
+ е0,8+е0,9)+е1) = 1,7197;
6о,1 = у(еолЧ4(е0’Че0-3 + е0'5+е0-7+е^
+е0'6+е0,8)+е1) = 1,7182828.
' Точное значение / в соответствии с (7.2.15) — (7.2.17) определяет точки ^ в формулах для погрешностей А:
/=6о.1+у-е^, £=0,365;
О7=65,1—^, £=0,532;
/=6S,i-^, £=0,588.
На практике значение £ в формулах для А неизвестно, поэтому шаг интегрирования h выбирается по заданной абсолютной точности 8 вычисления интеграла из следующих условий:
для формулы прямоугольников"
Л2
•—(6—а) тах \Г Ml=8;
для формулы трапеций
Л2
—(6-a)^iaxJ/"(.x)|=£;
для формулы Симпсона к4
Таким образом, шаг Л, а следовательно, число точек и, в которых вычисляется /(х), определяется значениями х с наихудшим поведением /(х) с точки зрения погрешности А.
Такое правило выбора разбиения интервала может приводить к избыточным вычислениям, если /(х) имеет частичные интервалы с «плохим» поведением малой суммарной длины относительно Длины \а, /)] (рис. 7.8).
Примером функции такого типа является f^=e-xl°, O^x^l. Выбирая шаг по наихудшей точке для формулы прямоугольников при су«1, имеем значение // = 0^/248, малое для всего интервала [О, 1]. Почти на всем интервале величина этого шага излишне мелкая для обеспечения заданной точности, а следовательно, будут произведены избыточные вычисления.
Чтобы освободиться от указанного недостатка составных квадратурных формул с постоянным шагом, исходный интервал разбивают на частичные интервалы различной длины. Причем длина частичных интервалов определяется локальными свойствами /(х) (на данном частичном интервале) и заданной точностью интегрирования.
Составные квадратурные формулы с переменным шагом. Рассмотрим интегрирование функций /(х)еС2[я, Ь^ с дополнительным ограничением:/" (х)—монотонная знакоопределенная функция на интервале [а, 6].
Пусть для определенности /"(х)—монотонно убывающая положительная функция (рис. 7.9). Положим х0 = а. Определим наибольшее значение хг из условия, чтобы погрешность простейшей квадратурной формулы прямоугольников 7?0
f Дх) dx=(Xj - Хо )/( ,
• о _(xi—*0) г» (й\ <e<y (7.3.8)
не' превышала заданной величины е. Очевидно, что для этого достаточно решить относительно xY уравнение
Имеем
O^i^k.O^i^k.Следующие границы частичных интервалов определяются аналогично. Длина частичных интервалов монотонно возрастает. Общая формула такова:
O^i^k.
O^i^k.
(7.3.9)
Количество интервалов к заранее не известно, оно определяется как точностью е, так и поведением /" (х) на интервале [а, by
Однако верхняя оценка для к легко определяется по длине наименьшего частичного интервала:
к^к^(^г^г(24е)1/3(^г^г(24е)1/3
к^
к^
(^г^г(24е)1/3
(^г^г(24е)1/3
Суммируя (7.3.8), получим составную квадратурную формулу прямоугольников с переменным шагом:
(7.3.10)(7.3.10)
(7.3.10)
(7.3.10)
где xt определяется рекуррентно формулами (7.3.9). Для погрешности R имеем оценку |^|^А:е.
Если f"^—монотонно возрастающая положительная функция, то частичные интервалы определяются справа налево от точки b к а. Для отрицательной функции /" (х) и монотонно возрастающей частичные интервалы определяются слева направо от о к 6, для убывающей—справа налево от b к а.
В качестве иллюстративного примера рассмотрим задачу интегрирования на интервале [0, 1] функции
/(х)=е“х/с, о=10"2
с точностью 8= 10"4 на каждом частичном интервале. Определяя границы интервалов по формуле (7.3.9), получаем: х0 = 0,000; хх = 0,00621; х2 = 0,0138; х3 = 0,0237; х4 = 0,0374; х5 = 0,0590; хб = 0,103, х7 = 0,299; х8 = 1,000. Таким образом, общая погрешность составной квадратурной формулы прямоугольников с переменным шагом, полученная на восьми частичных интервалах, имеет оценку Л^8х х 10"4. Такую же погрешность с помощью составной квадратурной формулы прямоугольников с постоянным шагом можно получить на 721-м частичном интервале
Л=—5^^721,
если выбирать шаг h на всем интервале из условия
^(1-0) шах (е"х^У = К.
Если /" (х) на всем интервале [а, /)] не удовлетворяет принятому дополнительному ограничению, то следует сначала разбить интервал [я, Ь^ на частичные интервалы, на которых /" (х) монотонна и знакоопределенна, а затем на каждом из них построить составную квадратурную формулу с переменным шагом (рис. 7.10) по приведенным выше формулам.
Квадратурные формулы (7.2.19), (7.20.20) были построены на основе простейшей формулы прямоугольников. Аналогичные
формулы можно вывести и для простейшей формулы Симпсона с той лишь разницей, что нужно интервал [а, /)] разбить на частичные интервалы, на которых /IV (х) монотонна и знакоопределенна. Более общие методы интегрирования с переменным шагом изложены в [2].
Наряду с достоинствами квадратурных формул с пере
менным шагом, проиллюстрированными на примере, отметим их недостатки. J
В формуле (7.3.9) или (7.3.10) необходимо вычислять значение f"^—это дополнительная работа по сравнению с (7.3.2).
Получение информации о поведении /"(х)—определение интервалов монотонности и знакоопределенности—это также дополнительная вычислительная работа.
Поэтому, прежде чем отказываться от постоянного шага интегрирования и переходить на переменный, следует убедиться, что достоинства превосходят недостатки. Как правило, дополнительная вычислительная работа оправдывается при серийных вычислениях (см. гл. 5).
• 7.4. Оценка погрешности численного интегрирования
Общая погрешность численного интегрирования. Формула численного интегрирования имеет вид
I=V^dx=Q^R,<1АЛ^
где
а=Ул№(™.2)
i = O
—квадратурная формула, R— погрешность квадратурной формулы. При вычислении по формуле (7.4.2) вносится погрешность из-за погрешности задания значений весов и погрешности вычисления /(^), связанной с погрешностью задания узлов.
Таким образом, абсолютная погрешность численного определения интеграла по формуле (7.4.2) может быть представлена (см. гл. 5) в виде
я - 1 /А7= £ I A^max|/(^0)|+^max z = o \я - 1 /А7= £ I A^max|/(^0)|+^max z = o \Ш)dxШ)dx^i +1^1’^i +1^1’(7.4.3)(7.4.3)
я - 1 /
А7= £ I A^max|/(^0)|+^max z = o \
я - 1 /
А7= £ I A^max|/(^0)|+^max z = o \
Ш)
dx
Ш)
dx
^i +1^1’
^i +1^1’
(7.4.3)
(7.4.3)
где A^z—абсолютная погрешность весов, А^— абсолютная погрешность узлов.
Рис. 7.11Рис. 7.11о,о,max -^(х) ^Мmax -^(х) ^М(7.4.4)(7.4.4)
Рис. 7.11
Рис. 7.11
о,
о,
max -^(х) ^М
max -^(х) ^М
(7.4.4)
(7.4.4)
При вычислении на ЭВМ можно считать
где sb—точность представления вещественных чисел (в одинарной точности £ь~10"7, в двойной £ь~10"17). Всюду в 7.4 будем считать, что функции Дх^ по крайней мере
дважды непрерывно дифференцируемы. Однако уже из формулы (7.4.3) следует, что для оценки погрешности А/ важно иметь числовую оценку модуля функции и ее производных.
Предположим, что
Учитывая оценки (7.4.4), перепишем (7.4.3):
Предположим, что
maxmaxdx1'dx1'dx4'dx4'
max
max
dx1'
dx1'
dx4'
dx4'
Тогда из (7.3.2) — (7.3.4) получим выражения для прямоугольников, трапеций, Симпсона:Тогда из (7.3.2) — (7.3.4) получим выражения для прямоугольников, трапеций, Симпсона:А/А/формулформул
Тогда из (7.3.2) — (7.3.4) получим выражения для прямоугольников, трапеций, Симпсона:
Тогда из (7.3.2) — (7.3.4) получим выражения для прямоугольников, трапеций, Симпсона:
А/
А/
формул
формул
А/п=л£ь(М0+М1) +А/п=л£ь(М0+М1) +Д/т = л£ь(М0 + М1) +Д/т = л£ь(М0 + М1) +(b—a)3 М224и2(Ь — а)3 М212и2(b—a)3 М224и2(Ь — а)3 М212и2(7.4.5)(7.4.5)
А/п=л£ь(М0+М1) +
А/п=л£ь(М0+М1) +
Д/т = л£ь(М0 + М1) +
Д/т = л£ь(М0 + М1) +
(b—a)3 М224и2
(Ь — а)3 М212и2
(b—a)3 М224и2
(Ь — а)3 М212и2
(7.4.5)
(7.4.5)
Из (7.4.5) можно заключить, что существует абсолютная погрешность A/min для любой квадратурной формулы, которую" нельзя уменьшить увеличивая число шагов и (рис. 7.11). Конкретное значение A/min зависит от величин Мо, Мг, М2, М4, а. Ь, гь.
Например, для формулы Симпсона получаем:
A7min = e^5 кМ0 + М^5 М^ (Л^^-^54'5
28928910 Ю. П. Боглаев
289
289
MGiM{=\, M4 = 45, £b=10 7, тогда nm~25,
Далее рассматривается только погрешность квадратурной формулы
R, однако всегда следует иметь в виду наличие второй компоненты в погрешности, которая ограничивает число разбиений интервала
интегрирования на частичные интервалы. Для проверки влияния этой компоненты погрешности переходят к вычислению с двойной точностью, если определение констант Mt оказывается более трудоемкой задачей.
Правило Рунге оценки погрешности квадратурной формулы. Приведенные выше формулы для погрешности квадратурных формул RQi, f) выражаются через значения производных /(х) в некоторой точке ^е[а,‘/)1 которая практически неизвестна. Получение оценок констант М{ Требует дополнительных вычислений и особенно для таблично заданных функций. В связи с этим получило распространение практическое правило оценки погрешности Рунге, суть которого состоит в том, чтобы,. организовав вычисления двух значений интеграла по двум семействам узлов, затем сравнить результаты вычислений и получить оценку погрешности. Наиболее популярное правило связано С вычислением интеграла дважды: по шагу h и А/2 (рис. 7.12).
Чтобы вывести правило Рунге, предположим, что функция f^EC4\_a, /)] для квадратурных формул прямоугольников и трапеций, ф^ЕС6\_а, 6]—для формулы Симпсона. Тогда можно показать, что погрешности R(h,f) имеют следующее представление при Л^О: ь
Яп = (1|Л^)/-2 + ^
^T=(-^jn^)/*2+o(n (7Л6)
а b
Объединив формулы (7.4.6) и (7.3.5)—(7.3.7), запишем точное значение интеграла / по любой из трех квадратурных формул в виде
I=Qh-^ch4O^hk+m^ А—>0.(7.4.7)
Здесь с—константа в главном члене погрешности; к=2, т — 2
для прямоугольников и трапеций, к=4, т = 2 для формулы Симпсона.
Теорема 7.4.
Пусть подынтегральная функция f (х) такова, что с/0. Тогда имеет место соотношение
1=йьц^^^^О01к*т\ h^O.(7.4.8)
Доказательство. Перепишем (7.4.7) для шага А/2» имеем
I^Qhn^c^O^^ А^О.(7.4.9)
Последнее слагаемое записано в том же виде, что и в (7.4.7) в соотвествии с понятием символа О. Из (7.4.7), (7.4.9) определим неизвестную константу с. Вычитая из (7.4.7) равенство (7.4.9), получим
o=Qh-Qhl24-cUk-TA+o(<hk+-"\
Отсюда
(е»^216»1^+о (hk*m\
Подставляя выражение для с в (7.4.9), получаем (7.4.8), что и требовалось доказать.
В основе правила Рунге лежит соотношение (7.4.8). Для оценки погрешности значения любой квадратурной формулы (7.3.5)— (7.3.7) QhJ2 с шагом hjl следует вычислить Qh с шагом Л; тогда погрешность Rh,2 имеет величину
1^/2 1= ^-Г ^О^”\
которая на практике заменяется
ID QhH — Qh I
с точностью до величин порядка /zk+m, т. е. членов более высокого порядка, нежели главный член погрешности в (7.4.6).
Для формул прямоугольников и трапеций
ID Qh!2 — Qh II Kh(2 I-»
для формулы Симпсона
ID I Qh/2~ Qh I
|Лй/2|-~
Заметим, что формула прямоугольников неудобна для применения правила Рунге, так как узлы ^ формул с /z /2 и /z не совпадают и приходится дополнительно вычислять значения f^ (по сравнению с формулами трапеций и Симпсона).
Вычисления двух значений квадратурной формулы Qh!2 и Qh позволяют оценить главный член погрешности и уточнить прибли-
10*10*291
10*
10*
женное значение интеграла. В основе уточнения лежит экстраполяция Ричардсона, которая применяется не только к квадратурным формулам, но и к другим задачам численного анализа [16].
Идея экстраполяции Ричардсона состоит в том, чтобы из значений Qh/2 и Qk составить такую линейную комбинацию
Qhl2,h = ClQhl2"^C2Qh^(7.4.10)
чтобы погрешность приближения / с помощью Qhj2,h была более высокого порядка по Л, нежели Qkll и Qk в отдельности.
Теорема 7.5. Пусть точное значение интеграла I представляется в виде (7.4.7). Тогда линейная комбинация (7.4.10) с коэффициентами ••)
2*-1
.С1-2‘-1’2‘—1
имеет погрешность приближения интеграла OQik*m\ а именно
Доказательство следует из прямого сравнения соотношений (7.4.8) и (7.4.10).
Применение программы А4А0. Изложенный выше подход к вычислению интеграла с удвоением числа частичных интервалов и уточнением реализован в программе А4А0; вычисления проводятся по формуле трапеций.
Пусть необходимо вычислить интеграл
У exp(sinx2)<Zx з
с абсолютной точностью е = 10-4. Программа может иметь следующий вид:
INTEGER N,I
REAL A,B,E,Y,W(10) EXTERNAL F
DATA A,B,E,/3.,4., l.E—4/,N/10/
СС1С сСС1С сОБРАЩЕНИЕ К ПРОГРАММЕ A4A0
С
С
1
С с
С
С
1
С с
CALL A4A0(A,B,E,N,F,Y,I,W)
ВЫВОД НА ТЕРМИНАЛ
WRITE (5,1) Y,I
FORMAT (2X,,Y=',E13.6/I=',I2)
END
ВНЕШНЯЯ ФУНКЦИЯ—ПОДЫНТЕГРАЛЬНАЯ
ФУНКЦИЯ FUNCTION F(X) F=EXP(-SIN(X*X)) RETURN
END
292
• 7.5. Формулы Гаусса
Квадратурные формулы прямоугольников, трапеций и Симпсона, рассмотренные выше, применяются для интегрирования функций /(х) невысокой степени гладкости, для первых двух f^eC2^a, 6]. Причем в составных формулах обнаруживается следующий общий дефект: при увеличении числа узлов, в которых вычисляется /(х), для функций высокой степени гладкости (f[x)eCk [а, 6], к>2) не повышается точность с ростом к. Например, для погрешности формулы трапеций из (7.3.3) можно получить оценку снизу
min 1ГМ1А2,
^ а^х^Ь
которая показывает, что при уменьшении шага h (увеличение числа узлов) и бесконечно дифференцируемых функций погрешность все-таки определяется второй производной /(х).
Указанный дефект называется явлением насыщения численного метода и встречается не только в задачах численного интегрирования.
Формулы Гаусса, которые будут ниже определены, являются: 1) квадратурными формулами без насыщения; 2) точными на полиномах максимальной степени 2лм+1 с узлами ^b O^i^m.
Следует отметить, что достоинства формул Гаусса проявляются только при интегрировании функций достаточно высокой степени гладкости.
Для определения формул Гаусса необходимо ввести понятие полинома Лежандра степени т.
Полиномы Лежандра. В гл. 6 было показано, что полином Рт^ со старшим коэффициентом, равным единице, наименее уклоняющимся от нуля на интервале [—1,1] в равномерной норме, является полиномом Чебышева.
Определим полином Рт^ со старшим коэффициентом, равным единице, наименее уклоняющийся от нуля на интервале [— 1, 1] в среднеквадратичной норме. Это и будет полином Лежандра /т(х).
Для определения коэффициентов /т(х)
/m(x)=fl0+fl^+-+Vi^'1+^ чисел (а0, av .... ат_1) требуется найти минимум 1
S= J [я0, + я1х+... + аш-1Хт"1+хт]2dx
-1
по всевозможным значениям ab ^^i^m—\. В точке минимума необходимо
oai что эквивалентно соотношению
1
j x4m^dx = 0.O^i^m—1,
-i
т. е. полином Лежандра /ш(х) ортогонален любому многочлену степени т — 1. Приведем формулы /ш(х) для 0<^^4:
/0(х)=1,
/1 (х) = х,
^М=|(з^2-1),
Мх)=5(5^3-Зх),
,/4М=^(35х4-30х2 + 3).
Общая формулу 1т^ следующая:
/ ^Л-^т ^(^-1) _т-2 . т^т-\^т-2^т-3) ~т_42(2W-1)X+ 2-4(2^-1)(2^-3)
Полиномы Лежандра /т(х) образуют ортогональную систему функций на интервале [—1, 1J:
1
J lm^ln^dx = 0,т^п;
их корни просты, вещественны и расположены на интервале [— 1, 1].
Квадратурная формула Гаусса. Сформулируем задачу, которую решает квадратурная формула Гаусса.
Требуется для заданного числа узлов, а именно (^+1)-го, найти такие узлы ^, O^i^m, и соответствующие веса qb чтобы квадратурная формула
*1т
• П№=Ш^к(75.1)
-1i = 0
была точной CR = O) для всех полиномов степени 2ти+1.
Теорема 7.6. Не существует таких узлов ^ и весов qh O^i^m, чтобы формула (7.5.1) была точной для любого Р2т+2{х\ Доказательство. Предположим противное, т. е. существование ^b qi для любого Р2т+2^ таких, что Я = 0. Выберем для проверки полином (2ти + 2)-й степени следующего вида:
P2m+2M = (^-^o)2(^-^l)2-(^-U2.
Тогда 1т
f P2m*2^dx>0,£ ^2m+2(^) = 0;
-1 "i-0
следовательно, для этого полинома А/0. Полученное противоречие доказывает теорему.
Теорема 7.6 устанавливает тот важный факт, что квадратурной формулы, точной на полиномах Р2т+2(х)> не существует, а следовательно, формула Гаусса должна быть точной на полиномах максимально возможной степени.
Построим формулу Гаусса следующим образом. Будем определять веса qt в соответствии с (7.1.8):
qi J'
где ^—пока произвольные, различные узлы на интервале [— 1, 1]. Тогда квадратурная формула (7.5.1) будет точной, по крайней мере на полиномах степени т.
Если теперь взять в качестве узлов ^ нули полиномов Лежандра ^m+i (х)
/™+1(^)=0, О^Кт,
то по ним можно вычислить веса qt в соответствии с (7.5.2). Затем по ^, qt можно определить формулу (7.5.1). Справедлива следующая теорема Гаусса.
Теорема 7.7. Если в качестве узлов ^-, O^i^m взяты нули полинома Лежандра /т+1(х), веса вычислены по формуле (7.5.2), то квадратурная формула (7.5.1) точна для полиномов степени 2azz+1.
Доказательство. Представим произвольный полином в виде
^2т+1М=^М/т+1(х)+Рт(х),(7.5.3)
где Рт^х\ Рт^— полиномы степени т. Подставим (7.5.3) в левую часть (7.5.1); получим
f Р2т+Лх^Х = f W»ihW&+ -1-1
+ f ?m^dx= J Pm^dx(7.5.4)
в силу ортогональности полинома lm+i^ любому полиному степени т. Подставляя (7.5.3) в правую часть (7.5.1), имеем
ЕI ЧАРт^Ут+1^ +
i = 0i = 0
+ PmO + R= £ q^^R(7.5.5)
1 = 0
в силу выбора узлов ^ Таким образом, приравнивая (7.5.4) и (7.5.5), находим, что формула (7.5.1) эквивалентна формуле
} Wx= i q^M+R-(7.5.6)
-1i = 0
Но если qt выбраны согласно (7.5.2), то формула (7.5.6) точна Для любого полинома Р^х^ степени т; следовательно, А = 0, что и требовалось доказать.
Можно показать, что корни полиномов Лежандра расположены симметрично относительно нуля, соответствующие веса совпадают, все веса положительны. Приведем значения с тремя знаками для нескольких т узлов ^ и весов qv формул Гаусса:
т=0 (£о=0, ^о=2);
т = \ (^0=-0,577, ^о = 1,000), (^=0,577, q0 = 1,000);
m = 2 (^0=-0,775, ^о=0,555), (^=0,000, qx =0,889), (^2=0,775, q0 =0,555);
m=3 (£0=-0,861, 90=0,348), (^ = -0,340,^=0,652), (^2=0,340, 92=0,652), (^ = 0,861, 93 = 0,348).
Например, квадратурная формула Гаусса по четырем узлам запишется сле,дующим образом:
1
f/(x)^ = 0,348(/(-0,861) + /(0,86^^ -1»
Оценка погрешности формулы Гаусса. Пусть используется квадратурная формула Гаусса с узлами ^, 0 ^ i < т, Будем предполагать, что подынтегральная функция /(х)еС2(т+1) на интервале [— 1, 1]. Тогда можно показать, что погрешность R^m, f] ^^-^ имеет вид
[2(m+l)!]3[2(m+l)+l]71'
где — l^^L Выражение (7.5.7), так же как аналогичные соотношения для простейших и составных квадратурных формул, имеет в основном теоретическое значение.
На практике Широко применяется сравнение результатов вычислений на нескольких семействах узлов. Произвольный интервал интегрирования [я, 6] разбивается шагом h на и частичных интервалов [xz, xf+1], 0^/^и—1. Каждый из частичных интервалов заменой независимого переменного сводится к интервалу [—I, 1], затем производится вычисление по квадратурной формуле (7.5.1) ст+1 узлами. Результаты суммируются. Это алгоритм составной квадратурной формулы Гаусса.
Варьируя параметрами т, и и сравнивая результаты вычислений, можно оценить погрешность составной квадратурной формулы Гаусса.
. Применение программы А4А1. В программе А4А1 реализован алгоритм составной квадратурной формулы Гаусса со значением ^ = 9 и перебором по п от 1 до 10. Производится контроль заданной абсолютной и относительной точности вычисления интеграла. Пусть необходимо вычислить интеграл
3
J sin(e”x2)<Zx о
с абсолютной точностью 10”5 и относительной 10 "4. Программа может иметь следующий вид:
296\
REAL A,B,E,D,Y,E1
EXTERNAL F
DATA A,B,E,D/O.,3.,1.E—5,1.E—4/
СОБРАЩЕНИЕ К ПРОГРАММЕ A4A1
CALL A4A1(F,A,B,E,D,Y,E1)
СВЫВОД НА ТЕРМИНАЛ
WRITE (5,1) Y,E1
1FORMAT (2X,'Y = ',E13.6,'E1 =',E13.6)
END
СВНЕШНЯЯ ФУНКЦИЯ-ПОДПРОГРАММА
FUNCTION F(X)
F=SIN(EXP(—(X*X)))
RETURN
END
• 7.6. Интегрирование функций двух переменных
При численном интегрировании функций двух переменных /(х, у) по некоторым областям D часто применяются квадратурные формулы, которые получаются комбинацией одномерных квадратурных формул.
7.6.1 Формула Гаусса для квадрата. Рассмотрим интегрирование /(х, у) по областям D;
D = {-l^x^l, -1<у<1}.(7.6.1)
Произвольный прямоугольник {a<x^Z>, c^y^t/} заменой х, у следует привести к стандартному квадрату (7.6.1). Возьмем по переменной х узлы ^ и соответствующие веса qb 0^i<m, квадратурной формулы Гаусса одной переменной, по у—узлы г], и соответствующие веса tj, О^у^и. На рис. 7.13 показан вариант т=3, п=2. Составим квадратурную формулу
Qm,n= mf nJ(7.6.2)
i,j=0
и представим интеграл от /(х, у) по области D в виде
f J f^y)dxdy=Qm^Rm^f\ №l
где погрешность R зависит от т,1
и и свойств гладкости f^x.y^ по j } переменным х, у.? Т
Заметим, что квадратурная
формула (7.6.2) является точной на 3j т т т—"^—
полиномах от двух переменных:
Р2т+1.2я+1(х,у)= X йуХ'У1- ш^ЗГШ i,; = o
Рис. 7.13
Отмеченный факт является следствием теоремы 1Л. Для примера, изображенного на рис. 7.13, это полиномы
Р1Дх,у^=аОЛ)-^а1Л)х*а2Л)х2-Уазд)х3-Ь..-\-а1Л>х1-\-
+а(х1У+а1Лху+а2Лх2у+азлх3у+...+а-1Лх'1у+++
+«о,5У5 +а1,5хУ5 + a2,sX2yS + «з,5х3У5 + - + «1,5Х"' у5 Теорема 7.8. Пусть подынтегральная функция f(x,y) аппроксимируется полиномом (7.6.4) и выполняется неравенство
। max |/(x,y)-P2m+1-2„+1(x,y)|^e.
Тогда погрешность формулы (7.6.2) на этой функции имеет оценку
‘ -|Рт,„(/)К8е.(7.6.5)
Доказательство. Действительно, представим из (7.6.3) КтДЛ У №Де
^m,»(/) = f f (/—^гтЧ-1,2л + 1 + P2m+1,2л + 1) -1 -1
- L 9i5(/(5’ Л,)-Лця+1.2.+ 1(^Пу)+^2т+1,2^
М=о
Отсюда
!<„(/)« J i \f-P2m^,l.+ l\dxdy^ m,nm,n
+ £ ^i,';l/—^m+i^n+i l^4e+e X 4irri,j = oi,j = o
Формула (7.6.2) точна на константах, поэтому
J f dxdy = £ ^r, = 4;
-1-1iJ = O
следовательно, учитывая последнее неравенство, получаем (7.6.5), что и требовалось доказать.
Область со сложной границей. Рассмотрим задачу численного интегрирования /(х, j) по области D :
^{фИ^К^ФгМ, c^y^d},
где часть границы определяется непрерывными функциями Ф1(у), ФгМ (рис. 7.14).
Требуется вычислить интеграл
d ФгИ
I=^fkx’^dxdy=^dy f f^x, y^dx.(7.6.6)
Dс Ф1(^)
298
Сведение двойного интеграла к повторному (7.6.6) позволяет дважды применить одномерные квадратурные формулы (например, формулы Гаусса). Исходный интеграл запишем в виде
v(y)= 1 /(х,у)</х,(7.6.7)
Ф1И
y=$v(y)dy. <7-6-8)
Интеграл (7.6.8) вычислим с помощью одномерной формулы Гаусса:
(7.6.9)(7.6.9)dп
(7.6.9)
(7.6.9)
Y4uWy= I ^Ы+^i;
сj = 0
веса rj и узлы р7 определяются, как указывалось выше, приведением к стандартному интервалу [—1, 1]. Затем каждое значение у(т|;) вычислим, используя (7.6.7), также по одномерной формуле Гаусса:
<р2(Л/) т
»Ш= f J^ П>)^= L <1мЖ,г Ъ^+Кг, (7.6.10) Ф1М i=o
где веса qt а и узлы L^j зависят от выбора узлов т|7. Объединяя формулы (7.6.10), получим формулу Гаусса для рассматриваемой области D:
1=Q^R,
6=1^ пД(7.6.11)
3 = 01 = 0
где R—общая погрешность, зависящая от числа узлов и свойств гладкости функции /(х, у).
Применение программы А4А2. В программе реализован алгоритм вычисления интеграла (7.6.6) по формуле (7.6.11) с выбором числа узлов по заданной абсолютной погрешности вычис-3 ления /.
Пусть необходимо вычислить
1sin у + 1
I=\dy J ехр(х2 -Vy^dx
Оcos у - 2
с абсолютной точностью 10 “4. Программа может иметь следующий вид:
REAL A,B,E,Z
INTEGER N,I
EXTERNAL F1,F2,F
DATA A,B/0.,l./,E/l.E—4/,I/O/
СОБРАЩЕНИЕ К ПРОГРАММЕ А4А2
CALL A4A2(A,B,F1,F2,F,E,Z,N,I)
СВЫВОД НА ТЕРМИНАЛ
WRITE (5,1) Z,N,I
1FORMAT (2X/Z=',E13.6,'N=',15,T=',12)
END
СВНЕШНИЕ ФУНКЦИИ-ПОДПРОГРАММЫ
FUNCTION F1(Y) F=COS(Y)-2. RETURN
END
FUNCTION F2(Y)
F2 = SIN(Y)+L RETURN
END
FUNCTION F(X,Y)
F=EXP(X*X+Y*Y) RETURN
END
Глава 8
ЛИНЕЙНАЯ АЛГЕБРА.ЛИНЕЙНАЯ ОПТИМИЗАЦИЯ
• 8.1. Оценки погрешности решениязадач линейной алгебры
Введение. Численные методы линейной алгебры и линейной оптимизации играют особую роль в численном анализе. Это обусловлено по крайней мере двумя причинами.
Во-первых, многие линейные задачи математического анализа, дифференциальных и интегральных уравнений после дискретизации сводятся к решению задач линейной алгебры. Таким образом, численные методы линейной алгебры оказываются инструментом численного решения обширного круга математических, а следовательно, научно-технических задач.
Во-вторых, можно сформулировать следующее нестрогое утверждение: большинство нелинейных задач «в малом» линейны, т. е. нелинейные модели в малой окрестности некоторого решения могут быть описаны линейными. В основе конечномерных линейных моделей лежит линейная алгебра; следовательно, первым шагом решения нелинейных задач является исследование линеаризованных моделей, их дискретизация и численные методы линейной алгебры.
Однако, как нельзя недооценивать роль линейной алгебры и ее численных методов, так и не следует переоценивать ее среди инструментов решения научно-технических задач. Реальные математические модели все-таки нелинейны, обычно необходимо изучить модель «в целом», а не «в малом». Следовательно, полный арсенал методов вычислений должен содержать нелинейный численный анализ.
В гл. 5 отмечалось, что потребность в численных методах линейной алгебры связана в основном с размерностью задачи. Для малых размерностей и конечномерного пространства (и ^4) задачи линейной алгебры решаются аналитически на уровне формул.
Естественно, что численные методы применимы как для размерностей и ^5, так и для малых размерностей и = 2, 3. Поэтому все основные проблемы численного решения линейных задач можно и нужно представлять наглядно, геометрически, на плоскости или трехмерном пространстве. Численный метод, представленный геометрически в малой размерности, имеет все основные черты, присущие ему и в большой размерности, отличаясь лишь меньшим объемом арифметических операций. Есть, конечно, проблемы, связанные именно с размерностью и (ограничение памяти ЭВМ, ошибки длинных вычислений); их следует рассматривать отдельно.
записываетсязаписываетсяОценку погрешности решения систем линейных уравнений. Система линейных уравнений с матрицей вещественных коэффициентов Л = (^ Д l^jXn, и вектором свободных членов Ь=(ЬХ, ..., Ьп) относительно неизвестного вектора х=(х1? ..., хп) следующим образом:
записывается
записывается
(8.1.1)(8.1.1)'<zlilx1+aL2x2.+ ...+<z1.„x„ = Z>1,а2,1Х1 +а2,2х2 + — + а2,пхп=;Ь2,<4ixi+a»,2x2 + ---+<Wn = Ktили в матричной форме
(8.1.1)
(8.1.1)
Ах = Ь.
Каждое уравнение (8.1.1) описывает прямую (и = 2), плоскость (и = 3), гиперплоскость (и ^4) в вещественном пространстве БД поэтому решить (8.1.1) — значит найти точку хеЕп их пересечения.
Например (рис. 8.1):
2х1=3;
xY +х2 = 1;
xt — х2 = 1;
х1+х24-х3 = 1,
2ху +х2 = 1
х2 + х3 = 0,8.
На рис. 8.1, 3) показана первая плоскость и на ней следы двух других плоскостей.
Прежде чем оценивать погрешность решения (8.1.1), оценим погрешность операции умножения матрицы на вектор:
у = Ах.(8.1.3)
Будем предполагать, что матрица А задана точно, а вектор х—с погрешностью Ах такой, что
||Ах||<г.(8.1.4)
Множество точек х = х0 + Ах, удовлетворяющих (8.1.4), называется шаром в Еп радиуса г с центром в х0. На рис. 8.2 приведены примеры шаров для некоторых норм в Е2.
Чтобы найти абсолютную погрешность Ау вектора у, запишем (8.1.3) в виде
y-Vky=А (х+Ах).
Рис. 8.2
Отсюда получаем связь вектора погрешности А у к точному значению у с вектором погрешности Ах вектора х:
Ау = ААх.
Из определения нормы матрицы находим
|| Ду|| = || ЛДхК1|Л |||| Дх|К11 Л ||г.(8.1.5)
Напомним, что норму матрицы А можно задать формулой (эквивалентной определению п. 5.3.10)
|| Л ||= max ||Лх||.
Ik 11 = 1
Геометрическая интерпретация нормы матрицы—максимальная норма вектора, получаемого преобразованием А единичной сферы || х ||=1 (рис. 8.3). Неравенство (8.1.5) показывает, что радиус шара погрешности вектора у изменяется в || А || раз.
Теорема 8.1. Пусть система линейных уравнений (8.1.2) для любого вектора b имеет единственное решение. Тогда имеет место неравенство
II Дх КН Л-'ll II Д/’ll,(8.1.6)
где АЬ. Ах—векторы абсолютной погрешности Ь, х соответственно.
Доказательство. В силу предположения однозначной разрешимости (8.1.2) для любого b существует матрица А-1, обратная матрице А. Используя А-1, запишем решение (8Л.2):
x = A"Yb.(8.1.7)
Применяя к (8.1.7) неравенство (8.1.5), получаем (8.1.6), что и требовалось доказать.
В качестве примера рассмотрим систему уравнений (8.1.2) с двумя матрицами второго порядка
Рис. 8.3
_/103\/0,13\
Л1 \ 0 10/2~1 0 0,1/
для которых легко определить обратные матрицы /0,1 —0,03\/10 — 300\
Л1‘ Д 00,1 /2\010/
В качестве векторной и соответственно матричной нормы возьмем
||х||00= max |xj, МИ^тах ^ |яи|
^i^n1 ^i^n j= 1
Погрешность решения первой системы имеет оценку
|| Ах КО,13 || Аб ||,
второй—оценку
||ДхК310||Д/>||, причем знак равенства достигается на векторе Аб с координатами разных знаков (рис. 8.4).
Для характеристики чувствительности системы линейных уравнений (8.1.2) к погрешностям правых частей вводятся числа обусловленности.
Число обусловленности системы р, определяется как максималь-
Я II Ах II ное отношение относительной погрешности решения ох =•
Я ЦАб|| к относительной погрешности правой части оь=——:
р=тах —.
Число обусловленности системы р можно выразить через ||Л-1||. Действительно, имеем
II Ах||||б||_||б|||| Ах ||
р=шахр=шах1МЦА6Ц ||х||||Аб||
р=шах
р=шах
Заметим, что р = р(б) зависит от вектора в правой части и решения х, соответствующего б. Второе число обусловленности характеризует только матрицу системы А.
304 X
Число обусловленности v матрицы А есть максимальное по всем векторам b значение ц(^):
v = max ц(/)).ь
Число обусловленности v можно записать в следующей форме (с учетом || 61| ^|| А || || х ||):
v=max|| Л"11| j^j|=ll Л"1 ЦП Л ||.
Из цепочки соотношений
1 = 11^11 = 11 Л-1^ 11^11 Л-1 IIIM ll = v,
где Е—единичная матрица, следует, что v^l.
Для приведенных выше примеров v1 = l,69, v2 = 961.
Рассмотрим задачу решения системы уравнений с матрицей Л2 и различными векторами b=^bv b2\ компоненты которых задаются с пятью верными значащими цифрами. Тогда значение v2 = 961~103 указывает, что решение х этих систем можно вычислить лишь с двумя верными значащими цифрами. •
Для конкретной правой части, например Ь = ^\, 0), имеем х = (10, 0), число ц2 = 31. Оно указывает, что решение х этой системы можно вычислить не менее чем с тремя верными значащими цифрами.
Оценим теперь погрешность решения исходной системы уравнений (8.1.2) в том случае когда матрица системы А задается с погрешностью АЛ, а вектор b— точно."
Теорема 8.2. Пусть система линейных уравнений (8.1.2) для любого вектора b имеет единственное решение. Пусть
|| Л^ДЛ^ок!.(8.1.8)
Тогда (8.1.2) однозначно разрешима с матрицей (Л + АЛ) и имеет место неравенство.
IIAxl^ v ||Алц ’
IM "1-ос IIЛ II •'
Доказательство. Представим уравнение (8.1.2) в виде
(А + А А) (х+Ах) = Ь.
Из этого равенства находим
Л(£+Л-1ДЛ)(х + Дх) = />,(Е+Л^ДЛИх + Дх)^"1/,.'
Из условия (8.1.8) следует существование обратной матрицы (я+л^дл)-1 и ее представление (см. гл. 5)
(Я+Л^АЛ)’1-f (Л^ДЛ).(8.1.11)
i = O
Подставляя (8.1.11) в (8.1.10), находим
х+Дх = А-1/)+ ^ (А"^ДЛ )* А ~1Ь,i=i
отсюда
Ах = А гАА £ (Л хААуА гЬ.
i = 0
Переходя к оценкам норм, получаем
|| Ах К|| Л"11| || АЛ || X || Л "ХАЛ |Г ЦхК \i = 0/
■ .. i^iHb^^MlJ^^
1-а(1-а) IIЛ ||
откуда следует (8.1.9), что и требовалось доказать.
Можно пблучить оценку относительной погрешности решения (8.1.2) в общем случае, когда матрица А и вектор b задаются с погрешностью ДЛ и АЬ соответственно.
Формулировка теоремы 8.2 остается прежней, а оценка (8.1.9) заменяется следующей:
ЦД*!^ у /||ДЛ|| №\
ИМ ^1-а^ЦЛЦ + ||Z>|| У
(8.1.12)
Неравенство (8.1.12) показывает, что влияние погрешности матрицы А и вектора b на погрешность решения связано с двумя числами а, у.
Число а определяет допустимую погрешность матрицы Л, которая еще сохраняет однозначную резрешимость систем (8.1.2). Для рассмотренных выше примеров 0,13|| А А || = а15 310|| А А || = а2. Отсюда получаем ограничение на допустимую погрешность матрицы системы: для первой системы НДЛ^^В, для второй ||ДЛ2||< <(310)1, или в относительных погрешностях
ЦДЛ JIЦлл
II АЛ2||<11
||Л2||310-3,1 9бГ
Естественно задать вопрос: что делать, если величина v(l—а) 1
столь велика, что погрешность
ИМ
II Ml
не удовлетворяет заданной
точности вычислений? В этом случае необходимо обратиться к постановке той задачи, которая привела к решению такой системы линейных уравнений (малые погрешности исходных данных могут приводить к неприемлемо большим погрешностям в решении), учесть дополнительную информацию в задаче так, чтобы величина в правой части (8.1.12) стала приемлемой.
В гл. 6 мы, в принципе, так и поступали, когда предлагали заменить в алгоритме среднеквадратичного приближения семейство полиномов {М} полиномами Чебышева ^Т^х^.
306
Если матрица А и вектор b определяются из экспериментальных данных, то оценка (8.1.12), возможно, станет приемлемой, если провести измерения с более высокой точностью.
Заметим, что в приведенных выше оценках погрешности не учитывались ни погрешности метода решения системы, ни погрешности вычислительного процесса по выбранному методу.
Фактически это оценки погрешности математической модели, описываемой системой (8.1.2).
8.1.3. Оценка погрешности определения собственных значений и собственных векторов. Пусть задача определения собственных значений и собственных векторов вещественной матрицы А решается в том случае, когда матрица А задается с погрешностью АЛ. Оценим погрешность собственных значений и собственных векторов через погрешность АЛ.
Пусть матрица А имеет различные собственные значения Х1? Х2, .., Х„ и соответствующие им собственные векторы ev е2)...,еп. Известно, что {ej, l^z^n, образуют базис в Еп, а матрица Т, столбцами которой являются компоненты векторов et
/^i, 1 ... еп,! \
Г= ...,(8.1.13)
\^1, п ••• ^п, П /
приводит исходную матрицу А к диагональному виду, а именно
/X, 0 \
diag(XJ ==T"4T.
Vo X)
Собственные значения и собственные векторы, соответствующие матрице Л+АЛ, обозначим Xz+AXf, ei-V^eb X^i^n. Если применить к матрице Л+АЛ преобразование Г, то получим
Г " Х(Л + АЛ )Т=diag (Xz) + Т "1 АЛ Г(8.1.14)
Известно, что матрица Т-1(Л+АЛ)Т имеет те же собственные значения, что и (А + АЛ). Воспользовавшись критерием локализации собственных значений (5.3.15), получим из (8.1.14) неравенство
|(Xz+AXf) —diag(Xz) —diag(T"1AЛT)|£ КТ-^ЛТ)^.!, X^i^n,
или
|АХ1.|^||Т-1АЛТК||Т-1|| II ^11 ||АЛ ||,
Здесь || || = || || 00. Обозначим число обусловленности v матрицы Т v(T)=||T-1|| II Л-
Окончательно имеем оценку
|AXf| ^у(Т)||АЛ ||, X^i^n,(8.1.15)
307
6^которая показывает, что абсо-
jt £[ Xлютная погрешность определения
^Xz собственных чисел зависит от числа обусловленности матрицы
.. .Т преобразования А к диаго-
'нальному виду.
рис 8.5Заметим, что неравенство
получено только при предположении существования различных собственных значений. Точных значений Хь векторов et знать не обязательно.
Для произвольных матриц величина v(T) может принимать большие значения, если имеются собственные векторы А, близкие к линейно зависимым (рис. 8.5, а\ Для симметричных матриц А собственные векторы eL образуют ортонормированный базис (рис. 8.5, Ь), и если (Л+АЛ^ также симметрична, то можно надеяться на хорошую устойчивость задачи определения собственных значений симметричных матриц относительно погрешностей, которые не нарушают симметричности матрицы.
Рассмотрим задачу определения поправок к собственным значениям и векторам симметричной матрицы Л, связанных с погрешностью АЛ, как задачу возмущений (см. гл. 5). Для этого представим
АЛ = гВ.
где 8—параметр возмущения, характеризующий погрешность, В— симметричная матрица. В этом случае собственные значения и векторы матрицы (А +е£) есть функции от 8 вида
~S(e) = Xi + 8X(1)+82XP +(8.1.16)
et(e) = et + 8е Р+82е 52) +(8.1.17)
где ряды сходятся для достаточно малых 8 (при наличии различных собственных значений Xt матрицы Л). Доказательство сходимости рядов выходит за рамки настоящей книги.
Теорема 8.3. Пусть вещественная симметричная матрица А имеет собственные значения Xb X^i^n, и векторы е? Тогда, если В—симметричная матрица, собственные значения Х^, X^i^n, и векторы ^(е) матрицы (А+гВ) имеют при 8->0 представление
Х^-Х^г^е» ^) + О(е2);(8.1.18)
“ e^e^t 1 S^+O(£2)(8-1.19)
i*j
Доказательство. Найдем главную часть поправки в (8.1.16), (8.1.17) к невозмущенным собственным значениям Xt и векторам et матрицы Л, т. е. ХР, еР. Имеем
(Л + гВ^е^ = S(e) еДе), X^i ^п,308Х
или с учетом (8.1.16), (8.1.17)
(Л + гВ) (ef + ге 51} + О (е2)) = (Xz+еХ^ + О (е2)) хх ^ + Ее Р + О (е2)), 1 z и.
Следуя общей идее методов возмущений, сравним коэффициенты при одинаковых степенях е.
При £°
Агг=Х£ь X^i^n.
При Е1
ЛеР + Яе^ ^Х^еР + ХРе^ X^i^n.(8.1.20)
Умножим обе части последнего равенства скалярно на еь а также учтем, что векторы et образуют ортонормированный базис, а матрица А— вещественная, симметричная. Находим
(ЛеР, е^А-^еь е^ = Х^\ е^+ХР^., еР
(А^Д е,) = (еД Л^-Х^Р, е,.), откуда
(Beb e^Xi1^ 1 ^/' ^п.
Следовательно, (8.1.18) выполняется.
Умножим обе части равенства (8.1.20) на е^ j^i, получим
(АеД е^ + (Веь е^Х^еД ej\
(Лб>Р,б>у) = (еР, Лб^^
откуда
(еР\ е^=1~^х5Веь ^ ‘^(8.1.21)
Формулы (8.1.21) определяют коэффициенты разложения векторов еР по базису е^ X^j^n, для всех векторов, кроме случая j=i. Для определения коэффициента (е^\ ^) воспользуемся условием нормировки векторов ^(е):
(^+£еР + О(£2), ez + £eP + O(£2)) = 1.
Сравнивая члены при степенях s в этом равенстве, находим
(еР, ^J+^^'^O,
или
(^Р, ^) = 0.(8.1.22)
Объединяя (8.1.21) и (8.1.22) в одну формулу, получаем
еР = У еАв; = У
;=1;=i
Ai(S) Л] (8)Следовательно, справедливо соот
ношение (8.1.19), что и требова- ^.^. д лось доказать.
^Практически формулы (8.1.18),
Рис- 8-6(8.1.19) используют при конечных
значениях 8, а не при 8^0. Допустимые значения 8 определяются такими значениями, при которых возмущенные собственные значения Xt(e) не пересекаются (рис. 8.6). При этом поправки к собственным векторам должны быть такими, чтобы имело место неравенство
£^Beb e^^Xt-XjV
что следует ц) (8.1.19) (знак « означает, что левая часть значительно меньше правой).
Вырожденные матрицы и кратные собственные значения. Выше, рассматривая оценки погрешности решения систем линейных уравнений, мы предполагали, что система линейных уравнений
1Ах = Ь
имеет единственное решение для любой правой части. Это предположение эквивалентно тому, что матрица А невырождена, т. е.
det^/O.
Оценка погрешности определения собственных значений проводилось при условии, что собственные значения Xb 1^1^ и, различны, т. е. нет кратных Хь а именно
Рассмотрим вопрос о том, насколько обоснованы эти предположения. Не отбрасываются ли при этом важные прикладные задачи с вырожденными матрицами или кратными собственными значениями? Заметим, что любая вещественная матрица А размера их и может рассматриваться как элемент вещественного пространства Еп\ Каждая точка Е”2 задает некоторую матрицу А.
Вырожденные матрицы А* в Е"2 выделяются условием
deU* = 0.(8.1.23)
Матрицы А, удовлетворяющие (8.1.23), представляют собой множество в Е"2 размерности, меньшей и2.
Например, для матриц второго порядка
\^2,1а2,2/
вырожденные матрицы А* в пространстве Е4, образованном векторами (я1д, а1>2, «2,1» «2.2)? выделяются условием
at гаЪ-а*, 2«* 1 =0.
зюX
А*+дА* det А=0А*+дА* det А=0avavРис. 8.7Рис. 8.7Таким образом, произвольное, Оп сколь угодно малое возмуще- ’ ние матрицы А * в Еп2 должно приводить к нарушению условия (8.1.23) (рис. 8.7).
А*+дА* det А=0
А*+дА* det А=0
av
av
Рис. 8.7
Рис. 8.7
Следовательно, можно утверждать, что вырожденные матрицы в семействе матриц — пхп представляют собой исключение, свойство вырожденности является неустойчивым.
Поэтому большинство технических задач приводится к уравнениям
с невырожденными матрицами.
Если же математическая модель задачи оказалась связанной с вырожденной системой линейных уравнений или близкой к ней, то следует изменить модель. Если оказывается, что математическая модель в рамках принятых предположений все-таки определяется матрицей, близкой к вырожденной, то, видимо, техническая модель находится к неустойчивой ситуации со всеми вытекающими отсюда последствиями. Это является сигналом к изменению технического
решения.
Кратные собственные значения X имеют матрицы А, у которых характеристическое уравнение
P„(X) = det(^-XE) = 0
с кратными корнями. Но если полином РП(Х) имеет X* — кратный корень, то с необходимостью должно выполняться условие
^(Ч) = 0.(8.1.24)
Условие (8.1.24), так же как (8.1.23), из пространства Е”2 выделяет множество матриц А* меньшей размерности.
Например, для матриц второго порядка
^2 (^) = (^1,1 "" ^Иа2,2 — ^) — а2,1^1,2
корни
Г/\2
X1/2=^l^+—det Л
кратны при условии (8.1.24), которое принимает вид
(а1Д +а2,2)2 —4бе1Л = 0.
Поэтому относительно матриц А с кратными собственными значениями справедливы те же замечания, что и для вырожденных матриц.
• 8.2. Прямые методы решения системлинейных уравнений
Рассмотрим точные методы решения систем линейных уравнений. Метод решения называется точным, если за конечное число арифметических операций с точными числами можно получить точное решение системы уравнений. В противном случае метод приближенный. Заметим, что точные методы—это не настолько идеализированные алгоритмы, что на ЭВМ их нельзя реализовать. Для систем линейных уравнений с матрицей А и вектором Ь, состоящих из целых чисел, используя на ЭВМ арифметику целых чисел, можно е помощью точных методов находить точные решения.
8.2.1. Метод, исключения Гаусса. К числу точных методов решения систем линейных уравнений относится широко применяемый в вычислительной практике метод Гаусса.
Рассмотрим систему уравнений (8.1.1). Алгоритм исключения состоит из последовательности шагов.
1-й шаг. Исключение неизвестной хг из всех уравнений системы (8.1.1), кроме первого. Пусть ^1Д/0. Тогда из первого уравнения выражаем хг
^1 = — («1,2^2+ - + «!,»*») + *1(8-2.1)
через остальные неизвестные и подставляем (8.2.1) во 2-е, 3-е, ..., п-е уравнение системы (8.1.1). После подстановки получаем преобразованную исходную систему вида
^i.i^i +а112х2+^aVnxn = bY,
. аЧ)1Хг^г ...A-a4Vn = b4\(8.2.2)
где элементы матрицы а^\ 2^1,j^n, и вектора b\x\ 2^i^n, после первого шага получены по формулам
(1)*
ai,i ’
2-й шаг. Исключение неизвестной х2 из всех уравнений системы (8.2.2), кроме 1-го и 2-го. Пусть аЧ\^. Тогда из второго уравнения выражаем х2
^2=^^(«%^3+ - Н-ай^Н^1’(8.2.3)
через остальные неизвестные и подставляем (8.2.3) в третье, четвертое, ..., и-е уравнения системы (8.2.2). После подстановки получаем преобразованную исходную систему 312\
«i,i*i+-A-aVnxn = bx,
<z^?2^2 + -А-а^)„хп = ЬЧ\
а^зх3 +...+афпх„=Ьф,(8.2.4)
«Й^з +... + а^пх„ = Ь(п2\
где элементы матрицы а\2], 3^i,j^n, и вектора Ь^, З^/^и,
после второго шага получены по формулам
«Wl-jr^W,.
bP-b.-LaW-а2,2
Продолжая этот процесс исключения при условии, что
42)з/о, ...,аГ&-1*о,
после (и— 1)-го шага исключения получим преобразованную исходную систему
«1,1^1 + -+«1,Л= ЬХ,
(8.2.5)(8.2.5)а^2х2 + - ^а^Хп =ЬЧ\
(8.2.5)
(8.2.5)
п(п-1) _Un-l)
Un,n Лп ип
с верхней треугольной матрицей U
и=и=а1,1^1,2 <Н,па^2
и=
и=
О ’ Л^
и преобразованным вектором правых частей
g =g =bl b^bl b^
g =
g =
bl b^
bl b^
b^-^
В матричной записи система уравнений (8.2.5) примет вид
Ux=g.(8.2.6)
Преобразование исходной системы линейных уравнений к системе (8.2.6) с треугольной матрицей U—прямой ход исключения.
На этом этапе мы еще не вычислили ни одной компоненты вектора решения х, но эквивалентными преобразованиями привели систему к такой форме, для которой легко вычислить все компоненты решения х.
Пусть aJ^^O. Тогда осуществляем обратный ход: вычисляем компоненты вектора решения в обратном порядке. Из (8.2.5) находим
X(8.2.7)
Х1 =_Ць1-а1 ]Пхп-... -а1Дх2у
>аХЛ
Для примера решим систему уравнений
хг — 2х2 + Зх3 = 1,2 Хх + З^Н- х3 = 2,— хг — х2 + х3 = 3.
Первый шаг прямого хода исключения
4Ху — 2х2 + Зх3 = 1,
7х2 —7х3 = 0, — Зх2 + 4х3 = 4;
второй шаг
Ху — 2х2 + Зх3 = 1, 1х2 — 7х3 = 0, ^з=4;
обратный ход:
^з = 4, *2=4, Ху = —3.
Определим нижнюю треугольную матрицу L с единичной главной диагональю формулой
314
" 1
^!О
аЗД^21
ахл^?2
а1л а^г a^'^Vi
Прямой подставкой можно проверить, что справедливо разложение исходной матрицы А в произведение:
A = LU.(8.2.8)
Представление матрицы А в виде (8.2.8) называется LU-разло- жением матрицы. Очевидно, что решение исходной системы уравнений эквивалентно решению двух систем с треугольными матрицами
Lg=b,(8.2.9)
Ux=g.(8.2.10)
Таким образом, рассмотренный вариант метода исключения Гаусса—это определение вектора g решением (8.2.9) и затем определение вектора х решением (8.2.10).
Справедливо следующее утверждение.
Теорема 8.4. Для существования LU-разложения матрицы А необходимо и достаточно, чтобы у матрицы А все главные миноры были отличны от нуля.
У произвольной невырожденной матрицы А главные миноры, т. е.
а1Л а1,2а2,1а2,2а1Л а1,2а2,1а2,2а1Д — aY,nа1Д — aY,nапд ... aninапд ... anin
а1Л а1,2
а2,1а2,2
а1Л а1,2
а2,1а2,2
а1Д — aY,n
а1Д — aY,n
апд ... anin
апд ... anin
вообще говоря, могут обращаться в нуль. Например, матрица
невырожденная, а ее первый главный минор равен нулю.
Чтобы применить метод Гаусса к таким матрицам, или, что то же самое, получить Z, {/-разложение, необходимо произвести перестановку строк (или столбцов) так, чтобы главные миноры стали отличными от нуля.
Теорема 8.5. Произвольная невырожденная матрица нереста- новкой строк (столбцов) может быть приведена к матрице ^. с главными минорами, отличными от нуля.4
Обычно перестановку строк (столбцов) не производят отдельно | от процедуры исключения, а соединяют эти два процесса в один.g
Если ахд=0, переставим строки матрицы А так, чтобы в левом g верхнем углу оказался ненулевой элемент. В первом столбце такой f элемент всегда найдется, иначе det^ = O. Если после первого шага | получим 0^2 = 0, то выполним, как и выше, перестановку; во втором | столбце всегда найдется ненулевой элемент, иначе два первых столбца II были бы линейно зависимы и det Л = 0. Поместим строку с ненулевым g элементом во втором столбце на место второй строки, тогда а^\^. 1 Продолжая ^от процесс исключения и перестановки строк (если 1 элемент а^к1) = 0) до k=n, получим /.^-разложение матрицы 1 А с дополнительной матрицей P-матрицей перестановок строк: 1
‘ .PA = LU.(8.2.11) 1
Матрица Р получается из единичной матрицы Е перестановкой Ж тех же строк. Например, перестановке 2-й и 4-й строк матрицы | соответствует|
"1 0 0 о1
р= 0 0 0 10 0 100 1 о oj
Заметим, что матрица Р—это и есть та матрица перестановок, | существование которой утверждается в теореме 8.5.*
Вычисление определителя и обратной матрицы с помощью |
/.(/-разложения. Напомним формулу для определителя произведения | двух матриц:|
det А = det L det U.j
Заметим, что определитель треугольных матриц равен произве- 1 дению диагональныхэлементов. Следовательно,Ж
det/.= l, detl7=a1-1 -«^-^n П-
Отсюда значение определителя матрицы А вычисляется по формуле
МА=а1Л-а^2 -
Если матрица А представлена в форме (8.2.11) с перестановками, тоdet Р det А = det L det U.
Но так как матрица Р получается перестановкой строк единичнойматрицы Е, то
detP-J ПРИ четном числе ^ перестановок,~ 1 — 1 при нечетном числе к перестановок.
Окончательно определитель матрицы А равен deM=(-1)*^ !n.
Напомним формулу для обратной матрицы, представленной произведением двух матриц:
A = LU, АЧиЧ-1.
Матрицы L, U—треугольные, поэтому вычисление элементов L”1 и U-1 не представляет труда (см. (8.2.7)). Если матрица А представлена в форме (8.2.11) с перестановками, то
АЧЧи-Ч"1, А-Чи'Ч-Ч,
матрица Р"1 есть матрица обратной перестановки, возвращающей строки на их прежние места. Можно заметить, что
Р^Р',
где Р'—транспонированная к Р матрица.
В реальных вычислениях обратная матрица А"1 находится решением и систем линейных уравнений методом исключения Гаусса:
Ax = eb X^i^n, где et— /-столбец единичной матрицы Е. Полученные векторы решений хг, х2, ..., хп образуют и столбцов матрицы Л-1, поскольку АА ""Че.
Разложение на треугольные множители симметричной положительно определенной матрицы. Симметричные положительно определенные матрицы А очень часто связаны с изучением поведения механических систем в окрестности устойчивого положения равновесия. Матрица А трактуется тогда как матрица квадратичной формы в записи энергии W;
W=^Ax, х)= 5 aijXiXj, ij=l
где Xi — обобщенные координаты.
Для положительно определенных матриц выполняются детер- минантные неравенства Сильвестра
откуда в силу теоремы 8.4 сразу же следует существование L (7-разложения.
Однако для рассматриваемого класса матриц, если не требовать, чтобы на диагонали L стояли единицы, справедливо следующее разложение:
(8.2.12)(8.2.12)A = LL\
(8.2.12)
(8.2.12)
где U—матрица, транспонированная к L. Действительно, определим элементы матрицы L, сравнивая каждый элемент матрицы в левой и правой части (8.2.12). Имеем
адл — а1>пttn, 1 ••• ^п,падл — а1>пttn, 1 ••• ^п,пкл. Ок,п к,пкл. Ок,п к,пкд — к,пкд — к,п
адл — а1>п
ttn, 1 ••• ^п,п
адл — а1>п
ttn, 1 ••• ^п,п
кл. О
к,п к,п
кл. О
к,п к,п
кд — к,п
кд — к,п
откуда получаем равенства для первого столбца г ^i,i =(ai,i)1/2> кд =каиi)/^i,i> 2^i^n.
Аналогично наводим соотношения ij
а:;= 2 lik, G; ;= 2 likljk, j <1,.k=lk=l
которые приводят к формулам /i-l\1/2
(
i - 1\
«ij- 2 li.klj.kVkt, j+l^i^n.k=l/
После того как выполнено разложение (8.2.12), решение системы линейных уравнений Ах = Ь получается решением двух систем с треугольными матрицами:
Lg = b.
L’x=g.
В отличие от случая общих матриц изложенный метод разложения требует меньше памяти ЭВМ, так как хранится только треугольная часть матрицы Л и не нужна перестановка строк.
Вычислительная погрешность метода Гаусса и выбор ведущего элемента исключения. Выше отмечалось, что метод исключения является точным методом. При этом предполагалось, что арифметические операции выполняются над точными числами. Если же метод исключения реализуется на ЭВМ, то появляется вычислительная погрешность, связанная с конечным числом разрядов ЭВМ для представления вещественных чисел, ошибками округления, реализацией на ЭВМ арифметических операций.
Вычислительная погрешность метода исключения может быть устранена в арифметике целых чисел. При этом если деление на элементы
(8.2.13)
производится с остатком, то оно не выполняется, а запоминаются числитель и знаменатель. Компоненты вектора решения определяются в виде дробей. Метод Гаусса в арифметике целых чисел для общих матриц А требует определенного искусства масштабирования, чтобы избежать переполнения после арифметических операций.
318
Пусть метод исключения реализуется в арифметике вещественных чисел. Тогда естественно поставить вопрос об уменьшении вычислительной погрешности за счет модификации алгоритма исключения. Фактически идея такой модификации уже была использована выше. Вводились матрицы перестановок Р, чтобы избежать деления на нуль. Деление привело бы к бесконечно большой вычислительной погрешности.
Элементы (8.2.13), на которые производится деление в методе Гаусса, называются ведущими элементами исключения.
Уменьшение вычислительной погрешности производится путем перестановки строк и столбцов матрицы так, чтобы ведущий элемент на k-м шаге исключения был наибольшим по модулю из коэффициентов, участвующих в дальнейшем исключении:
la^r^H max |а^71)|, l^k^n,(8.2.14)
k^ij^n
где 0^ = 0^.
Выбор ведущих элементов по формуле (8.2.14) называют методом исключения с полным упорядочением.
Полное упорядочение требует большой дополнительной вычислительной работы, поэтому часто останавливаются на методе исключения с частичным упорядочением по строкам. Выбор ведущих элементов производится согласно формуле
max MV1’!.(8.2.15)
k^i^n
Например, для системы уравнений
4х1 + 5х2 + 12х3 = 1,jq — Зх2 + хз = ^Юх^ х2 — х3 = 3
перед первым шагом исключения требуется согласно алгоритму с полным упорядочением поменять первый и третий столбцы системы уравнений:
12х3 + 4х1 + 5х2 = 1, х3 + хг — Зх2 = 2, — Хз+10^4- х2 = 3;
согласно алгоритму с частичным упорядочением поменять первую и третью строки системы уравнений:
Юх^ х2 — х3 = 3,
Xi —Зх2 + х3 = 2, 4х1 + 5х2 + 12х3 = 1.
Затем выполняется 1-й шаг исключения.
Решая конкретную систему уравнений, трудно, вообще говоря, априори оценить по матрице А и вектору погрешность как
системы уравнений (найти число обусловленности), так и вычислительную погрешность. Поэтому можно предложить следующие
практические рекомендации:
для оценки числа обусловленности следует численно решить несколько систем уравнений с близкими правыми частями к заданному вектору Ь;
для оценки вычислительной погрешности следует решить систему уравнений с двойной точностью.
Оценка числа арифметических операции метода Гаусса. Процесс исключения Гаусса запишем на фортране, используя обозначения llk = L (I, К), ам = A (I,J), bt = В (I), xt = X (I), и = N, массив L должен быть описан как . Вещественный. Имеем следующую программу
С ПРЯМЕЙ ход
DO 1 K=1,N—1
DO 1. I = K+1,N L(I,K)‘=A(I,K)/A(K,K) DO 10 J=K + 1,N
10A(I,J) = A(I,J) — L(I,K)*A(K,J)
B(I)=B(I)-L(I,K)*B(K)
СОБРАТНЫЙ ХОД
DO 3 K = N,1, —1
X(K)=0.
DO 2 J=K+1,N
X(J)=X(J)+A(K,J)*X(J)
X(K) = (B(K)-X(K))/A(K,K)
Здесь элементы матрицы a$ записываются в память на место исходной матрицы a^j, элементы bf1—на место вектора Ь( (см. формулы (8.2.5), (8.2.7)).
Обратившись к тексту программы, замечаем, что при больших значениях порядка системы уравнений п основная вычислительная работа сосредоточена в трех вложенных циклах DO 1. Число арифметических операций при п-юо есть О (и3), и основное время затрачивается на приведение матрицы к треугольному виду.
Для примера число арифметических операций решения системы уравнений с матрицей размером 100x100 (т. е. л = 100) имеет порядок 106. На ЭВМ с быстродействием 105 оп/с время решения такой системы будет порядка 10 с.
Если приведенный выше алгоритм дополнить выбором ведущего элемента исключения с частичным упорядочением, то между циклом по К и циклом по I появится еще один цикл
DO 1 K=1,N—1
DO 11 M = K,N
1111CONTINUEDOI I = K+1,NCONTINUEDOI I = K+1,N320320КК
11
11
CONTINUE
DOI I = K+1,N
CONTINUE
DOI I = K+1,N
320
320
К
К
В этом цикле производится выбор ведущего элемента А (К, К), что потребует О (и) арифметических операций (вычитания). Общее число арифметических операций при и^оо подсчитаем следующим образом: в циклах по I, J операций О (и2) плюс в цикле по М: О (и), откуда суммарное число операций
О^ (О (и2) + <9(и)2) = О(и3)
остается того же порядка, что и в алгоритме без упорядочения и основное время затрачивается на приведение матрицы к треугольному виду.
Наконец, легко понять, что цри полном упорядочении затраты на выбор ведущего элемента исключения сравниваются по порядку величины с приведением матрицы к треугольному виду.
Применение библиотечных программ. Вычисление определителя вещественной матрицы А с помощью программы А8А5 выполняется следующим образом. Для примера пусть
Тогда программа может иметь вид
REAL A(2,2),D,W(2)
INTEGER K,N,I
DATA A/l.,2.,3.,4./,K,N,I/2,2,0/
СОБРАЩЕНИЕ К ПРОГРАММЕ A8A5
CALL A8A5(A,K,N,D,W,I)
СВЫВОД НА ТЕРМИНАЛ
WRITE (5,1) D,I
FORMAT (2X/D = ;E 13.6,1 = ',12) END
Решение системы линейных уравнений с симметричной положительно определенной матрицей
/3
А = I 1, Ах=Ь,\1 4/
и набором правых частей
с помощью программы А9А0 выполняется следующим образом:
321321REAL A(2,2),B(2,3),W(2),X(2,3),W(2,3)
321
321
INTEGER K,L,N,M,J,L,I
DATA A/3.,1.,1.,4./,B/1.,2.,3.,4.,5.,6./
DATA K,L,N,M,J,L 1,1/2,2,2,3,2,2,0/
СОБРАЩЕНИЕ К ПРОГРАММЕ A9A0
CALL A9AO(A,K,B,L,N,M,X,J,W,W1 ,L1,1)
СВЫВОД НА ТЕРМИНАЛ
И Ю. П. Боглаев
WRITE (5,1) X,I
1 FORMAT (2X,'X = ',/,6E3.6,/,! = ',12)
END
• 8.3. Итерационные методы решениясистем линейных уравнений
Введение. Рассмотрим итерационные методы решения систем линейных уравнений. Эти методы, вообще говоря, не дают возможности найти точное решение за конечное число итераций даже при отсутствии вычислительной погрешности. С их помощью строится последовательность {х(к)} такая, что
лlimx(k)=x,
' *к—►со
где х—точное решение.
Область широкого применения итерационных методов—это системы уравнений, к которым приводят численные методы решения дифференциальных уравнений с частными производными. Матрицы таких систем имеют большое число нулевых элементов, и в отлйчйе от прямых методов итерационные не увеличивают число ненулевых элементов матрицы в процессе вычислений. Эффективность итерационных методов определяется скоростью сходимости последовательных приближений х^ к решению.
Пусть ищется решение невырожденной системы уравнений
Ах = Ь.(8.3.1)
Первым шагом в итерационном методе является преобразование исходной системы к виду
Cx = Bx-^d,(8.3.2)
где матрицы С, В и вектор d определяются по матрице А и вектору Ь. Причем системы (8.3.1) и (8.3.2) являются эквивалентными, т. е. их решения совпадают, а построение обратной матрицы С-1 проще, чем А-1.
Вторым шагом является расстановка индексов или номеров приближений в (8.3.2) и задание нулевого приближения. Например,
Cx^-Bx^Ud, ^=0, 1, 2, ... ,(8.3.3)
где х(0)—заданный вектор x(0)=(xi0), ..., х^0)).
Третьим шагом итерационного метода является обоснование сходимости последовательных приближений {х(к)}, полученных из (8.3.3), к точному решению х системы (8.3.1) и оценка погрешности ^-го приближения
||х(к)-хК£.(8.3.4)
Оценка (8.3.4) при заданном 8 позволяет остановить итерационный процесс (8.3.3).<
Различные итерационные методыотличаются первыми двумя|
шагами, а выбор конкретного метода должен производиться на | основании оценки (8.3.4).|
Метод простой итерации. В методе простой итерации матрица С (8.3.2) выбирается единичной:
С=Е.
Итерационный процесс описывается формулой
x»*^=Bx»4d, к=0, 1, ... ,(8.3.5)
где х<°>—заданный вектор. В координатной записи (8.3.5) имеет вид
xVv>=b1Ax^ A- ..AbliKx^ -Vdvх^+°=Ь2дх^ +.+Ь2-Ях^+d2,
х**п = ^дхУЧ...+6И1И4*’+^-
Теорема 8.6. Для сходимости последовательных приближений {х(к)} (8.3.5) к точному решению х системы уравнений
x = Bx-Vd(8.3.6)
достаточно, чтобы
II В || <1.(8.3.7)
Доказательство. Пусть х(0)—произвольный вектор. Из (8.3.5) находим
x^ = Bx^-Vd,
х^ = Bx^4d=B ^Bxw + d) + d= В^х^+Bd^r d, x^-Bx^Hd-B^x^BdA-d^d-B^H^B^BA-E^d. (8.3.8)
x^^^B^^x^^B^B^^.^EV*
Покажем, что последовательность {x(k)} имеет предел, если выполнено условие (8.3.7). Действительно, в правой части (8.3.8) первое слагаемое имеет своим пределом нулевой вектор, поскольку
Il2?k+V°>K||^
Второе слагаемое в (8.3.8) имеет предел, если сходится матричный
ряд £ В1. Но из (8.3.7) следует, что собственные числа матрицы 1=0
В удовлетворяют неравенству (см. теорему 5.2) |X(S)|<1. Тогда из теоремы 5.1 последует сходимость матричного ряда к сумме— матрице
(5-5)-!= 5 В1.
i = 0
Переходя в (8.3.8) к пределу при к^ш, получаем хЦЕ-ВуЧ
а это есть решение (8.3.6), что и требовалось доказать.
11*
Для иллюстрации итерационного процесса рассмотрим систему уравнений
xt =0,1%! —0,2x2 +1,
х2 = 0,05^! + 0,1 х2 — 1.
Здесь
11^11 = max X 1^1 = 0,3<1.
Uz42j = i
Итерационный процесс
х^ + 1) = 0Дх^-0МЧ\,
’ x£+1) = 0^5x(ik)W4k)-l
с начальным вектором x(iO) = 0, х^О) = 0 дает следующие приближения: х^-1,0; 3 Xi2) = 0,l • 1,0-0,2 (-1, 0)+1,0 = 1,3;^3) =
х^-1,0; х^2) = 0,05 • 1,0+1,0(—1, 0)—1,0= —1,05; х^ = ... .
Оценим число арифметических операций, выполняемых за один шаг итерационного процесса. Запишем (8.3.5) на фортране, используя следующие обозначения: вектор x(k+1)^Xl (I), ^D(I), x(k)->X(I), матрица B^B(I,J), К I, J^N. Имеем
DO 2 1=1,N
S = 0.
DO 1 J=1,N
1 S = S + B(I,J)*X(J) 2X(I) = S + D(I)
Таким образом, при w->oo число арифметических операций О(п2у Если заданная точность вычислений 8 достигается за К итераций, то общее число операций О ^Кп2у Сравнивая с вычислительными затратами метода исключения О (и3), можно сделать вывод, что при больших и метод простой итерации будет менее трудоемким.
Слабым местом метода простой итерации, да и других итерационных методов, является отсутствие единого практического подхода к поиску преобразования (8.3.1) в систему (8.3.6), чтобы выполнялось условие сходимости (8.3.7) для любых невырожденных матриц А, хотя для некоторых частных видов А такое преобразование и можно указать, например для матриц А с преобладанием диагональных элементов
7=1
Каждое из уравнений системы (8.3.1)
aiAxY"V — ■^аихп = Ьь X^i^n,aiAxY"V — ■^аихп = Ьь X^i^n,разделим на aLi и перенесем члены с х1? х2, ..., х^^ xi+v ..., хп в правую часть. Получимразделим на aLi и перенесем члены с х1? х2, ..., х^^ xi+v ..., хп в правую часть. Получим
aiAxY"V — ■^аихп = Ьь X^i^n,
aiAxY"V — ■^аихп = Ьь X^i^n,
разделим на aLi и перенесем члены с х1? х2, ..., х^^ xi+v ..., хп в правую часть. Получим
разделим на aLi и перенесем члены с х1? х2, ..., х^^ xi+v ..., хп в правую часть. Получим
Нетрудно проверить, что матрица правой части В имеет норму меньше 1. В обозначениях
Ьи=——, i^b Ьц = 0; dv=— а1Л’аи
итерационный процесс (8.3.5) сходится.
Оценка погрешности метода простой итерации. Возьмем в качестве вектора х(0) нулевой вектор.
Теорема 8.7. Пусть ||Л||<1. Тогда имеет место неравенство
И^'-*Нт^ЙИ|’ к^Х’ (8319)
где х^—к-е приближение, полученное из (8.3.5), х—точное решение (8.3.6).
Доказательство. Приближение xw „определяется из (8.3.8) x(k) = (5k-l+5k-2++£^
Точное решение:
х=(5*-1+^-2++£)^+(^+^
Вычитая из первого равенства второе и оценивая нормы, получим
II х(*)_х 11 = 11 вЧлк+1 + ^^^^^(8.3.10)
Сумма (|| В ||к +1| В ||к + 1 + ...)—это сумма бесконечной геометрической прогрессии со знаменателем ||5||; она равна
||S||k/(l-||S||).
Отсюда и из (8.3.10) следует (8.3.9), что и требовалось доказать.
Оценка (8.3.9) называется априорной оценкой погрешности, так как, не проводя вычислений, по || В || и || d || можно оценить погрешность А:-го приближения х^, а по заданной точности е легко определяется необходимое число итераций. Действительно,
||S||* ||d|-e(l-|| Л||),
Теорема 8.8. Пусть ||Л||<1. Тогда имеет место неравенство ii^-^r^ii^’-^-1’1!-(83Л1)
Доказательство. Заметим, что
х^-х=В^к"^-х\(8.3.12)
Прибавим к левой и правой части этого равенства х(к-1) и перепишем его следующим образом:
х^к-^-х = х^-^-х^кЧВ^к-^-х\
Приравняв нормы левой и правой части и воспользовавшись неравенством треугольника, получим
II х^-х II II х(к"^-xw II + II ВII II х(к"||.
Отсюда следует неравенство
||х(к п —х||^||х(к п —х||^||xw_x(fc Пц1-11^11||xw_x(fc Пц1-11^11
||х(к п —х||^
||х(к п —х||^
||xw_x(fc Пц1-11^11
||xw_x(fc Пц1-11^11
Из (8.3.12) имеем
||x(fc)-xHH|| Ц^-^-хЦ.
Последние два неравенства дают оценку (8.3.11), что и требовалось доказать.
Оценка (8.3.11) называется апостериорной оценкой погрешности. так как ее получают по известной || В || и вычисленным приближениям х^-^'и х(к\ Целесообразно получать как априорную, так и апостериорй^ю оценку погрешности, поскольку их сравнение дает возможность оценить вычислительную погрешность итерационного процесса.
Метод Зейделя. Отличие метода Зейделя от простой итерации состоит лишь в том, что при вычислении (&+1)-го приближения полученные х(к+1) компоненты вектора х(*+1) сразу же используются в вычислениях. В координатной записи итерационный процесс Зейделя имеет вид
x^^b^x^-bb^x^+.-.-bb^w^ x^+u=b2Ax^+14b2^4...+b2-nx*+d2,
^ + п = ЬпЛх^ + п + йи<2х?+ п +... + Ьппх^ + dn,
начальный вектор х(0) = (х^0), ..., Хи0)) задается; к=0, 1, 2, ... . В матричной записи (8.3.13) можно представить так:
х^=их^чьх^-^
где матрицы U, L получены разложением В в сумму:
В=1НЦ
матрица U—верхняя треугольная часть В, включая диагональ; L—нижняя поддиагональная часть В;
"ОО"
^1,1 ••• ^1л \\ : b L = , О Ьп,п)^1,1 ••• ^1л \\ : b L = , О Ьп,п)Ь2Л оо
^1,1 ••• ^1л \
\ : b L = , О Ьп,п)
^1,1 ••• ^1л \
\ : b L = , О Ьп,п)
Таким образом, метод Зейделя можно записать в форме (8.3.3), I если принять С=(E—L), B=U. Имеем\
^E-LV^^=Ux^4d, ^ = 0, 1,2, ... .(8.3.14)|
Заметим, что построение матрицы, обратной ^Е—Еу\ не представ- ( ляет труда, так как это нижняя треугольная матрица.|
Теорема 8.9. Пусть выполнено неравенство iKE-L)"1^!;(8.3.15)
тогда последовательные приближения {х(к)}, полученные из (8.3.14), сходятся к точному решению системы
x = Bx-Vd при любом начальном векторе х(0).
Доказательство. Заметим, что метод Зейделя (8.3.14) — это метод простой итерации для системы
хЦЕ-Ly1 Ux^E-Ly1 d, которая эквивалентна исходной x = Bx-Vd. Обозначая ^E—LyYU= =BV, ^E—Lyv d=dv запишем (8.3.14) следующим образом:
Теперь утверждение теоремы следует из теоремы 8.6.
Заметим, что оценка погрешности А>го приближения метода Зейделя в случае выполнения (8.3.15) вытекает из (8.3.9), (8.3.11) при условии замены В на By.
xW~x 11 ^тН^Г 11 х^"х 1111 xW-x<*"n I'-
Выше приводились достаточные условия сходимости последовательных приближений (||Е||<1, || ^t || < 1). Заметим, что области сходимости метода простой итерации и Зейделя лишь пересекаются: существуют матрицы В, для которых метод Зейделя сходится, а метод простой итерации расходится, и наоборот.
Для иллюстрации итерационного процесса Зейделя рассмотрим систему
(х1=0Дх1—0Дх2 +1, (х2 = 0,5х1Н-0,1х2 —1. Здесь в=и^ц
_ /0,1— 0,2\/0,1 — 0,2\ т0\
В = II U = IL=l
\0,050,1/\00,1/\0,05 о/
E-L=( 1°), ^Е-ЕГ = Р °\
0,05 1/ ''^0,05 1/
(Е-ЬУ1 С/=(0,1-°’2 X IIS, ||=0,3<1.
''\0,0050,09/ " 111’
Итерационный процесс
4*+1, = 0,1^> -0,2x^+1, х*Уп = 0,05х^+ 1Ч0Дх^-1
с начальным вектором х^О) = 0, х^О) = 0 дает следующие приближения: xV} = 1,00; хР = 1,2900; 43) =...
х^=_095; х^)=_10305. ^з)==
• 8.4. Вычисление собственных значенийи векторов
Введение. Большинство алгоритмов определения собственных значений и векторов матрицы А основаны на приведении А с помощью невырожденных преобразований к такой матрице А*, для которой проблема собственных значений является простой. Например, есШ А—вещественная матрица с различными вещественными собственными значениями Х15 ..., Х„, то матрица преобразования 7, которая приводит А к диагональному виду, полностью решает проблему. Действительно,
Столбцы матрицы Т образуют полную систему собственных векторов матрицы А, а диагональные элементы А* суть собственные значения А.
Чтобы» определить собственные значения матрицы (при тех же предположениях относительно Х;), не обязательно приводить ее к диагональному виду. Достаточно привести ее к треугольному виду, поскольку на диагонали будут расположены собственные значения матрицы А:
^1,1
оо= T"VAT.
о
о
®п,п
Действительно, характеристическое уравнение А* det(/T-X£)=0 представляется в форме
И,1-Х)(а’2,2-Х)«„-Х)=0,
откуда следует, что собственные значения А* ЦА^{а\л, а^2, at,n}.
Остается показать, что Х(Л) = Х(Л*). Это вытекает из равенств det (А * — ХЕ) = det (7"1А Т- ХЕ) = det (7"1 (А - ХЕ) 7) = = det 7"1 det (А - ХЕ) det 7= det (А - ХЕ).
Определение собственных векторов е* треугольной матрицы А* является простой задачей, так как она эквивалентна решению 328
оо«п,п-1«п,п«п,п-1«п,п
о
о
«п,п-1«п,п
«п,п-1«п,п
системы однородных уравнений А*е1 = а*деь 1^/<и, с треугольной матрицей и каким-либо дополнительным условием, однозначно выделяющим собственные векторы, например ец = 1, 1^1 ^п. Зная собственные векторы матрицы А*, можно получить собственные векторы А с помощью матрицы преобразования Т
е^Те*,
поскольку из равенства
Т-1АТе* = а*де*
следует соотношение
Л^^^ДТ^).
Заметим, что вещественная матрица, если она имеет комплексные собственные значения, не может быть приведена к треугольной матрице А* с помощью вещественного преобразования. Матрицей, к которой можно привести любую матрицу А с помощью вещественного и даже ортогонального преобразования, является почти треугольная матрица Л*:
«1,1«м
(8.4.1)(8.4.1)«*2,1 «2,п
(8.4.1)
(8.4.1)
В задаче определения собственных значений и собственных векторов первым шагом является приведение матрицы А к форме (8.4.1). Эту процедуру целесообразно выполнить для того, чтобы дальнейшие вычисления вести с ненулевыми элементами Л*, которых при больших п почти вдвое меньше, чем у исходной матрицы А. Для симметричных матриц А форма (8.4.1) принимает вид '«1,1«1,2у
А*= а^ауаЪ . .(842)
*«п-1,п
О «п,п—1 «П,П
А* называется трехдиагональной матрицей*, для нее at j=0, если IHI>L
Приведение матрицы к почти треугольному виду. Приведение матрицы А к виду (8.4.1) будем осуществлять с помощью ортогональных преобразований Т, которые, как известно, сохраняют длину векторов, т. е.
II Тх II2= II X II г или ^Тх, Тх^Цх, х\
Напомним, что матрица ортогонального преобразования Т обладает свойством
Т'^Г,
Рис. 8.9Рис. 8.9
Рис. 8.9
Рис. 8.9
где Т—транспонированная к Т матрица; кроме тоге, произведение
ортогональных матриц есть ортогональная матрица.В качестве Матриц Т будем рассматривать матрицы отражения. Матрица отражения Г, порожденная вектором d^d^ d2, ..., d^, определяется формулойортогональных матриц есть ортогональная матрица.В качестве Матриц Т будем рассматривать матрицы отражения. Матрица отражения Г, порожденная вектором d^d^ d2, ..., d^, определяется формулойT=E-2dd' =T=E-2dd' =О' 1О' 1'dtd^dy'dtd^dydndYdndYdxd2 ... dYdndi ... d2dndAdf \dxd2 ... dYdndi ... d2dndAdf \
ортогональных матриц есть ортогональная матрица.
В качестве Матриц Т будем рассматривать матрицы отражения. Матрица отражения Г, порожденная вектором d^d^ d2, ..., d^, определяется формулой
ортогональных матриц есть ортогональная матрица.
В качестве Матриц Т будем рассматривать матрицы отражения. Матрица отражения Г, порожденная вектором d^d^ d2, ..., d^, определяется формулой
T=E-2dd' =
T=E-2dd' =
О' 1
О' 1
'dtd^dy
'dtd^dy
dndY
dndY
dxd2 ... dYdn
di ... d2dn
dAdf \
dxd2 ... dYdn
di ... d2dn
dAdf \
где ||</||2 = 1.
Геометрически матрица T задает отражение вектора х относительно плоскости с единичным нормальным вектором d (рис. 8.8).
Заметим, что матрица Т симметрична, ортогональна: Td=—d; если вектор х ортогонален d, то Тх=х.
Построим элементарное отражение Т, которое переводит заданный вектор а = ^1? а2, ..., а^ в Вектор, коллинеарный вектору /1=(1, 0, ..., 0). Таких отражений два (соответствуют ниже знакам ±) (рис. 8.9):
7^=111^112^.
Вектор d, порождающий искомое отражение, задается формулами
</=с(й1 + ||а||2, а2, ..., а^,(8.4.4)
где константа с определяется из условия
И12 = 1.И12 = 1.(8.4.5)
И12 = 1.
И12 = 1.
Объединяя (8.4.4), (8.4.5) и (8.4.3), получим искомое отражение Т.
Для однозначного приведения вещественной матрицы А к виду (8.4.1) обычно используют дополнительное требование, состоящее в том, чтобы значения поддиагонали в (8.4.1) были одного знака, например
^ti-i^O, 2^i^n.(8.4.6)
Это условие выделяет определенный знак в (8.4.4) и единственное элементарное отражение.
Алгоритм приведения к почти треугольной матрице следующий.
1-й шаг. Определим матрицу и-го порядка:
0 \
1 \0 TJ
\
3304 .
где Т! — матрица (и — 1 )-го порядка — отражение, переводящее вектор
/^2л \
в вектор, коллинеарный ^ = (1, 0, ..., 0). Матрица
Л* = 51Л51"1 = 51Л51
имеет вид
А*=
* * 0 0
* *
* *
* * * *
- * * * *
* * * *
, «2,1 >0,
.0
*
*
*
*
где знаком
* обозначены
элементы,
которые могут отличаться
от нуля.
2-й шаг.
Определим матрицу л-го порядка:
/10 0
^2=1 0 1 0
\о о т2
где Т2— матрица (и — 2)-го порядка — отражение, переводящее
вектор
в вектор, коллинеарный lY = (1, 0, ... 0). Матрица
A* = S2S1AS1S2
имеет вид
* * * * * * 0 * * 0 0*
****о о *
**
**
Продолжая этот процесс,Продолжая этот процесс,после и —2 шагов получимпосле и —2 шагов получим
Продолжая этот процесс,
Продолжая этот процесс,
после и —2 шагов получим
после и —2 шагов получим
A‘=s„_2 ... SVASV ... S„_2, где А*—матрица (8.4.1), для которой выполняются неравенства (8.4.6).
Если на каком-либо шаге i получился нулевой вектор, для которого строится отражение, то полагают S( = E. Окончательно ортогональное преобразование Т матрицы А к почти треугольному виду определяется произведением ортогональных матриц S^:
T—Sn_2 ... SP
Если матрица А симметрична, то промежуточные матрицы и конечная оказываются также симметричными; следовательно, почти треугольная форма таких матриц является трехдиагональной (8.4.2).
Разложение матрицы в произведение ортогональной и треугольной матриц. Будем считать, что матрица А приведена к почти треугольному виду (8.4.1). Найдем разложение матрицы А в произведение:
A = QR, ^ДЛ)
где Q — ортогональная матрица, 7?—верхняя треугольная матрица:
*
*>
Определим матрицу элементарного вращения:‘ .i
ri0 1
р_sin0fcos0f I.
i —— cos0fsin0f
О1
1J
Можно проверить, что РьМожно проверить, что Рь1 + I ^ и — 1, — ортогональные матрицы.
Можно проверить, что Рь
Можно проверить, что Рь
Умножая матрицу А вида (8.4.1) на матрицу Рх, получим
81110^080!— cosO^n^1О81110^080!— cosO^n^1ООО«1,1 -«1,1«2,1 ••' «2,п«1,1 -«1,1«2,1 ••' «2,п11о^щп- l«lо^щп- l«l
81110^080!
— cosO^n^
1
О
81110^080!
— cosO^n^
1
О
О
О
«1,1 -«1,1
«2,1 ••' «2,п
«1,1 -«1,1
«2,1 ••' «2,п
1
1
о
^щп- l«l
о
^щп- l«l
«^^тО^Пзд со80х«^^тО^Пзд со80х«1>л sinO^^n cos0«1>л sinO^^n cos0
«^^тО^Пзд со80х
«^^тО^Пзд со80х
«1>л sinO^^n cos0
«1>л sinO^^n cos0
— «1Д cos0t+ti2,i sin01 ... — «1>ncos01+«2,nsin01
а3,па3,п«3,2
а3,п
а3,п
«п.п-1 «я,яv
Выберем угол 0j таким, чтобы поддиагональный элемент в первом столбце обратился в нуль:
—ахд cos0! +«2,1 sin^i = 0, 01 = arctg ^а1Л1а2ЛУ
В результате умножения матрицы А на Рх. Ръ . ., Рп~х и соответствующего выбора углов вращения 0/ все поддиагональные элементы матрицы А можно обратить в нуль. Таким образом, получим
(8.4.8)(8.4.8)2 ... PXA = R.
(8.4.8)
(8.4.8)
332
где R—треугольная матрица. Из (8.4.8) имеем A = QR, Q = P\PV.. Р'п-ь
т. е. (8.4.7). Матрица Q — ортогональная как произведение ортогональных матриц.
Q/t-алгоритм определения собственных значений и векторов. Пусть матрица А приведена к почти треугольному виду (8.4.1). Если бы поддиагональ в (8.4.1) обладала свойством aVt-ia*^!^^, 2^i^n — 1,
А\,п АЬА\,п АЬт. е. в матрице А отсутствовали бы соседние ненулевые поддиагональные элементы, то матрица А имела бы блочно-треугольную форму
А\,п АЬ
А\,п АЬ
(8.4.9)(8.4.9)А*=0Л*2’2
(8.4.9)
(8.4.9)
А^п)1 или 2. Блоки второгоА^п)1 или 2. Блоки второго00
А^п)
1 или 2. Блоки второго
А^п)
1 или 2. Блоки второго
Здесь А*д—квадратные блоки пор:
порядка соответствуют ненулевым элементам поддиагонали. Так как А* и А имеют одни и те же собственные значения, то блоки Ац первого порядка—это собственные значения А. Собственные значения блоков А*д второго порядка—это также собственные значения А, но среди них могут быть комплексные числа.
Таким образом, приведение матрицы А к форме (8.4.9) полностью решает проблему собственных значений. Собственные векторы после приведения к (8.4.9) также легко определяются.
Однако для матрицы А, вообще говоря, не существует конечного вычислительного процесса над ее элементами, приводящего А к форме (8.4.9). Рассматриваемый здесь б-К-алгоритм дает последовательность матриц А(к) почти треугольного вида (8.4.1) таких, что
lim а\к1-1а^1Д = 0. к—>оо
Когда сходящиеся к нулю подциагональные элементы матриц А^ будут иметь величину меньше заданной точности, 5 7?-алгоритм завершается.
Каждый шаг Q R алгоритма состоит в переходе от матрицы А(к) к матрице Л(к+1), k = 0, 1, ..., А^ = А по следующему правилу.
Матрица А№ разлагается в произведение ортогональной и треугольной матриц
AW=Q^RW(8.4.10)
по схеме (8.4.3).
Матрица Л(к+1) определяется перестановкой сомножителей в (8.4.10): ~
А^ = Р^(/к\ k = Q9 1? 2? ...(8.4.11)
Из (8.4.10) определим
ОтсюдаОтсюда
Отсюда
Отсюда
^ (к + 1) = (g (к)) - 1 ^ WQ (к).
Обозначим р<к) = 2<0) ... gw. Тогда 2А-алгоритм можно записать в форме
^4 (* +1) _ ^р'^ - ^АР^
Это соотношение указывает, что собственные значения матриц Aw и А совпадают.
Сформулируем утверждение о сходимости QR алгоритма.
Теорема 8il0. Пусть матрица А невырождена, имеет различные собственные значения Xf, l^z^n, модули |Х(| которых, за исключением комплексно-сопряженных, также различны и упорядочены в порядке, невозрастания, тогда при к-юо
а^-1аП1л = О
Применение библиотечных программ. Рассмотрим следую
щую задачу: определить собственные значения матрицы.
/1 2 3\
Л= 245.;
*\3 5 6/$
Матрица А—симметричная, поэтому для решения поставленной |
задачи применяется программа B0A0:|
REAL A(3,3),G(3),W(3)j
INTEGER K,N,I1
DATA A/l.,2.,3.,2.,4.,5.,3.,5.,6./I
DATA K,N,I/3,3,0/|
СОБРАЩЕНИЕ К ПРОГРАММЕ B0A0S
CALL B0A0(A,K,N,G,W,I)?
СВЫВОД НА ТЕРМИНАЛi
WRITE (5,1) G
1FORMAT (2X,3E13.6)1
ENDj
Рассмотрим задачу определения собственных значений и собст- | венныхвекторовматрицы А:I
(\ 2 3\
Д = 456.4
\7 8 9/j
IIДляеерешенияприменим программуВОАЗ:|
I
I
ЗНАЧЕНИЙВЕКТОРОВЗНАЧЕНИЙВЕКТОРОВREAL А(3,3), G1 (3), G2(3), XI (3,3), Х2(3,3)
ЗНАЧЕНИЙ
ВЕКТОРОВ
ЗНАЧЕНИЙ
ВЕКТОРОВ
INTEGER K,N,L1,L2,J(3),I
DATA A/l.,4.,7.,2.,5.,8.,3.,6.,9./
DATA К,N,LI,L2,1/3,3,3,3,0/
сс1 с2сс1 с2ОБРАЩЕНИЕ К ПРОГРАММЕ B0A3
с
с
1 с
2
с
с
1 с
2
CALL ВОА3(А, К, N, G1, G2, X1, L1, Х2, L2, J, I) ВЫВОД НА ТЕРМИНАЛ СОБСТВЕННЫХ WRITE (5,1) (G(I),G2(I),I = 1,3)
FORMAT (2X,'RE',E13.6,2X,'IM',E13.6)
ВЫВОД НА ТЕРМИНАЛ СОБСТВЕННЫХ WRITE (5,2) ((X(J,I),X2(J,I),J= 1,3)1= 1,3) FORMAT (2Х,Е13.6,2Х,Е13.6)
END
• 8.5. Линейная оптимизация
Рассмотрим задачи, которые в математической литературе обычно называют линейным программированием. Термин «линейное программирование» появился до широкого использования ЭВМ и в этой книге не употребляется из-за его несоответствия современному пониманию смысла программирования.
Постановка канонической задачи. Каноническая задача линейной оптимизации формулируется следующим образом: найти вектор х = (х19 ..., хп^ доставляющий
(8.5.1)(8.5.2)(8.5.3)(8.5.1)(8.5.2)(8.5.3)пйпФ(х) = С1Х1+С2Х2+ ••• "^спхп при условиях «1,1^1+^1>2х24-... + а1.пхй = 61, «2,1^1 + Л2,2*2+-‘-+«2,Л = ^2>
(8.5.1)
(8.5.2)
(8.5.3)
(8.5.1)
(8.5.2)
(8.5.3)
^т,1 Х1 ~^~^т,2Х2 "+" ~Х~^т,пХп ^т?
^>0, X^i^n, bj^O, X^j^m.
Задача (8.5.1) — (8.5.3) сокращенно записывается в матрично-векторной форме так:
min(c, х),
Ах=Ь,(8.5.4)
х>0, 6>0,
где вещественные матрица А = ^а1з\ векторы с^ b^ X^i^n, X^j^m, заданы; строки матрицы А линейно независимы, откуда, в частности, следует т^п. Неотрицательность элементов вектора b легко получить, умножив, если это необходимо, соответствующие неравенства в (8.5.2) на — 1.
В общей постановке задача линейной оптимизации может не иметь каноническую форму. Однако, как будет показано ниже, введением дополнительных переменных в вектор х каждая задача сводится к канонической.
Функция Ф(х) называется целевой функцией задачи, система (8.5.2), (8.5.3) — системой ограничений.
В общей постановке задачи линейной оптимизации, возможно, ищется максимум целевой функции шахФ(х). Тогда замена целевой функции на — Ф(х) сводит исходную задачу к минимизации тт( — Ф(х)). Кроме того, в соотношениях типа (8.5.2) могут присутствовать неравенства, например условие
aYxv^a2x2-V ...^ranxn ^b
или
а1х14-а2х2Л-... +апхп ^Ь.
Тогда каждое йеравенство можно заменить двумя соотношениями вида
;а^ -Va2x2 + ... +апхп+хп+ х = b,
Хи+1 ^>
или
аххх + л2х2 +... 4-anxtt-xn+2 = b,
*п+2 ^0;
целевую функцию—записать в форме
Ф(х) = сг + ... + Спхп + 0х„ + i + 0х„+2
и таким образом привести общую задачу линейной оптимизации к каноническому виду.
Примерызадач линейной оптимизации. Следующая задача об определении максимальной прибыли производства является типичной задачей линейной оптимизации. Пусть для изготовления п видов продукции в количестве х1? х2, ..., хп расходуется т видов сырья. Расход сырья z-го вида на единицу у-го вида продукции равен а^, запас сырья z-го вида ограничен величиной bt. Каждая единица продукции z-го вида дает прибыль ct руб. Задача поиска вектора х = (х1? ..., хп)—количества продукции каждого вида, дающего максимальную прибыль,—принимает следующую форму: найти х, доставляющий
шахФ(х) = с1х1Ч-с2х2Ч-... +с„х„
при ограничениях
£ ai»jxJ^i, X^i^m,
j=i
x^Q, X^i^n.
Таким образом получили задачу линейной оптимизации, которая введением дополнительных переменных легко приводится к канонической форме.
Второй пример линейной оптимизации дает так называемая транспортная задача. Пусть в z-м пункте, X^i^m, отправления
336
имеется dt количество груза, в у-м пункте, X^j^n, назначения требуется bj количество этого груза. Пусть см—стоимость перевозки единицы груза из /-го в у-й пункт. Предположим, что
£ 4= £ bj, „i=l
т. е. весь груз должен быть вывезен на пункты назначения.
Транспортная задача состоит в поиске х=хи, X^i^m, X^j^n, доставляющего
пйпФ(х)= ^” сих,а
i.J=l
(минимизация транспортных расходов) при естественных условиях
£ 4j=db
£ x,j=bj, i=l
Xt j;^0.
Размерность неизвестного вектора x в транспортной задаче равна тп. Нетрудно заметить, что получается каноническая форма задачи линейной оптимизации.
Геометрическая интерпретация. Рассмотрим каноническую задачу линейной оптимизации на плоскости: найти
пнпФ(х)=(с1х1+с2х2)
при ограничениях
У^дХ|Н~Д| 2^2=^1> а2лх^гамх2 = Ь2, хх >0, х2>0.
Заметим, что линейная функция Ф(х)=с1х1+с2х2 на плоскости задает семейство прямых (рис. 8.10) уравнением
Ф(х)=р.
Неравенства х^О, х2>0 выделяют I квадрант плоскости ^хх, х2) (рис. 8.10).
Рис. 8.10
Ограничения,) в форме равенств могут быть следующего вида: 1) отсутствуют;
одно ограничение;
два ограничения.
Предположенйе о линейной независимости строк матрицы А эквивалентно в случае двух ограничений существованию единственного, решения системы уравнений
Ах=Ь.
Обозначим решение х = (х1? х2). Если выполняются неравенства х^О, х2^0, то это и есть решение задачи линейной оптимизации, а оптимальное значение равно
Ф(х) = с1х1 + с2х2.
Если выполняются неравенства xt <0 или х2<0, то задача неразрешима (рис. 8.11). Заметим, что два линейно независимых ограничения типа равенства (в многомерном случае т=п) приводят к тому, что исходная задача оказывается неоптимизационной. Ограничения однозначно определяют единственное решение х, а целевая функция Ф(х) принимает «навязанное» ей значение Ф(х).
В рлучае одного ограничения типа равенства, описывающего множество точек на прямой
Д| Х^ Н~ ^2 Х2 = ^5
возможны следующие варианты пересечения этой прямой с осями координат I квадранта (рис. 8.12):
прямая отсекает два отрезка;
прямая отсекает один отрезок;
прямая не пересекается с осями.
Если прямая не пересекается с осями координат I квадранта, то задача неразрешима.
Если прямая отсекает один отрезок, то возможны три варианта. Проекция вектора градиента целевой функции gradФ(x)=(c1, с2): \ 4 X
Рис. 8.12
направлена внутрь квадранта;
направлена вне квадранта;
равна нулю.
Так как вектор градиента направлен в сторону возрастания Ф(х), то нетрудно понять, что в случае 2) целевая функция Ф(х) не ограничена снизу; вдоль прямой а1х1+а2х2=6 значения Ф(х) убывают и Ф(х) — оо (рис. 8.13). В случае 3) вектор (q, q) коллинеарен вектору (q, q). Следовательно, для того чтобы выполнялось ограничение, необходимо совпадение прямых Ф(х)=р и а1х1Л-а2х2 = Ь. Отсюда получаем: оптимальными являются все точки пересечения прямой ограничения с прямой Ф(х)=р, лежащие внутри I квадранта (рис. 8.13). В случае 1), поскольку вектор gradФ(x) направлен в сторону врзрастания Ф(х), целевая функция Ф(х) достигает минимального значения, когда прямая Ф(х)=^ проходит через точку х пересечения прямой ограничений с осью координат I квадранта (рис. 8.13). Следовательно, оптимальной является единственная точка х.
Если прямая а1х14-а2х2 = Ь отсекает два отрезка на осях координат I квадранта, то в зависимости от направления проекции градиента на эту прямую возможны (рис. 8.14) три варианта: 1) Проекция направлена в сторону точки пересечения с осью Ох2; тогда оптимальная точка — точка пересечения с осью Охг. 2) Проекция направлена в сторону точки пересечения с осью Охг; тогда оптимальная точка—это точка пересечения с осью Ох2. 3) Проекция равна нулю; следовательно, прямая Ф(х)=р должна совпадать
Рис. 8.13
Рис. 8.14
с прямой ограничения, отсюда оптимальными являются все точки прямой ограничений, лежащие внутри I квадранта (рис. 8.14).
Наконец, если ограничения в форме равенств отсутствуют, то возможны (рис. 8.15) следующие оптимальные решения в зависимости от направления вектора gradФ(x):
1) единственная оптимальная точка xt=0, х2 = 0;
2), 3) бесконечное множество оптимальных точек (оси координат);
целевая функция в I квадранте не ограничена снизу.
Результатом геометрических рассмотрений задачи линейной оптимизации на плоскости являются следующие выводы, которые справедливы и в многомерной задаче.
Линейная целевая функция Ф(х) может достигать единственного минимума в точке х только на границе области х^О (рис. 8.13, 7); функция не достигает минимума (рис. 8.13, 2; 8.15,4), а значит, задача линейной оптимизации неразрешима. Наконец, возможна ситуация наличия бесконечного множества решений (рис. 8.13, 3; 8.14, 3; 8.15, 2, 3).
Мы не будем рассматривать неразрешимые задачи, поскольку в этом случае следует обратиться к технической постановке проблемы, а также задачи с бесконечным множеством решений, так как они неустойчивы. Возмущение коэффициентов с( целевой функции Ф(х) приводит такую задачу либо к единственной точке минимума, либо к неразрешимой задаче.
Симплекс-метод. Допустимым решением задачи (8.5.1)— (8.5.3) назовем вектор x=(x1? ..., хп^ удовлетворяющий ограничениям (8.5.2), (8.5.3). Допустимое решение, минимизирующее Ф(х), является оптимальным. Напомним, что ранг матрицы А равен т.
Предположим, что решение задачи существует и единственно. Тогда оптимальное решение может быть получено из каких-то п—т уравнений (8.5.2) и каких-то п—т равенств
хк = 0, Х^к^п.
Но каких именно, неизвестно. Симплекс-метод представляет собой алгоритм решения этого вопроса.
1-й шаг: выбор базисного решения. Выберем п—т свободных неизвестных в (8.5.2), а остальные т переменных (базисные) выразим через них. Пусть отличный от нуля минор /я-го порядка расположен в левом верхнем углу матрицы А. Тогда из (8.5.2) можно найти
(8.5.5)(8.5.5)*1 +“l,m+ l*m + 1 + - + °V„= Pi >^2+a2.m+l^m+l+-+a2,„^„ = P2,
(8.5.5)
(8.5.5)
%т “Ь ^m,m+ 1 ^т + 1 +.••• “Ь ^т,п^п Pm*
Предположим, что
(8.5.6)
Подставляя (8.5.5) в (8.5.1), получим
Ф(^т + 1 > ^n) Ym+ 1 ^т + 1 “И ••• “И Уп^п “Ь^О? (8.5.7) где константы yf, Фо вычисляются по сь сц^ рр Условие (8.5.6) позволяет принять вектор х с компонентами
в качестве допустимого базисного решения..
Выбор таких базисных переменных, чтобы выполнялось условие (8.5.6), нетривиален. Соответствующая процедура описана ниже. Если в (8.5.7) все yt>0, m-^X^i^n, то (8.5.8)—единственное оптимальное решение, оптимальное значение Ф = Ф0.
Пусть среди коэффициентов yz есть отрицательные числа, у7 минимальное из них. Тогда выполняется второй шаг.
2-й шаг: замена допустимого базисного решения (8.5.8) новым с уменьшением целевой функции.
Рассмотрим числа
Выберем из них положительные, а среди положительных—наибольшее. Пусть это число
(8.5.9)
Новое базисное решение определяется формулой (8.5.9) (хл вводится в базисные переменные) следующими соотношениями:
Pi —ocj.jXj >0, X^i^m, 0 m-vX^i^n, i^J.
Заметим, что *,=0 (xj выводится из базисных переменных). Целевая функция на этом решении равна
Ф = Фо + ?/— <Фо
и в силу выбора J, I ее значение на новом базисном решении меньше, чем на старом.
Вводя в (8.5.5) строку
получаем каноническую форму задач^7относительно новых базисных переменных.
Повторяем второй шаг до тех пор, пока все коэффициенты при свободных неизвестных в целевой функции не примут положительные значения.
Первый шаг симплекс-метода. Симплекс-метод, как указывалось выше, предполагает на первом шаге выбор базисных переменных хг, ..., хт таким образом, чтобы выполнялись условия (8.5.6). Для такого выбора можно вводить дополнительные переменные. Этот подход позволяет установить существование допустимых решений. Однако для его реализации требуется решать еще одну задачу линейной оптимизации тем же симплекс-методом.
Рассмотрим исходную задачу (8.5.1)—(8.5.3). Для нее построим вспомогательную задачу: найти
minx|/(^+1, ..., хл+т)=хя+1+хя+2 + ...+хя+тдля неизвестного вектора х с т дополнительными переменнымихЦх1; ..., х„, х„+1, ..., хя+т)
и условиями
Л1Д*1+Л1,2*2+-+Л1,и*и + ^+1=^^а2,1Х1^а2,2Х2^ - +«2,и^и + ^ + 2=^2?
^т, 1Х1 “^ ^т,2Х2 ++ ^т,пХп “^Хп + т ^т>
xf >0, X^i^n-Vm.
Принимая xt, х2, ..., хп за свободные переменные, а х„+1, хп+2, ..., хп+т—за базисные, получаем базисное допустимое решение вспомогательной задачи:
x„+s = bs^0, X^s^m, Х; = 0, X^i^n.
Затем, применяя последовательно второй шаг симплекс-метода, находим оптимальное решение вспомогательной задачи. Если это решение таково, что оптимальное значение ф = 0, то оно определяет \
допустимое решение исходной задачи; если ф>0, то исходная задача не имеет допустимых решений.
Применение программы В1А0. Решим задачу линейной оптимизации
шахФ(х) = 10xt —х2—9х3 —8х4
при ограничениях
—2х2+х2 +Зх3+х4=2,
— 5xj+2х2+Зх4 = 5, 1xv —4х2+х3+4х4 < 1, Зх1 + 2х2 + 5х3+6х4 <10, х(^0, 1</<4.
Предварительно приведем задачу к каноническому виду, дополнив вспомогательными переменными х5, хб. Получим
пйпФ1(х)= — 10х1+х2+9х3+8х4+0 -х5+0 -х6
при ограничениях
—2х2+х2 + Зх3+х4+0х5+0х6=2,— 5xj+2х2 4- 0х3+Зх4+0х5+0х6 = 5,7х!—4х2+х3+4х4+х5+0х6= + 1,3 xt+2х2 + 5х3+6х4+0х5+х6 = 10,
хе >0,хе >0,1</<6.1</<6.
хе >0,
хе >0,
1</<6.
1</<6.
СС С с с12СС С с с12
С
С С с с
1
2
С
С С с с
1
2
Зададим абсолютную точность выполнения неравенств х( > 0, равную 10”5. Программа может иметь следующий вид:
REAL W(24), U(36), Х(6), Е, V(6), А(4,6)
REAL В(4),С(6)
INTEGER M,N,K(4),I
DATA A/-2.,-5.,7.,3.,l.,2.,-4.,2.,3.,0.,l.,5.,
*l.,3.,4.,6.,0.,0.,l.,0.,0.,0.,0.,l./
DATA B/2.,5.,l.,10./,E/l.E—5/
DATA C/-10.,l.,9.,8.,0.,0./
DATA M,N,I/6,6,0/
ОБРАЩЕНИЕ К ПРОГРАММЕ BIAO
CALL В1 A0(W, M, U, N,X, К, I, E, V,А, В, C)
ВЫВОД НА ТЕРМИНАЛ ЗНАЧЕНИЙ ОПТИМАЛЬНЫХ
КООРДИНАТ,
НОМЕРОВ КООРДИНАТ, ОПТИМАЛЬНОГО ЗНАЧЕ
НИЯ ЦЕЛЕВОЙ ФУНКЦИИ
WRITE (5,1) (X(L),L = 1,4)
FORMAT (2Х,6Е12.5)
WRITE (5,2) К
FORMAT (2Х, 4(12,2Х))
WRITE (5,3) Х(5)
FORMAT (2X,'FI1 = ',E12.5)
END
Глава 9
НЕЛИНЕЙНЫЕ УРАВНЕНИЯ.НЕЛИНЕЙНАЯ ОПТИМИЗАЦИЯ
• 9.1. Введение
Сравнение линейных и нелинейных уравнений. Важнейшим свойством линейных функций у=Дх) является следующее: Дх^ удовлетворяют принципу суперпозиции. Принцип суперпозиции заключается в‘том, что если аргумент х есть линейная суперпозиция (комбинация) двух точек
,,Х = С1Х1^гСгХг.
с1? с2—константы, то значение у есть линейная суперпозиция значения Дх^ и Дх2^, а именно
У =/М =/(С1 %! + С2 ^2 ) = С1/(^1) + СгЛ^У(9.1.1)
Например, пусть х, у — векторы, Дх^ = Ах, где А—матрица размером и хи. Тогда свойство (9.1.1)—следствие свойств матричных операций
* А(<с1х1 +с2х2) = с1Ах1 + с2Ах2.
Нелинейные функции у=Дх) не удовлетворяют принципу суперпозиции, например для у = х2 (9.1.1) не выполняется:
(q Ху + с2х2)2 / сх х2 + с2х2.
Этот факт лежит в основе различия линейных и нелинейных уравнений.
Наиболее общий вид нелинейных уравнений, изучаемых в настоящей главе, следующий:
fvUvx2. ..., xJ=^,(9.1.2)
f2Vv^ х^=у2.
fAxv х^ • •> *и)=Л>
или в векторной записи
/М=ь(9.1.3)
здесь /—функция (или отображение) с областью определения DeEn и областью значений QeEn, вектор у задается.
Частным случаем (9.1.3) являются линейные уравнения
Ах=у.(9.1.4)
344344\
344
344
Первое отличие (9.1.3) от (9.1.4) состоит в том, что область определения D в (9.1.3) может не совпадать с Еп. Например, функция lnx=j>(9.1.5)
имеет область определения /) = {0<х<оо}еЕ1 = { — оо<х<оо}. Поэтому решение уравнения (9.1.5) следует искать только в области D.
Второе отличие (9.1.3) от (9.1.4) состоит в том, что в области определения D при заданном у может существовать несколько решений. Такой ситуации не было в линейных уравнениях.
В линейных уравнениях возможны следующие варианты. Имеется:
единственное решение;
бесконечное множество решений;
решений нет.
Линейные уравнения являются частным случаем нелинейных, поэтому для нелинейных уравнений возможны упомянутые выше три варианта, а также:
имеется п решений, 2<и<оо.
Примером четвертого варианта могут служить задачи определения корней полиномов
ЛМ=0.(9.1.6)
Если полином Рп^ можно представить в виде
где xt—вещественные числа, то уравнение (9.1.6) имеет п решений в Е1.
Геометрическая интерпретация решения системы уравнений.
Каждое уравнение в системе
Мх1; х2, ..., х„)=0,
Mxv х2, ..., х„)=0,
/„(%!, Х2, ..., Х„) = 0
определяет некоторую (не обязательно непрерывную) поверхность в Е". Следовательно, решениями (9.1.7) являются точки пересечения этих поверхностей.
Для примера рассмотрим систему двух уравнений с двумя неизвестными
/1=xi-x2+a=0,
/2 = —Х!+х2+а=0,
где а—вещественный параметр, +1 ^ а ^ — 1. Если изменять а в указанном интервале, то имеют место следующие случаи (рис. 9.1):
а = 1 — решений нет,
а = 1 /4 — решение единственно,
а=0 —два решения, а = — 1 — четыре решения.
Система уравнений
/1=x1sinx1— х2 = 0, /2 = л:^-х1 + 1=0 имеет в Е2 бесконечное множество решений (рис. 9.2). Корень х* скалярного уравнения /(х)=0 интерпретируется как точка пересечения кривой у=/(х) с осью абсцисс (рис. 9.3). Если нелинейное уравнение записывается в виде
Х = ф(х), то корень х* такого уравнения представляет собой точку пересечения прямой
у = х
и кривой
\\
\
\
Рис. 9.4Рис. 9.4Существование решения и линеаризация. Вопрос о существовании решения системы уравнений (9.1.2) в окрестности точки (х°, у0) решает теорема о неявной функции, известная в математическом анализе.
Рис. 9.4
Рис. 9.4
Теорема 9.1. Пусть функции f^x^ ..., хи), Y^i^n, непрерывно дифференцируемы в окрестности точки x° = (xi, ..., х„)
/(х?, ..., х?)=у°, 1 ^1 ^п.
Пусть матоииа
невырождена. Тогда существуют непрерывные функции
в окрестности точки у°=(у?, ..., у?), обладающие свойствами ft^Ayv -, К), -, ^Уи ..., У„))=У,
Zi(yi, У°)=х?, l<z<«.
Теорема 9.1 дает подход к решению нелинейных систем уравнений, основанный на линеаризации системы (9.1.2), т. е. замене (9.1.2) на «близкую» линейную систему.
Будем предполагать, что фукции Дх^ ..., хи) дважды непрерывно дифференцируемы в Еп. Представим левую часть (9.1.2) отрезком ряд Тейлора с центром в какой-либо точке х°:
Если отбросить в этой формуле остаточный член, то получим линеаризованную в окрестности х°, у0 систему уравнений (9.1.2), которую запишем в матричной форме:
/(х0) + Л(х0)(х-х°)=у0.(9.1.8)
Поскольку точное решение исходной системы уравнений неизвестно, в общем случае
Дх0)/у°.
Пусть
detx4(x°)/0.
Тогда численно решаем систему линейных уравнений (9.1.8), получаем решение линеаризованной системы
х = Л-1(х°)(у°—/(х°))+х°.(9.1.9)
Погрешность, численного решения (9.1.8) и погрешность, связанная с отбрасыванием остаточного члена, дают полную погрешность (9.1.9), если принять решение линеаризованного уравнения за приближенное решение (9.1.2).
Очевидно, что погрешность линеаризации определяется числом обусловленности матрицы Л(х°) и выбором нулевого приближения х°.
Грубое приближение к х° обычно получают из анализа научно-технической задачи.
Линеаризация лежит в основе итерационного метода Ньютона (см. 9.3).
В скалярном случае линеаризация эквивалентна замене нелинейной функции Дх^ на линейную, проходящую через точку Дх°) и касательную к /(х) в точке х° (рис. 9.5). Невырожденность Л(хб) эквивалентна условию /,(х°)/0..
• 9.2. Сжимающие отображения
Определение сжимающего отображения. Рассмотрим линейное и-мерное вещественное пространство Еп; определим в Еп какую-либо норму ||х|| элемента х = (х1? ..., хп\
Пусть задано, вообще говоря, нелинейное отображение ^ = ф(х), например, с помощью п функций
У1=Ф1(^1Хп\
У2 = Ф2^1. Хп\
''У, = Ф,(^1.хп\
определенное на всем пространстве Еп.
Отображение ф(х) переводит Еп в себя, если для любого элемента х, принадлежащего Еп, элемент ^ = ф(х) также принадлежит Еп. Например, отображение y = sinx переводит Е1 в себя, отображение ^=x/sinx этим свойством не обладает.
348\
Отображение ф(х), переводящее Еп в себя, называется сжимающим в Еп, если для произвольных двух элементов ххеЕп имеет место неравенство
Цф(^)—ф(^)Н ^«||^—Я||, (9.2.1) где коэффициент сжатия а удовлетворяет неравенству
0<а<1. (9.2.2)
Например, ф(х) = 0,1 sinx—сжимающее отображение в Е1 с нормой ||х||=|х|. Покажем, что ф(х) удовлетворяет (9.2.1), (9.2.2). Действительно,
|ф(х) —ф(х)| =|0,1 sinx—0,1 sinx| =0,1 |sinx—sinx|.
Но из теоремы о среднем имеем
|sinx — sinx| = |cos^| |х —х|, х <^<х.
Из двух последних соотношений получаем
|ф(х) —ф(х)| ^0,1 |х—х|,
т. е. неравенство (9.2.1) с коэффициентом сжатия а=0,1.
Действие сжимающего отображения иллюстрирует рис. 9.6.
Для нелинейных функций ф(х) требование, чтобы ф(х) было определено на всем пространстве Еп, оказывается слишком ограничительным. Поэтому отображение ф(х) часто рассматривают локально, только в шаре S, принадлежащем области определения D отображения. Шар S—это совокупность элементов хеЕп таких, что ||х —х°|| ^г:
5={х: ||х-х°|| ^г}.
Здесь х°—элемент, Еп—центр шара, г—положительное число— радиус шара (рис. 9.7).
Отображение ф(х) переводит шар S в себя, если для любого xeS, элемент у = ф(х) также принадлежит шару S. Например, отображение y = x/sinx переводит шар |х—л/2|^л/2 с центром, в точке х° = л/2 и радиусом к/2 в себя.
Отображение ф(х), переводящее шар S в Еп, называется сжимающим в S, если для произвольных двух элементов х, xgS имеют место неравенства (9.2.1), (9.2.2).
Метод простой итерации. Сжимающие отображения представляют собой замечательный класс отображений, определяющих нелинейные уравнения вида
х=ф(х).(9.2.3)
Для этих уравнений легко ответить на вопрос о существовании и единственности решения (9.2.3), а также построить последовательность приближений {х(к)}, сходящихся к решению.
Рис. 9.7
1<i<2
Если уравнение имеет вид
Дх)=о,(9.2.4)
то оно предварительно должно быть преобразовано к форме (9.2.3), причем таким образом, чтобы ф(х) оказалось сжимающим отображением. Общего приема для перехода от (9.2.4) к (9.2.3) не существует, и здесь важен предварительный анализ задачи, например исследование линеаризованного уравнения.
Построим последовательность {х^} по формуле х(к+1) = ф(х(к)), fc=0, 1, 2, ...,' (9.2.5)
где х°—начальный элемент, который следует задать. Если последовательность {х(к)} сходится к х, т. е.
||х(к) —х || —>0 при £->оо,а ф(х)—непрерывное отображение, то, переходя в (9.2.5) к пределупри к —> оо, получим, что предел х= lim xw—точное решениек^ао
уравнения (9.2.3). Таким образом, решение нелинейного уравнения (9.2.3) может быть получено как предел последовательности итераций {х(к)}.
Приближенное решение (9.2.3) с помощью (9.2.5) называется методом простой итерации.
Сравним (9.2.5) с методом простой интерации в системах линейных уравнений (см. 8.3). Метод простой итерации (9.2.5) является соответствующим методом решения линейных уравнений, если обозначить
350350ф(х)=5х+б?,\
350
350
где В—матрица, х, d— векторы соответствующих размерностей. Аналогом достаточного условия сходимости простых итераций в линейном случае (|| В || < 1) оказывается условие сжимаемости (а < 1) в нелинейных уравнениях. Этот факт устанавливает следующая теорема.
Теорема Ч.^Пустъ у(х) —сжимающее отображение Еп в себя. Тогда существует 'единственное решение уравнения (9.2.3), к которому сходится^поеледовательность {х(к)}, получаемая методом простой итерацри (9.2.5) с любым начальным элементом xw.
Доказательство. Покажем, что последовательность {х(к)} имеет пределГ Это имеет место, если выполнен критерий Коши ‘'/ »€ ||x0-)_x(m)|| при „,(9 2 6)
Положим для определенности п>т и оценим ||xw—xw ||. Имеем (в силу сжимаемости ф)
||х(",-х(т)'Г= ||ф(х<""1))-ф(х(”’-1>)|| <а Цх^^1*—х<т-1) || ==а ||ф(х<”-2))—ф(х<т-2))|| ^а2 ||х<п-2)—х(т-2) || ='V'= ... ^ат||х(и"т)-х(0)||.
Отсюда следует, что
||х<я)-х<т) II ^ат ||x("-m,-x(0’ II.
Оценим ||х<",-т)^х*0) ||. Имеем следующую цепочку соотношений:||х(л-»о1^(О*II = Ii^n^w + ^^U).^)-^ _ ++х(и’т)-х("“т“1>|| ^ Нх^-х^ || + ||х(1,-х<2,||+...++ ||х("-т-1,-х<"-т,|| < ||х(0)-х(1) ||(1+а+а2+...+а"-т-1)^< ||х<°>-х»>||
1-а’'
Отсюда следует, что
Так как 0<а<1, то при т-^ш получаем , .^:||x<n)-x(m)|M0,
т. е. выполняется критерий Коши'(9.2.6), а следовательно, последовательность {х^} имеет предел при любом начальном х(0):
х= lim xw.
Можно показать, что сжимающее отображение ф(х) является непрерывным. Тогда, преходя в (9.2.5) к пределу, получим, что предел х^—решение урйнения (9.2.2). Таким образом, существование решения доказано.
Единственность решения докажем от противного. Предположим, что существует два решения х и х, т. е.
V **х = ф(х), х = ф(х),
при этом ||х—х||/0. С одной стороны, имеем ||ф(х)-ф(5)|| = ||х-5||.
С другой стороны, в силу сжимаемости ф(х) ||ф(х)-ф(х)|| <а||х-^||. Из последних двух соотношений находим
||х-^II <а||х-х||,
. _что при значениях
0<а<1 и ||х—х||/0 невозможно. Теорема доказана полностью. Для иллюстрации теоремы рассмотрим два примера.
Уравнение
*x=0,lsinx
имеет в качестве ф(х) сжимающее Е1 в себя отображение ф(х) = 6,1 sinx.
Единственное решение этого уравнения х=0 получается как предел последовательности {х(к)} с любым начальным значением х(0): x(k+1) = 0,l sinx(k), fc=0, 1, 2, ....
Пусть
х(О) = 1,0,
х(1)=0,1 sin 1,0, х(2) = 0,1 sin (0,1 sin 1,0), ....
Ход итерационного процесса изображен на рис. 9.8.
Уравнение*
я .•
.x=-sinx
2
имеет в качестве ф(х) несжимающее в Е1 отображение ф(х) = л/28тх. Это уравнение имеет три решения: х=0, л/2, —л/2 в Е1 (рис. 9.9). Причем, как бы ни было близко к нулю начальное приближение, х(0), последовательные приближения не сходятся к корню х=0. Если х(0) >0,
то Иш х(к)=л/2, если х(О)<0, то limx(k)=—л/2 (рис. 9.9). к-* сок-* со
Последний пример показывает, что сходимость последовательных приближений метода простых итераций к решению может быть и тогда, когда ф(х)—несжимающее отображение во' всем пространстве Еп. Справедливо следующее утверждение.
Теорема 9.3. Пусть ф(х)—сжимающее отображение тара S пространства Еп;
S={x: ||л* — х(0) || ^г}.
Пусть, также
||ф(х(0))-х(0)|| ^(1—а)г.(9.2.7)
Тогда в таре S существует единственное ретение уравнения (9.2.3), к которому сходится последовательность {х(к)}, получаемая методом простой итерации (9.2.5) с начальным элементом x{Q\
Условие (9.2.7) достаточно для того, чтобы ф(х) отображало шар S в себя.
Оценка погрешности метода простой итерации. Доказательство следующих ниже оценок аналогично соответствующим доказательствам для метода простой итерации в линейных системах уравнений (см. 8.3). Пусть выполнены условия теоремы 9.3, тогда справедливы оценки для нормы разности А>го приближения xkk\ полученного из (9.2.5), и точного решения х уравнения х = ф(х).
Априорная оценка погрешности
|| х^—х || ^ akr.
Апостериорная оценка погрешности
||х^) —Х||||x(k) —.Х^"1) ||.
1—ос
Если задана абсолютная точность вычислений 8, то итерационный процесс прекращается по достижении такого значения к, при котором правая часть приведенных .выше, неравенств* становится ^8. Из априорной оценки можно найти требуемое число итераций
akr = 8, A:=ln(e/r)/lna, для достижения заданной точности 8.
Метод простой итерации для скалярных и векторных функций ф(х). Выше уже приводились примеры отображений ф(х), определяемых скалярными функциями ф(х). В настоящем разделе приводятся достаточные условия, которым должны удовлетворять скалярные и векторные функции фД^, ..., хп\ i^i^n, чтобы они определяли сжимающие в S отображения.
Рассмотрим нелинейное уравнение
^ = фМ,
35335312 Ю. П. Боглаев
353
353
где ф(х)—скалярная функция. Норму в Е определим ||х||=|х|, шар 5={х: |х —х(0)| ^г}.
< а< 1< а< 1Теорема 9.4. Пусть функция ф(х) непрерывно дифференцируема в шаре S. Пусть в шаре S
< а< 1
< а< 1
(9.2.8)
|ф(х(0)) — х(0)| ^(1 — а)г.(9.2.9)
Тогда справедливо утверждение теоремы 9.3.
Доказательство. Утверждение будет следовать из теоремы 9.3, если мы докажем, что выполняются ее условия. Очевидно, что_ (9.2.7) следует из (9.2.9). По теореме о среднем для х, xgS имеем
ф(х)-ф(х)=^)(х-£).
где ^gS., Отсюда следует, что
|ф(х)-ф(£)| = ^$|ф(х)-ф(£)| = ^$|х—х| ^а|х—х|,|х—х| ^а|х—х|,
|ф(х)-ф(£)| = ^$
|ф(х)-ф(£)| = ^$
|х—х| ^а|х—х|,
|х—х| ^а|х—х|,
а так как из (9.2.8) имеем а<1, то отображение ф(х)—сжимающее в шаре S. Все условия теоремы 9.3 выполнены, что и требовалось показать.
Для иллюстрации этой теоремы рассмотрим определение положительного корня уравнения
методом простой итерации
x(k+1) = ^sinx(k), k = 0, 1, 2, ...; х(0)=1,5 2
в шаре 5={х: |х—1,51 <0,1}. Определим коэффициент сжатия:
= 0,267.= 0,267.ка= max -cosx
= 0,267.
= 0,267.
1,4<х<1,6 2
Проверим условие (9.2.9):
- sin 1,5—1,5 2- sin 1,5—1,5 2= 0,0667^(1—0,267)0,1=0,0733.
- sin 1,5—1,5 2
- sin 1,5—1,5 2
Таким образом, оно выполнено. Согласно утверждению теоремы 9.4, последовательность {х(к)} сходится к единственному решению уравнения в S. Вычислим два первых приближения:
(1)=^ sin 1,5 = 1,56686; х^ = ^ sin 1,56686 = 1,57078.22’
354
Точное значение корня х = к/2 с шестью верными знаками после запятой 1,570796 показывает, что х(2) дает четыре верных знака после запятой. Ожидаемая погрешность второго приближения, следующая из априорной оценки
|х(2)-х| ^(0,267)2-0,1 =0,007,
оказывается более пессимистической. Это обычное явление, поскольку при получении оценок берутся завышенные значения в правых частях неравенств. Из апостериорной оценки находим неравенство
|х(2)-х| < , °-^ 3,98 • 10~3s0,001,
11-0,267
означающее, что в х^ по крайней мере два верных знака после запятой.
Обычно точное значение корня неизвестно, а единственная информация о погрешности может быть получена только из оценок, поэтому следовало бы продолжить итерации дальше, чтобы гарантировать четыре верных знака после запятой у приближенного решения х(к\
Рассмотрим нелинейное уравнение х=ф(х), где ф—непрерывно дифференцируемая векторная функция, т. е. рассмотрим систему и уравнений с и неизвестными
^1=Ф1(^1,
х2 = ф2 (х^,, хд),
*п = Фл(*1, - ,Х^.
Зададим в Еп норму х (например, ||х||= max |xj), шар S={x:||x —
1 < i < п
— х(0)||^г}, определим матрицу:
Верно следующее утверждение.
Теорема 9.5. Пусть функция ф(х) непрерывно дифференцируема в шаре S. Пусть также в шаре S
' ||S(x)Koc<l
|| <р(х<0))-х(0) ||<(1-а)г.
12*12*355 -
12*
12*
Тогда справедливо утверждение теоремы 9.3.
Для иллюстрации теоремы используем метод простой итерации для приближенного решения системы уравнений x^O^Se-^2, х2=0,05е^(х‘+^- Определим шар S= max lx,—
—0,1 |^0,l (рис. 9.10), а также матрицу
, . / — 0,05х2е ^^-OjOSx^ Х1%2 \
; BW=( —0,05е-^1+х^—0,05е-^1+Х2у'
Вычислим коэффициент сжатия:
a = max(0,05(x1 +х2)е-Х1 *2, 0,1е—^1 —^2)) = 0,1.
1 ’ s
Проверим условие (9.2.7), имеем
|| ф(х(0)) —х(0) || =тах(|О,О5е-(о,1)2-О,11, | О,О5е-0*2 — 0,1|) =
= тах(5 • 10“ 2, 6 * 10"2)<(1 — а)г = 9 • 10"2.
Условие выполнено. По теореме 9.5 последовательные приближения {х(к)} сходятся к точному решению
^^’^O.OSe-W;4°>=0,1
хГ ^=0,05e"W+^\ х^=0Д; к=0, 1, 2, ....
Вычислим два первых приближения:
JtV^OSe-*0-1^,950249 • 10"2; х^=0,05е-х‘1>х<”=4,989878 • 10-2,...
хУ)=0,05е“(°’2)=4,093654 • IO"2; 42>=0,05e_W’+x"))=4,56765 • 10”2.
•9.3. Метод Ньютона
В основе метода Ньютона, как уже отмечалось в 9.1, лежит линеаризация нелинейного уравнения. Рассмотрим сначала метод Ньютона для скалярных уравнений, а затем для векторных.
Метод Ньютона для скалярных уравнений. Пусть имеется нелинейное уравнение
Дх) = 0,(9.3.1)
которое будем рассматривать в S={x: |х—х(0)|^г}. Предположим, что /'(х)/0 в S. В точке х(0) произведем линеаризацию (9.3.1), т. е. заменим в (9.3.1) функцию /(х) линейной функцией, проходящей
356
Рис. 9.11
через х(0) и имеющей производную, равную /'(х(0)) (рис. 9.11). Получим линеаризованное уравнение
Дх(0)) +Г (х(0)) (х - х«») = 0.(9.3.2)
Найдем корень уравнения (9.3.2). Обозначая его х(1), имеем
Теперь, произведем линеаризацию (9.3.1) в точке х(1), повторим все этапы получения формулы (9.3.3), заменяя при этом х(0) на х(1), а х(1)— на х(2) (см. рис. 9.11). Таким образом, для произвольного к получим формулу
X(*+D=XW_Z^1; ^=0, 1, 2,(9.3.4)
метода Ньютона приближенного определения корня уравнения /М=о.
Метод Ньютона называют еще методом касательных, что вполне соответствует геометрическому смыслу линеаризации на одном шаге.
Метод Ньютона является методом простой итерациих(к+1) = ф(х(к)), к = 0, 1, 2, ...,со специально подобранной по Дх^ функцией ф(х), а именно/ х Дх)
исходное уравнение при Г^#0 эквивалентно уравнению х = ф(х).
Следующий пример показывает, что метод Ньютона может не давать последовательность {х(к)}, сходящуюся к корню (нарушено условие сходимости). Уравнение
arctgx = 0
имеет единственный корень х = 0. Итерационный процесс Ньютона (9.3.4) примет вид
x(k+1) = x(k)—(1 + (x(k))2arctgx(k)(9.3.5)
Рис. 9.12Рис. 9.12и для достаточно больших значений |х(0)| из (9.3.5) получаем расходящуюся последовательность {х(к)}. Например, х(0) = 2, х(1)=—3,5,и для достаточно больших значений |х(0)| из (9.3.5) получаем расходящуюся последовательность {х(к)}. Например, х(0) = 2, х(1)=—3,5,х(2>=13,9,х(2>=13,9,(3,= —279(3,= —279довательность {х(к)}. Например, х(3)=-10"3, Jc(4> = 9 40довательность {х(к)}. Например, х(3)=-10"3, Jc(4> = 9 40(рис. 9.12). В то же время для малых значений | х(0) | из (9.3.5) получаем сходящуюся к корню после- х(0)=1, х(1)=—0,57, х(2) = 0,17,(рис. 9.12). В то же время для малых значений | х(0) | из (9.3.5) получаем сходящуюся к корню после- х(0)=1, х(1)=—0,57, х(2) = 0,17,9.3.2. Достаточные условия сходимости метода Ньютона. Выведем достаточные условия сходимости метода Ньютона в предположении, что Дх^ дважды непрерывно дифференцируема, из соответст-9.3.2. Достаточные условия сходимости метода Ньютона. Выведем достаточные условия сходимости метода Ньютона в предположении, что Дх^ дважды непрерывно дифференцируема, из соответст-вующих Условиевующих Условиеусловий метода простой итерации (см. теорему 9.4).(9.2.8), учитывая вид ф(х), запишем так:условий метода простой итерации (см. теорему 9.4).(9.2.8), учитывая вид ф(х), запишем так:1212dx МЧХ¥dx МЧХ¥(9.3.6)(9.3.6)УсловиеУсловие(9.2.9) принимает вид(9.2.9) принимает вид|ф(х«»)-Х«»| =|ф(х«»)-Х«»| =fwfw(9.3.7)(9.3.7)
Рис. 9.12
Рис. 9.12
и для достаточно больших значений |х(0)| из (9.3.5) получаем расходящуюся последовательность {х(к)}. Например, х(0) = 2, х(1)=—3,5,
и для достаточно больших значений |х(0)| из (9.3.5) получаем расходящуюся последовательность {х(к)}. Например, х(0) = 2, х(1)=—3,5,
х(2>=13,9,
х(2>=13,9,
(3,= —279
(3,= —279
довательность {х(к)}. Например, х(3)=-10"3, Jc(4> = 9 40
довательность {х(к)}. Например, х(3)=-10"3, Jc(4> = 9 40
(рис. 9.12). В то же время для малых значений | х(0) | из (9.3.5) получаем сходящуюся к корню после- х(0)=1, х(1)=—0,57, х(2) = 0,17,
(рис. 9.12). В то же время для малых значений | х(0) | из (9.3.5) получаем сходящуюся к корню после- х(0)=1, х(1)=—0,57, х(2) = 0,17,
9.3.2. Достаточные условия сходимости метода Ньютона. Выведем достаточные условия сходимости метода Ньютона в предположении, что Дх^ дважды непрерывно дифференцируема, из соответст-
9.3.2. Достаточные условия сходимости метода Ньютона. Выведем достаточные условия сходимости метода Ньютона в предположении, что Дх^ дважды непрерывно дифференцируема, из соответст-
вующих Условие
вующих Условие
условий метода простой итерации (см. теорему 9.4).
(9.2.8), учитывая вид ф(х), запишем так:
условий метода простой итерации (см. теорему 9.4).
(9.2.8), учитывая вид ф(х), запишем так:
12
12
dx МЧХ¥
dx МЧХ¥
(9.3.6)
(9.3.6)
Условие
Условие
(9.2.9) принимает вид
(9.2.9) принимает вид
|ф(х«»)-Х«»| =
|ф(х«»)-Х«»| =
fw
fw
(9.3.7)
(9.3.7)
Окончательно, если в области S={x:|x—х(0)|^г} выполнены условия (9.3.6), (9.3.7), последовательность {х(к)}, получаемая методом Ньютона (9.3.4)/ сходится к решению уравнения f^ — О в S.
Скорость сходимости х<к) к решению находится из априорной оценки метода простой итерации |x(k)—x|^akr. Однако эта оценка для метода Ньютона оказывается слишком грубой, при приближении xw к корню скорость сходимости является квадратичной.
Этот факт вытекает из следующих достаточных условий сходимости метода Ньютона, которые приводятся без доказательства.
Определим числа:
Ро =Ро =fWfWрейхахрейхах
Ро =
Ро =
fW
fW
рейхах
рейхах
11
1
1
h=p0Pv r=(l —^1 —2А)р0А *•
Если
a=2A<l,(9.3.8)
то последовательность {x(k)} метода Ньютона сходится к корнюх уравнения /(х) = 0 в области S и имеет место оценка погрешности\xw—x\^a?k2"kpoh-i, к=0, 1, 2, ....
Применение программы В4А1. Для определения корня скалярного уравнения Дх^ = ^ методом Ньютона может служить \
358
библиотечная программа В4А1. Например, для уравнения arctgx=0 поиск корня с точностью е (смысл £ поясняется в описании В4А1) можно выполнить с помощью следующей программы:
REAL X,R,D,X0,E
INTEGER N,I EXTERNAL F С ВВОД НАЧАЛЬНОГО ПРИБЛИЖЕНИЯ К КОРНЮ ХО СВВОД ТОЧНОСТИ Е,ВВОД МАКСИМАЛЬНОГО ЧИС-
СЛА ИТЕРАЦИЙ N
READ (5,1) X0,E,N
1FORMAT (2F9.6J5)
СОБРАЩЕНИЕ К ПРОГРАММЕВ4А1
CALL B4A1(X,R,D,F,XO,E,N,I)
С ВЫВОД НА ТЕРМИНАЛ ЗНАЧЕНИЯ КОРНЯ X И С ИНДЕКСА ОШИБОК I
WRITE (5,2) Х,1
2FORMAT (2Х,'Х=',Е13.6/1 =',12)
END
СПОДПРОГРАММА F, ВЫЧИСЛЯЮЩАЯЗНАЧЕНИЕ
СФУНКЦИИ И ЕЕ ПРОИЗВОДНОЙ
SUBROUTINE F(X,R,D)
REAL X,R,D
R=ATAN(X)
D=1./(1.+X*X)
RETURN END
Метод Ньютона для векторного уравнения. Пусть имеется векторное уравнение
/М=о,которое эквивалентно системе и скалярных уравнений/1(^1» х2, ..., х„)=0,
/2(^1, ^2, -,^) = 0,/О ЮХ
/Я(Х1, х2,х„)=0.
Будем рассматривать (9.3.9) в шаре 5={х: || х —х(0) || ^г}. Предположим, что в любой точке xgS матрица Л(х) с элементами
^мМ=^(^1, невырождена.
Тогда метод Ньютона для (9.3.9) по аналогии с (9.3.4) записывается следующим образом:
х(к + 1) = х(к)-Л ^(х^^^=0, 1, ....(9.3.10)
359
На каждом шаге к итерационного процесса (9.3.10) решаются $ линеаризованные уравнения, полученные из (9.3.9).’
Условия сходимости последовательности {х(к)}крешению (9.3.9) j
можно получить из теоремы 9.5, рассматривая (9.3.10) Как метод | простой итерации с|
ф(х) = £х-Л-1(х)/(х),|
Здесь Е—единичная матрица. При этом следует потребовать, $ чтобы функции/(хь ..., х„) были дважды непрерывно дифферен- | цируемы по своим аргументам в шаре S.|
Применение программы В4А2. Для определения корней | системы уравнений (9.3.9) методом Ньютона может использоваться |
библиотечная программа В4А2. Например, пусть имеем систему 4 уравнений *|
■х2-О,О5е_(Х1+х^=о.?
Точность вычислений е определена в описании В4А2. Поиск приближенного значения корня х=(х2, х2) с точностью е можно выполнить с помощью следующей программы:
REAL X(2),F(2),E,W(10) INTEGER N,K,I EXTERNAL R DATA I/0/,N/2,K/10/
СВВОД НАЧАЛЬНОГОПРИБЛИЖЕНИЯ К КОРНЮ
СВВОД ТОЧНОСТИ Е
READ (5.1) Х,Е
1FORMAT (3F9.6)
СОБРАЩЕНИЕ К ПРОГРАММЕВ4А2
CALL B4A2(R,N,X.F,E,W,K,I)
С ВЫВОД НА ТЕРМИНАЛ ЗНАЧЕНИЙ КОМПОНЕНТ
С КОРНЯ И ИНДЕКСА ОШИБОК I WRITE (5.2) ХД
2FORMAT (2Х,2Е13.6,Т-',12)
END
СПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯЗНАЧЕНИЯ
СФУНКЦИЙ
SUBROUTINE R(N,X,F,J)
REAL X(2),F(2)
INTEGER NJ
DATA J/0/
F(l)=X(l)-0.05*EXP(-X(l)*X(2))
F(2)=X(2) - 0.05*EXP( - (X(l)+X(2)))
RETURN END
В программе В4А2 необходимые значения про- Oft изводных — для опреде- oxj
ления матрицы А вычисляются с помощью формул численного дифференцирования (см. гл. 10).
• 9.4. Метод бисекции
Метод бисекции (или метод деления отрезка пополам) отличается от рассмотренных выше способов приближенного определения корня уравнения Дх)=0 тем, что для его сходимости не требуется, чтобы Дх) была дифференцируемой, достаточно только непрерывности Дх).
Алгоритм метода бисекции. Пусть задана непрерывная на интервале [я0, Ьо ] функция Дх). Пусть известно, что на [а0, /)0] имеется единственный корень уравнения
. ДД=0. (9.4.1)
Тогда в силу непрерывности Дх) значения Дя0) и Дб0) имеют разные знаки (рис. 9.13). Разделим отрезок [я0, Z>0] пополам точкой с0 = ^0+60)/2. Сохраняем для дальнейшего деления ту половину отрезка, на концах которого Дх) имеет разные знаки. Введем следующие обозначения: "
[с0, если Дао№о) > °,
|а0, если Да0)Дс0) < 0;fc0, если Дбо)Дсо)>0, ■
(Д, если Дб0)Дс0) < 0.
Разделим оставшийся отрезок \av ^J пополам и повторим приведенную систему обозначений. Для произвольного А>го деления имеем
Ск=^^’ k=Y’ 2, -К 2
Дск, если Да*)Де*) >0,
+1если Да*)Д с*) < 0;
= (с*, еслиДй*) Дс*) > 0,к+1если ДЬк)Дск) < 0.
Алгоритм завершается, если для какого-либо к оказывается Дс*) = 0. Тогда значение корня х = ск. Если задана абсолютная точность определения корня е, то алгоритм завершается при условии
Ьк-ак Ь0-а0
12k+1
В этом случае за приближенное значение корня х принимается значение с^ очевидно, что
Схема алгоритма бисекции. Отличительной особенностью алгоритма метода бисекции являете^ его логическая структура.
362\
В блок-схеме, представленной на рис. 9.14, имеется четыре логических элемента типа альтернативы (см. гл. 2). Концы интервала до деления пополам обозначаются я0, Ьо, после деления—av bv
Применение библиотечной программы В4А0. Для определения корня непрерывной функции /(х) методом бисекции можно использовать программу В4А0, которая реализует схему алгоритма, приведенного на рис. 9.17, с ограничением на допустимое число делений пополам исходного интервала [а, 6 ]. Пусть ищется корень уравнения
х—е~х = 0
на интервале [0, 1] с точностью е=10"5, максимальное число делений интервала пополам положим равным 20. Тогда программа может иметь следующий вид:
DATA A,B,E,N/0.,l.,l.E—5,20/^
СОБРАЩЕНИЕ К ПРОГРАММЕ В4А0
CALL B4A0(X,R,F,A,B,E,N,I)
СВЫВОД НА ТЕРМИНАЛ ПРИБЛИЖЕННОГО
СЗНАЧЕНИЯ КОРНЯ И ИНДЕКСА ОШИБОК
WRITE (5,1) Х,1
1FORMAT (2Х,'Х=',Е13.6,Т=',12)
END
СФУНКЦИЯ-ПОДПРОГРАММА,ВЫЧИСЛЯЮЩАЯ
СЗНАЧЕНИЕ F(X)
FUNCTION F(X)
REAL X F=X-EXP(-X) RETURN
END
• 9.5. Поиск минимума функции
Поиск оптимальных инженерно-технических, экономических и научных решений—основное поле деятельности инженера и ученого. Задачи минимизации функций одного или нескольких переменных принадлежат к этому важному направлению.
Функция Ф(х1э ..., х„), подлежащая минимизации, называется целевой функцией.
Задача поиска максимума Ф(Х[, ..., х„) сводится к минимизации функции—Ф(хх, ..., х„), поэтому, не ограничивая общности, будем рассматривать задачу поиска минимума.
Примерами целевых функций могут служить: расход топлива Ф, необходимый для вывода космического аппарата на орбиту (за счет выбора параметров аппарата и траектории х= (х15 ..., х„)
стараются минимизировать величину Ф); вес Ф механической конструкции с заданной прочностью; стоимость Ф выпускаемой продукции предприятия и т. п.
Наибольшие трудности поиска минимума Ф(х) возникают, когда размерность и вектора х велика. Поэтому важнейшей является проблема уменьшения размерности вектора целевой функции на этапе построения математической модели технической задачи. В модели следует сохранить только те переменные хь которые сильнее других влияют на изменение целевой функции. Естественно, что такая информация обычно связана с опытом и знаниями в конкретных предметных областях.
Решение уравнений и минимизация. Покажем, как поиск корня системы;! нелинейных уравнений можно свести к задаче минимизации и, наоборот, минимизацию—к решению системы уравнений.
Предположили, что в области D пространства Еп необходимо решить систему уравнений
fAxv х2, х„)=0,
Л(^ь х2, х„)=0,
/„(%!, Х2,,Х„) = 0.
Пусть известно, что в D существует решение (9.5.1). Определим целевую функцию Ф(х) формулой
Ф(*1> •••,*„) =/1(^1, ..., Х,^/^, ..., Х^+.-.+УДх^
(9.5.2)
В области D целевая функция Ф(х)>0. Минимальное значение Ф(х) достигает на корне (9.5.1) — векторе х = (х15 ..., хп\ который обращает все /Дх) в нуль. Поэтому решение системы (9.5.1) эквивалентно поиску минимума Ф, определенной формулой (9.5.2): найти
(9.5.3)(9.5.3)min Ф (х).
(9.5.3)
(9.5.3)
D
Если минимальное значение Ф(х) в D строго больше нуля, то это свидетельствует, что в D система уравнений (9.5.1) не имеет решений.
Теперь рассмотрим задачу (9.5.3) как исходную с функцией Ф(х), непрерывно дифференцируемой в открытой области D. Пусть известно, что в D существует х, доставляющий минимум Ф(х), тогда в этой точке х = (х1? ..., х„) с необходимостью должны
выполняться соотношения
^(xv О,
(9.5.4)
Система уравнений (9.5.4) имеет форму (9.5.1). Решение (9.5.4) позволяет определить неизвестные экстремальные точки. Затем, используя достаточные условия минимума, следует выделить точки, в которых достигается локальный минимум, затем, сравнив значение целевой функции в точках локального минимума, надо выбрать точку (одну или несколько) с минимальной величиной локального минимума, т. е. определить глобальный минимум Ф(х) в области D.
В качестве первого примера рассмотрим систему уравнений (х!-0,05е-Х1Х2 = 0, (лг2—0,05е~^1+х^=0
в области Л = {|х1 — 0,1|<0,1, |х2 —0,1|<0,1}. Решение этой системы эквивалентно поиску минимума Ф(х1? х2):
min Ф (xtx2) = [(хх — 0,05е-Х1*2)2+(х2 — 0,05е “(Х1 +Х2У].
В качестве второго примера найдем в области Л = {|х1|<1, I х21 < 1} минимум Ф (^!, х2):
ттФ(х1Х2) = Х1+Х2—Х1 — х2. D
Система уравнений (9.5.4) принимает вид
J2xi—хх =0,(2х3 —х2=0.
Отсюда получаем точки экстремума с координатами (xV) = 0, х(2) = 1/^/2, х^3)=— 1/^/2) (х^^О, х^2)= 1/^/2, х^3)=— 1/^/2), всего девять точек. Из них четыре точки дают локальный и одновременно глобальный минимум, а именно: (1/^/2, 1/>/2); (—1/^/2, 1/^/2); (—1/^/2, — 1/^/2); (1/^/2, — 1/^/2). Минимальное значение целевой функции в этих точках Ф= —1/2.
Поиск минимума функции перебором. Идея алгоритма перебора крайне проста. Вычислим в конечном числе точек х(к) области D значения Ф(х) и сравним их между собой. Точку х^, которая дает минимальное значение целевой функции, назовем приближенным элементом х, минимизирующим Ф(х).
Точность определения точки минимума, причем глобального, зависит от плотности заполнения области D дискретным множеством х^.
При большой размерности вектора и реализовать на ЭВМ алгоритм перебора невозможно из-за огромного объема вычислительной работы.
Пусть область D — гиперкуб
Р = {0<х(^1, 1^/^и}, в котором ищется пмпФ(х). Точность определения координат вектора, минимизирующего Ф, положим равной 0,1. Тогда интервалы О^Х/^1 следует разбить на 10 частей с шагом Л = 0,1 плоскостями, ортогональными xt (рис. 9.15), и вычислить во всех точках пересечения плоскостей значения Ф(х). Всего потребуется вычислить Ф(х) в 10" точках. Пусть для нахождения Ф в каждой точке требуется, например ~102и арифметических операций. Тогда общее число арифметических операций алгоритма перебора ~10"+2и и при и =10 на ЭВМ с быстродействием 106 оп/с требуется 107 с, т. е. ~4 месяца непрерывной работы ЭВМ.
При небольших размерностях п вектора х перебор является наиболее эффективным методом поиска минимума Ф(х) в случае сложного поведения Ф(х) (наличие многих локальных минимумов). Приведем пример программы поиска минимума перебора
тшФ(х1э х2) в области Г> = {0^х1^1-, 0^х2^0:
REAL H,X1,X2,F,FM
INTEGER N
С ВВОД ЧИСЛА ТОЧЕК ПЕРЕБОРА N ПО КАЖДОЙ
С ПЕРЕМЕННОЙ
READ (5.1) N
1FORMAT (16)
СВЫЧИСЛЕНИЕ ШАГА Н ПЕРЕБОРА
H=l/N
С АЛГОРИТМ ПЕРЕБОРА
FM = FI(0.,0.)
XI =0.
Х2=0.
DO3I=1,N+1
DO 3 J=1,N+1
F = FI(H*(I—1),H*(J—1))
IF (F.LT.FM) GO TO 2
GO TO 3
FM=F
X1=H*(I-1)
X2=H*(J-1)
CONTINUE
СВЫВОД НА ТЕРМИНАЛ МИНИМАЛЬНОГО
СЗНАЧЕНИЯ ФУНКЦИИ FM;
СТОЧКИ С КООРДИНАТАМИXI,Х2,ВКОТОРОЙ
СДОСТИГАЕТСЯ FM
WRITE (5.4) FM,X1,X2
4FORMAT (2X,'FM = ',E13.6,2X,2E13.6)
END
СФУНКЦИЯ-ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ
СМИНИМИЗИРУЕМУЮ ФУНКЦИЮ
FUNCTION FI(X1,X2)
REAL XI,X2 FI = ...
RETURN
END
• 9.6. Методы спуска
Идея всех методов спуска состоит в том, чтобы исходя из начального приближения—точки х(0) = (х^0), х^\ , x(n0))eD — перейти в следующую точку х(1) = (х^\ хЧ\ ....x^eD так, чтобы значение Ф(х^0), ..., х^0)) уменьшилось:
Ф(х(1))<Ф(х(0)).
Метод покоординатного спуска. Пусть в области D задано нулевое приближение
Рис. 9.16Рис. 9.16х(0) = (х?\ х?\х^0)).
Рис. 9.16
Рис. 9.16
Рассматриваем функцию Ф(х^0), х^0), х^0), ... ..., х<0)) при фиксированных значениях х^0), х^0), ... ..., х^0) как функцию одной переменной хх (рис. 9.16). Находим
min ф(х1? х^\ .... х^0)).
Xj eD
Значение х1? доставляющее минимум, обозначаем xV^
• ■<^Vv-:4|^*$^-^Ni^!^|H^^^:£^^WM^<^^- ^^-^^^ЙМ^й^^• ■<^Vv-:4|^*$^-^Ni^!^|H^^^:£^^WM^<^^- ^^-^^^ЙМ^й^^
• ■<^Vv-:4|^*$^-^Ni^!^|H^^^:£^^WM^<^^- ^^-^^^ЙМ^й^^
• ■<^Vv-:4|^*$^-^Ni^!^|H^^^:£^^WM^<^^- ^^-^^^ЙМ^й^^
Ф^, Х^\ _»Х^Ф^, Х^\ ._х^\
Далее при фиксированных значениях х^\ х^0), ..., х^0) рассматриваем Ф^1*, х2, х^0), ..., х<0)) как функцию одной переменной х2. Находим
min Ф^^^з, х^0),х^0)).
x2eD
Значение х2, доставляющее минимум, обозначаем х^\ получаемф^1^ Х^, х^, ..., х^Ф^Л Х^, х^, ._х^
и т. д., после и шагов получаем
. ’ Ф№ , х^Ф^, хЧ\ , х<0)).
В результат^ одного шага покоординатного спуска происходит переход из начальной точки х(0) = (х^0), ..., х^0)) в точку x(1) = (xV), .., х^1^. Если при этом оказывается, что
‘ - Ф(х?>, ...^^(х^^
то начальный элемент х(0)—точка, доставляющая экстремум Ф(х). Если Ф(х(1))<Ф(х(0)), то выполняется следующий шаг покоординатного спуска, в котором за начальную точку принимается х(1), получаем х(2) и т. д. Этот процесс продолжается до тех пор, пока не выполнится какое-либо условие окончания алгоритма, например такое:
| ф (x(k+^j — ф (х^) | < 8,(9.6.1)
где 8 — заданная точность.
Заметим, что центральным звеном рассматриваемого алгоритма является поиск минимума функции одной переменной (см. 9.7).
Метод градиентного спуска. Напомним, что градиент функции Ф(х) определяется формулой
. - / \ (д Ф / \ 5 Ф / х 5 Ф / Л
grad<I>(x) = ^—(х), -(х)
Вектор gradФ(x) ортогонален линиям уровня Ф(х) = с=const, его направление совпадает с направлением максимального роста Ф(х) в заданной точке (рис. 9.17). В точке минимума функции gradФ = 0.
Определим итерационный процесс:
х<*+D=х<м _ ^ grad ф (х(к)),(9.6.2)
где h>Q—шаг спуска, х(0)— заданное начальное приближение к точке минимума.
Заметим, что если gradФ(x(k))/0, то для достаточно малых значений h
Формула (9.6.2) представляет собой метод градиентного спуска с постоянным шагом h спуска. Итерационный процесс (9.6.2) продолжается до выполнения какого-либо условия окончания алгоритма, например (9.6.1), либо следующего:
|| gradФ(x(k+1)) || <8,(9.6.3)
где 8—заданная точность.
Для примера рассмотрим поиск минимума
х2
ф(х)=^+х^(9.6.4)
методом градиентного спуска. Согласно (9.6.2), имеем
Х^=х^-Н^
х^=х^-М\
Пусть нулевое приближение х(0)=(х^0) = 1, х^0) = 1), шаг спуска Л = 0,1. Первые три шага спуска дают следующие приближения
х ?}=0,95;х^=0,9025;х?>=0,8574;
х^ = 0,80;х^ = 0,6400;х^ = 0,5120.
За три шага Ф(х) уменьшилась с 1,25 до 0,446. Естественно поставить вопрос: нельзя ли увеличить шаг спуска так, чтобы быстрее спуститься к точке минимума (в примере—х=(0,0))? Оказывается, что увеличивать h можно только до определенного предела. Слишком большой шаг может привести к увеличению Ф(х). В рассматриваемом примере h = 2 приводит к x(1)=(xV)==0, х^=—3) и значению Ф(х(1)) = 9>Ф(х(0)) (рис. 9.18). Таким образом, наиболее важным моментом в методе градиентного спуска оказывается выбор шага. Формула (9.6.2) с постоянным шагом h практически не применяется.
Рис. 9.20Рис. 9.20
Рис. 9.20
Рис. 9.20
_ Различные дгратегии выбора шага к = Цк) определяют разные варианты градиентного спуска.
Далее рассматривается вариант спуска, называемый наискорейшим градиентным спуском.
Метод Паискорейшего градиентного спуска. Из (9.6.2) можно определить значение Ф(х) в точке х(к+1):
Ф (х(к + п) = Ф(xw — h grad Ф ^.
Если х(к) определено, то значение целевой функции Ф в следующей точке х(к+1) оказывается функцией только шага спуска (рис. 9.19).
Будем выбирать h = h* из условия, чтобы функция Ф за этот шаг максимально уменьшила свое значение:
Ф ^х(к+п) _ mjn ф ^м _ ^ graj ф ^х(к^. h
Выбор шага h* -сводится к поиску минимума функции одной переменной.
f В примере п. 9.6.2 выбор шага в точке х(0) сводится к следующей Задаче:
minhminh^чУ+О-^)2 ’^чУ+О-^)2 ’
min
h
min
h
^чУ+О-^)2 ’
^чУ+О-^)2 ’
откуда определяется шаг А наискорейшего спуска А* = 10/9.
Заметим, что методы градиентного спуска, вообще говоря, определяют локальный минимум целевой функции Ф (х). Это связано с зависимостью всего пути спуска xw от начального приближения х(0). Можно привести примеры, когда различные х(0) дают пути, приводящие к различным точкам локального минимума (рис. 9.20). Поэтому очень важно в задачах минимизации использовать всю имеющуюся информацию о зависимости целевой функции Ф от вектора х для правильного выбора начального приближения х(0).
Применение программы В5А1. Используем программу В5А1 для поиска минимума функции (9.6.4) по заданному начальному приближению х(0) = (1,1), спуск прекращается по условию
II x(fc+1) — XW || ^8
в евклидовой норме. Программа мо^кет иметь следующий вид: 370
REAL X(2),R,G(2),S,E,W(4) INTEGER N,I,K EXTERNAL F
сс сс1с ссс сс1с сDATA X/1., 1 ,/,N/2/,K/ 100/,E/LE-4/
с
с с
с
1
с с
с
с с
с
1
с с
ОБРАЩЕНИЕ К ПРОГРАММЕ B5A1
CALL B5A1(F,N,X,R,G,S,E,K,I,W)
ВЫВОД НА ТЕРМИНАЛ ВЕКТОРА X, ДОСТАВЛЯ
ЮЩЕГО MIN F,
ЗНАЧЕНИЯ MIN F, ИНДЕКСА ОШИБОК I
WRITE (5,) X,S,I
FORMAT (2Х,2Е13.6/MINF = ,Е13.6/1 =', 12) END
ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ F(X), ВЕКТОР
GRAD F(X)
SUBROUTINE F(N,X,Y,G)
REAL X(2),Y,G(2)
INTEGER N
Y=X(1) * X(l)/4.+X(2) * X(2)
G(2)=2. *X(2)
RETURN END
• 9.7. Метод золотого сечения
Выше, рассматривая покоординатный спуск и наискорейший градиентный спуск, мы отметили, что важным элементом этих методов является минимизация функций одной переменной. В настоящем разделе рассматривается метод деления интервала поиска минимума точками (метод золотого сечения), вычисления значения Ф(х) в них, сравнения значений и отбрасывания той части интервала, на которой заведомо отсутствует минимум. Такой подход аналогичен методу бисекции определения корня как по логической схеме, так и по минимальному требованию к гладкости минимизируемой функции Ф(х). Для метода золотого сечения даже не требуется непрерывности функции, могут существовать разрывы первого рода. Достаточно, чтобы Ф(х) была унимодальной.
Унимодальная функция. Функция Ф(х), заданная на интервале а^х^Ь, называется унимодальной на [а, 6], если существует единственная точка минимума Ф(х)
ф(х*)= min Ф(х)а^х^Ь
и если для любых двух точек xls х2е [а, Ь^ выполняются соотношения: из неравенств Xi<x2<^* следует
Ф(Х1)>Ф(х2),
оиз неравенств
V///*-.—j—-чk—i f^^lа х1 х2 b а х1 х2 ьа)Ь)Рис. 9.21V///*-.—j—-чk—i f^^lа х1 х2 b а х1 х2 ьа)Ь)Рис. 9.21i I х2>хг>х* следует ^Ф^1)<Ф(^)- а х1 х2 d
V///*-.—j—-чk—i f^^l
а х1 х2 b а х1 х2 ь
а)Ь)
Рис. 9.21
V///*-.—j—-чk—i f^^l
а х1 х2 b а х1 х2 ь
а)Ь)
Рис. 9.21
Пусть известно, что
' Ф(х) унимодальна на [а, Ь\ Тогда по любым
двум значениям Ф(хх), Ф(х2) можно указать интервал, в котором находится точка х*, минимизирующая Ф(х), причем этот интервал имеет длину, меньшую первоначальной. Пусть для определенности х1<х2, возможны следующие три варианта (рис. 9.21):
J а) Ф(хх)>Ф(х2);
Ь) Ф(хх)<Ф(х2);
‘ 'с) Ф(Х1) = Ф(х2).
В случае а) следует отбросить интервал [а, х^, в случае Ь)— [х2, i], в, случае с)—интервалы [у, хх], [х2, 5], поскольку на этих интервалах не может находиться х*, в противном случае нарушается предположение об унимодальности Ф(х).
В зависимости от стратегии выбора двух точек xt, х2 на интервале имеются различные методы поиска минимума унимодальной функции, отличающиеся скоростью стягивания интервала неопределенности, содержащего х*, к точке х*.
Метод золотого сечения. Золотое сечение, открытое Евклидом, состоит в разбиении интервала [а, 5] точкой хг на две части таким образом, чтобы отношение длины всего интервала к большей части было равно отношению большей части к меньшей:
Ь—а _Ь—ххb—xv xY—a
Легко проверить, что золотое сечение производят две точки:
х2 = я + т(/) —я), т = (1 — v5)/2.
Значение 0,618.
Алгоритм метода золотого сечения следующий:
вычисляют значения х19 х2;
вычисляют Ф(хх),_ Ф(х2);
если Ф(х1)<Ф(х2), то для дальнейшего деления оставляют интервал [а, х21;
если Ф(х1)>Ф(х2), то для дальнейшего деления оставляют интервал [хп 6].
Процесс деления продолжают до тех пор, пока длина интервала неопределенности не станет меньше заданной точности 8.
Заметим, что точка хх производит золотое сечение интервала [а, х2], точка х2—интервала [xn 6^. Поэтому на оставшемся
Рис. 9.22
интервале нужно определить одну точку, производящую золотое сечение. После этого процесс повторяется. На каждом шаге длина нового интервала неопределенности равна ~ 0,618 длины старого интервала.
Схема алгоритма метода золотого сечения. Представим блок-схему алгоритма в следующем виде (рис. 9.22).
Применение программы В5А0. Для минимизации функции одной переменной можно использовать библиотечную программу В5А0. Пусть необходимо найти минимум функции
Ф(х) = х2 + ех
на интервале [—1, 0] с относительной точностью определения: **, равной 0,001, и абсолютной точностью 0,00001. Программа может иметь следующий вид:
REAL E,E1,A,B,X,R
INTEGER N,I EXTERNAL F
DATA E,El,A,B/l.E3,l.E5,l.,0./,N/100/
сс с с1с ссс с с1с сDATA I/O/
с
с с с
1
с с
с
с с с
1
с с
ОБРАЩЕНИЕ К ПРОГРАММЕ B5A0
CALL B5AO(F,E,E1,A,B,N,X,R,I)
ВЫВОД НА ТЕРМИНАЛ ТОЧКИ МИНИМУМА X И
ЗНАЧЕНИЯ F(X),
ИНДЕКСА ОШИБОК
WRITE (5,1) X,R,I
FORMAT (2Х/Х = ,Е 13.6/F(X)=',Е13.6/1=', 12)
END ^
ЗНАЧЕНИЕЗНАЧЕНИЕПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ
ЗНАЧЕНИЕ
ЗНАЧЕНИЕ
ФУНКЦИИ
SUBROUTINE F(X1,F1)
REAL XI,Fl
F1=X1*X1+EXP(X1)
RETURN
END
Глава 10ОБЫКНОВЕННЫЕ ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ
• 10.1. Дискретизация
Введение. В этой главе рассматриваются обыкновенные дифференциальные уравнения, наиболее общий вид которых — система дифференциальных уравнений
(10.1.1)
определенная на интервале а^х^Ь. Если дополнительные условия для однозначного нахождения решений ^(х) задаются в одной точке (для определенности х = а) интервала [я, 6], то это задача Коши, если в нескольких (двух краевых точках интервала [а, /)] (х = а. х = Ь^ то это краевая задача.
Далее задачи для дифференциальных уравнений (Коши, краевые) делятся на два класса: линейные и нелинейные.
Линейная задача определяется линейными дифференциальными уравнениями и линейными дополнительными условиями. Постановка нелинейной задачи содержит либо нелинейное уравнение, либо нелинейное условие, либо то и другое.
Всюду ниже предполагается, что решение поставленной задачи у(х) для (10.1.1) существует и единственно.
В гл. 5 были описаны некоторые аналитические методы решения задач для (10.1.1), конечная цель которых—получение явной формулы точного решения у^х\ Заметим, что решение у (х), вообще говоря, является элементом бесконечномерного пространства; для непрерывных по своим аргументам правых частей Цх, у), например, у(^€ еС1 [а, Ь^. В реализации численных методов имеют дело только с элементами конечномерных пространств, поэтому необходимо перейти от систем уравнений (10.1.1) к системам алгебраических уравнений, в которых неизвестными являются векторы конечной размерности,—произвести дискретизацию исходной задачи.
Дискретизация линейных задач приводит к системам линейных алгебраических уравнений (см. гл. 8), нелинейных—к системам нелинейных алгебраических уравнений (см. гл. 9).
Этапы дискретизации. Для простоты изложения будем рассматривать одно уравнение
у)(10.1.2)
с начальным условием
у(я)=/0). (Ю.1.3)
Пусть решение задачи (10.1.2),(10.1.3) Их)е
е¥=Сх\а, by
Первый этап дискре- тизации состоит в пере- хо х1 х2 хз ... Xm-iXm х х°Де к конечномерному рис 0пространству функций
’¥т) которое приближает
любой элемент пространства решений ¥=С1[а) й] тем точнее, чем больше размерность т конечномерного пространства.
Например, пространством ¥т может быть: 1) пространство полиномов (w —1)-й степени
^И = {«о+а^+-+««-1^ Ч-
Выбирая коэффициенты аь можно по теореме Вейерштрасса при т-^ш сколь угодно точно приблизить любую непрерывную функцию ^(х);
пространство кусочно-постоянных функций
^тМ=Ч^тМ=Ч"aY, х0<х<х1, х0 = я,а2, хх<х^х2,
^тМ=Ч
^тМ=Ч
«т, Хт_х<Х<Хт, Хт = Ь.
При т-^оо длина частичного интервала стремится к нулю и выбором сц можно аппроксимировать непрерывную функцию у(х) как угодно точно (рис. 10.1);
пространство параболических сплайнов (см. гл. 6)
Ум^ =Ум^ =J 8^х^ = а$^а^х-¥а^х2, х^х^х^, 0^i^m—l, S,i(x1) = Sf+i(xi), Si^x^Si+i (xf), l^i^m— 1.
Ум^ =
Ум^ =
Размерность пространства М определяется числом свободных параметров, при фиксированном т оно равно М=3т —2^т—1) = = ди+2.
Второй этап состоит в замене исходной задачи (10.1.2), (10.1.3) для функции у^ другой задачей, «близкой» для функции у^х\ но уже поставленной для ^т(х). Фактически это задача нахождения чисел аь определяющих элемент ¥т. Различные численные методы решения дифференциальных уравнений отличаются именно этими двумя этапами дискретизации.
Третий этап—решение полученной системы линейных или нелинейных алгебраических уравнений, т. е. определение чисел at или, что то же самое, элемента ,ут(^).
376
Четвертый этап—восстановление по элементу ^ш(х) «близкой» функции у(х), принадлежащей У. Функцию у^ называют приближенным решением исходной задачи.
Пятый этап — оценка погрешности приближенного решения у в норме У, т. е. оценка нормы
№)~Ж) Ну
Четвертый и пятый этапы часто заменяют следующими: определение проекции решения у(х) на Ут—определение у^е¥т. Затем производится оценка погрешности
H/mW-yMlI^Л
в норме Ym.
0.1.3 Примеры дискретизации. 1) Рассмотрим задачу (10.1.2), (10.1.3) в предположении, что
ti=0,y^ = 0,
Ж yW^+fAx^y,где функции /,(х) являются полиномом не выше ^-й степени;,Ж)=Ло+А1^+ - +fi,kx\ i = L
Проведем дискретизацию с помощью пространства полиномов, т. е.
Ут + 1(^) = «о + «1^+ - +атХт.(10.1.4)
Для того чтобы получить систему уравнений, определяющую аь подставим (10.1.4) в (10.1.2), (10.1.3) и приравняем в левой и правой частях равенств коэффициенты при одинаковых степенях х. Из (10.1.3) определяем
ао=0.(10.1.5)
Из (10.1.2) находим
а1+2а2х+За3х2 + ... +татхт~1 =/0,0+/0дХ + ... +.fo,kXk++(/1,о+/1,1*+ - +Л,кХк^а1х+а2х2 + ... +«mxm).
Отсюда получаем соотношения для коэффициентов а^ полинома: ai —fo,^
«3=^(/o.2+/i.o«2+/i.i<Zi),(Ю.1.6)
^m = ”UVm~ 1^/1Д)&т-1~^"/\.Д ^т-2"^" — "^/l.m-2 ^1 )•
Уравнения (10.1.5), (10.1.6) и есть дискретная задача—система уравнений для а^ Из вида этой системы следует, что для любого
т числа at могут быть последовательно определены. Причем если т—2>к, то общая формула для am(m>k-Vl) следующая:
^т (/1,0 ^т- 1 ~И/1,1 ^т- 2 “Ь “^/1,к ^m-k-1 )•
Пусть для примера
/о(^)=1-^ Л(х)=1+х.
Тогда соотношения (10.1.5), (10.1.6) принимают вид
12
«0=0, «1 = 1, «2=1, «3 = з(1+1) = р
_V Л_5 -V2 5V3
°4-4\* +3/~Т2’ а5-5\3+Т2/ 60’ 1 /1
‘— ЛИ 'т _ 1 + ^т “ 2
Из последнего равенства находим оценку
«т^^т-2, ^=3,4,...,
Откуда получаем
2k 1
^ГТГйгкГ*!’ * = 1’ 2’
2к
агк*^гзТТ^Гну
Эти оценки показывают, что последовательность ут(х) при w^oo равномерно сходится для любого b в интервале 0^х ^Ь к точному решению исходной задачи Коши.
Четвертый этап дискретизации в данной задаче тривиален, можно положить
?(*)=/«(*)•
Оценка погрешности у (х) выполняется следующим образом. Вводим функцию
Е(х)=у(х)-у„(х).
Для функции е(х) получаем сходящийся ряд
£М= I °кХк,к = т +1
где ак определяются формулами (10.1.6). Абсолютная погрешность в равномерной норме С [0, b ] равна
ОООО Lk
g= max |е(х)| = £ akbk.
О^х ^bк=т + 1к=т+1
) Рассмотрим ту же задачу с ^=0, ^(0)=1, но в качестве пространства ¥т возьмем пространство кусочно-постоянных фун-
кций. Поскольку в точках разрыва у функций ут(х) не существует производной, перейдем от задачи (10.1.2), (10.1.3) к эквивалентному интегральному уравнению
/(*)=1 + f[/o(5)+/i(s)),(5)]&-(10.1.7)
о
Подставляя функцию ут(х) в (10.1.7), получаем систему соотношений
°i = 1+f [/о^)^-/!^)^]^ 0<х<х1;
«2 = «1 + f [/0(5) +A(S )°2 ] <&, XV<X^X2,
ат = аю_х+ f [fo(s)+/i(s)«m]^ xm_x<x^b.
Эти соотношения противоречивы, поскольку слева в равенствах — константы, а справа—функции. Если |х- — ^.J достаточно малы, то можно эту систему соотношений заменить «близкой», но такой, что полученная система однозначно будет определять av Положим
«i = 1+ f [/o(s)+/i(s)«i]^ о х2
«2 = «1+ J [/o(5)+/i(s)a2]^,
«m = «m-l+ f [/o(s)+/l(s )»„]<&•
Отсюда определяются последовательно все аь Действительно,
i + M5)^
ах =,
i - f/AHОх2
«1+ Ш^И«2=§,
«т-1+^f fo^ds
Интегралы здесь можно вычислить с помощью квадратурных формул. Положим /о(х) = 0, h = хх — хН1) /1(х) = Х = const. Тогда при условии, что |ХЛ|<1, получаем явную формулу
1а,—(1 —ХЛ)*’1а,—(1 —ХЛ)*’1 ^/' ^т.1 ^/' ^т.
1
а,—(1 —ХЛ)*’
1
а,—(1 —ХЛ)*’
1 ^/' ^т.
1 ^/' ^т.
Заметим, что h=xm]m, отсюда
Точное решение исходной задачи в данном случае Jу(х) = еХ
Заметим, что при т->ш в точке х = Ь из (10.1.8) следует существование .предела, равного
"/ хь\~т
е Xb = lim I 1) ,
m—*оо \Шу
совпадающего со значением точного решения в точке х = Ь.
Определим кусочно-постоянную функцию у(х) по точному решению
y^ = eXxs xi_1<x ^xb l^i^m.
Погрешность Ym(x) в равномерной норме равна
шах1 <k<mшах1 <k<m
шах
1 <k<m
шах
1 <k<m
Дискретизация по формулам численного дифференцирования. Дискретизация упрощается, если ограничиться поиском решений дифференциальных уравнений в конечном числе точек интервала [я, &].
Разобьем интервал [а, /)] точками xi с постоянным шагом h=xi—xi_1 (l^i^m\ х0 — а, xm = b.
Точное решение у (х) дифференциального уравнения
dy dx
в точках хх принимает значения j>(xf), 1^1 ^т,
а дифференциальное уравнение приводит к равенствам
J>w^by^\(10.1.9)
Если в формуле (10.1.9) значение производной
380380dxx 7
380
380
\
заменить на «близкое» выражение, которое определяется через у(х^, то получим систему т уравнений с т неизвестными, являющуюся дискретной задачей, которая соответствует исходной задаче.
Например, можно положить (см. ниже формулы численного дифференцирования)
Тогда уравнение (10.1.9) принимает вид
У (Xi+1)-у (xt)=hf (х„ у (xf))+О (А 2).
Отбрасывая слагаемое О (Л2), получаем «близкое» уравнение yi-H-yi = hAxbyt\(10.1.10)
Здесь yt—точное решение дискретной задачи (10.1.10). Пусть найден вектор yb O^i^m. Это и есть приближенные значения для величин y(xt) (рис. 10.2).
Множество точек xb O^i^m, называют сеткой, х{—узлами сетки, h—шагом сетки. Уравнение (10.1.10)—это разностное уравнение или разностная схема.
среднеквадратичнаясреднеквадратичная1Ы1 = шах Ы, O^z^w норма1Ы1 = шах Ы, O^z^w нормаДля оценки погрешности вводится норма вектора у = \уь O^i^m), которая называется сеточной нормой, например: равномерная норма
среднеквадратичная
среднеквадратичная
1Ы1 = шах Ы, O^z^w норма
1Ы1 = шах Ы, O^z^w норма
(
т \ 1/2
Ё кУ1) •i=l /
Ниже рассматривается только равномерная норма. Погрешность решения дискретной задачи задается величиной
II У1~У^ II.
Формулы численного дифференцирования. Пусть х—любой из узлов xt интервала [а, b ]. Тогда другие узлы могут быть вычислены по формулам
x+^/z, ^ = 0, ±1, ±2, ...(10.1.11)
Приближенное вычисление производной функции у(х)
в узле х по значениям функции в узлах у^хА-кЦ называется численным дифференцированием.
Предположим, что у^еС2 [а, й], х<Ь. Разложим ^(х+Л) в ряд Тейлора до членов второго порядка. Имеем
у^х-^Н^у^Л-^х^Н-^О^У
Отсюда находим, что
*н=*±^НИ+0(6).
dxxhх
Учитывая, что х—это узел хь получаем двухточечную формулу для первой производной—дифференцирование вперед:
, ^((10.1.12)
‘ dx хh
Обычно под формулой численного дифференцирования понимают приближенное равенство
dx[X‘>~ h
Разность ц.Фид У<хнЛ-Укх^
вычисленная на функции у(х)еС2[а, Z>], называется погрешностью аппроксимации. Для (10.1.12) имеем
R = O^h\ /z^O.
Точностью (или порядком точности) аппроксимации называется порядок степени Л, с которым 7? (Л) стремится к нулю при Л^О. Для (10.1.12) порядок точности—первый.
Аналогично выводится двухточечная формула для первой производной—дифференцирование назад:
(10.1.13) dxxh
Более точной является двухточечная формула для первой производной—центральная разность
^М-'^-'У^-'+ОЦ2), 16,<™-1.(10.1.14)
dxx 7Inх '
Формула (10.1.14) верна, если у^еС3 [а, /)].
Для первой производной можно выписать многоточечные формулы, например трехточечная формула имеет вид
, , =£ /^
dxx 72hх 7
В общем виде многоточечная формула имеет (при достаточной гладкости j(x)) вид
ахк = 0
где коэффициенты ак выбираются так, чтобы порядок точности формулы был р. Аналогичный подход применяется и для высших производных.
Теорема 10.1. Пусть ^(х)еС4[а, 6]. Тогда для второй производной справедлива формула численного дифференцирования
(10115)
для внутренних узлов 1 i^т — 1.
Доказательство. Разложим y^x-Vh\ y(x — h) в ряд Тейлора до членов четвертого порядка
y^h\=y^^^hV- ^М^Ц ^М^ + О^4),
y^x-h)=y^-^^h+^ УИ^2-; ti^h3 + O(h4\
Подставляя правые части в выражение
y^^-ly^-Vy^x-lt)
получаем формулу (10.1.15), что и требовалось доказать.
Простейшие разностные схемы задачи Коши. Аппроксимация, устойчивость, сходимость. Рассмотрим исходную задачу Коши на сетке xb O^i^m:
М =Ж у (х,)), у (х0) =у<°\
Заменяя левую часть дифференциального уравнения формулами (10.1.12) — (10.1.14), получаем:
^*±11-2^ =f(xhy (х;))+О (А), 0 zX m -1,
=Ж У М)+О (А), 1 < i < т,
)^^^^^l<i^m-L
Если отбросить погрешность аппроксимации производных в этих соотношениях, то получим разностные схемы:'
^ЖЖМ o^/^w-1, Уо=у№;(10.1.16)
рассмотрим(10.1.20)(10.1.21)(10.1.22)(10.1.23)рассмотрим(10.1.20)(10.1.21)(10.1.22)(10.1.23)
рассмотрим
(10.1.20)
(10.1.21)
(10.1.22)
(10.1.23)
рассмотрим
(10.1.20)
(10.1.21)
(10.1.22)
(10.1.23)
(10.1.17)(10.1.17)y-L^-L=f(xi, y^, Kz4w, y0=y№;
(10.1.17)
(10.1.17)
Л+ W^^^’у^ ^^т-Х’ У^=Ут- <10118)
Разностные схемы (10.1.16), (10.1.17) аппроксимируют исходную задачу Коши для достаточно гладких функций на сетке с первым порядком точности, схема (10.1.18) — со вторым порядком точности.
Схема (10.1.16) называется явной разностной схемой, схемы (10.1.17), (10.1.18)—неявными. Термины связаны с тем, что формула (10.1.16) дает возможность вычислить значение yi+1 в следующей точке сети по явной формуле
* yi+i=yi+VUi,yi),
если известно, значение уь в то время как формулы (10.1.17), (10.1.18) задакУг ^значения в следующей точке как неявную функцию от значений в предыдущих точках.
Схема (10.1.18)—незамкнутая разностная схема в том смысле, что система уравнений (10.1.18) имеет ^+1 неизвестное yb O^i^m, и только т уравнений. Замкнуть систему можно по-разному. Чтобы не потерять второй порядок точности аппроксимации, обычно заменяют
Ахь yO^E/fo-i. у<-1)+/к+1, л+1)];
шаг сетки увеличивают вдвое и получают следующую неявную схему:ь
^^^=кЖ, yiM^v yi+1)],(10.1.19)
п 2
l^z^/и, у0=/0).
В качестве примера построения разностных' схем модельную задачу
^ = Ху, ^(0)=У(О)> О^х^Ь,где X—константа. Точное решение (10.1.20):^(х)=^(0)еХх.
Разностная схема (10.1.16) примет вид
Уи-^Уг^Уь 0^i^m-l, y0=yw.
Разностная схема (10.1.17)
У1=У1-1^ЬХуь \^i^m, y0=yw.
Разностная схема (10.1.19)
Ун1=Уе+у О+Л+1], ^<^ Уо=/°’-
Точные решения уравнений (10.1.23)—(10.1.23) следующие: yi+1=(l+/zX)y,-, yi=^\+hXyy№, O^i^m;
Г^1- »=(Г^10’
при условии ЛХ/1;
_ 1+АХ/2 ^+1Т^Х/2_ 1+АХ/2 ^+1Т^Х/2Уь У1 =Уь У1 ='1+АХ/2\1 — АХ/2/'1+АХ/2\1 — АХ/2//0), O^zX/0), O^zXт.т.
_ 1+АХ/2 ^+1Т^Х/2
_ 1+АХ/2 ^+1Т^Х/2
Уь У1 =
Уь У1 =
'1+АХ/2\
1 — АХ/2/
'1+АХ/2\
1 — АХ/2/
/0), O^zX
/0), O^zX
т.
т.
при условии /гХ/2. Точное решение (10.1.20) в узлах сетки принимает значения
у(х;) = еХх‘у(0) = ehXly<0\ O^i^m.
Отсюда находим погрешность решения соответствующей разностной схемы:
r = ((l -VhXy — ehXl>)y(0\ гЦ^НХ^-е^ /zX/1,
/ / 14-ЛХ/2\Miiл
Г = Тип ~е Р ’ ЛХ^2‘— ПК]!! у
Обозначим Р(ЛХ) коэффициент преобразования yt в ^l + 1 при переходе из узла сетки х- в следующий узел. Для трех рассматривае
мых схем имеем:
P(/zX) = (l-/zX),
P(/?X) = (l-/zX)"1,
P(/zX) = (l+/zX/2)(l-/zX/2)"1.
Тогда погрешность решения разностных схем запишется в форме
г=у^Р-еих^Р1-ЧР1"2екЧ...^^
1^т.(10.1.24)
В этом выражении первый сомножитель связан с начальным условием, второй — с погрешностью аппроксимации дифференциального уравнения разностным на одном шаге, третий—с накоплением погрешности по шагам /=1, 2, ..., т.
Разностная схема называется устойчивой на модельной задаче (10.1.20), если накопление погрешности по шагам не зависит от числа шагов, т. е.
£ р*-*е*М*-1) k=l£ р*-*е*М*-1) k=lт.т.(10.1.25)(10.1.25)
£ р*-*е*М*-1) k=l
£ р*-*е*М*-1) k=l
т.
т.
(10.1.25)
(10.1.25)
где константа с не зависит от т.
Разностная схема называется сходящейся на модельной задаче (10.1.20), если
шах |Л-^И/)НО при 7г—*0,
1 ^i^m
38538513 Ю. П. Боглаев
385
385
сходящейся с р-м порядком, если
max |yt—y^x^\ = O^hp>), h-^Q.
X^i^m
Теорема 10.2. Если разностная схема устойчива на модельной задаче (10.1.20) и имеет р-й порядок точности аппроксимации дифференциального уравнения на шаге, то схема сходится с р-м порядком к точному решению.
Доказательство. По условию,
P-ehX = O^hp\
Но тогда, переходя в (10.1.24) к оценкам модуля г и учитывая (10.1.25), получаем
max |r|W0)l \P-ehX\c = O^hp\
X^i^m
что и требовалось доказать.
Коротко утверждение теоремы формулируется так: аппроксимация и устойчивость схемы дают ее сходимость.
Пусть, в модельной задаче Х<0; пусть, кроме того, \P^\^q<\.(10.1.26)
Тогда схема устойчива. Действительно, в этом случае (Л^Л^т) имеем
p/-l+pi-2eto+ +e^i-l)|^|pi-l+pi-2++1|^_J_=C
1-9
т. е. выполняется неравенство (10.1.25). Для рассматриваемых трех схем условие устойчивости (10.1.26) — ограничение на выбор шага h— принимает вид
11 -VhX\^q< 1;11 -VhX\^q< 1;11-АХ11-АХ^^<1;^^<1;1+ЛХ/21-ЛХ/21+ЛХ/21-ЛХ/2^q<L^q<L
11 -VhX\^q< 1;
11 -VhX\^q< 1;
1
1-АХ
1
1-АХ
^^<1;
^^<1;
1+ЛХ/2
1-ЛХ/2
1+ЛХ/2
1-ЛХ/2
^q<L
^q<L
Заметим, что при больших значениях X эти условия ограничивают шаг h только для первой разностной схемы.
Пусть в модельной задаче Х>0. Тогда все рассматриваемые схемы неустойчивы. Действительно, в этом случае для достаточно малых h имеем Р>\, далее
|pi-i + pi-2e*x+ +ea«-i)|>|p(-i + pi-2++1|=£11_1, 2</<т.
Но правая часть этого неравенства стремится к бесконечности при z = ^-*oo.
Не следует считать, что неустойчивые схемы нельзя применять для вычислений. Важным является не свойство устойчивости, а свойство сходимости разностной схемы. Поэтому если в (10.1.25) c(/z)->oo, Л-^0, но при этом
^P^-e^cW-O, h^, то схема является сходящейся.
В качестве примера рассмотрим схему (10.1.21) при у(0)=1, /)=1 для двух уравнений:
здесь Х= —1, схема устойчива;
dx
здесь Х= + 1, схема неустойчива.
Для устойчивой схемы при h = 0,1; 0,01 разность между точным решением в точке х=1 и разностным соответственно равны: е"1-(1-0,1)1О = 0,019 при А = 0,1;
е-1 —(1 —0,01)1ОО = 0,0018 при Л = 0,01.
Для неустойчивой (но сходящейся) схемы е —(1+0,1)1О = 0,12 при /2 = 0,1, е-(1+0,01)10° = 0,013 при /2 = 0,01.
Из приведенных числовых значений легко заметить, что скорость сходимости устойчивой схемы на порядок по Л выше, чем сходящейся, но неустойчивой схемы.
• 10.2. Задача Коши. Методы Рунге—Кутта
В 10.1 приведены разностные схемы, которые имеют невысокий порядок точности аппроксимации по шагу /2. Такие схемы на практике используются редко, поскольку они обладают медленной сходимостью к точному решению. Однако при построении более точных разностных схем необходимо, чтобы правые части дифференциальных уравнений были достаточно гладкими. Обычно число непрерывных производных правой части уравнения должно быть на единицу больше порядка точности. Поэтому недостаточная гладкость правых частей уравнений может быть главной причиной использования разностных схем невысокого порядка точности.
Применение рядов Тейлора в построении разностных схем. Покажем, как с помощью рядов Тейлора можно построить схему произвольного порядка точности аппроксимации дифференциального уравнения на шаге.f
Рассмотрим задачу Коши
уМ=У<0)(10.2.1)
на интервале [а, b ]. Разобьем интервал на т отрезков узлами xv с постоянным шагом /2. Точное решение задачи (10.2.1) в точке ^ +1 на любом из частичных интервалов [xf, х{+х ], 0 ^ i ^ т — 1, можно представить в виде ряда Тейлора с центром в точке х?
13*387
Имеем для функций /(х, у) (р+1 раз непрерывно дифференцируемых по обоим аргументам) формулу
yM+W№+^2+-"+^'+°^(10.2.2)
Производные в (10.2.2) вычисляются согласно дифференциальному уравнению (10.2.1) следующим образом:
УМ=/(^Я
v 7 бхудх ду у ду\дх ду у
yWXxV=^p-V4+^^^(Ю.2.3)
Здесь следует положить ^=у(х)— точное решение (10.2.1), а затем подставить x = xv
Если отбросить в (10.2.2) остаточный член, то получим дискретное уравнение
^+!=УгУкД^У.)+у ^^У^^,А^ Му^
+4^ЖЛ)+--+^(',Ж'(10'24) где O^i^m — 1, %=^(0) задано в (10.2.1). Уравнение (10.2.4) определяет двухточечную явную разностную схему. По формуле (10.2.4) можно последовательно определить все значения yt (рис. 10.3), начиная с yt и кончая ут.
Погрешность аппроксимации (10.2.1) разностным уравнением (10.2.4), очевидно, равна величине отброшенного остаточного члена, т. е. О ^hp^ при Л^0. Если взять ^=1, то получаем схему
Ji+i =У, + кДхь У;\ (10.2.5) совпадающую с (10.1.16). Это явный метод Эйлера. Если взять ^=2, то получаем схему
уи-i =yt+h ^Д^^гДх^гДх^ (*л))]’(ю.2.6)
порядок аппроксимации которой 6 (Л3). Это так Ут называемый исправленный метод Эйлера.
^ Для получения раз- т ностных схем методом
рядов Тейлора необходи-
388
мо иметь аналитические выражения полных производных по х от функции f^y^, а именно (10.2.3). Это может быть достаточно громоздкой задачей. В таком случае ряды Тейлора не применяются, а используются методы Рунге — Кутта.
Методы Рунге — Кутта. Идея методов Рунге — Кутта состоит в том, чтобы представить дискретную задачу, соответствующую (10.2.1), в виде
^+1=Л + ^ф(^5 Уь h\ ^^i^m-\,(10.2.7)
где функция ф (х, у, /z) приближала бы отрезок ряда Тейлора (10.2.2) с точностью O(/zp+1) и в то же время не содержала бы производных /(х, у). Таким образом, в основе методов Рунге — Кутта лежит подгонка ряда Тейлора.
Заметим, что метод Рунге—Кутта первого порядка (р=1)—это метод Эйлера, так как здесь в вычислениях используются только значения /(х, у).
Покажем на примере метода Рунге — Кутта второго порядка, как выводятся формулы, т. е. определяется функция ф (х, у, h) в (10.2.6). Будем искать ф в следующем виде:
ф(х, у, tiy=cj\x, y)+c2f(x+ha2, y+hb21f^x, у)).(10.2.8)
В формуле (10.2.8) сх, с^ а^ Ь21— пока неизвестные константы, которые находятся из сравнения с рядом Тейлора. Разложим второе слагаемое в (10.2.8) в ряд Тейлора с центром в точке (хьу^ до членов порядка О (Л2); получаем
Ф (^, Уь^cJ^b Ji)+с2Дхь Ji)+с2 ^ ^хь Ji) ha2 +
+ с2^ (xi’ yi>hbnfkxb У^О^.(10.2.9)
Соответствующий отрезок ряда Тейлора (10.2.2), (10.2.3) имеет вид (10.2.6). Отсюда, подставляя (10.2.9) в (10.2.7) и приравнивая коэффициенты при соответствующих слагаемых в (10.2.6), получаем систему равенств
с1+с2 = 1, с2л2=1/2, С2^21 = 1/2- Эта система трех уравнений с четырьмя неизвестными имеет решение c^l —ос, с2 = ос, a2 = b2Y = 1/2ос, зависящее от произвольного параметра а/0. Обычно применяется значение а =1/2. Тогда метод Рунге—Кутта второго порядка можно записать в следующей форме:
yi + i=yi+^k1+k2y 0<z^m-l,
4 k^f^yi),(10.2.10)
ki=Axi + h, yt+hkvy
У Z1,25 -^Уг1,11 -^У1!1,00 <^Уо !|Ii0,0Q10,2 XУ Z1,25 -^Уг1,11 -^У1!1,00 <^Уо !|Ii0,0Q10,2 XРис. 10.4Рис. 10.4где ^о=^(О)- Заметим, что метод второго порядка имеет погрешность аппроксимации О (Л3), для перехода из точки xf в точку х/+1 требует дважды вычислить правую часть дифференциального уравнения /(х, у), чтобы определить kv к2.Например, пусть имеем задачу Кошигде ^о=^(О)- Заметим, что метод второго порядка имеет погрешность аппроксимации О (Л3), для перехода из точки xf в точку х/+1 требует дважды вычислить правую часть дифференциального уравнения /(х, у), чтобы определить kv к2.Например, пусть имеем задачу Коши
У Z
1,25 -
^Уг
1,11 -
^У1!
1,00 <
^Уо !|
Ii
0,0Q10,2 X
У Z
1,25 -
^Уг
1,11 -
^У1!
1,00 <
^Уо !|
Ii
0,0Q10,2 X
Рис. 10.4
Рис. 10.4
где ^о=^(О)- Заметим, что метод второго порядка имеет погрешность аппроксимации О (Л3), для перехода из точки xf в точку х/+1 требует дважды вычислить правую часть дифференциального уравнения /(х, у), чтобы определить kv к2.
Например, пусть имеем задачу Коши
где ^о=^(О)- Заметим, что метод второго порядка имеет погрешность аппроксимации О (Л3), для перехода из точки xf в точку х/+1 требует дважды вычислить правую часть дифференциального уравнения /(х, у), чтобы определить kv к2.
Например, пусть имеем задачу Коши
■4 ^=х2+/, у(0)=1, 0<х^0,2.(10.2.11)
Выполняя два inara в соответствии с (10.2.10) при А=0,1, получаем (рис. 10.4):
у, = 1+0,05 ^,+^ = 1,111, ^ = 1,
к2 =0,12+(1+0,1)2 = 1,22;
у2 = 1,111 + 0,05 (^ + А:2) = 1,2515307, ^=(0,1)2+(1,111)2 = 1,244321, к2 = (0,2)2+(1,111+0,1244321)2 = 1,5662924.
Подчеркнуты предполагаемые верные значащие цифры точного решения у (0,1), у (0,2).
Для метода Рунге — Кутта произвольного порядка р по аналогии с (10.2.7), (10.2.8) формула записывается в форме
гр
yi+i=yi + h £ Cjkj, 0^z^m-l, 1J = 1
5 ^i =Дхк yj,
kj=f^xi+haj, yt+h £ bjsks\ 2<j <m.
Для конкретного значения p соответствующие константы с^ а^ bjs находятся по той же схеме, которая использовалась при р = 2. Популярным среди методов Рунге—Кутта является метод четвертого порядка. Метод имеет погрешность аппроксимации OQi5\ соответствующие формулы имеют вид
390
Уи-1=У1+^кх-у2к2-у2к3 + к4\ 0^1 ^m-1, ^i =Дхь yt\
^-f^.y^,}.(10.2.12)
Х;+-, ^l‘ + 2^2
^4=/(^+Л, yt+hk3\
На каждом шаге необходимо четыре раза вычислить правую часть дифференциального уравнения. Выполним один шаг для задачи (10.2.11). Имеем
' Уо=Ь
у! = 1 + у (кх+2к2+2к3+kJ = 1,1114629,
^1 = 1, v
к2 = (0,05)2 + (1 + 0,05)2 = 1,105,.
к3 = (0,05)2 + (1 + 0,05 • 1,105)2 = 1,1160525,
. А:4 = (0,12) + (1 +0,1 • 1,116)2= 1,2456663.
Подчеркнуты предполагаемые верные значащие цифры точного решения .у (0,1).
Если рассматривается задача Коши для системы дифференциальных уравнений
у-=Мх, УьУп\ l^i^n, dx
Ы«)=.Н0)>
то формулы Рунге—Кутта четвертого порядка аналогичны скалярному случаю. Отличие в записи следующее: индекс i указывает теперь номер компоненты вектора, а индекс j—номер узла х^ ^^j ^т—\, в котором соответствующий вектор /^ имеет компоненты yU)=(yV\ уУ\ УпП\ векторы к имеют также и компонент, например кг=^к1Л, к12» * к1лУ Формулы Рунге — Кутта четвертого порядка для системы дифференциальных уравнений следующие: yU^=yU>^kx+2k2 + 2k3+kJ, O^j^m-l, ki,i=ft(xj, у^,уУ>), 1 <i<«,
k2.i=/i(xj+^, yV’+^ki,!,yV4^kx.^,
k3,i=fi(^j+^, у^к2л, у(„пЦк2^, k4,i=fi(xj+h, у^+Ькзд, уУЧ*^к3\
Рис. 10.5Рис. 10.5точного решений совпадает с уь т.точного решений совпадает с уь т.Оценка погрешности. Погрешность аппроксимации дифференциального уравнения разностным для метода Рунге—Кутта р-го порядка есть O^hp+1\ поэтому погрешность метода на одном шаге (локальная погрешность) дается оценкой
Рис. 10.5
Рис. 10.5
точного решений совпадает с уь т.
точного решений совпадает с уь т.
1л+1-?(^+1)1^С>(Лр+1),если в точке х^ значение
(10.2.13)
при условии, что правая часть дифференциального уравнения Дх, у) р+1 раз непрерывно дифференцируема в окрестности решения у (х). Интервал [а, b ], на котором ищется приближение к решению, содержит тДЬ — d^h шагов. Но только на первом шаге выполняется равенство (10.2.13). На следующем шаге равенство можно сохранить, причем под ^(х^) следует понимать точное решение, но не с условием у(х0)=у(0), а с условием у(х1)=у1 и т. д. (рис. 10.5). Погрешность на всем интервале \а, 5] (глобальная погрешность) определяется формулой
max |/,-;ф<)1-
* UKm
Чтобы оценить эту величину, необходимо уметь выражать разность решений дифференциальных уравнений через их разность в начальной точке xf.
Теорема 10.3. Пусть Kt (х) и УзМ—решения дифференциального уравнения,
Т=Ах,у\ ах
Пусть также функция Дх, у) непрерывно дифференцируема. Тогда^2 (++1) — ^1 (xi+l) =
(
*i+lк
f fy^, W^dxV (10.2.14)/
где y(x)—функция, расположенная между Уг и У2.
Доказательство. Поскольку У15 У2— решения, имеем
^2dx^2dx
^2dx
^2dx
\
' к
Вычитая из второго равенства первое и применяя теорему Лагранжа, находим
^У2-У^=Дх, Y^-Дх, Y^^Yi-U
где у (х) расположена между Yv (х) и У2 (х). Решая полученное линейное дифференциальное уравнение относительно z^=Y1-Yv с начальным условием У2 (xj— Yv (xj, получаем
z (х) = z (xf) exp ^f /у (x, у (x)) dx^.
Из последнего равенства при x = xi+1 имеем (10.2.14), что и требовалось доказать.
Обозначим решение дифференциального уравнения с условием У(х0)=у(0) через У0Ы; с условием У(х1)=у1—через У1 (х) и т. д., с условием Y (xm _ J=ут _ i — через Ym _ t (х). Тогда погрешность в любом узле хк можно представить в виде
к/хк\
Rk=yk-ykxA= X (^M-^-iMexpIf/H^ УМ)^)- (Ю.2.15) 1 = 1/
Теорема 10.4. Пусть погрешность на шаге h метода Рунге— Кутта имеет оценку
|у<+1 — ^(^/+1)К^₽+1
с условием (10.2.13); пусть также
Г^х,у^Цх\ L(x)^0,(10.2.16)
в некоторой окрестности решения у (х). Тогда для достаточно малых h глобальная оценка погрешности следующая*.
(
ъ\
^ L^dxy (10.2.17)
Доказательство. Заметим, что
шах |^—y(xf)|= max |Ak|,
X^i^mX^k^m
где Rk определяется (10.2.15). Но в силу (10.2.16) кхк
I Rk I ^ I I Y, (xf) - Yt _! (х;) I exp f fy (х, у (х)) dx ^
< ^ (сЛр+1)ехр J L^dx^ ^ (сЛ₽+1)ехрИЛ(х)</х
1=1Xti=l\а,
(
Ь\
JL^dx
Учитывая, что m = ^b — a^h, получаем
(
ь\
^ L^dx 1, а/
что и требовалось доказать.
Неравенство (10.2.17) дает оценку погрешности методов Рунге — Кутта порядка р и указывает, что при Л-*0 решения разностных схем методов сходятся к точному решению.
Однако если Л(х)>0 и интервал интегрирования \а, />] велик, то коэффициент при hp в (10.2.17) может быть столь большой, что для достижения заданной точности придется брать очень малый шаг К. При этом вычислительная погрешность (например, округления) может превосходить погрешность метода Рунге — Кутта.
Заметим, что если в (10.2.16) Е(х)^Х<0, т. е.
/у (*, ^)<Х<0, а^х^Ь,
то оценка | j^k |4 в доказательстве теоремы примет вид
1I с (£ — л) /zр exp (X (b — а)),а так как функция хеХх на всей полуоси О^х^оо ограничена^x^l-i, то оценка погрешности
|Х|
се ~max \Rk\^:-T7T‘hpХ^к^т 1^1
оказывается не зависящей от длины интервала интегрирования.
Оценка погрешности по правилу Рунге. Правило Рунге уже использовалось при оценке погрешности численного интегрирования (см. п. 7.4.2). Обобщим это правило на интегрирование дифференциальных уравнений. Заметим, что численное интегрирование можно рассматривать как интегрирование дифференциального уравнения в том частном случае, когда
Жз^/Н ^=Л4 Ж=0
b
для определения значения у (Ь) = f/(x) dx.
Если не удается получить для функции /(х, у) значения с, L^x\ необходимые, чтобы применить оценку погрешности (10.2.17), то применяют правило Рунге.
Для оценки погрешности сравнивают приближенные решения, полученные при различных шагах сетки. При этом используется следующее предположение: глобальная погрешность метода порядка р в точке Х( представляется в виде
>л(х£) = ^(х/) АР + 6>(А^+1);(10.2.18)
здесь x^a^ih. Если провести вычисления тем же методом порядка р, но с шагом, вдвое меньшим, то, согласно (10.2.18), получим
(10.2.19)(10.2.19)У У kx^ = w^+ О \^e*vX
(10.2.19)
(10.2.19)
394\
+ O(F+1),+ O(F+1),Рис. 10.6Рис. 10.6yt-ylt = w^yt-ylt = w^hp hp — —2Php hp — —2P
+ O(F+1),
+ O(F+1),
Рис. 10.6
Рис. 10.6
yt-ylt = w^
yt-ylt = w^
hp hp — —
2P
hp hp — —
2P
здесь х^аА-И—х^ Эти два соотношения позволяют найти, вычитая (10.2.19) из (10.2.18) значение w(x2i),
Подставляя последнее выражение в (10.2.19), получаем
Уц-У^^^^+О^*^.
Таким образом, с точностью до O^hp+1) при h^O погрешность метода имеет вид
‘ Ун У\хи)=2р^У’
где у^— приближенное значение, полученное в точке x2i с шагом /z; Ун—с шагом й/2; р—порядок метода. Например, для метода Рунге—Кутта второго порядка
для четвертого порядка
1У2(-У(^2.)|-^1Л-Ь.1-
Правило Рунге лежит в основе алгоритмов интегрирования дифференциальных уравнений с автоматическим выбором шага по заданной локальной точности. На каждом шаге при переходе от xt к х/+1 вычисления производятся дважды: с шагом h и шагом й/2 (рис. 10.6). Полученные значения у* и у^ служат для сравнения достигнутой точности на этом шаге
с заданной е; в случае систем уравнений модуль заменяется нормой Цу* — у**||. Если величина 8 больше 8, то шаг h уменьшается вдвое и процедура повторяется; если 8 значительно меньше с (указывается предел), то шаг h увеличивается вдвое, если 8 меньше 8, но незначительно, то переходим в точку х1+2 с тем же шагом к.
Автоматический выбор шага для специальных систем дифференциальных уравнений сопровождают более совершенной стратегией контроля точности (не на каждом шаге), чем описанная выше [20].
Применение программы В6А0. Пусть необходимо проинтегрировать систему уравнений
^■ = sin(x+y1y2),
$=cos(x2-y1+j2)
на интервале 0<х<1 с заданной абсолютной точностью 8= 10" 4 и начальными условиями ^1(0) = 2, у2(0) = (1)- Вывод на терминал значений ^(л:), ^М необходимо производить с шагом Я=0Д. Программа может иметь следующий вид:
REAL -k,B,Y(2),E,W(2,7),R(2)г^Ь
INTEGER N,J,I
EXTERNAL F,0
DATX X,B/0.,l./,Y/2.,l./,E/l.E-4/
DATA N,J,1/2,1,0/
С
ОБРАЩЕНИЕ К ПРОГРАММЕ B6A0
CALL B6A0(X,B,N,Y,E,J,F,O,W,I) END
с с
ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ ПРАВЫЕ ЧАСТИ УРАВНЕНИЙ SUBROUTINE F(X,Y,R) REAL X,Y(2),R(2) R(1)=SIN(X+Y(1)*Y(2))
R(2)=COS(X*X - Y( 1)+Y(2))
RETURN.
END
с с
ВНЕШНЯЯ ПОДПРОГРАММА, ОСУЩЕСТВЛЯЮЩАЯ
ВЫВОД ЗНАЧЕНИЙ Y(X)
SUBROUTINE O(X,Y)
REAL X,Y(2),H
DATA Н/0.1/
WRITE (5,1) X,Y(1),Y(2)
1
FORMAT (2X,'X=',F4.1,'Y(1)=',E13.6,'Y(2)=',E13.6)
X=X+H
RETURN
END
• 10.3. Жесткие уравнения
Примеры жестких уравнений. Понятие жесткого уравнения связано с жестким условием устойчивости разностных схем для таких уравнений. Рассмотрим модельную задачу Коши на интервале O^x^l:
^=Ху+а, у^=у№.
396
Пусть X—достаточно большое отрицательное число. Разобьем интервал [ОД] постоянным шагом h и запишем схему Эйлера (10.1.21):
у^—у^ИХу^ак, 0^i^m—l, h=\fm.
Для нее условие устойчивости (10.1.26) принимает вид
11+ЛХ|^^< 1.
При больших значениях |Х| это условие ограничивает выбор шага h величинами порядка
h~^-v(10-31)
Условие (10.3.1)—жесткое условие на шаг А, отсюда и возник термин «жесткие» уравнения.
При этом уравнения с большими Х>0 не относятся к классу жестких по той причине, что условие типа (10.3.1) практически не играет роли. Выбор шага обусловлен требованием хорошего приближения к точному решению. Действительно, задача
^=100у+Ю0, Ио)=о ах
имеет точное решение у = ехр(100х) — 1. Для того чтобы приблизить у(1) с точностью до двух верных значащих цифр, в схеме следует взять Л=10-6, тогда получим
У1О6 = (1 +Л • 100)1/А — 1 =2,67 • 1043, у (1) = 2,69 • 1043, в то время как условие типа (10.3.1) рекомендует выбирать шаг /z~10"2.
Совершенно по-другому обстоит дело в случае больших отрицательных X. Задача
^= — Ю0у+100, J,(O) = O
имеет точное решение у = 1 — ехр (— ЮОх) (рис. 10.7), из вида которого следует, что при значениях х>0,05 точное решение отличается от у=1 в третьем знаке. Решение разностной схемы
УфУф11у(х) = 1-ехр(-1ООх)у(х) = 1-ехр(-1ООх)о1 хРис. 10.7о1 хРис. 10.7yz= 1 — (1 — Л • 100)* описывает приближенно точное решение только если 11 — Л • 1001 < 1, откуда следует, что должно быть выполнено жесткое условие А <0,02. Если оно нарушено, например Л = 0,05, то будем иметь следующие значения у;. у0 = 0, у1 = 5, у2=15, ..., ничего общего не имеющие с точным решением.
Уф
Уф
1
1
у(х) = 1-ехр(-1ООх)
у(х) = 1-ехр(-1ООх)
о1 х
Рис. 10.7
о1 х
Рис. 10.7
Сравнивая точное и приближенное решения, г отмечаем, что в приближенном решении слага- емое (1—/z-100)*, кото-У
рое аппроксимирует ехр(— ЮОх), не позво-$
ляет увеличить шаг, хотя для значений х > 0,05 вклад этих слагаемых
в решение оценивается третьим знаком.
Этот факт демонстрирует общую ситуацию, характерную для жестких уравне^й: решение содержит слагаемое, вклад которого мал почти на всем интервале интегрирования, но для сохранения устойчивости методы, не ориентируемые на эти уравнения, требуют аппроксимировать это слагаемое достаточно точно, выбирая малый шаг /z. Для точности представления решения, как будет видно из дальнейшего, такой маленький шаг не нужен.
Более содержательный пример жестких уравнений дает система линейных уравнений
^=Ay+f, 0<х<1, у(0)=УО), где у,/—векторы, А—постоянная матрица, у которой все собственные значения Xz имеют отрицательные вещественные части такие, что
ReXz^Xo<0, i^i^n,
min |ReXj~l, max |ReXz|»l, max|ImXz|~l. (10.3.2) l^/^иL^z^m
В этом случае решение у (х) содержит быстропеременные слагаемые вида exp(Xzx), у которых ReXz« — 1, и медленно изменяющиеся слагаемые, у которых ReXz~ —1.
Здесь возникает та же ситуация, что и в первом примере: условие устойчивости в явной схеме Эйлера не дает возможности интегрировать с шагом /z, определяемым точностью медленно изменяющихся слагаемых для тех значений х, где exp (Xzx) с ReXz<§:l мало отличаются от нуля (рис. 10.8).
В технических задачах роль независимого переменного обычно играет время. Тогда быстро протекающие процессы (затухающие во времени) на фоне медленно протекающих порождают явление, описываемое жесткими уравнениями.
Для общих систем нелинейных дифференциальных уравнений понятие жестких уравнений вводится по аналогии с приведенными выше примерами. Пусть имеем задачу
^=Мх> Ух»у.\ о^%<1,
yi(0)=yiO), l^i^n,\
точное решение которой ^^(^(х), ..., у„(х)). Вычислим якобиан:
А (х) = ^(х, yt (х), у„(х)), 1 Z, У ^и.
Если матрица Л(х) при некоторых хе[0,1] обладает свойствами (10.3.2), то исходная система уравнений относится к классу жестких.
Для характеристики уравнений относительно явления жесткости вводится коэффициент жесткости
•8^=•8^=max Re( — Х,(х))max Re( — Х,(х))min Re(—ХДх))’min Re(—ХДх))’O^x^l,O^x^l,
•8^=
•8^=
max Re( — Х,(х))
max Re( — Х,(х))
min Re(—ХДх))’
min Re(—ХДх))’
O^x^l,
O^x^l,
где Xz(x)—собственные значения матрицы Л(х). На практике система считается жесткой, если S(x)>10, однако в задачах химической кинетики, управления, электрических цепей коэффициенты S^ достигают величин ~106 и более.
В качестве примера рассмотрим известную модельную задачу химической кинетики:
5?=-о,04^ + 10^3,/1(0)= 1,
^O.O^-IO^-S-IO7^, /2(0)=0,(10.3.3)
^=з-ю>1ь(о)=о.
Эта система имеет интеграл, равный
/l+/2+/3=h
поэтому сводится к системе второго порядка, для которой коэффициент жесткости S(x)~104 на интервале 0<х^1.
Не случайно в этом разделе интервал интегрирования строго фиксирован единичным 0^х<1. Большая длина интервала а^х^Ь интегрирования может привести к тому, что система уравнений должна рассматриваться как жесткая, хотя S (х) и не велик на [а, 6].
Это легко понять из простого примера. Пусть имеем задачу
у, .Ио^У0^ О^х^б.
Коэффициент жесткости S(x)=l на всем интервале [0,6]. Но если привести заменой переменной xY=xlb эту задачу к нормированному интервалу O^x^l, то получим
by. у(0)=у(О), 0^хх<1, иХ ।
при b ^> 1 жесткое уравнение.
Отсюда целесообразно сделать следующий практический вывод: интегрирование задачи Коши на длинных интервалах может
привести к явлению жесткости, которое следует учитывать при выборе метода решения.
Неявные методы решения жестких уравнений. Покажем на примере, как неявная разностная схема (10.1.22) позволяет интегрировать жесткое уравнение с шагом Л, выбираемым по заданной точности, а не из соображений устойчивости. Рассмотрим задачу
^=-100^+100, ^(0)=0, 0<х<1,
для которой схема (10.1.22) следующая:
у{ = ^t-1 + h (— 100^-I-100), 1 ^i ^m, h=\]m.
Эта схема безусловно устойчива при Х<0, так как выполняется неравенство (10.1.26). Решение разностного уравнения
^ = 1-7-—O^i^m,(14-100Л)
указывает,, что точное решение j (х)= 1 — ехр (—ЮОх) будет аппроксимировано с желаемой точностью без ограничений на величину шага И. Например, при h = 0,2 имеем:
jo = 0, ^ =0,952, j2 = 0,997, j3 = 0,999, j(l) = 0, j(0,2) = 0,999, у (0,4) = 0,999, у (0,6) = 0,999;
наихудшую относительную точность представления решения на первом шаге (порядка 5%).
Общий подходок решению жестких уравнений состоит в использовании неявных методов (неявных разностных схем).
Аналогом схемы (10.1.22) для нелинейного уравнения
является неявная схема Эйлера
Ji=h-i+/(^i> Ji),(10.3.4)
которая на каждом шаге требует решения нелинейного уравнения (10.3.4) относительно уь что представляет, вообще говоря, не простую задачу. Эта задача еще более усложняется для системы нелинейных дифференциальных уравнений (см. гл. 9). Естественно, решение нелинейных уравнений связано с большими затратами машинного времени на каждом шаге, чем в явных методах. Но за счет возможности значительно увеличить шаг h общий объем вычислений в случае использования неявных методов может быть существенно меньше, чем явных.
400400Применение программы В6А1. Для иллюстрации применения программы В6А1 рассмотрим задачу Коши для жестких уравнений (10.3.3) на интервале 0^х^1. Зададим относительную \
400
400
ССССССсссс1с с1с с
С
С
С
С
С
С
сс
сс
1
с с
1
с с
точность £=10 3. Будем выводить на терминал значения j^fx), у2^, Уз(х) с шагом /7=0,05. Программа может иметь следующий вид:
REAL X,B,Y(3),E,W(3,21),R(3),Z(3,3)
INTEGER N,J,I,M,K
EXTERNAL F,O,P
DATA X,B/0., 1 ./,¥/1 ,,0„0./,E/l,E - 3/
DATA N,J,I,M,K/3,0,0,l,21/
ОБРАЩЕНИЕ К ПРОГРАММЕ B6A1
CALL B6A1 (X,B,N, Y,E, J,F,M,P,O,W,K,I)
END
ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ ПРАВЫЕ ЧАСТИ УРАВНЕНИЙ
SUBROUTINE F(X,Y,R)
■ REAL X,Y(3),R(3),A,B,C
DATA А,В,С/0.04,1.Е4,З.Е7/
R(l)= — A*Y(1)+B*Y(2)*Y(3)
R(2)=A*Y(1) - B*Y(2)*Y(3) - C*Y(2)*Y(2)
R(3)=C*Y(2)*Y(2)
RETURN
END ВНЕШНЯЯ ПОДПРОГРАММА, ОСУЩЕСТВЛЯЮЩАЯ ВЫВОД ЗНАЧЕНИЙ Y(X) SUBROUTINE O(X,Y) REAL X,Y(3),H DATA Н/0.05/■
WRITE (5,1) X,Y(1),Y(2),Y(3) FORMAT (2X,'X=',F5.2,3E13.6) X=X+H RETURN END ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ ЯКОБИАН SUBROUTINE P(X,Y,Z) REAL X,Y(3),Z,(3,3),A,B,C DATA A,B,C/0.04,l.E4,3.E7/ Z(l,l)=—A Z(1,2) = B*Y(3).
Z(1,3) = B*Y(2)
Z(2,1)=A
Z(2,2)= -B*Y(3)-C*Y(2)*2.
Z(2,3)=-B*Y(2)
Z(3,l)=0.
Z(3,2)=C*Y(2)*2.
Z(3,3)=0. RETURN END.
- • 10.4. Краевые задачи
10.4.1. Линейное дифференциальное уравнение второго порядка. Разностная схема. Рассмотрим линейное дифференциальное уравнение второго порядка
(10.4.1)
на интервале a<x^b с условиями на краях интервала
J
а0^(а)+а1^(а)=а2,ах
МФ+Р^Мз-
(10.4.2)
Будем предполагать, что функции а Ы, b (х), с (х), /(х) достаточно гладкие на»'[a, AJ, а(х)/0 на [а, 6], константы af, pf таковы, что ao + ai/0, Po + Pi/O.
Прежде чем заниматься численным решением исходной краевой задачи, целесообразно привести дифференциальное уравнение к простейшей форме. Для этого разделим (10.4.1) на а^х\ Получим
d2y ( b^dy ( ф) ф)
dx2 a^dx а(ху а(х)
Введем новую искомую функцию z^ с помощью
(10.4.3)
замены
/ 1 ь^ \ у=ехр I —- -r4dx tz.
(10.4.4)
Тогда для z(x) из (10.4.3) имеем уравнение
(10.4.5)
где
2 1 d (b^
и краевые условия
г(х)=-у-^ехр
аог(а)+а1^(а)=а2ах
М»)+01^М2
(10.4.6)
со значениями ah Pf, отличными от тех, которые заданы в (10.4.2).
402'\
Если интеграл
не берется аналитически, то тогда функция Цх^ может быть определена с помощью численного интегриро
вания (см. гл. 7). Мы же будем предполагать, что известна формула для /(х), а следовательно, краевая задача, которую необходимо решать,— это уравнение (10.4.5) с условиями (10.4.6).
Например, для частного случая краевых условий
z(a) = a, z(&)=3
(10.4.7)
задача называется краевой задачей первого рода или задачей с закрепленными концами (рис. 10.9). Пусть функция q^ удовлетворяет неравенству
q^x^O, a^x^b. (10.4.8)
Условие неположительности q (х) обеспечивает существование и единственность решения некоторых краевых задач, в частности задачи с закрепленными концами. Справедливо следующее утверждение.
Теорема 10.5. Пусть функции q(x\ г(х\ дважды непрерывно дифференцируемы на [а, /)]; пусть также q(x)^. Тогда краевая задача (10.4.5), (10.4.7) имеет единственное решение z(x) и
z(x)gC4 [a, /)]. ■
Перейдем от непрерывной задачи к дискретной, заменив производную в уравнении и производные в краевых условиях по формулам численного дифференцирования на сетке:
x^a-Vih,
, b—а т, п =.
т
Для внутренних узлов xb l^i^m—1, имеем
^W-W^W + 0 (д2) + ^ ^ (х ) = r ^
для краевых узлов аппроксимируем первые производные с точностью до О (Л2) (см. (10.1.5)), из (10.4.6) получаем
aoz(xo) + a1
— 2 (х2) + 42 (%!) — 32 (х0)
2 h
+ O(/z2) = a2,
Ро z W + Р. 3^(^)+4z(x„1)+z(xm 2) + 0(Л2)= p2
Если отбросить слагаемые порядка б? (А2), то получим разностные уравнения (разностную схему)
zi+1 — 2zf+zf_
А2
~ + ^2z
rz, 1 ^ i^ т — 1,
(10.4.9)
Zo
хГ
Zi
X,
Рис.
Z2
Х2
10.10
Тз
Х3
aoZo+|^(-z2+4z1-3zo) = a2,
PoZm+|^(3zm-4zm_1+zm_2)
(10.4.10)
—систему (m+l)-ro уравнения с m+l
неизвестным z0, zv .... zm.
Здесь
Заметим,
что
на
(10.4.9), (10.4.10)
Q^ = qb r^xA=rb функциях z (х) е С4 [а, /)] разностная схема
аппроксимирует непрерывную краевую
с точностью О \кг^ (отброшенные слагаемые).
задачу
Если решить разностные уравнения — определить zb O^i^m,
то полученнце значения z^ при выполнении условий устойчивости являются приближениями с точностью О (Л2) к значениям z^) решения краевой задачи.
Например, пусть требуется решить краевую задачу
(Е Z
^-^ = 0> zo = 0, z(l)=l.
Выберем шаг сетки Л =1/3 (рис. 10.10). Разностная схема запишется следующим образом:
Эта система уравнений легко решается. Находим: zo = 0, zt= 0,2893, z2 = 0,6107, z3=1. Сравнение с точным решением в узлах сетки z(xo) = 0, z(x1) = 0,2889, z(x2) = 0,6102, z(x3)=l указывает на хорошее приближение решения разностной схемы.
Преобразуем уравнения (10.4.10) так, чтобы исключить z2 из первого уравнения и zm_2 — из второго (при этом естественно считать, что о^/О, Pi/О). Для исключения z2 выразим z2 через z15 z0 из (10.4.9). Имеем
z2 = rt А2 — ^t A2zt Н- 2zt —z0.
Подставляя правую часть равенства в (10.4.10), найдем
a°z° +^ (-rv А2 + qv h2zx -2zt +z0 +4zt - 3z0) = a2,
откуда получаем
z0 = EYzY^Dv(10.4.11)
где константы Еъ Dx соответственно равны
E _2а1+а1^1Л2 ^ _ l^h-V^r^h2
2ax—2а0Л ’12а1-2а0Л '
Для малых значений h знаменатель не равен нулю, так как о^/О.
Аналогично из (10.4.9) находим
^т—2^т-1^^т—1^ ^т-1 + 2zm_1^т*
Подставляя правую часть этого неравенства в (10.4.10), получаем
PoZm + ^ (3zm * 4zm- 1 + Гт- 1 А2 - ^m- 1 A2Zm- ! + 2zm_ ! - Zm) = Р2.
Отсюда zm=Qzm_x^S, '(10.4.12)
где константы Q, S соответственно равны
0_Ж-У^дт-1Нг гр^р^^й2v гр^грой ’ зр^грой ‘
Для малых значений h знаменатель не равен нулю, так как Р^О.
Окончательно разностная схема краевой задачи представляет собой систему линейных алгебраических уравнений (10.4.11), (10.4.9), (10.4.12) относительно z = (z0,z1, ...,zm\ Запишем ее в развернутой форме:
11й211й2-Ех2 '-Ех2 '1Й2 ■1Й2 ■оооо1• й21• й222112-с .2-с .1F1F1 й211 й21(10.4.13)(10.4.13)
11й2
11й2
-Ех
2 '
-Ех
2 '
1
Й2 ■
1
Й2 ■
о
о
о
о
1
• й2
1
• й2
2
2
1
1
2
-с .
2
-с .
1
F
1
F
1 й2
1
1 й2
1
(10.4.13)
(10.4.13)
в матричной форме:
Az=b,
где А—матрица системы (10.4.13), b— вектор правых частей b = ^DY, r1? r19 ...9 rm_19 S\ Матрица А имеет ненулевые элементы, расположенные на трех диагоналях, т. е. это трехдиагональная матрица.
Рассмотренные методы решения линейных систем в гл. 9, ориентированные на матрицы общего вида, оказываются крайне неэффективными, если использовать их для решения систем с трехдиагональными матрицами. Например, метод исключения Гаусса, требующий для своей реализации OQn3\ т-^со, арифметических операций, фактически будет обрабатывать основное время нулевые элементы, так как ненулевых элементов в матрице А всего О^т\
Для решения систем линейных уравнений с трехдиагональными матрицами используется вариант исключения Гаусса, в котором принимают участие только ненулевые элементы А, так называемый метод прогонки. Число арифметических операций, необходимое для его реализации, оказывается равным О(т). Следует отметить, что метод прогонки в системах линейных алгебраических уравнений—этр дискретный вариант непрерывного метода прогонки, изложенного в п. 5.3.18.
Метод прогонки. Рассмотрим трехдиагональную систему уравнений более общего, чем (10.4.13), вида, а именно состоящую из (10.4.11), (10.4.12) и следующих уравнений:
Aizi_Y — Cizi-^-Bizi+1=ri9 l^i^m—L (10.4.14)
В (10.4.13) побочные диагонали являются константами, а здесь Аь Bt могут зависеть от I.
Для вывода формул прогонки представим зависимость zv от zi+1 по аналогии с (10.4.11) в виде
zi = Ei + 1zH14-Di+19 0^i^m—l9(10.4.15)
где Е19 Dy—известные константы, а (Е2, ..., Em_Y\ ф19 ..., Dm_1) — пока неизвестные константы. Из (10.4.15) получаем соотношения
z^ =Ezzz + £z = Ez(Ez+1zz+1+A + i) + A =
= £zEz+1zz+1+EzZ)z + 1+Z>z, l^m-L (10.4.16)
Подставляя (10.4.15), (10.4.16) в (10.4.14), имеем
AiEiEi+1zi+1 -^AiEiDH ^А^-С^Е^г^ -
— CtDi+l — rz = 0, 1 ^i^m — 1.
Приравнивая в этом соотношении отдельно коэффициенты при zz + 1 и свободные члены нулю, получаем
А^ Et + i — CiEi +! + 5t = 0,
A^D^y -V-AiDt — CiDi+Y— ri = ®)
406\
откуда выразим El+1, Di + 1 через Eb Db а именно:
Di+1=^_Jl1+1 Cj-AiEtDi+1=^_Jl1+1 Cj-AiEt1 ^i^m — 1,1 ^i^m — 1.1 ^i^m — 1,1 ^i^m — 1.(10.4.17)(10.4.17)
Di+1=^_Jl
1+1 Cj-AiEt
Di+1=^_Jl
1+1 Cj-AiEt
1 ^i^m — 1,
1 ^i^m — 1.
1 ^i^m — 1,
1 ^i^m — 1.
(10.4.17)
(10.4.17)
Формулы (10.4.17) — это формулы прямой прогонки. Они позволяют по заданным значениям Ег, Dt последовательно определить (если знаменатели не обращаются в нуль) (Е2> ^гХ (^з> ^з)> - (Ет» Ет\
Определив Em, Dm, подставляем эти значения в (10.4.12), в результате получаем
Zm = Q(£mZm + Dm) + S.
Предполагая, что
О-е^и,
находим
(10.4.18)(10.4.18)QDm-vS'-QEm
(10.4.18)
(10.4.18)
Обратная прогонка — это вычисление неизвестных zb i=m—\, т — 2, ..., 0, по формуле (10.4.15). Вычисления можно осуществить, как только из (10.4.18) получено значение zm.
Прогонка устойчива, если
|Е/+1|<1, O^i^m — 1,|Е/+1|<1, O^i^m — 1,(10.4.19)(10.4.19)
|Е/+1|<1, O^i^m — 1,
|Е/+1|<1, O^i^m — 1,
(10.4.19)
(10.4.19)
в этом случае ошибки, возникающие в ходе вычислений, не накапливаются, т. е. не зависят от т. Этот факт следует из (10.4.15).
Теорема 10.6. Прогонка осуществима и устойчива, если выполнены неравенства
л^.в^.с^+в,. 1^т-1,
о^£х<1, o^e<i.
Доказательство. Для Ev неравенство (10.4.19) следует из условия теоремы. Для i= 1, 2, ..., т — 1 неравенство нулю знаменателя в формулах прогонки и (10.4.19) вытекает из следующей цепочки соотношений:
Вг _В,
Ci-AlEi” (Q- At-В^ + (Л, + В^ - АД
_Bi
- ^Ci-Ai-Bi^Bi-y^-EiVi*
Действительно, поскольку числитель и все слагаемые знаменателя положительны, а знаменатель больше числителя для z=l,
утверждение теоремы верно для Е2. Аналогично можно показать, что оно верно для i=3,...,m—l, а условие O^Q<1 обеспечивает неравенство нулю знаменателя в (10.4.18), что и требовалось доказать.
Метод прогонки в разностной схеме краевой задачи. Разностная схема рассматриваемой краевой задачи (10.4.13) имеет следующие значения коэффициентов в формулах прогонки:
Л;=1/А2, ^=l//z2, С^Н1-^.
Если 0^=0, Pi=0 (что соответствует задаче с закрепленными концами), то
£'1=0, Л1=а2/а0, 6 = 0, £=Р2/Ро-
В силу неравенства (10.4.8) прогонка для разностной схемы устойчива, поскольку неравенства (10.4.20) все выполнены.
Если рассматривается краевая задача общего вида и а^О, Pi/0, то для достаточно малых h из формул для Ev и Q находим
^ = 1 4-^А+О(/г2),
а1
'0=1-ЁОА + О^г)
откуда следует, что прогонка устойчива, если
а0/а1<0, Ро/Р1>0.(10.4.21)
Выше уже упоминалось, что разностная схема аппроксимирует краевую задачу с точностью OQi2\ Но аппроксимация и устойчивость дают сходимость со скоростью, определяемой порядком аппроксимации (см. п. 10.1.6) решения разностного уравнения к точному решению краевой задачи. Теперь можно сформулировать следующее утверждение.
Теорема 10.7. Пусть q(x\ г^еС2 [а. /)], ^(х)^0 на интервале [а, b ], пусть выполнено условие (10.4.21). Тогда решение zt разностной схемы (10.4.13), полученное методом прогонки, сходится к точному решению краевой задачи (10.4.5), (10.4.6) и имеет место оценка
max \zt—z(xj| ^O(/z2), /?^0.
O^z^w
Краевая задача для системы линейных дифференциальных уравнений. Система линейных дифференциальных уравнений, как правило, возникает после этапа линеаризации исходной нелинейной системы в окрестности некоторого решения. Поэтому, решая линейные уравнения, следует всегда помнить о их происхождении. Например, норма решения системы линейных уравнений во многих случаях должна быть малой, иначе рассматриваемая линейная модель окажется неверной (большая погрешность математической модели).
Обширный класс технических задач, приводящий к краевым задачам для систем линейных уравнений, представляют собой 408\
проблемы автоматического управления. Многие из этих задач можно записать в виде
<h=F^qb qb ur^, X^i^n, X^r^m.
Здесь qt—обобщенные координаты управляемой системы, t—время (O^Z^T), q—производная по времени, ur(t)— управляющие воздействия на систему. Простейшей задачей управления является следующая: при заданных управляющих воздействиях иг(О на систему найти траекторию ^(z), переводящую систему из заданного начального положения
■q^^q^» x^i^n,
в заданное конечное
qi^ = qV\ Х^п.
Например, задача определения траектории управляемого снаряда принадлежит этому классу. Действительно, в плоской модели полета обобщенные координаты qY=x, q2=y, уравнения движения в линеаризованном виде записываются в форме
х = и1^х-^и2^у-Х-и3^,
y = uv^y+u2^y-g,'
где g—ускорение свободного падения,'w^z), w20X w3(z)— управляющие воздействия, определяемые тягой двигателя и сопротивлением воздуха. Начальное положение—это координата старта, конечное—координата цели (рис. 10.11). Таким образом, краевые условия .
х(0) = х(О), х(Г) = х(1); ' j(0)=y<°\ y^=yW.
Если условие в начальный момент z = 0 дополнить еще двумя, определяющими угол 0 запуска снаряда (0 = arctg(y1/yo)), x(0)=vo, j(0)=»i, .
то получим на интервале O^t^T задачу Коши, которая имеет единственное решение, но, вообще говоря, траектория (x(t\ y(t)) не проходит через цель при t=T (рис. 10.11).
Если теперь будем задавать различные значения (у0, у^, т. е. изменять угол стрельбы 0, то будем получать различные решения задачи Коши, и, возможно,
среди значений (у0, yj найдем такой угол 0, при котором траектория с заданной точностью проходит через цель.
Метод решения краевых задач путем сведения их к задаче Коши с последующим поиском начальных значений
таких, чтобы выполнялись краевые условия, называется методом стрельбы.
Рассмотрим систему линейных дифференциальных уравнений$= f “i,AxWfAx\ X^i^n,
с линейными краевыми условиями
ИСмУАа) + И DijyAb^Ci’ X^i^n, j=l j=l
где at^x\ f^x)—элементы переменных матрицы Л(х), вектора f^xY Gi^ DVp Ci—элементы постоянных матриц G, D, вектора с. В матричной записи краевая задача имеет вид
.^ = л(ф+/,(10.4.22)
Су(а)+Ду(6)=с.(10.4.23)
Для примера запишем матрицы G и D вектор с в следующих условиях:
У1(а) = 0; Уз(«)=!; У2^) = 2; у4(6)=3.
Имеем
10 0 0
0 0 0 0
0
G=
0 0 0 0
0 0 10
; d=
0 10 0
0 0 0 0
; c=
2
1
0, 0 0 0
0 0 0 1
3
Для условий
Уз(а)=0, у.
3(«)=L
У1^А = ^ Уз
МА=з
имеем
10 0 0
0 0 0 0
0
G=
0 0 0 0
0 0 10
; d=
10 0 0
0 0 0 0
; c =
2
1
0 0 0 0
0 0 10
3
Метод стрельбы в приложении к краевой задаче (10.4.22) состоит из следующих этапов:
Задают начальное приближение для вектора
"У^^У^к^*(10.4.24)
Решают каким-либо численным методом задачу Коши (10.4.22), (10.4.24) на интервале а^х^Ь, в результате получают вектор y^Q)).
Вычисляют
г^ = Су^^Ву^^-с.х
410X
X.
Вектор r = Gy (a) A-у ^ — c называется вектором невязки краевых условий, этот вектор зависит от у(0)(а). Вычислим норму вектора невязки—число S:
S(y^(a))=\\Gy^(a) + Dy^(b)-c\\.
Если S(y(O)(a)) = 0, то краевая задача решена, если нет, то изменяют начальное приближение (10.4.24) так, чтобы целевая функция Sy^a^ (см. гл. 9) уменьшилась.
Процедуру 1—4 продолжают до тех пор, пока S не станет меньше заданной точности.
Вопросы существования точного решения краевой задачи устойчивости метода стрельбы выходят за рамки этой книги. Практически алгоритм метода стрельбы следует применять только для матриц А (х), собственные значения которых на нормированном интервале O^x^l имеют небольшие модули, т. е. |XJ~1.
Метод стрельбы является при определенной дискретизации краевой задачи фактически одним из способов решения полученной системы линейных алгебраических уравнений. В общем случае способ решения полученной системы линейных уравнений определяет характер поведения собственных значений матрицы А (система уравнений, например, может быть жесткой).
Пусть интервал \а, /)] разбит постоянным шагом h узлами x^aA-jh, O^j^m, h = (b — d)!m. Точное решение у(х) в узлах представляет собой матрицу неизвестных
yt (х J, 1 ^ i ^ п, 0 ^’ ^ т,
т. е. всего Уа-^п неизвестных. Заменим краевую задачу (10.4.22), (10.4.23) разностной схемой с аппроксимацией второго порядка. Для внутренних узлов
краевое условие дает
Gy0 + Dym = c.
Добавим для замыкания разностной схемы уравнение
о_ А (хо)Уо +/(х0)^ +
(xm)ym+/(xm))=0,
где O^a^l. Полученная система разностных уравнений является системой линейных алгебраических уравнений (т + 1)и-го порядка относительно неизвестных yuj, i^i^n, O^j^m. Решив эту систему, получим приближенные значения у( ; к точному решению в узлах
Имеются разнообразные методы решения таких разностных схем, с которыми более подробно можно познакомиться в [25].
10.4.5. Применение программы В7А0. Для демонстрации примене- ния программы В7А0 решения краевой задачи рассмотрим систему J
уравнений
- = ^1+b-smx,j
21
-7-=У1-* У2+У3,t
ахs
-^-=y2+(cosx)y3 + l
ax
на интервале 0 < х ^ 1 с условиями
У1(0)+у2(0) = 0,
•JУ1(0)-Уз(1)=1,
У2(1)+Уз(1) = 2.t
Пусть требуется точность вычислений 8=10 2. Программа может | иметь следующий вид:*
REAL A,B,E,G(3,3),D(3,3),C(3),X(32),Y(3,32),W(1610) ^^ь
INTEGER N,M,N1,L,J(227),K,I
EXTERNAL Q,F
DATA А,В/0.,1./,Е/1.Е-2/"-Ц^^
DATA G/l.,1.,0.,1.,0.,0.,0.,0.,0./
DATA D/0.,0.,0.,0.,0.,l.,0„—l.,l./
DATA C/0.,1.,2./
DATA X/0.,0.2,0.4,0.6,0.8,1.0/
DATA N,M,N 1 ,L,K,I/3,32,6,1610,227,110/
С
ОБРАЩЕНИЕ К ПРОГРАММЕ B7A0
CALL B7AO(A,B,N,E,Q,F,G,D,C,M,X,Y,N1,W,L,J,K,I)
с
ВЫВОД НА ТЕРМИНАЛ УЗЛОВ X И ВЕКТОРА Y WRITE (5,1) (X(I)(Y(J,I)J = 1,3)1 =1,N1)
1
FORMAT (2X,'X=',F6.3,3E13.6) END
с с
ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ
МАТРИЦУ СИСТЕМЫ
SUBROUTINE Q(X,Z)
REAL X,Z(3,3)
Z(l,l)=x
Z(l,2)=l.
Z(1.3) = 0.
Z(2,l)=l.
Z(2,2)=-X*X
Z(2,3)=0.
Z(3,l)=0.
Z(3,2)=l.$
Z(3,3)=COS(X)"
RETURN
END
с
ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ F(X)
412
\
SUBROUTINE F(X,R)
REAL X,R(3)
R(1)=-SIN(X)
R(2)=0.
R(3)=l.
RETURN
END
Краевая задача для систем нелинейных дифференциальных уравнений. Рассмотрим систему нелинейных дифференциальных уравнений
^=/>(*, Л, к), (10.4.25)
(10.4.26)(10.4.26)на интервале а^х^Ь с краевыми условиями yi(a)=y<0\ X^i^k, к<п, y^b^y^. кА- 1 ^i^n.
(10.4.26)
(10.4.26)
Подход к численному решению задачи (10.4.25), (10.4.26) аналогичен изложенному выше для систем линейных уравнений.
Метод стрельбы состоит в том, что вектор у^ полностью
определяется в точке х=а, т. е. дополнительно задаются yi^=y^\ kA-X^i^n,
нулевое приближение для недостающих до полного вектора координат. Затем каким-либо численным методом решается задача Коши для системы дифференциальных уравнений (10.4.25) и определяется вектор у(Ь\ Следующим этапом является минимизация целевой функции, например
каким-либо методом нелинейной минимизации по переменным
Метод стрельбы обычно устойчив, если на точном решении якобиан
^fc Л (4у,(х))
имеет собственные значения к^х) на нормированном интервале" 0^х^1 такие, что
IM*)^1-
Другой подход состоит в переходе к разностной схеме и решению полученной нелинейной системы уравнений одним из способов, изложенным в гл. 9.
На сетке x^a^ih, O^i^m, m = ^b — a^h заменим дифференциальное уравнение конечно-разностным выражением. В векторной записи имеем во внутренних узлах
в краевых узлахв краевых узлахЗу„-4ут-1+Ут-,22ЙЗу„-4ут-1+Ут-,22Й= Дхт,= Дхт,УтУУтУ
в краевых узлах
в краевых узлах
Зу„-4ут-1+Ут-,22Й
Зу„-4ут-1+Ут-,22Й
= Дхт,
= Дхт,
УтУ
УтУ
Полученная система нелинейных уравнений совместно с условиями (10.4.26), если она разрешима, дает приближения y^j, X<i<n, O^j^m, к точному решению исходной краевой задачи в узлах у((хД
Применение программы В7А1. Рассмотрим краевую задачу для системы уравнений
।——ху^ +siny2 — sinx,
—=У1-Х2у2 + СО8у3,
,ах
^ = siny2+(cosx)y3 +1
на интервале 0<х<1 с условиями
У1(0)=У2(0) = 0, ь(1)=1.
Пусть требуемая точность вычислений е= 10“2. Программа может иметь следующий вид:
REAL U(3,2),V(3,2),A,B,E,X(32),Y(3,32),W(1712)
INTEGER N,M,N1,L,J(247),K,I
EXTERNAL F
DATA U(l,l),U(2,l),U(3,l)/0.,0.,0./
DATA U(1,2),U(2,2),U(3,2)/0.,0., 1./
DATA V(l, 1),V(2,1),V(3, l)/0.,0., 1./
DATA V(1,2),V(2,2),V(3,2)/1 „1 .,0./
DATA X/0.,0.2,0.4,0.6,0.8,1.0/,A,B,E/0.,l .,1 .E—2/
DATA N,M,N 1 ,L,K,I/3,32,6,1712,247,110/
СС1С сСС1С сОБРАЩЕНИЕ К ПРОГРАММЕ B7A1
С
С
1
С с
С
С
1
С с
CALL B7A1(U,V,N,A,B,E,F,M,X,Y,N1,W,L,J,K,I)
ВЫВОД НА ТЕРМИНАЛ УЗЛОВ X И ВЕКТОРА Y
WRITE (5,1) (X(I)(Y(J,I)J= 1,3)1 = 1,N1)
FORMAT (2X,'X = ',F6.3,3E13.6)
END
ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ
F(X,Y)
SUBROUTINE F(X,Y,R)
REAL X,Y(3),R(3)
R(l)=X*Y(1)+SIN(Y(2)) - SIN(X)
R(2)=Y(l) - X*X*Y(2) + COS(Y(3))
R(3) = SIN(Y(2))+(COS(X))*Y(3) +1.
RETURN
END
Глава 11
УРАВНЕНИЯ С ЧАСТНЫМИ ПРОИЗВОДНЫМИ
• 11.1. Введение
Ограниченность применения аналитических методов. В гл. 5 рассматривались аналитические методы решения уравнений с частными производными. В основе успеха применения этих методов лежала возможность приведения уравнения с частными производными к системе обыкновенных дифференциальных уравнений. Обыкновенные дифференциальные уравнения также должны быть достаточно простыми, чтобы их решения можно было записать в известных функциях, т. е. таких, для которых имеются таблицы значений или программы вычисления значений.
Как правило, аналитические методы в линейных уравнениях связаны с разделением переменных (методом Фурье). Использование этого метода встречает большие трудности, если область независимых переменных, где ищется решение, отличается от простейших (прямоугольник, круг и т. п.). Вторым препятствием для применения метода Фурье является зависимость коэффициентов линейного уравнения от времени и пространственных переменных. Например, зависимость коэффициента a = a^t, х) в волновом уравнении с функцией a^t, х) достаточно общего вида
а2и ха2и
dt2 v 'бх2
уже не позволит разделить переменные. *
Аналитические методы решения нелинейных уравнений используют глубокие внутренние свойства дифференциальных уравнений, их применение требует высокой математической квалификации, а виды уравнений, доступных решению, весьма ограниченны. Поэтому без большого преувеличения можно сказать, что нелинейность в дифференциальном уравнении не позволит инженеру использовать аналитические методы в практической работе.
Итак, имеется три основных «источника неприятностей» для аналитических методов в уравнениях с частными производными:
сложная область в линейных уравнениях с постоянными коэффициентами;
переменные коэффициенты в линейных уравнениях;
нелинейность.
Примером трудностей первого типа является уравнение Лапласа
Рис. 11.1Рис. 11.1д2и д2идх2^"ду2д2и д2идх2^"ду2в области D (рис. 11.1) с каким- либо условием на границе D.
Рис. 11.1
Рис. 11.1
д2и д2и
дх2^"ду2
д2и д2и
дх2^"ду2
Пример второго типа—уравнение поперечных колебаний мембраны
52м_ Т / д2и д2и\dt2 р (х, у) ^х2 ду2J52м_ Т / д2и д2и\dt2 р (х, у) ^х2 ду2Jгде Т—коэффициент натяжения, р(х, у)—плотность мембраны. Неоднородность мембраны р(х, у) ^ const и есть источник трудностей в аналитических методах.
52м_ Т / д2и д2и\dt2 р (х, у) ^х2 ду2J
52м_ Т / д2и д2и\dt2 р (х, у) ^х2 ду2J
Примером трудностей третьего типа служит уравнение теплопроводности в; случае, когда коэффициент теплопроводности зависит от температуры:
ди dtди dtд2и
ди dt
ди dt
дх2'
Отмеченные ограничения применения аналитических методов привели, особенно с развитием вычислительной техники, к широкому распространению численных методов решения уравнений с частными производными. Опыт решения многих сложных задач науки и техники численными методами подтверждает их эффективность.
Дискретизация. Первым этапом в численном- решении дифференциальных уравнений, как обыкновенных (см. гл. 10), так и с частными производными, является переход от непрерывной задачи к дискретной.
Способ дискретизации задачи—это «визитная карточка» численного метода. Получаемые после дискретизации конечномерные задачи могут быть похожи для разных методов и решаться практически одинаково. Рассмотрим три метода дискретизации, которые связаны с наиболее популярными методами решения уравнений с частными производными, а именно: вариационные методы; методы прямых; конечно-разностные методы.
Вариационные методы. В основе вариационных методов лежит переход от задачи для уравнения с частными производными к задаче минимизации функционала. Этот прием обобщает идею перехода от решения уравнений к задаче минимизации целевой функции, построенной по исходным уравнениям (гл. 9).
Функционалом называется оператор, который ставит число в соответствие функции.
Примером функционала является оператор
D
который любой функции м(х, у), непрерывно дифференцируемой в области D, т. е. и(х, у^еС1 [Р], ставит в соответствие ее площадь поверхности.
Далее будем рассматривать функционал вида
(11.1.1)(11.1.1)ди ди х, у, и, —, — дх дуди ди х, у, и, —, — дх дуD
(11.1.1)
(11.1.1)
ди ди х, у, и, —, — дх ду
ди ди х, у, и, —, — дх ду
Цх,у^=^х,у\ (х, у)еГ.Цх,у^=^х,у\ (х, у)еГ.(11.1.2)(11.1.2)на функциях иЦ, у^С1^] таких, что на границе Г области D функция и принимает заданные значения (рис. 11.2)
Цх,у^=^х,у\ (х, у)еГ.
Цх,у^=^х,у\ (х, у)еГ.
(11.1.2)
(11.1.2)
Пусть функционал Ци) достигает на функции и^х, у) своего минимального 7 значения /(й). Это означает, что на «близких» функциях к й(х, у) функционал имеет значения, не меньшие L Близкие функции к й(х, у) определяются следующим образом:
м(х, у)=н(х, у)+ат)(х, у),
где а—малые числа, т|(х, у)е С1 [Л ],
п(х,у)=0, (х, у)еГ.
На близких функциях можно определить функционал (11.1.1):
г г — дй дг[ дй \,
/ а)= JlF x, у, х+ац, —+ а—, — + а— \dxdy.о \дх дх ду ду )
Разложим /(а) в ряд Тейлора по а с центром в нуле. Получим
/(а)=7+^(0)а + ^^4(0)а2 + ...х ’ dux '2 da2 х 7
Первой вариацией функционала Ци) называется величина
з/=^(°)
второй вариацией — величина
d2182'=^(0).
ТеоремаН.1. Если функционал Ци) достигает на функции й(х, у) минимального значения, то
8/=0, 827>0.
Доказательство этой теоремы аналогично соответствующему доказательству для минимума функции одной переменной Ци) (рис. 11.3). Запишем разложение /(а) для функционала (11.1.1)
в предположении, что функция F дважды непрерывно дифференцируема по аргументам и, ди ди
—, —. Имеем
дх ду
/(«)= f $f(x, у, й,
+«иD+«иD++5 ц ду5 ц дуdxdy + О (а2).dxdy + О (а2).V d V 6у ду)
+«и
D
+«и
D
+
+
5 ц ду
5 ц ду
dxdy + О (а2).
dxdy + О (а2).
гдедлягдедля^=ff D^=ff D8 I 8F Эх ХЭи,8 I 8F Эх ХЭи,+ Jг+ Jгcos(w, у)cos(w, у)ц(х, у) dr.ц(х, у) dr.
где
для
где
для
^=ff D
^=ff D
8 I 8F Эх ХЭи,
8 I 8F Эх ХЭи,
+ J
г
+ J
г
cos(w, у)
cos(w, у)
ц(х, у) dr.
ц(х, у) dr.
Отсюда определяется первая вариация функционала:
Здесь черта сверху означает, что выражение берется на функции й(х, у У Преобразуем 87 с учетом формулы интегрирования по частям , в двумерной области (формула Грина):
П^Л dxdy = - j" J ^ ^ dxdy + f Fv F2 cos (n, x) dr, D oxD ox r
n — нормаль к границе. Аналогичная формула справедлива д „
—. Получим
8 / dF\~l , т- Нт ПИ, у) dxdy + ду \8и,у ''
Но последнее слагаемое в правой части равно нулю, поскольку Л^, ^) = 0 при (х, ^)еГ. Окончательно первая вариация функционала принимает вид
5/=ИD5/=ИDд_ дхд_ дхд_ дуд_ дуц(х, у dxdy.ц(х, у dxdy.
5/=И
D
5/=И
D
д_ дх
д_ дх
д_ ду
д_ ду
ц(х, у dxdy.
ц(х, у dxdy.
Необходимое условие минимума 87=0 означает, что интеграл в правой части должен обращаться в нуль для любой функции г|(х, уУ обращающейся в нуль на границе Г, но отсюда следует (это можно строго доказать), что
дЕ дидЕ дид дхд дхд_ дуд_ ду= 0= 0(11.1.3)(11.1.3)
дЕ ди
дЕ ди
д дх
д дх
д_ ду
д_ ду
= 0
= 0
(11.1.3)
(11.1.3)
на функции й(х, у)-
Уравнение (11.1.3) — это уравнение Эйлера, оно является необходимым условием минимума функционала (11.1.1) с условием
Заметим, что (11.1.3)—уравнение с частными производными, а условие (11.1.2) — условие Дирихле, которое служит для однозначного определения решения (11.1.3). В основе вариационного метода лежит следующее утверждение.
Теорема 11.2. Пусть функция й(х, у) доставляет минимум функционалу (11.1.1) на функциях и^х, у^еС2 [Л ], удовлетворяющих на границе условию и^х, у) = ф(х, у). Тогда й(х, у)—решение дифференциального уравнения (11.1.3) с условием (11.1.2).
Справедливо и обратное утверждение (при условии, что 82/>0): решение й(х, у) задачи (11.1.3), (11.1.2) минимизирует функционал /.
Вариационным методом решения краевой задачи (11.1.3), (11.1.2) называется метод сведения ее к поиску минимума соответствующего функционала, для которого данное уравнение является уравнением Эйлера.
Следует отметить, что собственно вариационный метод не является численным методом, он широко применяется и в аналитических построениях. Как видно из изложенного выше, мы еще не ввели дискретизацию задачи.
Приведем примеры уравнений (11.1.3) и соответствующих функционалов:
1Х д2м д2и _ х г с?f 8и\2( ди\2 . ,
7-2+^ = °;= hr + hr dxdy;
' дх2 ду2_
_х д2и д2их с г Г/ди\2 (ди V 7,
^+т^=“; Л«)=И т- + ^ +м ^;
дх2 ду2 v 7 Ь Lx^/ V>7
д2и д2и ,\(ди\2 ( ди\2Л , ,
/(m) = PLw + W Ч У'
Последний пример определяет функционал задачи Дирихле для уравнения Пуассона. Для приведенных функционалов можно показать, что 82/>0 на любой функции и(х, у)еС2 [Л ].
Функционал может содержать производные от и(х, у) более высокой степени, нежели первая. Например, нагруженная пластина с заделанным краем
ику)=0, ^=0, к/)еГ,
описывается уравнением
д4«5*идх4"^ dx2dy2д4«5*идх4"^ dx2dy2
д4«5*и
дх4"^ dx2dy2
д4«5*и
дх4"^ dx2dy2
где /(х, у)—нагрузка на пластину. Соответствующий функционал
dxdy.dxdy.«-И;
dxdy.
dxdy.
D Z
Будем предполагать, что задано однородное краевое условие why) = 0, (х, у)еГ; если это не так, то замена переменных
d = u — cp(x, у) приводит к однородному краевому условию. Будем предполагать, что функционал Ци) имеет положительно определенную вторую вариацию, т. е. 52/(м)>0 для любых w/О, на которых Ци) определен.
Отличительной чертой вариационного метода является более слабые требования к гладкости решения. Функционал 1(и) в примерах определен на функциях, имеющих первые производные, квадратично интегрируемые в области D. Таким образом, принадлежность w(x, у)еС2 [Я ] не требуется. Это важно в тех задачах, где граница D имеет угловые точки (например, прямоугольник) и, как правило, вторые производные решения в углах разрывны.
Дискретизация Ритца. Перенесем дискретизацию непрерывной задачй для уравнения (11.1.3) с условием (11.1.2) на эквивалентную вариационную задачу
‘min/(w),(11.1.4)
иеН
где Н—пространство функций w(x, у\ заданных на области D. для которых определен функционал 1^и\ Будем предполагать, что решение (11.1.4) и(х, у) существует, и(х,у)еН; если и(х, у)е С2 [Ь ], то это решение дифференциального уравнения (11.1.3) с условием (11.1.2). В том случае, когда решение (11.1.4) и(х, у) не принадлежит С2 [Я ], его называют слабым решением исходной краевой задачи.
Пусть функции е^х, у)
образуют базис "пространства Н.
Метод дискретизации Ритца состоит в том, что вариационная задача (11.1.4) решается не на всем пространстве Я, а только на ^-мерном подпространстве, состоящем из всевозможных линейных комбинаций элементов {е1? е^ .... ет}, т. е. решение и(х, у) задачи (11.1.4) ищется в виде
Ит=Х^,(11.1.5)
1 = 1где ab l^i^m—неизвестные коэффициенты. При этом задача(11.1.4) переходит в дискретную задачу
min/i S aLe: Ia 7
минимизации функционала на множестве векторов a=(a15 ..., am) размерности т. Необходимое условие минимума
^=0, Kz^m,(11.1.6)
дает т уравнений для определения am. Если система уравнений (11.1.6) разрешима, то полученное решение а определяет ит по
формуле (11.1.5)—приближение к точному решению исходной задачи. Очевидно, что ит дает оценку точного минимального значения функционала
В полном пространстве предельным переходомВ полном пространстве предельным переходомmin/(к) </(«„).иеНН точное решение (11.1.4)min/(к) </(«„).иеНН точное решение (11.1.4)получаетсяполучается
В полном пространстве предельным переходом
В полном пространстве предельным переходом
min/(к) </(«„).
иеН
Н точное решение (11.1.4)
min/(к) </(«„).
иеН
Н точное решение (11.1.4)
получается
получается
и= Ит ит.
т-> оо
Для примера рассмотрим нелинейную краевую задачу
д2и д2и / 1ХЗ т^ + т^= “-! дх ду v 7
в области D={0^x^l, O^j^l} с условием м(Г) = 0. Соответствующий функционал
4«)=И004«)=И00(-Y\дх I(-Y\дх I/ 5м\2 V^// 5м\2 V^/44dxdy.dxdy.
4«)=И
00
4«)=И
00
(-Y\дх I
(-Y\дх I
/ 5м\2 V^/
/ 5м\2 V^/
4
4
dxdy.
dxdy.
Дискретизацию по методу Ритца проведем с помощью тригонометрического базиса. Ищем решение в виде
иДх, у^ = ^ ар 9sin^Kxsin^K^.(П.1.7)
p,4=i
Для иллюстрации ограничимся одним слагаемым
w^x, y) = ai,iSinKxsinK^.
Найдем коэффициент 04 д из условия
11
min/(a1 J= Jf [oci,i к2 cos2Kxsin2ny +
04,1’00
+ а2дл28Ш2лхсо82лу H-^a! д8тлх8тл^ — l)4] dxdy =
94163 /З л2\ 241
Определим точку минимума, отбросив слагаемые выше 2-й степени а1д. Получим
^т^ЗДЗ-Ю"2.
Погрешность аппроксимации дифференциального уравнения на функции и^х, у^ в точке х=1/2, у =1/2 равна
^ + ^-(м1-1)3=-3,15-10-2-2л2-(3,15-10-2-1)3^0,2.
дх2 ду2 v 1'''
Чтобы повысить точность аппроксимации уравнения внутри D, следует взять больше слагаемых в сумме (11.1.7). Но с ростом т увеличивается количество гармоник sinpnx, sin^n^, участвующих в вычислениях интегралов, что в значительной степени затрудняет реализацию вариационного метода.
Отмеченного недостатка лишен специальный вариант метода дискретизации Ритца—метод конечных элементов.
Методом конечных элементов называют метод Ритца с выбором базисных кусочно-полиномиальных функций ^(х, у), отличных от нуля, в малой окрестности некоторых точек области D.
Точность приближения в методе конечных элементов повышается не за счет увеличения числа различных видов базисных функций (в призере—различных гармоник), а за счет уменьшения размера окрестности, где базисная функция отлична от нуля. Сам же вид базисной функции сохраняется. Здесь имеется полная аналогия со сйл^йн-аппроксимацией функции (см. гл. 6). С методом конечных элементов можно познакомиться в [18].
В методе дискретизации Ритца существенную роль играет выбор базиса функций, учитывающих специфику задачи. Фактически хороший выбор связан с достаточно большой предварительной работой по учету симметрии области, построению собственных функций дифференциального оператора и т. д. Естественно, что такая работа затем должна окупиться на серийных вычислениях.
• 11.2. Разностный методрешения стационарных уравнений
Стационарные уравнения. Уравнения с частными производными для функций и(х, у, z), зависящих только от пространственных координат, называются стационарными уравнениями. Такие уравнения могут иметь естественное происхождение и описывать не изменяющиеся во времени процессы различной природы. Примеры стационарных процессов и уравнений приведены в п. 5.3.19. Многие стационарные линейные уравнения имеют вид div(^(x, q, z)gradw(x, у, z^-yq^x, у, z)u=f(x, у, z).
Это уравнение при р. q = const является уравнением Пуассона Ам=/, а при /=0— уравнением Лапласа
Aw = 0.
К стационарным уравнениям приходят и при решении нестационарных уравнений. Пусть например, в волновом уравнении
— a Nu=f at2
внешнее возмущение f(x, у, z, z) представляется в виде
/=/о(^> У. ^е'™'.
422,
Если искать решение и^х, у, z, t) с той же частотой и неизвестной амплитудой и0(х, у, z)
w = w0(x, у, z^eltot,
то для функции и0^х, у, z) получим стационарное уравнение
Aw0 + -^м0 = — ^.
Это так называемое уравнение Гельмгольца.
Дискретизация стационарных уравнений конечно разностным методом. Идея дискретизации задач для уравнений с частными производными с помощью разностных схем (или методом сеток) та же, что и в обыкновенных дифференциальных уравнениях (см. гл. 10). Продемонстрируем ее на примере решения задачи Дирихле для уравнения эллиптического типа
Ду,У^1 + Ду.У^ + «(у.У^,+
+ А*. у)^ + у)11=Ж у). (11.2.1) заданного в односвязной области D с границей Г (рис. 11.4). Коэффициенты в уравнении, правая часть и граница Г достаточно гладкие: а(х, у) >6, b(x, у)>0, g(x, j>)^0 в D. Пусть для уравнения (11.2.1) ставится краевая задача Дирихле
Цх, ^) = ф(х, у), (х, у)еГ,(11.2.2)
где ф(х, у) — гладкая функция на Г.
Покроем область D плоскости (х, у) сеткой параллельных прямых (рис. 11.5)
х.- = х0 + /й,,.
. к к=0, ±1; ±2,
Ук=Уо + кк,
Точки пересечения этих прямых называются узлами. Будем рассматривать только узлы, расположенные внутри области D. Два узла (х-, ук) называются соседними, если расстояние между ними
по оси х или по оси у равно к.
Узлы, которые имеют всех четырех соседей, расположенных внутри области D, называются внутренними. Множество всех внутренних узлов называется сеточной областью Dh (на рис. 11.5 они обозначены кружком).
Узлы, у которых хотя бы один соседний узел не принадлежит Л, называются граничными. Множество всех граничных узлов называется границей сеточной области Гл (на рис. 11.5 они обозначены звездочкой).
При сделанных выше предположениях существует точное решение краевой задачи (11.2.1), (11.2.2). Это функция и(х, у\ а если коэффициенты, правая часть, граница и ф(х, у) достаточно гладкие, то можно предположить, что и(х, у) имеет непрерывные производные по х, у до 4-го порядка включительно, т. е.
и(х, y)eC4VDY
Заменим во внутренних узлах производные в (11.2.1) разностными отношениями второго порядка точности аппроксимации по формулам ।
УЛ-Zell
л) = Лл2Ы11_Л212кП. + o(h у,
®2m(y ., \_Фн1,^-2Ц^л)+Ц^-1,а) n,.x2
Ук)+ О (А) ,
®2m(y „ \_4xb yk+i)-Wb Ук)+«^, ук_^ , .2 > Ук) -О .
Подставляя эти соотношения в (11.2.1), отбросив погрешность аппроксимации производных, получим разностные уравнения для неизвестных ui k
„ ui+l,k — ^ui,k^"ui-l,k ) д Ui.k+l-^Uik-VUik-i )
°«——р+6"р+
, „ ui+l,k~ Ui-l,k . i Ui,k-1—Ui,k-1 , __ г1 О
+ Q, к^h di, к^Vgiik Щ, к =fi, к»(И.2.3)
где введены следующие обозначения значений коэффициентов и правой части в узле (хь ук): aik, biik, cijo dik, gitk, f№ например /1,к=ЛхьУк\ ^иУк)^.
Соотношения (11.2.3) содержат кроме неизвестных и1Л во внутренних узлах еще и неизвестные ui k на границе сеточной области. Для граничных узлов запишем соотношение
«(х„ л) =
либо
М(х., л) = Mi-2^t2K^
в зависимости от того, какая точка, (x^Qh, ук) или (xf, yk±Qh\ О^0<1, пересечения непрерывной границы Г с линиями сетки 424X
находится ближе к граничному узлу (рис. 11.6). Эти соотношения означают, что значение и(хь ук) при (х^ ук)еГк получается линейной интерполяцией значений и^х, у) во внутреннем узле и в точке пересечения Г с сеткой. Отбросив в последних соотношениях погрешность аппроксимации, получим выражения для неизвестных иик в граничных узлах
Mi,k —' (0^ |)(®М/±1,к~^Ф/±е,к)>
или(11.2.4)
и1д = (0+l)^Wf’k±1 + Ф‘’к±0)’
где введено обозначение Ф/+е,к = ф(х1±0/г, ук) аналогично Ф/>к±0. Заметим, что в (11.2.4) дробная часть шага h (величина 0) зависит от узла 0 = 0^к. Чтобы не усложнять запись в (11.2.4), индексы i и к опущены.•
Присоединяя уравнения (11.2.4) к (11.2.3), получаем систему линейных алгебраических уравнений относительно ui k. В этой системе число уравнений равно числу неизвестных и равно числу узлов в Dh и Гй.
Система уравнений (11.2.3), (11.2.4)—это разностная схема непрерывной задачи (11.2.1), (11.2.2).
Решения разностной схемы и1Л — приближения к точному решению и(хь ук) в узлах X/, ук (рис. 11.7). Перепишем систему уравнений (11.2.3) в следующем виде:
Ьки1ЛЧ№(11.2.5)
LhUi>k = Aikulk_k + Blkui_lik+Clkuik+Dlkui+xk + ElkuUk+1, где коэффициенты задаются формулами
.— ^1Л ^i,k „ _ai,li ci,k
Li.k~^2 rgi-k,
Ь(х, ^)<0,Ь(х, ^)<0,n —°l'k I С‘-к F _bj,k , di k Dik h2 + 2h,hi’k h2* 2h‘ x
Ь(х, ^)<0,
Ь(х, ^)<0,
По предположению, гладкие функции я(х, у)>0,
g(x, у)<0, поэтому
^,к^0, Ли>0, Bik>^. Сцк<д, Dik>0, Eik>^ (11.2.6) для достаточно малого шага h. Заметим, что имеет место равенство Лд + ^д + С^ + Лд + ^д^.к-(11.2.7)
Будем предполагать выбор h столь малым, что сеточная область Dh остается односвязной, т. е. из любого узла Dh в любой другой можно перейти на сетке по пути, который связывает только соседние узлы. Важным фактом разностных уравнений (11.2.5) является следующая теорема, которая называется принципом максимума. На принципе максимума основано доказательство многих теорем существования и единственности теории разностных схем.
Теорема 1Д.З. Пусть для значений uik на множестве внутренних узлов выполняется неравенство
-Lhuik>0;
тогда на Dh "значения uik не могут иметь положительного максимума; если
'Lhulk^,
то на Dh значения ui k не могут иметь отрицательного минимума, за исключением случая uik = const.
Доказательство. Допустим, что иик#const и во всех внутренних узлах Lhuik^0. Предположим противное, т. е. что uik достигает положительного максимума U>0 в некотором внутреннем узле. Тогда можно найти такой внутренний узел (/*, к^\ в котором и^ к = U > 0 и хотя бы в одном соседнем с ним узле wZk<[/ (это следует из допущения uik^const). Запишем
Lh Ul*, k* = A4, k* U4, k* + 1 + B4» k* UU " 1, k* +k* ^ +
Из неравенств (11.2.6) следует, что замена значений uik в соседних с /*, к* узлах на U приведет к строгому неравенству
и(А( к -УBi к +Cf к "VDi к "VEi к )>0, но из (11.2.7) следует
^>o,
что противоречит условию gIsk<0 в Dh. Следовательно, сделанное предположение неверно и первая часть теоремы доказана, вторая часть доказывается аналогично.
Упростим выражения в граничных узлах (11.2,. 4), полагая 0 = 0, что соответствует переносу значения ф(х, у) с непрерывной границы в узел Гй. Погрешность такой аппроксимации O(h\
Теорема 11.4. Пусть 0 = 0, тогда система линейных уравнений (11.2.5), (11.2.4) имеет единственное решение.
Доказательство. Теорема будет доказана, если показать, что соответствующая система (11.2.5), (11.2.4) — однородная линей- 426\
ная система—имеет только нулевое решение (uik = 0). Однородная система получается из (11.2.5), (11.2.4), если положить
fi,k=^ ^i,k=Q-
Таким образом, получаем значения uik = 0 для граничных узлов из условия и1Л = <р1Л. Пусть хотя бы в одном внутреннем узле и^, к*> 0 (< 0), но тогда по принципу максимума (теорема 11.3) максимальное положительное (или отрицательное минимальное) значение и1Л достигается на границе Гй, что невозможно, так как ми=0 на границе Гй. Противоречие доказывает теорему.
В общем случае, когда в уравнениях (11.2.4) 0/0, также справедливо аналогичное утверждение.
Теорема 11.5. Система линейных уравнений (11.2.5), (11.2.4) имеет единственное решение.
Доказательство. Покажем, что однородная система (11.2.5), (11.2.4) имеет только нулевое решение. Если хотя бы в одном внутреннем узле и^,к*>0 (<0), то, согласно принципу максимума, максимальное положительное (минимальное отрицательное) значение ui k достигается на границе, что противоречит (11.2.4), поскольку на границе Гй имеем
9
и1Д ~ Г+0 Wi±1,k±1 *
Полученное противоречивое неравенствоПолученное противоречивое неравенствои доказываети доказывает
Полученное противоречивое неравенство
Полученное противоречивое неравенство
и доказывает
и доказывает
теорему.
Решение разностных уравнений. Для решения системы линейных уравнений полученной разностной схемы могут применяться методы, изложенные в гл. 8, например метод простой итерации. Перепишем систему уравнений (11.2.5), (11.2.4) в виде, удобном для применения метода простой итерации: для внутренних узлов
Di, kEi, к^i,k^i, кDi, kEi, к^i,k^i, к(11.2.8)(11.2.8)А^ кк
Di, kEi, к
^i,k^i, к
Di, kEi, к
^i,k^i, к
(11.2.8)
(11.2.8)
^i,k~
^i,k
для граничных узлов
Mi»k~Y^ui±l,k±-l + ^Фг±0,к±е-(11.2.9)
Предположим, что giik<0 и выполняются условия (11.2.6). Будем решать систему уравнений относительно uL к методом простой итерации согласно следующему итерационному процессу: для внутренних узлов
^i,k ^i,k ^i,k ^i,k ^i.k
для граничных узлов
M^+1,=7TZM‘P±)1'lfc±1+TTfl(pi±e-'i±e; ^=0’ *’ 2’ - м?^ задано.
Теорема 11.6. Пусть giik<0 и выполнены условия (11.2.6). Тогда последовательные приближения и^\ сходятся к точному решению разностной схемы uiik или системы уравнений (11.2.8), (11.2.9) и имеет место оценка
max | и^\ — uit k | ^-^max | w^i |,
гдегдеi, кI- 4 i, к
где
где
^i,kА1ЛЛ- Bik-VD^k-V Eik
-V^kciA
Доказательство этой теоремы состоит в проверке условия сходимости метода простой итерации для систем линейных уравнений (см. гл. 6), при этом подразумевается, что неизвестный вектор г образуют элементы и1к. Например, компоненты вектора у можно занумеровать следующим образом: пусть 1 ^ z ^ ^, 1 ^ к < N2; тогда
У1 = М1.1, ^ = w2,i, vN1 = uNvi> ^N^ + 1=U2,1’ УНг+2 = и2,2» — V2Nl~UNv2^ VNv N2 = UNv H2* Относительно векТора и разностная схема—это система линейных уравнений в матричной записи
Av = b, где матрица А имеет в каждой строке не более пяти ненулевых элементов:
(11.2.10)
Это связано с тем, что производные в каждом внутреннем узле (z, к) аппроксимировались по пяти соседним узлам (рис. 11.8).
Узлы в аппроксимации производных дифференциального уравнения называются шаблоном.
На рис. 11.8 изображен пятиточечный шаблон, который использовался при построении разностной схемы во внутренних узлах исходного дифференциального уравнения.
\
Рис. 11.8Рис. 11.8Матрица А вида (11.2.10), у которой достаточно много нулевых элементов, называется разреженной. Для решения систем линейных уравнений с такими матрицами разработаны достаточно эффективные прямые методы решения— формы исключения Гаусса со специальным хранением матрицы (упаковкой) в памяти ЭВМ и специальной обработкой. Подробности можно найти в [25].
Рис. 11.8
Рис. 11.8
Оценка погрешности и сходимость решений разностных уравнений. Можно показать, что принцип максимума, справедливый для системы разностных уравнений, эквивалентен устойчивости разностной схемы. Но тогда, так же как и для обыкновенных дифференциальных уравнений, решения разностных уравнений при 7г—*0 сходятся к точному решению краевой задачи со скоростью, определяемой порядком аппроксимации уравнения и краевых условий. Таким образом, для точного решения (w(x, ^)gC4[D]) имеем оценку погрешности
max|wz к — u(xh ^)| = О(Л2), h->0.(11.2.11)
i,k
Оценка погрешности (11.2.11) справедлива, если точное решение четырежды непрерывно дифференцируемо в области D. Для областей с угловыми точками, например прямоугольника, вообще говоря, и^х. у)^С4[Г>]. Однако если граничная функция, т. е. Ф (*, ^), удовлетворяет в углах специальным условиям согласования, то точное решение и^х, у)еС4[/)] и является верной оценка (11.2.11).
Для прямоугольной области D = {x0^x^x1, Уо^У^У1} такими условиями согласования могут быть:
достаточная гладкость ф(х, у),
функция ф (х, у) должна удовлетворять в углах прямоугольника дифференциальному уравнению.
Например, функция ф(х, у) = х2+у2 удовлетворяет условиям согласования для уравнения
д2и д2и
в углах D.
Оценка погрешности (11.2.11) имеет в основном теоретическое значение, поскольку содержит константу с, которую практически трудно определить:
max|Mik — и^ y^\ = ch2 + o(h2), h^.
Поэтому в реальных расчетах используется правило Рунге оценки погрешности, аналогичное тому, которое применяется в численном интегрировании и решении обыкновенных дифференциальных
уравнений. Проводятся два варианта расчета и^к с шагом h и и^1 с шагом А/2, тогда погрешность имеет вид
шах | м^ - и (xt., уг-)| = | max | u?ti - и£ к | + о (/z2)
к5 i, к
и главная часть погрешности определяется на совпадающих узлах.
Пример построения разностной схемы. Для примера рассмотрим уравнение
(11.2.12)(11.2.12)б2 и д2и _тдих
(11.2.12)
(11.2.12)
дх бу2 дх v
в квадрате Z)=|0^x^l, O^y^l} с краевым условием
и^х, +) = ф(х, у)=ехр(х—у)(11.2.13)
на сторонах квадрата D.
Чтобы функция ф(х, у) удовлетворяла условиям согласования, подставим (11.2.13) в (11.2.12) и таким образом определим функцию /(х, у). Имеем
/(х, +) = е-у(ех+1).(11.2.14)
У/ 1,0 ’
2/з3
1/з’
ki)
J4.2)
^(4,3)
_»(4,4)
,(3,1) ,
г(3*2) 1
,(3,3)
/3,4)
/2,1)
г(2^) (
/2,3) ч
/2,4)
,0,1)
,(1,2)
((1,3)
(1,4)
0^
1/
3
2/
'з
1,
0 ^
Следовательно, точное решение уравнения (11.2.12) с краевыми условиями (11.2.13)—это и есть функция (11.2.13), определенная внутри области D.
Метод построения этого примера с известным точным решением краевой задачи является традиционным при отладке программ решения рассматриваемого класса задач.
Рис. 11.9узлы так, как показано на рис. Для значений и1Л в граничных узлах из (11.2.13) получаемРис. 11.9узлы так, как показано на рис. Для значений и1Л в граничных узлах из (11.2.13) получаемВыберем шаг /z=l/3. Занумеруем
Рис. 11.9
узлы так, как показано на рис. Для значений и1Л в граничных узлах из (11.2.13) получаем
Рис. 11.9
узлы так, как показано на рис. Для значений и1Л в граничных узлах из (11.2.13) получаем
11.9.
Wi, 1 = 1,0,^!, 2 = exp (1 /3), Mi, з = exp (2/3), мх, 4 = exp (1),
м2> 4=ехр (2/3), м3 4 = exp (1 /3), м4$ 4 = 1,0, м4 3 = ехр (— 1 /3), u4i 2=ехр(—2/3), м41=ехр(— 1), м3$ t =ехр( —2/3), и2 t =ехр(—1/3).
Для значений во внутренних узлах из (11.2.12), (11.2.14) получаем систему четырех уравнений с четырьмя неизвестными:
М2,3- 2М2>2 + М2, 1 U32~ 2m2,2 + Mi>2 _-1/з(М2,3 — U2, 1)1/3/~1/3
w + W + ~>) 212(
И2,4 —2м2 з + м2 2 м3 3 —2м2 з + М! 32/з(М2,4 —м2, 2)2/3/„2/3
W213(
м3,4 —21/3 34-1/3 21/4 3 — 21/3 3 + 1/2 32/3(М3,4 —М3,2)_а-2/3/а2/3
(1/3)2+(1/3)2 +е (2/3)“3’3'
-м3,2 = е"2/3(е1/3 + 1).-м3,2 = е"2/3(е1/3 + 1).U3,3 2t/3 2 + tt3, 1 ^1,2“ 2w32 + w2>2 - 1/3 М2, 3“ М2, 1 (1/3)2 (1/3)2 (2/3)
-м3,2 = е"2/3(е1/3 + 1).
-м3,2 = е"2/3(е1/3 + 1).
Решив эту систему уравнений относительно w2,2> н2 з, мз, з> мз,2> определим приближенные значения к соответствующим точным значениям решения м(1/3, 1/3), и(2/3, 1/3), и (2/3, 2/3), м(1/3, 2/3).
Применение программы В8А0. Программа решает разностные уравнения, которые получаются при аппроксимации дифференциального уравнения на пятиточечном шаблоне. Область решения краевой задачи — прямоугольник. Если задана другая область, то ее можно заключить в прямоугольник и на непересекающейся части области с прямоугольником задать специальным образом краевую задачу. Затем используется программа В8А0. Более подробно с изложенным приемом, который называется методом фиктивных областей, можно познакомиться в [16].
Напишем программу решения задачи (11.2.12), (11.2.13) на сетке с числом узлов 8x8, т. е. с шагом /z=l/7. Приведем формулы для вычисления коэффициентов разностной схемы (11.2.5) для внутренних узлов 2^/^7, 2<к^1:
11e"xi4
^k = -^ Bik = T2-^ Сгк= -72-^L,k h2’цк h22Лh2
111 e-xi
1
1
п‘л=1р+1к’ Е‘’к="^'
Здесь xi = (<i—^h; yk = (k—i)h.
Для внешних узлов l^z, к <8
А^ 1=0, Л; 8 = 0, Аг к = 0, А8 к = 0, Вц i = 0, В( 8 = 0, В1к = 0, В8к = 0, Сц 1 = 1, Ci 8=1, Q k=l, C8 k=l, Di, i~0, Dt 8 = 0, Dt k = 0, D8 k = 0, E^ i = 0, Ei,8 = 0, Eyk = ^ E8k = 0. Формулы flk для внутренних узлов
Лк = е"у.(е^+1), 2^z, k^l.
Формулы fik для внешних узлов
=А,к = е^^\ f8,k = ^~\ 1^/, к^.
Зададим точность выполнения разностных уравнений е^Ю-3, точность для прекращения итераций е2=10”4.
Программа может иметь следующий вид:
REAL H,X(8),Y(8),A(8,8),B(8,8),C(8,8),D(8,8)
REAL E(8,8),F(8,8),U(8,8),G,E1,E2
REAL E3(20),E4(20),Wl(8,8),W2(8,8),W3(8,8)
INTEGER N1 ,N2,N,I1,12,13,N3,14,15,1 DATA H/0.142857/,N1 ,N2,N,11,12,N3,I4,I5,I
* /8,8,8,20,0,0,0,0,0/
DATA Е1,Е2/1.Е—3,1.Е—4/
с с
ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ УЗЛОВ И КОЭФФИЦИЕНТОВ РАЗНОСТНОГО УРАВНЕНИЯ
DO 1 1=1,8
X(l)=(I-l)*H
1
Y(I)=(I-1)*H
DO 2 1=2,7
DO 2 К=2,7
A(I,K)=1./(H*H)
B(I,K)= l./(H * H)-(EXP(-X(I))/2. * H)
C(I,K)=-4./(H*H)-l.
D(I,K).= 1 ./(H * H)+(EXP( - X(I))/2. * H)
Е(1,К)=Ц/(Н*Н)
2
F(I,K)=ЁХР( - Y(K)) * (EXP(X(l)) +1.)
DO 3 1 = 1,8
A(I,1)=O.
B(I,1)=O. '
C(I,1)=L
D(I,1)=O.
E(L1)=O.
A(I,8)=O.
B(I,8) = 0.
C(I,8)=1.
D(I,8) = O.
E(I,8)=0.
A(l,l)=0.
B(l,l) = 0.
C(1,I)= 1. ‘
D(1,I) = O.
E(l,l)=0.
A(8,l)=0.
B(8,I)=0.
C(8,I)=1.
D(8,I)=0.
E(8,I)=0.
F(I,1)=EXP(X(I)-Y(1))
F(I,8)=EXPXI)-Y(8))
F(1,I)=EXP(X(1)-Y(I))
3 с
F(8,I)=EXP(X(8)-Y(I))
ОБРАЩЕНИЕ К ПРОГРАММЕ B8A0 CALL B8A0(N 1 ,N2,N,A,B,C,D,E,F,U,G,11,12,13,
* N3,I4,I5,E 1 ,E2,E3,E4,W1,W2,W3,I)
с с
ВЫВОД НА АЦПУ РЕШЕНИЯ РАЗНОСТНЫХ УРАВНЕНИЙ
WRITE (6,4) U
4
FORMAT (2Х,8Е13.6) END
432
\
# 11.3. Разностный метод решениянестационарных уравнений
Нестационарные уравнения. Уравнения с частными производными, у которых одна из независимых переменных является временем, называются нестационарными. Решения таких уравнений u^t, х, у, z) описывают изменяющиеся во времени и пространстве процессы различной природы. Примеры нестационарных уравнений (волнового и теплопроводности) приведены в п. 5.3.19.
Особая роль времени в нестационарных уравнениях обусловлена также тем, что нестационарные процессы часто бывают необратимыми во времени. Это связано с диссипацией (рассеиванием) энергии, происходящей во время процесса. В диссипативных уравнениях неэквивалентность положительного хода времени и отрицательного проявляется в том, что преобразование tx = —t не сохраняет вида уравнений.
Волновое уравнение. Рассмотрим смешанную задачу (т. е. заданы начальные и краевые условия) для волнового уравнения
в области D = ^0^x ^1, O^Z^Z^ с начальными условиями
ф, 0) = ФоМ, ytkx> °)=Ф1М(11.3.2)
и условиями на краях
w(0, z) = 0, u^l, z) = 0.(11.3.3)
Будем предполагать, что /(х, z), ф0(х), Ф1М—достаточно гладкие функции, причем выполнены условия согласования в двух углах области D (х = 0, z = 0), (х = /, Z = 0), обеспечивающие существование и единственность решения w(x, z)eC4[Z>].
Для дискретизации исходной задачи покроем (рис. 11.10) область сеточной областью DhT:
DM = ^Xi = ih, O^i^m, t^jx, ^^j^pY
где m = l!h, p = txjx. Заменим производные во внутренних узлах Dh^ конечно-разностными отношениями
по шаблону, указанному на рис. 11.10. Подставим эти выражения в (11.3.2); отбрасывая погрешность аппроксимации, получим
1а2
^^n-i.i-^Uj.i+Uj-i.i^^Uj.^x-lUj.i+Uj.i-^+fj,i (11.3.4)
— систему разностных уравнений для внутренних узлов, 1^ ^j^p — 1, l^z^m—1. Начальные условия (11.3.2) заменяем разностными соотношениями
“.•,о = ФоМ, O^z^m,«1д=Ч..М+тФ1М4(А-+«2Ф°1^(П.3.5)
Краевые условия заменяем условиями в узлах
uOj=^ umj=^ ^^j^P-(11.3.6)
Система линейных алгебраических уравнений относительно uuj (11.3.4) — (1Г.3.6) является разностной схемой смешанной задачи (11.3.1) — (11^3). Погрешность аппроксимации замены дифференциального уравнения и начального условия O(/z2 + t2).
Заметим, что как в стационарном уравнении, так и в волновом использовался одинаковый шаблон. Но на границах области заданы различные услдвия. Смешанные условия (11.3.5), (11.3.6) позволяют явно записать формулы для решений разностных уравнений на (/+1)-м временном слое, если известны utj, uia_v т. е. явно решить систему разностных уравнений.
Схемы, позволяющие явно записать решения систем уравнений разностной схемы, по аналогии с обыкновенными дифференциальными уравнениями называются явными.
Из (11.3.4) для значений м/;+1 на (/+1)-м временном слое находим формулу
Ui,И1 = 2им-uia-i + ^r(ui+ia-2uia+Ui.ia) + T2fia, (11.3.7)
которая совместно с (11.3.5.), (11.3.6) позволяет вычислить значения решения на втором слое
М0,2> М1,2? - ^ ит,2М0,2> М1,2? - ^ ит,2(11.3.8)(11.3.8)
М0,2> М1,2? - ^ ит,2
М0,2> М1,2? - ^ ит,2
(11.3.8)
(11.3.8)
Рис. 11.10Рис. 11.10
Рис. 11.10
Рис. 11.10
по значениям на нулевом и первом. Затем по формуле (11.3.7)совместно с (11.3.8), (11.3.6) можно вычислить значения решения
на третьем слое и03; и13;
...; ит з по значениям на первом и втором слоях и т. д. Процесс вычислений завершается после достижения р-го временного слоя.
Аналогично явным схемам для обыкновенных дифференциальных уравнений (см. 10.1) схема (11.3.7) условно устойчива. Поэтому описанный выше процесс следует применять с учетом условий устойчивости.
434
ифифРис. 11.11Рис. 11.11Формулы явных разностных схем легко программируются. Некоторые временные слои обычно выдают на терминал, АЦПУ или графопостроитель, например, третий слой в виде,
иф
иф
Рис. 11.11
Рис. 11.11
представленном на рис. 11.11.
Справедливо следующее утверждение.
Теорема 11.7. Пусть м(х, z)gC4[D]—решение задачи (11.3.1) —
Пусть также выполнено условие устойчивости разностной
схемы
h2
Тогда решения разностной схемы им при Л, т^О сходятся к точному решению в среднеквадратичной норме на временном слое и имеет место оценка
max \ h £ ^ии-Цхь t^2 ) = О(А2+т2).
0<Кр \ 1 = 0/
Одномерное уравнение теплопроводности. Рассмотрим одномерное (одна пространственная переменная х) уравнение теплопроводности
УГ^+/М01.3.9)
в области D = ^^x^l, O^Z^^} со следующими смешанными
условиями: начальное условие
(11.3.10)(11.3.10)w(x, 0) = фо(х)
(11.3.10)
(11.3.10)
и краевые условия
и(о, г)=ио(0> “(^ 0=^(0-(п.з.п)
Будем предполагать, что Дх, t) и условия (11.3.10), (11.3.11) согласованы в двух углах прямоугольника так, что Цх, z)g gC4[Z>]—точное решение задачи (11.3.9) — (11.3.11). Проведем дискретизацию задачи на сеточной области Dhл, той же, что и для волнового уравнения на трех шаблонах: 1) явном, 2) неявном, 3) неявном шеститочечном (рис. 11.12). Начальное условие (11.3.10) в дискретном виде запишется следующим образом (для трех шаблонов):
и,; о = Фок),0^/и.(11.3.12)Краевые условияМ0, j = Цо (О)’ UmJ = Ц1 Vj\О^р. (11.3.13)и,; о = Фок),0^/и.(11.3.12)Краевые условияМ0, j = Цо (О)’ UmJ = Ц1 Vj\О^р. (11.3.13)1-1 i i+11)1-1 i i+11)i-1 I 1*12)Рис. 11.12i-1 I 1*12)Рис. 11.12ffj+11-1 I 1+13)ffj+11-1 I 1+13)
и,; о = Фок),0^/и.(11.3.12)
Краевые условия
М0, j = Цо (О)’ UmJ = Ц1 Vj\
О^р. (11.3.13)
и,; о = Фок),0^/и.(11.3.12)
Краевые условия
М0, j = Цо (О)’ UmJ = Ц1 Vj\
О^р. (11.3.13)
1-1 i i+1
1)
1-1 i i+1
1)
i-1 I 1*1
2)
Рис. 11.12
i-1 I 1*1
2)
Рис. 11.12
ffj+1
1-1 I 1+1
3)
ffj+1
1-1 I 1+1
3)
Для внутренних узлов в соответствии с тремя шаблонами заменим в (11.3.9) производные следующими разностными отношениями:
О ^4j+i-ui^ = ^ui+ij-Xj+ui-ijW^(11.3.14)
J1им+1 -“м) = рkut +1,j +1 -2ui.j +1 +
+и(-1.,+1)+А,-;(п.3.15)
1a1
- (мм.+1 - “ij) = 2^2 [(“i +1,, - 2м,-J+И,- -!,,) +
"J +(«i+M+i-2«U+i +«/-1. Л1)]+/и.(11.3.16)
Заметим, что правая часть (11.3.16) является полусуммой правых частей для х явной и неявной четырехточечных схем. Нетрудно проверить, что если w(x, z)eC4[Z>], то на м(х, z) погрешность аппроксимации для схем 1), 2) в узлах xb tj такова: 6>(т + й2); для схемы ,3), 6>(т2 + й2).
Разностные схемы 1), 2), 3) исходной смешанной задачи для уравнения теплопроводности — это выражения (11.3.12), (11.3.13) совместно с разностными уравнениями для внутренних узлов 1), 2), 3).
Разностная схема 1) устойчива, если выполнено неравенство та2 ^-й2.
2
Разностная схема 2) безусловно устойчива, но известный вычислительный61 принцип: погрешности должны быть одного порядка малости при вкладе в полную ошибку (см. гл.. 5) — также требует, чтобы т = О(й2). Указанные жесткие ограничения на выбор шага т по времени делают схемы 1), 2) неэффективными для практики. Например, при абсолютной точности 8= 10“ 2 следует выбрать й^0,1, т = 0,01, совершив примерно в 10 раз больше вычислительной работы, чем по схеме 3) на одном и том же временном интервале.
Наиболее употребительна для рассматриваемой задачи схема 3), которую называют схемой Кранка—Николсона. Эта
схема лишена отмеченных двух недостатков четырехточечных схем.
Рассмотрим ход вычислительного процесса по схеме 3) на примере перехода с нулевого временного слоя на первый. На
U2,o=<po(x2)J-0Illi • • •l_L 1> 0 h 2h • • •xРис. 11.13 \U2,o=<po(x2)J-0Illi • • •l_L 1> 0 h 2h • • •xРис. 11.13 \436436нулевом временном слое ц 0 заданы (рис. 11.13). Чтобы найти ии :, 0 ^ i< т, необходимо решить систему линейных уравнений, которая получается из (11.3.16) при 7=0, а именно:
U2,o=<po(x2)J-0
Illi • • •l_L 1> 0 h 2h • • •x
Рис. 11.13 \
U2,o=<po(x2)J-0
Illi • • •l_L 1> 0 h 2h • • •x
Рис. 11.13 \
436
436
-(Mi,i-^,0) = ^[(wi+b^
+(Mi+i,i ~^Щл + Mi-i,i)]+Ao;
имеем еще два соотношения для краевых значений из (11.3.13): wo,i = Ho(^ мш1=ц1(т).(11.3.17)
Перепишем систему уравнений для значений и1Л во внутренних узлах (i^i^m — 1) в следующем виде:
ЧТ2^“1»1—( "ТТ"^"!^i 0,(11.3.18)
\ iV/Lil
где
та1
До = -Vi,o-^2(^+i,o-2wl.o + w/_i,o)-wI;o
— известные величины, вычисляемые по нулевому слою. Теперь ясно, что (11.3.18), (11.3.17)—это трехдиагональная система линейных уравнений, которую можно решать методом прогонки (условия устойчивости прогонки здесь выполнены). Решив методом прогонки (11.3.18), (11.3.17), найдем значения uiA, O^i^m. Чтобы найти решение разностной схемы на втором временном слое щ 2, заменим (11.3.17) из (11.3.13): w0 2 = |x0(2t), um л = ц1(2т), а в (11.3.18) индекс 1 заменим на 2, 0—на 1. Решив полученную трехдиагональную систему относительно ui)2, определим значения на втором временном слое и т. д. Вычислительный процесс продолжаем до достижения /?-го временного слоя.
Сходимость решений разностных уравнений к точному решению и^х, z) устанавливает следующее утверждение.
Теорема 11.8. Пусть Цх, z)gC4[Z>]—решение задачи (11.3.9) — * (11.3.11). Тогда решение разностной схемы 3) — и^ при h. т^О сходится к точному решению и имеет место оценка
max max \ut ; — и(х^ z.)| = O(/z2 + t2).
Двумерное уравнение теплопроводности. Уравнение теплопроводности с двумя пространственными координатами лежит в основе моделирования многих реальных задач тепло- и массо- переноса. Вычислительные затраты решения таких задач выше, чем одномерных. Но если задача существенно двумерна, то одномерное уравнение уже нельзя использовать при построении модели.
Пусть, например, требуется найти распределение температуры в плоской квадратной пластине, на границе которой поддерживается заданная температура, с плотностью распределения на пластине тепловых источников Дх, у, z). Начальное распределение температуры задано. Тогда эта задача в линейном приближении может быть записана в виде
Рис. 11.14Рис. 11.14
Рис. 11.14
Рис. 11.14
ди д2и д2и\х
(^+sp)+/<w>(lL3J9)
в области D = ‘/o^x^l, O^y^l, O^z^z^ с начальным условием м(х, у, 0) = фо(х, у)(11.3.20)
и краевыми условиями
w(x, у, z) = p(x, у, z), (х, у)еГ.(11.3.21)
Решением задачи (11.3.19) — (11.3.21) является функция трех переменных Цх, у, t\ При фиксированном t = t* обычно строят либо трехмерное представление w(x, у, z), либо на плоскость выводят линии уровня м(х, у, z) = const (рис. 11.14). Чтобы построить разностную схему для двумерного уравнения, покроем область сеткой с шагом h по переменным х, у и шагом т по времени Z (рис. 11.15).
Получим сеточную область
Dh,M = Vxt = ih, yk = kh, tj=jTV где O^i^m, О^к^т, O^j^p; m=\]h, p = tY[T.
Наиболее экономичный по числу арифметических операций метод решения двумерных задач — это метод переменных направлений (или, что то же самое, метод расщепления, метод дробных шагов). Переход
с одного временного слоя j на другой у+1 разбивают на два этапа: 1) переход на промежуточный временной слой У+1/2 с шагом т/2, решение методом прогонки трехдиагональной системы в на
правлении оси х;
переход на (/+ 1)-й временной слой с промежуточного (/+1/2)-го с шагом т/2, решение методом прогонки трехдиагональной системы в направлении оси у.
Шаблон метода переменных направлений представлен на рис. 11.16. Система разностных уравнений для внутренних узлов сеточной области имеет следующий вид:
(т/2)(т/2)!> + 1Д,у + 1/2 — 2и( tj+ 1/2 + Ui_l kj+ 1/2) +!> + 1Д,у + 1/2 — 2и( tj+ 1/2 + Ui_l kj+ 1/2) +КК
(т/2)
(т/2)
!> + 1Д,у + 1/2 — 2и( tj+ 1/2 + Ui_l kj+ 1/2) +
!> + 1Д,у + 1/2 — 2и( tj+ 1/2 + Ui_l kj+ 1/2) +
К
К
+(Mi,k+i,j ^и1да^и1д-1а^^А,м+1.12>(11.3.22)
"V^i-U.kJ-HR-^ui,kj+i;2^"ui-lAJ+lIlY^^fi,k,j+1/2-
Здесь введено обозначение fi,kj-n(2=Axn Ук, tj+x/2). Кроме уравнений для внутренних узлов задаются значения нулевого временного слоя
^.к^Фо^ьЛ), O^i, к^т,(11.3.23)
и значения на границе сеточного квадрата
(11.3.24)(11.3.24)(«o,m=H(0, л, tj\ итЛа=^1, yk, t^,l«i,o,j = ^i, 0, tX м, „ , = ц(х„ 1, tX
(11.3.24)
(11.3.24)
В (11.3.24) на дробном временном слое tj следует заменить на ?,+1/2 = ^+т/2.
Теорема 11.9. Пусть ре-
шение задачи (11.3.19) — (11.3.21) Цх, у, z)gC4[D]. Тогда решения разностной схемы метода переменных направлений и1Л при к,т^0 сходятся к точному решению в среднеквадратичной норме на временном слое и имеет место оценка
(
m—1\1/2
Л2 Iо))2) = О(А2+т2).
i,k = O/
Оценим объем вычислительных затрат и необходимой памяти ЭВМ для реализации метода переменных направлений. Для того, чтобы перейти с нулевого временного слоя на следующий (1/2)-слой, необходимо решить для X^k^m— 1 трехдиагональную систему:
+ VUi, к + 1,0 — 2 UtЛэ о + ЩЛ _ !, 0 )] -Vfi, кЛ)г, или в традиционной записи
та2/2а2т Ата2
“^Twi-l,k, 1/2“ II и1ДЛ12^~-^2и1А-1ЛЛ12— Г1Д,Ц2э
где
F(,к, 1/2= — ТАк, 1/2™ "^r(Mi,k+l,O —2^- k O + Wz к_! 0) —2mz k 0
— известные величины, вычисляемые по нулевому слою. Чтобы для каждого к, Х^к^т—Х, выполнить прогонку, требуется О^т^ арифметических операций; таким образом, общее число операций
для определения по ui k 0 значений wlik 1/2 составляет тО^т^О^т2^. Для вычисления р временных слоев потребуется ~рО(т2) арифметических операций. Например, при т=102, р=103 число операций ~ 107 и на ЭВМ с быстродействием 106 оп/с требуется ~ 10 с на все вычисления.
Однако, для того чтобы оценить погрешность вычислений (применить правило Рунге), потребуется повторить вычисления с шагом А/2, т/2, а это увеличит число операций в 8 раз. Это составит ~ 80 с и общее время вычислений одного варианта с контролем точности ~ 90 с.
Теперь оценим необходимые ресурсы памяти ЭВМ. Очевидно, что если хранить значения и;М во всех узлах сеточной области Dhhv потребуемся (^+1)(^+1)2 ячеек памяти. Это составит ~107 слов, что для небольших ЭВМ превышает объем оперативной памяти. К тому же все временные слои в расчетах хранить не требуется. Обычно в памяти хранят только предыдущий и следующий временные слои, т. е. uikJ, uikJ+1, индекс j опускают, старый временной слой обозначают uik, новый vu. Тогда объем необходимой памяти для хранения значений uik, vik равен 2(лм+1)2. Это составит ^2 ТО4 ячеек, что приемлемо и для малых ЭВМ. Для анализа результатов некоторые временные слои (заданные tj) выводят на терминал, графопостроители и т. п.
• 11.4. Метод прямых
Введение. Рассматриваемый в этом пункте метод прямых относится к полудискретным методам. В основе полудискретных методов лежит следующая идея: провести дискретизацию дифференциального уравнения с частными производными не полностью по всем независимым переменным, а лишь частично. Например, можно провести дискретизацию только по пространственным переменным (в нестационарных уравнениях), время z оставляется при этом как непрерывная переменная.
Для иллюстрации такого подхода рассмотрим смешанную задачу для уравнения теплопроводности
-г, O^x^l, O^z^l, ) az ах25
1 и(х, 0) = фо(х), w(0, z) = w(l, z) = 0.
Пусть {/0(х), ^iM» - ккх\ —} — базис пространства функций С2 [0, 1], обращающихся на концах интервала O^x^l в нуль. Будем искать приближенное решение (11.4.1) в виде
ип^ 0=1 ^Цх\(11.4.2)
Чтобы записать уравнения для af(z), разобьем интервал 0<х^1 узлами xt с постоянным шагом h (рис. 11.17), h=\jn. Потребуем,
О^уЧи.О^уЧи.чтобы на прямых x=xt функция (11.4.2) удовлетворяла точно дифференциальному уравнению, т. е.
О^уЧи.
О^уЧи.
Предположим, что матрица L = /; ^Xj),0 IJ и,
невырождена; тогда для функций а,^ получаем систему линейных обыкновенных дифференциальных
уравнений, которую запишем в матричной форме:
^=Ла,(11.4.3)
dt
где вектор а=(а0, аь ..., аи), а матрица А определяется формулами
A = L'VB, В=^х3\ 0<iJ^n.
Потребуем, чтобы функция иДх, z) при 1=0 в узлах Xj совпадала с Фо(^)» т. е. удовлетворяла начальному условию. Тогда получим
i = 0
или с учетом существования обратной матрицы L"1
ЦО^Ь’Ч,(11.4.4)
где вектор й=(ф0(х0)> Фо(*Д Фо(*«^
Итак, исходная задача сводится к решению задачи Коши для системы линейных уравнений (11.4.3), (11.4.4) с непрерывным временем z, которая получена дискретизацией только по пространственной переменной х.
Если бы система уравнений для az(z) была решена аналитически, то функция иДх, z), определенная формулой (11.4.2), давала бы п-е приближение к решению исходной задачи. Практически система дифференциальных уравнений по времени z (из-за большой размерности и, а для нелинейных задач из-за нелинейности) должна решаться численно. Поэтому все-таки придется вводить дискретизацию по Z; следовательно, термин «полудискретные методы» не совсем точен. Сама идея сведения уравнений с частными производными к системе обыкновенных дифференциальных уравнений весьма полезна. Это объясняется тем, что к полученной системе можно применять разнообразные эффективные процедуры решения обыкновенных дифференциальных уравнений. Например, можно использовать методы с автоматическим выбором шага по точности, которые для обыкновенных дифференциальных уравнений разработаны гораздо глубже, а соответствующие программы входят
в стандартное математическое обеспечение ЭВМ. Последнее замечание может ввести в заблуждение (метод прямых лучше метода конечных разностей) при выборе численного алгоритма решения задач. Следует всегда помнить следующую мысль: нет ни одного метода решения, который был бы хорош для любой задачи; задача выбирает метод, а не метод—задачу.
Метод прямых с конечно-разностной аппроксимацией. Для дискретизации по пространственной переменной можно использовать конечно-разностные аппроксимации. Рассмотрим задачу (11.4.1). Разобьем интервал O^x^l узлами xt с шагом h (рис. 11.17). Вдоль прямых x=xt точное решение задачи—это функция только от г.
/ \ < \ ди , х dv At) _ .
„^(х,. t) = pf(t)> уДхь O<Z<«.
vi+i(')-2yi(?)+t>i-1(z) й2vi+i(')-2yi(?)+t>i-1(z) й2По формуле численного дифференцирования для внутренних линий, \^i^n—l, цолучаем
vi+i(')-2yi(?)+t>i-1(z) й2
vi+i(')-2yi(?)+t>i-1(z) й2
+ О(й2).
Подставляя эти выражения в исходную задачу и отбрасывая погрешность аппроксимации, получаем систему уравнений метода прямых
—+— 1,(11.4.5)
MtW> vn(t) = O
с начальным условием
ri(O) = (po(^i), 1^/^и—1.(11.4.6)
Система линейных дифференциальных уравнений (11.4.5) имеет трехдиагональную матрицу А правых частей
\ 0' 1 -2 /
вектор г = (и1, ..., ^-J. Найдем собственные значения Xt матрицы
А; Х;= —( 2cos—+2 I, l^i^n—1. Отсюда следует, что — 4<Xf<0. \ п /
Аналитическое решение задачи (11.4.5), (11.4.6) имеет вид / Ь^ л \
i>(t)= Т-1.1^(0),(11.4.7)
\ 0 "е— /
где матрица Т имеет своими столбцами собственные векторы матрицы А, соответствующие собственным значениям X,. Элементы матрицы Т равны
Тк —sin^Kkijn^ \^i,k^n—\,
Прямой подстановкой можно убедиться в справедливости формул для Xi и ТкД.
Самым важным результатом представления решения в форме (11.4.7) является возможность провести анализ коэффициента жесткости S системы уравнений (11.4.5). Как следует из 10.3, коэффициент жесткости определяется в нашем случае формулой
/ х тах|Х;| Xi cos(tc/w)+1 1+cos(tc/m) min|XJ Xn_j к(п — 1)1—cos(tc/«)’
cos —^+1v 7
n
При больших значениях и
X 242
” ~(”/»)2(1/2) л2” '
Таким образом, чем мельче шаг h (больше и), тем выше точность приближения метода прямых, но в то же время тем больше коэффициент жесткости системы обыкновенных дифференциальных уравнений метода прямых.
Рассмотренная модельная задача теплопроводности, имеющая точное аналитическое решение метода прямых с конечно-разностной аппроксимацией, содержит основные черты этого метода, которые проявляются в более сложных нелинейных задачах. Важным свойством в этом подходе является высокая жесткость системы обыкновенных дифференциальных уравнений, а следовательно, необходимость решения этих систем при больших п специальными методами (см. 10.3). Более подробно с вопросами сходимости метода прямых и приложениями к другим классам уравнений можно познакомиться в [4, 20].
.4.3. Применение программы В8А1. Для иллюстрации применения программы В8А1 рассмотрим задачу для одномерного нелинейного уравнения теплопроводности
ди 52. 2 тхди / ди\
— — _ (1 -f-M2 + sin2Z + xz)-—hcos — dt дххдх * у
в области 7) = {0^х<1, O^z^l} с начальным условием
w (х, 0) = 0
и краевыми условиями
sinzw(0, z)+cosz^(0, z)=e-“2,
(l + z)w(l, z)+e~^(l, z) = sin(z+w).
Точность интегрирования на одном шаге по времени 10"4 (см. описание В8А1). Шаг выдачи на терминал по времени зададим Az = 0,1 по Xi—через десять точек. Число прямых xt = const зададим равным 100. Полный контроль точности требует повторного
вызова В8А1 с удвоенным значением N (этот фрагмент алгоритма здесь опускается). Программа может иметь следующий вид:
REAL A,B,T0,Tl,U(101),E,W(1657),DT
INTEGER M,N,K,L,I
EXTERNAL PDEF,BNDY
DATA A,B,T0,Tl/0.,l.,0.,l./,W/101*0./,E/l.E—4/
ССССС2 1С СС2 1С Сс сс с22DATA M,N,K,L,I/0,101,1657,0,0/,DT/0.1 /
С
С
С
С
С
2 1
С С
С
2 1
С С
с с
с с
2
2
ВЫЧИСЛЕНИЯ ВРЕМЕННЫХ СЛОЕВ С ПОМОЩЬЮ ПРОГРАММЫ В8А1
DO 1 J = l,10
Tl=T0+DT
CALL В8А1 (М, А, В, ТО, Т1, U, N, Е, W, К, L, I)
1=0 J
ВЫВОД НА ТЕРМИНАЛ ВРЕМЕННОГО СЛОЯ
WRITE (5,2) T1,(U(I),I = 1,100,10)
FORMAT (2X,'T=',F4.1,10E13.6)
CONTINUE
END
ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ
ПРАВУЮ ЧАСТЬ ДИФФ. УРАВНЕНИЯ
SUBROUTINE PDEF(X,T,U,DU,F,Q)
REAL X,T,U,DU,F,Q
F=1.+U*U+SIN(T)*SIN(T)+X*X
Q=COS(DU)
RETURN
END
ВНЕШНЯЯ ПОДПРОГРАММА, ВЫЧИСЛЯЮЩАЯ
ФУНКЦИИ В КРАЕВЫХ УСЛОВИЯХ
SUBROUTINE BNDY(T,U,I,S,G,R)
REAL T,U,S,G,R
INTEGER I
IF (I.EQ.l) GO TO 1
S=SIN(T)
G=COS(T)
R = EXP(-U*U)
GO TO 2
S=l.+T
G=EXP(-T)
R=SIN(T+U)
CONTINUE
RETURN
END
Глава 12БИБЛИОТЕКА ФОРТРАН-ПРОГРАММ
В настоящей главе описывается библиотека, составленная из программ, входящих обычно в стандартные библиотеки для научно-технических расчетов. Отличием представленных программ является их полная независимость друг от друга. Описание выполнено для простейших вариантов применения программ. Вся библиотека имеет объем ~512К байт.
• 12.1. Каталог библиотеки
В каталоге приводится список разделов библиотеки. Слева от названия раздела дается обозначение его индекса.
АО. Вычисление элементарных функций
А1. Вычисление специальных функций
А2. Вычисление элементарных функций комплексного переменного
АЗ. Аппроксимация функций
А4. Интегрирование
А5. Суммирование рядов
Аб. Фурье-анализ
А7. Численное дифференцирование
А8. Операции с матрицами и векторами
А9. Решение систем линейных алгебраических уравнений
Вычисление собственных значений и векторов
Линейная оптимизация
Решение линейных интегральных уравнений
Корни полиномов
Корни нелинейных уравнений
Нелинейная оптимизация
Решение обыкновенных дифференциальных уравнений; задача Коши
Решение обыкновенных дифференциальных уравнений; краевая задача
Решение уравнений с частными производными
• 12.2. Содержание разделов
Библиотека состоит из 19 разделов. Каждый раздел содержит подпрограммы, которым присвоено имя, состоящее из индекса раздела и индекса программы в нем, например имя программы А1А2 означает: раздел А1, программа А2. Исключение составляют библиотечные функции фортрана, которые приводятся и с их обычными именами. Всюду, кроме некоторых программ раздела АО, вещественные значения берутся с одинарной точностью.
АО. Вычисление элементарных функций
A0A0:ABS(X)
вещественное абсолютное значение |x|
AOA1:IABS(I}J
целое абсолютное значение | i |
A0A2:DABS(X)
абсолютное значение с двойной точностью
AOA3:FLOAT (I)
преобразование целой величины в вещест
A0A4:IFLX(X)'
венную
преобразование вещественной величины в целую
A0A5:SNGL(X)
преобразование величины с двойной точностью в вещественную величину с одинарной точностью
A0A6:DBLE(X)
преобразование вещественной величины с одинарной точностью в величину с двойной точностью
A0A7:AINT(X)
выделение целой части вещественной величины с представлением результата в вещест
венном виде
A0A8:INT(X) ‘
выделение целой части вещественной величины
A0A9:IDINT(X)
выделение целой части величины с двойной точностью
AOBO:AMOD(X,Y)
вычисление вещественного остатка от деления вещественных чисел х(у
AOB1:MOD(X,Y)
вычисление целого остатка от деления целых чисел х(у
AOB2:DMOD(X,Y)
вычисление остатка с двойной точностью от деления чисел с двойной точностью х(у
A0B3:AMAX0(l,J,.„)
максимальное (минимальное) вещественное
A0B4:AMIN0(I,J,„.)
значение из списка целых чисел
A0B5:AMAX(X,Y,...)
максимальное (минимальное) вещественное
A0B6:AMIN(X,Y,-..)
значение из списка вещественных чисел
A0B7:MAX0(I,J,.„)
максимальное (минимальное) целое значение
AOB8:MINO(I,J,...)
из списка целых чисел
A0B9:MAX(X,Y,...)
максимальное (минимальное) целое значение
A0C0:MIN(X,Y,.„)
из списка вещественных чисел
AOC1:DMAX(X,Y,...)
максимальное (минимальное) значение с
A0C2:DMIN(X,Y,...)
двойной точностью из списка чисел с двойной точностью
446
' X.
A0C3:SIGN(X,Y,) A0C4:ISIGN(I,J) A0C5:DSING(X,Y)A0C6:DIM(X,Y) A0C7:IDIM(I,J) A0C8:EXP(X)A0C9:DEXP(X) AODO:ALOG(X) AOD1:ALOG10(X) AOD2:DLOG(X) A0D3:DLOG10(X) A0D4:SQRT(X) A0D5:DSQRT (X) A0D6:SIN(X) A0D7:DSIN(X) AOD8:COS(X) AOD9:DCOS(X) AOEO:TANH(X) AOE1:ATAN(X)A0E2:DATAN(X)A0C3:SIGN(X,Y,) A0C4:ISIGN(I,J) A0C5:DSING(X,Y)A0C6:DIM(X,Y) A0C7:IDIM(I,J) A0C8:EXP(X)A0C9:DEXP(X) AODO:ALOG(X) AOD1:ALOG10(X) AOD2:DLOG(X) A0D3:DLOG10(X) A0D4:SQRT(X) A0D5:DSQRT (X) A0D6:SIN(X) A0D7:DSIN(X) AOD8:COS(X) AOD9:DCOS(X) AOEO:TANH(X) AOE1:ATAN(X)A0E2:DATAN(X)А1АЗ:функцияБесселяКо(хА1А4:функцияБесселяKi(хА1А5:функцияБесселя^0 <(х)А1А6:функцияБесселяЛ1(х)А1АЗ:функцияБесселяКо(хА1А4:функцияБесселяKi(хА1А5:функцияБесселя^0 <(х)А1А6:функцияБесселяЛ1(х)А1А0:А1А1:А1А2:А1А0:А1А1:А1А2:
A0C3:SIGN(X,Y,) A0C4:ISIGN(I,J) A0C5:DSING(X,Y)
A0C6:DIM(X,Y) A0C7:IDIM(I,J) A0C8:EXP(X)
A0C9:DEXP(X) AODO:ALOG(X) AOD1:ALOG10(X) AOD2:DLOG(X) A0D3:DLOG10(X) A0D4:SQRT(X) A0D5:DSQRT (X) A0D6:SIN(X) A0D7:DSIN(X) AOD8:COS(X) AOD9:DCOS(X) AOEO:TANH(X) AOE1:ATAN(X)
A0E2:DATAN(X)
A0C3:SIGN(X,Y,) A0C4:ISIGN(I,J) A0C5:DSING(X,Y)
A0C6:DIM(X,Y) A0C7:IDIM(I,J) A0C8:EXP(X)
A0C9:DEXP(X) AODO:ALOG(X) AOD1:ALOG10(X) AOD2:DLOG(X) A0D3:DLOG10(X) A0D4:SQRT(X) A0D5:DSQRT (X) A0D6:SIN(X) A0D7:DSIN(X) AOD8:COS(X) AOD9:DCOS(X) AOEO:TANH(X) AOE1:ATAN(X)
A0E2:DATAN(X)
А1АЗ:
функция
Бесселя
Ко
(х
А1А4:
функция
Бесселя
Ki
(х
А1А5:
функция
Бесселя
^0 <
(х)
А1А6:
функция
Бесселя
Л1
(х)
А1АЗ:
функция
Бесселя
Ко
(х
А1А4:
функция
Бесселя
Ki
(х
А1А5:
функция
Бесселя
^0 <
(х)
А1А6:
функция
Бесселя
Л1
(х)
А1А0:
А1А1:
А1А2:
А1А0:
А1А1:
А1А2:
вещественное присваивание знака (| х | signj) целое присваивание знака (| z | sign/) присваивание знака с двойной точностью (|x|sign^)
вещественная положительная разность (х — min(x, у))
целая положительная разность (z —min(z,j)) вещественное значение ех от вещественного
аргумента
значение ех с двойной точностью от аргумента с двойной точностью'
вещественное значение 1пх от вещественного аргумента
вещественное значение 1g х от вещественного аргумента
значение 1пх с двойной точностью от аргумента с двойной точностью
значение 1g х с двойной точностью от аргумента с двойной точностью
вещественное значение ^/х от вещественного аргумента
значение ^/х с двойной точностью от аргумента с двойной точностью
вещественное значение sinx от вещественного аргумента
значение sinx с двойной точностью от аргумента с двойной точностью
вещественное значение cosx от вещественного аргумента
значение cosx с двойной точностью от аргумента с двойной точностью
вещественное значение thx от вещественного
аргумента.
вещественное значение arctgx от вещественного аргумента
значение arctgx с двойной точностью от аргумента с двойной точностью
А1. Вычисление специальных функций
интегральная показательная функция Ez(x) гамма функция Г(х) функция ошибок erf(x)
А1А7:
функция Бесселя ^oM
А1А8:
А1А9: Al ВО:
функция Бесселя ^Дх) функция Бесселя 70М функция Бесселя 7Дх)
A2. Вычисление
A2A0:CABS(Z)
элементарных функций комплексного переменного
абсолютное значение комплексной х/х2+у2
A2A1:REAL(Z)
величины z = (x,y)
выделение действительной части у комплексной величины z
A2A2:AIMAG(Z)
A2A3:CMPLX(k,
выделение мнимой части у комплексной величины г
У) объединение двух вещественных величин в
A2A4:CLOG(^)
A2A5:CSQRT(Z)
комплексную х-Ну
логарифм комплексного аргумента Inz квадратный корень из комплексного аргумента J"z
A2A6:CSIN(Z)
A2A7:CCOS(Z)
A2A8:CONJG(Z)
комплексный синус sinz комплексный косинус cosz комплексное сопряжение х — iy
АЗ. Аппроксимация функций
A3A0:
A3A1:
одномерная интерполяция по схеме Эйткена двумерная интерполяция бикубическими сплайнами
A3A2:
» аппроксимация функции одной переменной полиномами методом наименьших квадратов
А4. Интегрирование
A4A0:
интегрирование одномерных функций на конечном интервале, метод трапеций с уточнением
A4A1:
интегрирование одномерных функций на ко
A4A2:
нечном интервале, метод Гаусса интегрирование двумерных функций
А5. Суммирование рядов
A5A0:
A5A1:
A5A2:
суммирование числового ряда
4 вычисление предела последовательности суммирование рядов Чебышева
Аб. Фурье-анализ
A6A0:
Фурье-преобразование N вещественных чисел
A6A1:
Фурье-преобразование N комплексных чисел
448
А7. Численное дифференцирование
А7А0:
А7А1:
А7А2:
А8А0:
А8А1:
А8А2:
А8АЗ:
А8А4:
А8А5:
А9.
дифференцирование таблично заданной функции с переменным шагом
дифференцирование таблично заданной функции с постоянным шагом
диффренцирование функции, заданной подпрограммой
А8. Операции с матрицами и векторами
сложение двух матриц матричное умножение транспонирование матрицы скалярное произведение векторов вычисление определителя вещественной симметричнойположительноопределенной
матрицы
вычислениеопределителявещественной
матрицы
Решение систем линейных алгебраических уравнений
А9А0:
А9А1:
ВОАО:
В0А1:
В0А2:
ВОАЗ:
В1А0:
В2А0:
во.
В2.
решение вещественной системы линейных уравнений
решение вещественной системы линейных уравнений с симметричной положительно определенной матрицей
Вычисление собственных значений и векторов
вычисление собственных значений вещественной симметричной матрицы
вычисление собственных значений и собственных векторов вещественной симметричной матрицы
вычисление собственных значений вещественной матрицы
вычисление собственных значений и собственных векторов вещественной матрицы
В1. Линейная оптимизация
решение задачи линейной оптимизации симп- лекс-методом
Решение линейных интегральных уравнений
решение линейного интегрального уравнения Фредгольма второго рода
15 Ю. П. Боглаев
449
ВЗ. Корни полиномов
ВЗАО:
определение корней полинома с вещественными коэффициентами
В4. Корни нелинейных уравнений
В4А0:
поиск корня непрерывной функции одной переменной без вычисления производной
В4А1:
поиск корня функции одной переменной методом Ньютона
В4А2:
,решение системы нелинейных уравнений
В5. Нелинейная оптимизация
В5А0:
,минимизация функции одной переменной
В5А1:
‘минимизация функции нескольких перемен
ных
Вб. Решение
обыкновенных дифференциальных уравнений;
задача Коши
В6А0:
интегрирование системы обыкновенных дифференциальных уравнений методом Рунге— Кутта
В6А1:
интегрирование системы жестких обыкновенных дифференциальных уравнений
В7. Решение
обыкновенных дифференциальных уравнений;
краевая задача
В7А0:
решение краевой задачи для системы линейных обыкновенных дифференциальных уравнений
В7А1:
решение краевой задачи для нелинейных обыкновенных дифференциальных уравнений
В8. Решение уравнений с частными производными
В8А0:
решение эллиптического уравнения в прямоугольнике разностным методом
В8А1:
решение одномерного параболического урав-
,нения методом прямых
• 12.3. Описание программ
Вычисление элементарных функций. Программы АОАО — А0Е2 являются библиотечными функциями фортрана, обращение к которым осуществляется с учетом значений аргумента (целое, вещественное, с двойной точностью) и функции. Например:
1) REAL X,Y 2) DOUBLE PRECISION X,Y 3) REAL X
INTEGER КX = 3. 4K = INT(X)INTEGER КX = 3. 4K = INT(X)X = 0.4X=1.0+D —03
INTEGER К
X = 3. 4
K = INT(X)
INTEGER К
X = 3. 4
K = INT(X)
Y = EXP(X)Y = DEXP(X)
Вычисление специальных функций. Определение специальных функций и формулы для их вычисления можно найти в [22,23].
А1А0: интегральная показательная функция Ez(x)
Программа вычисляет
Ez(x)=f(e %js^ds, х>0,
FUNCTION A1AO(X,I)
Параметры входные:
X—вещественный аргумент функции,
I —целое число—индекс ошибки, до обращения следует
положить 1 = 0;
выходные:
А1А0—значение Ei^;
0—нет ошибок,
—аргумент Y^O, для которого функция Ei^x) не определена.
А1А1: гамма-функция Г(х) Программа вычисляет
J (е Sjsx ^ds, х>0,
_п\пх 1-
lim —7г—;г, любые х.
п_00х(х+1)...(х+и-1)
FUNCTION А1А1(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1А1:—значение Г(х);
О — нет ошибок,
1—аргумент слишком велик,
2—аргумент слишком большое отрицательное число
3 — аргумент близок к нулю,
4—аргумент — целое отрицательное число.
А1А2: функция ошибок erf(x) Программа вычисляет
JJj ехр( — s^ds. о
J
J
FUNCTION А1А2(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
А1А2—значение erf(x);
1 = 0 —нет ошибок.
А1АЗ: функция Бесселя УоМ
Программа вычисляет У0(х) для х>0
, FUNCTION А1АЗ(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1 АЗ: — значение Уо (х);
0 — нет ошибок,
1= < 1 —аргумент слишком велик,
2—аргумент отрицателен, У0(х) не определена.
А1А4: функция Бесселя УДх) Программа вычисляет УДх) для х>0.
FUNCTION А1А4(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0;
452' *
выходные:
А1А4: — значение j^i(x);
О — нет ошибок,
1 —аргумент слишком велик,
I 2 — аргумент отрицателен, yY (х) не определена,
I 3 — аргумент близок к нулю.
А1А5: функция Бесселя Jq^
Программа вычисляет Jo^ для х>0, в интервале х<0 следует использовать тождество Jo( —x) = J0(x).
FUNCTION A1A5(X,I)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1А5:—значение УоМ»
I 0 — нет ошибок,
I 1—аргумент слишком велик.
А1А6: функция Бесселя ^(х)
Программа вычисляет ^(х) для х^О, в интервале х<0 следует использовать тождество JY (— х) = — JY (х).
FUNCTION А1А6(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1 Аб: — значение JY (х);
j_ I 0—нет ошибок,— J 1 —аргумент слишком велик.
А1А7: функция Бесселя Kq^
Программа вычисляет Л*0(х) для х>0.
FUNCTION А1А7(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1А7: — значение KQ(xY
0—нет ошибок,
] 1—аргумент меньше нуля,К0(х)—не определена.
•Д А1А8: функция Бесселя К^х)
Программа вычисляет /СДх) для х>0.
‘ . FUNCTION А1А8(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1А8: — значение K^\xY
{
0 — нет ошибок,
—аргумент меньше нуля, KY (х)—не определена,
— аргумент близок к нулю.
А1А9: функция Бесселя /0(х).
Программа вычисляет /0(х) Для ^0, в интервале х<0 следует использовать тождество /0( —х) = /0(х).
FUNCTION А1А9(Х,1)
Параметры входные:■
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1А9: — значение /0(х)
{
0 — нет ошибок,
— аргумент слишком велик.
А1В0: функция Бесселя Ц{х\
454\
Программа вычисляет /Дх) для х>0, в интервале х<0 следует использовать тождество IY (— х) = — Ц (х).
FUNCTION А1В0(Х,1)
Параметры входные:
X—вещественный аргумент функции,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А1В0: — значение Л(х)
0 — нет ошибок, 1 — аргумент слишком велик.
Вычисление элементарных функций комплексного переменного. Программы А2А0 — А2А8 являются библиотечными функциями фортрана, обращение к которым осуществляется с соответствующим описанием типа аргумента и функции, например:
COMPLEX Z,W Z = (1.7,— 3.2) W = CCOS(Z)COMPLEX Z,W Z = (1.7,— 3.2) W = CCOS(Z)REAL W COMPLEX Z Z=(1.7,— 3.2) W = AIMAG(Z)REAL W COMPLEX Z Z=(1.7,— 3.2) W = AIMAG(Z)
COMPLEX Z,W Z = (1.7,— 3.2) W = CCOS(Z)
COMPLEX Z,W Z = (1.7,— 3.2) W = CCOS(Z)
REAL W COMPLEX Z Z=(1.7,— 3.2) W = AIMAG(Z)
REAL W COMPLEX Z Z=(1.7,— 3.2) W = AIMAG(Z)
Аппроксимация функций
АЗ АО: одномерная интерполяция по схеме Эйткена
Программа вычисляет по таблично заданной функции yt=f^x^ в узлах XiA^i^N, значение функции /(z) в точке z^xt по схеме Эйткена с заданной точностью 8.
SUBROUTINE A3A0(N,X,Y,Z,E,F,P,I)
Параметры входные:
N — количество узлов,
X—одномерный массив xb i^i^N,
У—одномерный массив у^ i^i^N,
Z—значение z, где функция вычисляется интерполированием,
Е—заданная точность 8,
F — одномерный рабочий массив Fb X^i^N; выходные:
Р—значение /(z),
I —индекс ошибки,
Г 0 — нет ошибок,
1= < 1 —количество узлов N недостаточно для достижения заданной
I точности.
АЗА1: двумерная интерполяция бикубическими сплайнами
Программа интерполирует в точке плоскости (х, у) двумерную функцию /(х, j>), заданную таблично на прямоугольной сетке, бикубическими сплайнами. Интерполирование по схеме: при фиксированных у 5, 1 J < М, для х,, 1 zX М определяются интерполяционные кубические сплайны jSx (хь у^ и интерполяционные значения 5Дх, у^ i^j^M; затем находятся интерполяционный сплайн SOi Дх, у7) и интерполированное значение So, Дх, j). Та же схема повторяется с изменением порядка координат: сначала фиксируются х^ находится S^xb у), затем значение
SUBROUTINE» A3A1(XC,YC,X,Y,F, SOI, S1O,I,W1,W2,W3,W4,J,M,N)
Параметры входные:
ХС—вещественное, значение х,
YC—вещественное, значение у,
X —вещественный одномерный массив, размерность N, - содержит x1<x2<...<xN,
У —вещественный одномерный массив, размерность М, содержит У1<у2<-<Ум
F —вещественный двумерный массив, размерность (А, М\ содержит значения /(хь у^,
I —целое, индекс ошибки перед обращением положить 1 = 0, Wl, W2, W3, W4—вещественные одномерные массивы, размерность J, рабочие массивы,
J —цел of, max (А, М^
М —целое, число узлов по оси у, N —целое, число узлов по оси х;
выходные:
S01—вещественное, интерполяционное значение So, i, S10 —вещественное, интерполяционное значение Si,0;
I __ f 0 — нет ошибок,~ 1 1 —нарушено условие xt ^x^xN) ух ^у^Ум-
АЗА2: аппроксимация функции одной переменной полиномамиметодом наименьших квадратов
Программа определяет методом наименьших квадратов полином вида
Р^) = 0,5яН1,1£ a, + i,j+i 7}(х),
7=1
(O^i^K, — 1^х^ + 1, 7)(х)—полиномы Чебышева), аппроксимирующий таблично заданную функцию j(x):
\
аргумент х I хх х2 ... хм значение у(х) | ух уг ... ум Если аргумент х лежит в интервале а^х^Ь, следует выполнить замену
х = ^2х—b — a)l(b — а\ — 1 ^х< +1.
Невязка, подлежащая минимизации, задается формулой
(
IмVI2
м { ] £ (м - Л к))2 ) > ° i< к>
где wt— весовые коэффициенты, ^>0; если M = z+1, 8i+i=0.
На входе программы задаются: максимальная степень полинома К, массивы (xb ух\ веса wx; на выходе получаются массивы коэффициентов ai + 1,j+1 (O^i^K, O^j^i) и массив погрешностей 8;+i(0<z^X). Вычисление Pi^ с полученными коэффициентами в любой точке х,—1<х^ + 1, можно выполнить с помощью программы А5А2.
SUBROUTINE A3A2(M,K1,N,X,Y,W,W1,W2,A,E,I)
Параметры входные:
М —целое, число точек в таблице, М>2,
К1 —целое, равное Х+1, где К—максимальная степень полинома,
N —целое, число строк массива A, N^KV
X —вещественный одномерный массив, размерность М, содержит массив (х1? х2, ..., хм\
У —вещественный одномерный массив, размерность М, содержит массив (у1? у2, ..., ум^,
W —вещественный одномерный массив, размерность М, содержит массив весовых коэффициентов (w15 w2,
W1—вещественный двумерный массив, размерность (3, М\ рабочий массив,
W2—вещественный двумерный массив, размерность (2, XI), рабочий массив,
I —целое, индекс ошибки, перед обращением положить 1 = 0;
выходные:
Е—вещественный одномерный массив, размерность XI, содержит невязки 8i+i; E(l+l) = 8i+i (O^z^X),
А—вещественный двумерный массив, размерность (А, р\ р^КЛ содержит коэффициенты «z+i.j+i; Л(1+1, J + + 1) = а1 + 1, j+i >
I — j 0—нет ошибок,
— 1 1 —параметры лежат вне допустимых интервалов.
Интегрирование
А4А0: интегрирование одномерных функций на конечноминтервале, метод трапеций с уточнениемПрограмма вычисляет приближенное значение
ьy = n^dx
последовательно по формуле трапеций с удваиванием числа узлов и уточнением
SUBROUTINE A4A0(A,B,E,N,F,Y,I,W)
Параметрьг входные:
А—нижний предел интегрирования а,
В — верхний предел интегрирования Ь,
Е—абсолютная погрешность,
N—максимальное число делений пополам отрезка [а, 6] F —имя внешней функции-подпрограммы, вычисляющей
W—рабочий одномерный массив, размерность N;
выходные: '
Y—значение интеграла у,
I—индекс ошибки; О—нет ошибок,
—точность не достигается,
— точность не достигается, требуется увеличить N.
А4А1: интегрирование одномерных функцийна конечном интервале, метод Гаусса
Программа вычисляет приближенное значение ь
по формулам Гаусса с выбором числа узлов по заданной абсолютной и относительной точности.
SUBROUTINE A4A1(F,A,B,E,D,Y,E1)
Параметры входные:
F —имя внешней функции-подпрограммы, вычисляющей
А —нижний предел интегрирования а, В —верхний предел интегрирования Ь, Е —заданная абсолютная погрешность, D —заданная относительная погрешность;
выходные:
Y —значение интеграла у,
Е1 — достигнутая абсолютная погрешность | у—Y | ^ Е1. Если El >max(E,Z)| У|), заданная точность не достигается с максимальным числом узлов.
А4А2: интегрирование двумерных функций
Программа вычисляет приближенное значениеь ф2(у)z = }dy ) Дх,у^х.
а Ф1М
ф2Мъ
Внутренний интеграл р(^) = J Дх,у^х и внешний z = Jv(y)dy Ф1Ма
вычисляются по формулам Гаусса с выбором числа узлов по заданной точности.
SUBROUTINE A4A2(A,B,F1,F2,F,E,Z,N,I)
Параметры входные:
А —нижний предел а интегрирования по у, В —верхний предел b интегрирования по у, F1 —имя внешней функции-подпрограммы, вычисляющей Ф1 (Л
F2 —имя внешней функции-подпрограммы, вычисляющей Фг^К
F —имя внешней функции-подпрограммы, вычисляющей Ж У),
Е —заданная абсолютная погрешность, I —индекс ошибки, до обращения положить 1 = 0;
выходные:
Z —значение интеграла,
N —число узлов, в которых вычислялась Дх, у);
ГО—нет ошибок,
) 1 —точность не достигается с максимальным числом узлов.
Суммирование рядов
А5А0: суммирование числового ряда
Программа вычисляет сумму ряда
S=^uk k=l по заданной относительной точности посредством преобразования Эйлера, ускоряющего сходимость.
SUBROUTINE A5A0(U,S,N,E,I)
Параметры входные:
U —имя внешней функции-подпрограммы, вычисляющей А:-й член ряда по заданному к
REAL FUNCTION U(K)
INTEGER К
N —целое, максимальное число слагаемых в частичной сумме ряда, N^\,
Е —вещественное, относительная погрешность вычисления выходные:
S —вещественное приближенное значение суммы ряда,
I —индекс ошибки;
ТО-—нет ошибок
[1 —точность не достигается с заданным N.
А5А1: вычисление предела последовательности
Программа вычисляет предел последовательности
S= lim ик
с помощью ускоряющего сходимость преобразования по заданной относительной точности.
Subroutine a5A1(u,n,s,e,i)
Параметры входные:
U —вещественный одномерный массив, размерность N, содержит (иг, и^ ..., uN),
N —целое, размерность массива и, А^Ю,
Е —вещественное, относительная погрешность вычисления S;
выходные:
S —вещественное, приближенное значение предела,
I —индекс ошибки;
I —fO — нет ошибок
(1 точность не достигается с заданным N.
А5А2: суммирование рядов Чебышева
Программа вычисляет сумму отрезка ряда Чебышева в заданной точке х. — 1 ^ х ^ 41, по заданным коэффициентам ab X^i^N, следуя формулам
460460\
460
460
X
N 0,5^ + £ а^-!^, m=l, 1 = 2N0,50!+ £ ^T2i-2(x), m = 2,N 0,5^ + £ а^-!^, m=l, 1 = 2N0,50!+ £ ^T2i-2(x), m = 2,i = 2 N £ а.Тц-!^i = 2 N £ а.Тц-!^m = 3,m = 3,^=1 соответствует общему случаю, ^ = 2—сумма полиномов четной степени, т = 3—нечетной.FUNCTION A5A2(X,A,N,M)Параметры входные:X —вещественное, аргумент х,А —вещественный одномерный массив, размерность N, содержит коэффициенты ^av а^ ..., а^, N —целое, размерность массива А, М —целое, индекс типа ряда т;^=1 соответствует общему случаю, ^ = 2—сумма полиномов четной степени, т = 3—нечетной.FUNCTION A5A2(X,A,N,M)Параметры входные:X —вещественное, аргумент х,А —вещественный одномерный массив, размерность N, содержит коэффициенты ^av а^ ..., а^, N —целое, размерность массива А, М —целое, индекс типа ряда т;выходные:выходные:А5А2 — вещественное, содержит значение S.А5А2 — вещественное, содержит значение S.12.3.7. Фурье-анализ. В этом разделе представлены программы, вычисляющие дискретное Фурье-преобразование N комплексных чисел12.3.7. Фурье-анализ. В этом разделе представлены программы, вычисляющие дискретное Фурье-преобразование N комплексных чиселzv=xv+zy;, 0<y^jV-lzv=xv+zy;, 0<y^jV-lпо формулампо формуламwk = —У zexpf — z^^\ O^k^N— 1VN j=о\ N /wk = —У zexpf — z^^\ O^k^N— 1VN j=о\ N /(12.3.1)(12.3.1)или в вещественной формеили в вещественной формеwk = ak-Hbk)wk = ak-Hbk)1 N-i1 N-i^cos( — )+^sm(^F^cos( — )+^sm(^F
N 0,5^ + £ а^-!^, m=l, 1 = 2
N
0,50!+ £ ^T2i-2(x), m = 2,
N 0,5^ + £ а^-!^, m=l, 1 = 2
N
0,50!+ £ ^T2i-2(x), m = 2,
i = 2 N £ а.Тц-!^
i = 2 N £ а.Тц-!^
m = 3,
m = 3,
^=1 соответствует общему случаю, ^ = 2—сумма полиномов четной степени, т = 3—нечетной.
FUNCTION A5A2(X,A,N,M)
Параметры входные:
X —вещественное, аргумент х,
А —вещественный одномерный массив, размерность N, содержит коэффициенты ^av а^ ..., а^, N —целое, размерность массива А, М —целое, индекс типа ряда т;
^=1 соответствует общему случаю, ^ = 2—сумма полиномов четной степени, т = 3—нечетной.
FUNCTION A5A2(X,A,N,M)
Параметры входные:
X —вещественное, аргумент х,
А —вещественный одномерный массив, размерность N, содержит коэффициенты ^av а^ ..., а^, N —целое, размерность массива А, М —целое, индекс типа ряда т;
выходные:
выходные:
А5А2 — вещественное, содержит значение S.
А5А2 — вещественное, содержит значение S.
12.3.7. Фурье-анализ. В этом разделе представлены программы, вычисляющие дискретное Фурье-преобразование N комплексных чисел
12.3.7. Фурье-анализ. В этом разделе представлены программы, вычисляющие дискретное Фурье-преобразование N комплексных чисел
zv=xv+zy;, 0<y^jV-l
zv=xv+zy;, 0<y^jV-l
по формулам
по формулам
wk = —У zexpf — z^^\ O^k^N— 1
VN j=о\ N /
wk = —У zexpf — z^^\ O^k^N— 1
VN j=о\ N /
(12.3.1)
(12.3.1)
или в вещественной форме
или в вещественной форме
wk = ak-Hbk)
wk = ak-Hbk)
1 N-i
1 N-i
^cos( — )+^sm(^F
^cos( — )+^sm(^F
112.KjkN2.KjkN,1 VT (2ujk\
1
1
2.KjkN
2.KjkN
b*=^,L ^cos “V -^sm
Обратное дискретное Фурье-преобразование задается формулой
1(.2Kjk\.
zj = ^TT L wKexp Z-— , O^y^A-1.y/Nk = o \/
Отсюда следует, что комплексно-сопряженные величины Zj есть прямое дискретное Фурье-преобразование от wk. Следовательно, обратное дискретное Фурье-преобразование для wk получается переходом к комплексному сопряжению wk, выполнением прямого 461
преобразования и, наконец, комплексным сопряжением результата. Поэтому ниже рассматривается только прямое преобразование. Используются алгоритмы быстрого Фурье-преобразования.
А6А0: Фурье-преобразование N вещественных чисел
Программа вычисляет Фурье-преобразование N вещественных чисел Хр ^^j^N—\ по формуле
L= У х.ехр| — i^—Y 0^k^N—\.(12.3.2)
VNj=o \/
Величины wk комплексные, обладающие свойством
WN-k = Wk.
SUBROUTINE A6A0(X,N,I)
Параметры входные:
X —вещественный одномерный массив, размерность N, компонента Y(/+l) должна содержать Xj,
N —размерность X, целое число, N=2P, р^20,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
X —содержит ак, ЬК для wb причем ак = Х^к\ O^k^N/2,
bk=X^k\ N/2<к^N — 1; остальные компоненты получаются из равенств aN-k = ak, bN-k=—bk;
| (0—нет ошибок,
[ 1 — N слишком велико, р > 20.
А6А1: Фурье-преобразование N комплексных чисел
Программа вычисляется преобразованием чисел z^, 0^j^N—\, по формулам (12.3.1).
SUBROUTINE A6A1(X,Y,N,I)
Параметры входные:
X —вещественный одномерный массив, размерность N, должен содержать X^j4- l^Rezj=xj, O^j^N— 1,
Y —вещественный одномерный массив, размерность N, должен содержать У(/+l^Imz,—^, O^j^A— 1,
N —размерность, целое число N=2P, р^20,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
X —содержит Y(A:+l) = Rewk = ak, O^k^N— 1, Y —содержит y(fc+l) = Imwk = bk, O^k^N—i;
Г О — нет ошибок,
• } 1 — N слишком велико, р > 20.
Численное дифференцирование
А7А0: дифференцирование таблично заданной функциис переменным шагом
Программа вычисляет численно первую производную j(x), используя интерполирование по трем последовательным точкам таблицы (xb у^:
аргумент хх x2...xN значение функции уг у^-Ун значение производной zx z2...zN
Ошибка аппроксимации 8 следующая:
dy, х Л /Х2d3y, х
£= max — (xj — z^ ^-max(xi+i -хЛ2 max —у (x) .
l^i^N dx6 /xi<x<xN dx
SUBROUTINE A7A0(X,Y,Z,N,I)
Параметры входные:
X —вещественный одномерный массив, размерность N, содержит массив xt
У —вещественный одномерный массив, размерность N, содержит массив yt
N —целое, размерность массивов X, У, Z;
выходные:
Z —вещественный одномерный массив, размерность У, содержит массив zb
I —индекс ошибки,
Г 0—нет ошибок,
I=< -1—А<3,
[^>0— совпадают узлы х^х^ i^j.
А7А1: дифференцирование таблично заданной функциис постоянным шагом
Программа вычисляет численно первую производную у(х), используя интерполирование по пяти последовательным точкам таблицы (xb yt\ xi+1—Xi = h; по массиву уь шагу h находится численное значение zv производной в узлах. Ошибка аппроксимации 8 следующая:
dy, хA4dsy ( х
8= max -— х, — Z: ^ — max —г хi^n dxx ’5 х <х<х dx5X *
Ошибка округления 8х ^ 11 у / Л, где у — абсолютная ошибка округления при представлении чисел yt в памяти ЭВМ.
SUBROUTINE A7A1(H,Y,Z,N,I)
Параметры входные:
H —вещественное, шаг таблицы Л,
У —вещественный одномерный массив, размерность N, содержит уь
N —целое, размер таблицы;
выходные:
Z —вещественный одномерный массив, размерность N, содержит массив zt
I —.йндекс ошибки;
JГ 0—нет ошибок,
I=< -1—У<5,
I 1—Я=0.
А7А2: дифференцирование функции,заданной подпрограммой
SUBROUTINE A7A2(X,N,H,D,E,F,I)
Параметры входные:
X —вещественное, значение х, в которой вычисляется ^^
N —целое, порядок производной 0<У^14,
Н —вещественное, задаваемый шаг для вычисления производных,
F —имя внешней функции, вычисляющей значение Дх) REAL FUNCTION F(X)
REAL X
I —индекс ошибки, перед входом положить 1 = 0; выходные:
D —вещественный одномерный массив, размерность 14, содержит D(l)=^(x), 1^z<M
Е —вещественный одномерный массив, размерность 14, содержит абсолютные погрешности в вычислении /-й производной;
f 0—нет ошибок,
(1—N = 0, илиЯ=0.
Операции с матрицами и векторами
А8А0: сложение двух матриц
Программа выполняет сложение матриц В и С по формуле
464\
Aij=Bia^Cia. X^i^M, X^j^N
SUBROUTINE A8A0(A,B,C,M,N,I)
Параметры входные:
В —вещественный двумерный массив, размерность (М, N\ С —вещественный двумерный массив, размерность (Л/, N\ М —число строк М матриц В и С, N —число столбцов N матриц В и С,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
А —вещественный двумерный массив, размерность (М, А), сумма матриц В и С;
(0—нет ошибок,
[1 —М или N меньше либо равны 0.
А8А1: умножение двух матриц
Программа выполняет умножение матриц В и С и, в зависимости от заданного варианта, результат помещается в А или В или С.
м
Ам=^В1ЛСка, X^N, Х^Р.
к=1
SUBROUTINE A8A1(A,B,C,N,P,M,Z,K,L,I)
Параметры входные:
В —вещественный двумерный массив, размерность (А, М), С —вещественный двумерный массив, размерность (М, Р), N —число строк массивов В и А, Р —число столбцов массивов А и С,
М —число строк массива С и столбцов массива В,
Z —вещественный одномерный массив, размерность К, К —целое, если L=X, то ^=1; в других случаях К—М L —целое, номер варианта, определяет, куда поместить результат, если:
L=XS ВС-А,
L = 2,ВС-+В,
L = 3,ВС-^С;
I—индекс ошибки, до обращения положить 1 = 0;
выходные:А —результатВ —результат С —результатвыходные:А —результатВ —результат С —результатумножения, если L=X, умножения, если Т = 2, умножения, если L = 3;умножения, если L=X, умножения, если Т = 2, умножения, если L = 3;
выходные:
А —результат
В —результат С —результат
выходные:
А —результат
В —результат С —результат
умножения, если L=X, умножения, если Т = 2, умножения, если L = 3;
умножения, если L=X, умножения, если Т = 2, умножения, если L = 3;
0—нет
ошибок,
1— N
или
Р или М^О,
2—£=2
и
М^Р,
3 —£=3
и
N^M,
4—£=1
и
к<м.
А8А2: транспонирование матрицы
Программа производит транспонирование матрицы А размером МхУ записанной в одномерный массив по столбцам. Результат А’ содержится в исходном массиве.
SUBROUTINE A8A2(A,M,N,K,L,J,I)
Параметры входные:
А —вещественный одномерный массив, размерность ^М, N\
М —целое, равное М—число строк А, N —целое, равное N—число столбцов А, К —целое, равное MxN,
L —целый одномерный массив, размерность У, рабочий массив,
J —целое, до обращения присвоить [(М+А)/2],
I —индекс ошибки, до обращения положить 1 = 0; выходные:
А —вещественный одномерный массив, размерность (М, N\ содержит транспонированную матрицу, записанную по столбцам;
(0—нет ошибок,= (1— K^MxNА8АЗ: скалярное произведение векторов
N
Программа вычисляет у = £ аД— скалярное произведение век- i= 1 торов а и Ь.
FUNCTION A8A3(A,B,N)
Параметры входные:
А —вещественный одномерный массив, размерность N, содержит вектор а,
В —вещественный одномерный массив, размерность N, содержит вектор Ь,
N —целое, размерность векторов; выходные:
А8АЗ — значение у.
А8А4: вычисление определителя вещественной симметричной
положительно определенной матрицы
Программа вычисляет определитель матрицы А разложением ее в произведение A = LL\ где L—нижняя треугольная матрица, U—транспонированная к L. Определитель есть сумма квадратов диагональных элементов L.
SUBROUTINE A8A4(A,K,N,D,W,I)
Параметры входные:
А —вещественный двумерный массив, размерность КхР, где P^N, для вычислений нужна только верхняя треугольная часть, нижняя поддиагональная часть используется как рабочий массив,
К —целое, число строк А, описанное в вызывающей программе, K^N; в простом варианте положить P=K=N,
N —целое, порядок матрицы А, для которой вычисляется определитель,
W —вещественный одномерный массив, размерность N, рабочий массив,
I —индекс ошибки, до обращения положить 1=0; выходные:
D — значение det А;
" 0—нет ошибок,
I 1 —матрица А не положительно определена,
I 2—определитель слишком велик,
3—определитель слишком мал.
А8А5: вычисление определителя вещественной матрицы
Программа вычисляет определитель матрицы А с помощью разложения на множители A — LU.
SUBROUTINE A8A5(A,K,N,D,W,I)
Параметры входные:
А —вещественный двумерный массив, размерность (К, Р), где P^N, содержит матрицу А,
К —целое число строк А, описанное в вызывающей программе, K^N; в простом варианте положить p=K=N,
N —целое, порядок матрицы А, для которой вычисляется определитель,
W —вещественный одномерный массив, размерность N, рабочий массив,
I —индекс ошибки, до обращения положить 1=0; выходные:
D — значение det А;
1=51=5О—нет ошибок,
1=5
1=5
1—матрица А особенная, полагается Г> = 0, 2—определитель слишком велик, 3 — определитель слишком мал.
Решение систем линейных алгебраических уравнений. Программы этого пункта вычисляют приближенные решения системы линейных уравнений
АХ=В,
где матрица А—матрица системы. Матрица В образована набором векторов правых частей систем, в простейшем случае В есть один вектор Ь. матрица X образуется из решений х систем
Ах = Ь
с правыми частями, входящими в В, в простейшем случае X есть один вектор х.
Алгоритмы основаны на различных вариантах метода исключения Гаусса.
А9А0: решение вещественной системы линейных уравненийс симметричной положительно определенной матрицей
SUBROUTINE A9A0(A,K,B,L,N,M,X,J,W, W1 ,L1,1)
Параметры входные:
А —вещественный двумерный массив, размерность (X, Р\ где P^N, содержит матрицу А, используется только верхняя треугольная часть,
К —целое, число строк массива А. описанное в вызывающей программе, K^N; в простом варианте положить p~K=N,
В —вещественный двумерный массив, размерность (L, Р), где Р^М, содержит элементы М векторов Ь, записанные по столбцам,
L —целое, число строк массива В, описанное в вызывающей программе, L^N; в простом варианте положить L=N,
N —целое, порядок матрицы А,
М —целое, число векторов В,
J —целое, число строк массива X, описанное в вызывающей программе, J>N; в простом варианте положить J=N,
W —вещественный одномерный массив, размерность N,
L1 —целое, число строк массива W1, описанное в вызывающей программе, L1>N,
I —индекс ошибки, до обращения положить 1 = 0;
468
выходные:
1=11=1О — нет ошибок,О — нет ошибок,X —вещественный двумерный массив, размерность (J, Р), где Р^М; содержит М векторов решений системы, W1—вещественный двумерный массив, размерность LxP, Р^М; содержит матрицу невязок В—АХ;
1=1
1=1
О — нет ошибок,
О — нет ошибок,
1 — матрица А не положительно определена, 2—матрица А плохо обусловлена.
А9А1: решение вещественной системы линейных уравнений
SUBROUTINE A9A1(A,K,B,L,N,M,X,J,W,I)
Параметры входные:
А —вещественный двумерный массив, размерность (К, Р), где P^N; содержит матрицу А.
К —целое, число строк А, описанное в вызывающей программе, K^N; в простом варианте положить P=K=N,
В —вещественный двумерный массив, размерность (£, Р), где Р^М; содержит элементы М векторов Ь, записанных по столбцам,
L —целое, число строк В, описанное в вызывающей программе, L^N; в простом варианте положить L = N,
N —целое, порядок матрицы А.
М —целое, число векторов В,
J —целое, число строк массива X, описанное в вызывающей программе, J^N; в простом варианте положить J=N,
W —вещественный одномерный массив, размерность N, I —индекс ошибок; до обращения положить 1 = 0;
выходные:
X —вещественный двумерный массив, размерность JxP, где Р^М; содержит М векторов решений системы;
(0— нет ошибок,
(1 —матрица А — особенная.
Вычисление собственных значений и векторов. В настоящем пункте представлены программы, определяющие собственные значения матрицы А. т. е. ненулевые X, удовлетворяющие равенству Ах = Хх, и соответствующие X—векторы х—собственные векторы матрицы А. В основе алгоритмов лежит: приведение исходной марицы к трехдиагональной (симметричные матрицы) или к почти треугольной (в общем случае) и применение QL- или (^-алгоритмов.
ВОАО: вычисление собственных значенийвещественной симметричной матрицы
SUBROUTINE B0A0(A,K,N,G,W,I)
Параметры входные:
А —вещественный двумерный массив, размерность (А, Р\ где P^N; содержит матрицу А, для вычислений нужна нижняя треугольная часть,
К —целое, число строк А, описанное в вызывающей программе, K^N; в простом варианте положить
, P=K=N,
N —целое, порядок матрицы А,
W -вещественный одномерный массив, размерность N, рабочий массив,
I —индекс ошибки, до обращения положить 1 = 0;
выходные: '
G —вещественный одномерный массив, размерность N, ’ содержит Х1? Х2, .♦., Хп в порядке возрастания;
{
0—нет ошибок,
1—алгоритм медленно сходится из-за близости собственных значений.
В0А1: вычисление собственных значений и собственных вектороввещественной симметричной матрицы
SUBROUTINE BOA1(A,K,N,G,X,L,W,I)
Параметры входные:
А —вещественный двумерный массив, размерность (А, Р), где P^N; содержит матрицу А, для вычислений нужна нижняя треугольная часть,
К —целое, число строк А, описанное в вызывающей программе, K^N; в простом варианте положить P=K=N,
N —целое, порядок матрицы А,
L —целое, число строк массива X; описанное в вызывающей программе, L^N,
W —вещественный одномерный массив, размерность N, рабочий массив,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
G —вещественный одномерный массив, размерность А, содержит Х1? Х2, ..., Хп в порядке возрастания,
X —вещественный двумерный массив, размерность (A, S), где S^N; содержит нормированные собственные вектора
(в евклидовой норме), расположенные по столбцам с соответствием
X(JJ)*->G(I)> J=l, 2, N;
{
О — нет ошибок,
1 —алгоритм медленно сходится из-за близости собственных значений.
В0А2: вычисление собственных значенийвещественной матрицы
SUBROUTINE BOA2(A,K,N,G1,G2,J,I) Параметры входные:
А —вещественный двумерный массив, размерность (К, Р), где P^N; содержит матрицу Л,
К —целое, число строк А, описанное в вызывающей программе, K^N; в простом варианте положить P=K=N,
N —целое, порядок матрицы А,
J —целый одномерный массив, размерность N, рабочий массив,
I —индекс ошибки; до обращения положить 1 = 0; выходные:
G1 —вещественный одномерный массив, размерность N; содержит вещественные части Re Xb 1 < i ^ N, собственных значений,
G2—вещественный одномерный массив, размерность N; содержит мнимые части ImXz, X^i^N, собственных значений,
Г0 — нет ошибок,1= < 1 —алгоритм медленно сходится из-за близостисобственных значений.
ВО АЗ: вычисление собственных значенийи собственных векторов вещественной матрицы
SUBROUTINE ВО A3(A,K,N,G 1 ,G2,X 1, L1 ,X2,L2, J,I)
Параметры входные:
A —вещественный двумерный массив, размерность (X, Р), где P^N; содержит матрицу А,
К —целое, описанное в вызывающей программе число строк A, K^N. в простом варианте положить P=K=N,
N —целое, порядок матрицы А.
L1 —целое, число строк массива XI, описанное в вызывающей программе, Ы^^
L2 —целое, число строк массива Х2, описанное в вызывающей программе, L2>7V,
J —целый одномерный массив, размерность N, рабочий массив,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
G1—вещественный массив, размерность N; содержит вещественные части ReXb X^i^N, собственных значений
G2 — вещественный массив, размерность N; содержит мнимые части ImXh l^zXM собственных значений,
XI —вещественный двумерный массив, размерность (L1, 5), где S^N; содержит вещественные части собственных . векторов. Соответствие Xl(J,I)*->G(I) + iG2(I),
Х2—цуцественный двумерный массив, размерность (L2, S), где S>N; содержит мнимые части собственных векторов. Соответствие X2(J,I)^G(I) + iG2(I);
{
0—нет ошибок, 1 —алгоритм медленно сходится из-за близости собственных значений.
Линейная оптимизация. Рассматривается каноническая задача линейной оптимизации: найти вектор х=(х1? ..., хп\ дающий минимум линейной функции
L^x^^c, х) = £ c^ii=l
при ограничениях
Ax = b, xf>0, X^i^n;
матрица A = (AiJ)) X^i^m, X^j^n, вектор b = ^bY, bm\
BIAO: решение задачи линейной оптимизациисимплекс-методом
SUBROUTINE B1AO(W,M,U,N,X,K,I,E,V,A,B,C)
Параметры входные:
W —вещественный одномерный массив, размерность (М, N\ рабочий массив,
М —целое, равное m-Vl, т—число строк массива А,
U —вещественный одномерный массив, размерность (М, М\ рабочий массив,
N —целое, равное п, п — число неизвестных хь
Е —абсолютная точность выполнения неравенств х^О,
V —вещественный одномерный массив, размерность М, рабочий массив,
А —вещественный двумерный массив, размерность ((М—2), N\ содержит матрицу А,
В —вещественный одномерный массив, размерность (М— 2), содержит вектор 6,
С —вещественный одномерный массив, размерность N, содержит вектор с=(с1? ..., с„)
выходные:
X —вещественный одномерный массив, размерность М, содержит оптимальное решение,
К —целый одномерный массив, размерность М—2, содержит номера переменных в массиве X.
Если
*(l) = *i, К^ = К2, ..., К(М—2) = Кт, ^(1) = ^, У(2) = а2, ..., Х(М-2) = ат,
^ = «1^X2 = ^ -> ХКж = ^т*
Оптимальное значение L содержится в Х^М— 1). Если Я^Ю6, то номер переменной 106 — Kv
Значения переменных хь номера которых отсутствуют в массиве К, равны нулю.
I—индекс ошибки;
Г1—найдено оптимальное решение, 1 = <2 — задача не имеет решения,
13 — функция L^ не ограничена.
Решение линейных интегральных уравнений. Рассматривается интегральное уравнение Фредгольма второго рода
y^ = X^G^x,s^y^ds-\-f^Y a^x^b.
Решение у(х) при фиксированном X ищется в виде отрезка ряда Чебышева одной из форм
(на приведенном интервале — 1^х^ + 1). Исходное уравнение сводится к системе линейных алгебраических уравнений относительно вектора с = (сг, с2, ..., cN\ Факт сходимости выясняется путем сравнения решений систем с несколькими разными N и сравнения результатов вычислений с дополнительными данными о точном решении. Если известно, что решение у^х)—четная функция относительно середины отрезка [а, 6], то ищется разложение по
полиномам Чебышева четной степени, если—нечетная, то—по полиномам Чебышева нечетной степени.
В2А0: решение линейного интегрального уравненияФредгольма второго рода
SUBROUTINE B2A0(G,F,P,A,B,R,D,N,W,V,Z,K,L,Y,C,I)
Параметры входные:
G —внешняя вещественная функция, вычисляющая по вещественным аргументам х, s значение ядра G (х, s^
F -—внешняя вещественная функция, вычисляющая по ве- кБественному аргументу х значение /(х),
Р —вещественное, значение X,
А —т нижний предел интегрирования а,
В —верхний предел интегрирования Ь, R —логическая переменная. Значение .TRUE.— рассматривается четное или нечетное решение в зависимости от D, .FALSE.— рассматривается общий случай,
D —логическая переменная. Значение .TRUE.— четное решение у^х\ .FALSE.— нечетное решение у(х),
N —целое, длина отрезка ряда,
W —вещественный двумерный массив, размерность ^К. М\ М^К, рабочий массив,
V —вещественный двумерный массив, размерность (К, N^ N>1, рабочий массив,
Z —вещественный двумерный массив, размерность (2, Р), Р^Ц рабочий массив,
К —целое, описанное в вызывающей программе число строк массива W, V, K^N;
L —целое, L = 27V+1,
I —индекс ошибки, до обращения положить 1 = 0; выходные:
Y —вещественный одномерный массив, размерность N, содержит приближенные значения y(xf) в первых N из Л/+1-Й точки
Xi=^a+Z> + (Z>-a)cos ^^^“У 1 ^i^M+1,
если R = .TRUE. и D = .TRUE., M = 2N если R = .TRUE. и D = .FALSE., M = 2N-1 если R = .FALSE., M = N-1
C —вещественный одномерный массив, размерность N, коэффициенты ct l^i^N;
(О — нет ошибок,
1 = а—Л^В,
12— Р близко к собственному значению интегрального уравнения.
Корни полиномов
ВЗАО: определение корней полинома с вещественными коэффициентами
Программа вычисляет корни полинома
PN^ = a04-a1x4-a2x24-...4-aNxN.
SUBROUTINE B3A0(A,W,N,X,Y,I)
Параметры входные:
А—вещественный одномерный массив, размерность #+1, содержащий коэффициенты полинома, Л (/+l) = af, О^ЧА,
W—вещественный одномерный массив, размерность А+1, рабочий массив,
N —порядок полинома
выходные:
X—вещественный одномерный массив, размерность N, содержит действительные части корней,
У—вещественный одномерный массив, размерность N, содержит мнимые части корней,
I —индекс ошибки;.
О—нет ошибок,
—^< 1,
1 = ^ 2—А>36,
3—корень не определяется за допустимое число итераций, 4—^=0.
Корни нелинейных уравнений
В4А0: поиск корня непрерывной функции одной переменной без вычисления производной0
Программа вычисляет приближение к корню уравнения
Ж=о
по заданному интервалу Га, 6], на котором локализован единственный корень, т. е. /(а) •Ж^о.
В основе алгоритма метод бисекции.
SUBROUTINE B4A0(X,R,F,A,B,E,N,I)
Параметры входные:
F—имя внешней вещественной функции для вычисления 7(4
A —вещественное, левый конец интервала неопределен- v ности корня, равен а,>
В —вещественное, правый конец интервала неопределен- ^ ности корня, равен Ь,
Е —вещественное, абсолютная точность определения корня 8,
N —целое, максимальное значение числа итераций;
выходные:
X —вещественное, приближенное значение корня,
R —вещественное, значение /(х),
I —индекс ошибки,
fd—нет ошибок,
I = < 1 —точность 8 не достигнута за N итераций, (2 — нарушено условие / (я)' f(b) ^ 0.
В4А1: поиск корня функции одной переменнойметодом Ньютона
Программа реализует метод Ньютона
J
по заданному х0 с условием прекращения итераций по заданной точности 8. Процесс прекращается, если
§<е и |/(^+1)|^102е,
где\
gll^+i-^l/l^+i I, если |xt+1|>l, (J^-n-^l, если | A:fc+11=^ 1.
SUBROUTINE B4A1(X,R,D,F,XO,E,N,I)
Параметры входные:
F —имя внешней подпрограмы, вычисляющей по заданному вещественному аргументу х вещественное значение R и производной D, список ее параметров (X, R, D\
Х0 —вещественное, начальное приближение к корню,
Е —вещественное, заданная точность 8, N —целое, максимальное число итераций;
выходные:
X —вещественное, приближенное значение корня,
R —вещественное, значение /(х), D —вещественное, значение /'(х), I —индекс ошибок;
ГО—нет ошибок,
I = < 1 —точность 8 не достигнута за N итераций, (2—значение /'(х) близко к нулю.
\
В4А2: решение системы нелинейных уравнений
В основе алгоритма—метод Ньютона для векторного уравнения /И=о
Х„) = 0,
По заданному начальному приближению х^^х^, х^ к корню определяются последовательные приближения х^ = ^хх\ ..., х^), к=\Д, .... к корню. Процесс прекращается по заданной точности £, если
II Хк-Хк^ || ^8||xk+1 II в евклидовой норме.
Описание
SUBROUTINE B4A2(R,N,X,F,E,W,K,I)
Параметры входные:
R —имя внешней подпрограммы, вычисляющей значения ft по вектору х, список параметров (N, X, F, J), где
N —целое — число уравнений,
X —вещественный одномерный массив, размерность N,
F —вещественный одномерный массив, размерность N, должен содержать fb
J —индекс ошибки, если положить J= —1 вычисления прерываются, это значение присваивается I,
N —то же, что и в R,
X —то же, что ив/?, перед обращением присвоить значения (x(i0), ..., х^0)),
F —то же, что ив/?,
Е —вещественное, значение 8,
W —вещественный одномерный массив, размерность К, рабочий массив,
К —целое, размерность массива W\ K^N^N-V^^l,
I —целое, индекс ошибки, положить до обращения 1 = 0; выходные:
XFXF—содержит приближенное значение к решению системы уравнений, вектор (х^ ..., х„),*
X
F
X
F
—содержит значение /Дх^ ..., хи), X^i^n;
0 —нет ошибок,
— 1 —прерывание в подпрограмме /?, 1 —А^О, £<0, ^<А(ЗА+3)/2, 2 —выполнено 200 (N +1) итераций, 3 —слишком мало 8.
Нелинейная оптимизация
В5А0: минимизация функции одной переменной
Программа минимизирует функцию /(х) в заданном интервале [а, /)] (определяет локальный минимум).
SUBROUTINE В5A0(F,E,E 1,A,B,N,X,RД)
Параметры входные:
F —имя внешней подпрограммы, вычисляющей значение /(х). Список параметров подпрограммы (XI, F1), где ^1=/(^1),
Е —вещественное, относительная точность определения точки минимума,
Е1—вещественное, абсолютная точность определения точки минимума,
А —вещественное, значение левого конца интервала, равно а,
В —вещественное, значение правого конца интервала, равно Ь,
N —максимальное число итераций поиска минимума,
I —/индекс ошибки, до обращения положить 1 = 0; выходные:
X—вещественное, приближенное значение точки минимума ' с точностью £|Х| + Е1,
R—вещественное, значение ДД,
(0—нет ошибок,
= Д—Я + Е>Д А<3,
12—число итераций для достижения заданной точности >N.
В5А1: минимизация функции нескольких переменных
Программа определяет локальный минимум функции f^ = f(x^ .... х^ по заданному начальному приближению x^ = (xi, ..., х„У
В основе алгоритма—градиентный метод.
SUBROUTINE B5A1(F,N,X,R,G,S,E,K,I,W)
Параметры входные:
F —имя внешней подпрограммы, вычисляющей значение Дх) и grad Дх). Список параметров подпрограммы (А, X. У, G\
N —целое, размерность вещественного массива X.
X —вещественный одномерный массив, размерность N.
У —вещественное, значение Дх),
G—вещественный одномерный массив, размерность N. содержит вектор градиента,
N —целое, размерность вектора х,
X —вещественный одномерный массив, размерность N. до обращения элементам массива присвоить значения (х?,...
S —вещественное, оценка минимального значения функции, Е —вещественное, абсолютная погрешность в евклидовой норме,
К—целое, максимальное число итераций,
W — вещественный одномерный массив, размерность 2 У рабочий массив;
выходные:
X—содержит вектор х, доставляющий минимум /(х), R—вещественное, содержит значение /(х),
G—вещественный одномерный массив, размерность N, содержит компоненты вектора градиента,
I —индекс ошибки;
О —нет ошибок,
т J 1 —точность не достигается за К итераций, | — 1 — ошибка в вычислениях grad / (х), 2 —нет минимума.
Решение обыкновенных дифференциальных уравнений; задача Коши
Вб АО: интегрирование системы обыкновенныхдифференциальных уравнений методом Рунге—Кутта
Программа определяет решение системы уравнений
удовлетворяющее начальным условиям у^=Уь X^i^n. с выбором шага интегрирования по заданной точности методом Рунге — Кутта. Для вывода значений у^ в точках интервала [а, 6], следует составить программу вывода (см. ниже), в этих точках у( (х) находится интерполированием в программе В6А0.
SUBROUTINE B6A0(X,B,N,Y,E,J,F,O,W,I)
Параметры входные:’
X—вещественное, значение независимого переменного х, перед обращением присвоить Х=а,
В—вещественное, значение правого конца интервала интегрирования, равно Ь,
N — целое, число уравнений системы, равно п,
У—вещественный одномерный массив, размерность N, содержит значения уДх), ^(^ —> ^М перед обращением присвоить элементам массива начальные значения (yi,
Е—вещественное, значение задаваемой погрешности 8, J —целое, индекс контроля погрешности, до обращения положить
Г0 — если контроль по условию 5^8 max [1, 1^Ml, -, 1кМ1]>
J = < 1—если контроль по условию 5^8,
( где 5—вычисленная оценка погрешности на шаге,
F—имя внешней подпрограммы, вычисляющей правые части системы уравнений ft (х, у),
Список параметров (X, Y, R):
X—то же, что в Вб АО,
Y—то же, что в Вб АО,
R—вещественный одномерный массив, размерность А, на выходе должен содержать значения Ц\(Х, У),/2№ У), ...Jn№ У)),
О —имя внешней подпрограммы вывода результатов вычислений. Список параметров подпрограммы (XI, Y1), XI—вещественное, перед обращением к подпрограмме . О содержит текущее значение х; на выходе из подпрограммы XI должен содержать следующее значение х, при котором будет вызов О,
Y1—вещественный одномерный массив, размерность А, Содержит л(Х1), К / < А,
W—вещественный двумерный массив, размерность (А, 7), рабочий массив,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
Y —содержит значения 0^(6), у2(Ь),..., уп(ЬУ);
|0 —нет ошибок,
1= < 1 — £^0, А^О, J/Оили 1,
( > 1 —заданная точность не может быть обеспечена.
В6А1: интегрирование системы жестких обыкновенныхдифференциальных уравнений
Программа служит для решения системы жестких уравнений
д-Ж ь.-, л).д-Ж ь.-, л).а^х ^Ь,а^х ^Ь,
д-Ж ь.-, л).
д-Ж ь.-, л).
а^х ^Ь,
а^х ^Ь,
с начальными условиями
У((д)=У°, X^i^n.
SUBROUTINE B6A1(X,B,N,Y,E,J,F,M,P,O,W,K,I)
Параметры, кроме W, одноименные с параметрами программы В6А0, имеют тот же смысл. Поэтому опишем только дополнительные параметры входные:
М — целое, индекс формы вычисления якобиана
480
fl —по внешней подпрограмме Р, (О—внутри В6А1,
Р —имя внешней подпрограммы, вычисляющей якобиан по значениям (х, yt, ..., уп). Список параметров подпрограммы (X, Y, Z),
Параметры X, Y, имеют тот же смысл, что и в В6А0 Z —вещественный, двумерный массив, размерность (N, N), на выходе должен содержать значения
|^)’ Uz, 7 ^,
W—вещественный, двумерный массив, размерность (N, К), рабочий массив,
К—целое число столбцов массива W, необходимо £>А+18.
Решение обыкновенных дифференциальных уравнений; краевая задача
В7А0: решение краевой задачи для системылинейных обыкновенных дифференциальных уравнений
Программа определяет приближенное решение системы уравнений
^= Y QiA^i^fiVA а <х <b, Kz^n,
с краевыми условиями
f GzjJ;(«) + f DijyAb) = сь 7=17=1
где Qij(x)—матрица,/(x)—вектор, зависящие от х, матрицы Gid, Dij, вектор Ct — постоянные, l^z, j ^лг. В основе алгоритма— метод конечных разностей. Интервал [a, b ] разбивается узлами хт) \^m^nv Приближенное решение определяется в узлах хт(х1=а, хп =Ь, хт<хт+1) по заданной точности е. Если выполняется условие
max max |у((хт)-у;,т| е, 1 ^ i ^ n 1 < m < п ।
то процесс вычислений должен прекратиться, здесь yim—решение разностных уравнений, у^х^— значение точного решения в узлах.
48148116 Ю. П. Боглаев
481
481
SUBROUTINE B7A0(A,B,N,E,Q,F,G,D,C,M,X,Y,N 1,W,LJ,KJ)
Параметры входные:
A —вещественное, значение левого конца интервала интегрирования, равен а,
В —вещественное, значение правого конца интервала интегрирования, равен Ь,
N —целое, число уравнений в системе, равно п,
Е —вещественное, абсолютная точность, равно 8,
Q —имя внешней подпрограммы, вычисляющей матрицу Qtj(x) в точке х. Ес параметры (X, Z),
X ^-вещественное, значение х,
Z —вещественный двумерный массив, размерность (N, N), на выходе должен содержать элементы массива Qij(x\
;Z^^Qjx),
F —имя внешней подпрограммы, вычисляющей вектор /(х) в точке х. Ее параметры (X, R\
X —вещественное, значение х,
R —вещественный одномерный массив, размерность N, на выходе должен содержать элементы массива /Jx), R(l) =/;(*),
G —вещественный двумерный массив, размерность (N, N), содержит элементы матрицы Gz;,
D —вещественный двумерный массив, размерность (N, N), содержит элементы матрицы D^j,
С —вещественный одномерный массив, размерность N, содержит элементы вектора сь
М —целое, максимально допустимое число узлов, должно быть М ^ 32,
X —вещественный одномерный массив, размерность М, содержит начальные узлы
А=Х^<Х^< ... <Х^ = В,
N1—целое, на входе содержит начальное число узлов, Nl>4,
W —вещественный одномерный массив, размерность L, рабочий массив,
L —целое, размерность W, L ^M(3A2 + 5A+7) + 3A2 + 57V, J —целый одномерный массив, размерность К, рабочий массив,
К —целое, размерность J, J >M(2N +1) -VN,
I —индекс ошибки, на входе присвоить 1 = 110 выходные:
X —содержит значения узлов сетки, обеспечивающих заданную точность,
482\
Y —вещественный двумерный массив, размерность (N, М) содержит массив у{ j—приближенное решение в узлах^, Y^J^y^/ l^I^N, l^J^W,
N1—содержит число узлов сетки, обеспечивающих заданную точность,
О—нет ошибок,
1—входные параметры лежат вне допустимых пределов,
2— одна из матриц, G или D,—нулевая,
3—точность 8 не может быть достигнута.
В7А1: решение краевой задачи для системы нелинейныхобыкновенных дифференциальных уравнений
Программа определяет приближенное решение системы уравнений
с условиями
Уе(й)=Уе> l^e^k, k<n,
УР^=Ур, к <Р ^И,
Уе, Ур — заданные числа. В основе алгоритма—метод конечных разностей с дальнейшим решением системы нелинейных уравнений методом Ньютона. Для начального приближения необходимо задать свободные компоненты вектора у в точках а и b (грубое приближение), т. е.
у(а)Цу°1, -,Ук,Ук+1, -,Уп),yLyLi, ...,УпУ
вычисления заканчиваются при достижении точности 8 так же, как в В7А0.
SUBROUTINE B7A1(U,V,N,A,B,E,F,M,X,Y,N1,W,L,J,K,I)
Параметры входные:
U—вещественный двумерный массив, размерность (А, 2), перед обращением следует присвоить
U(I, 1)=у?, U(I, l^=yl, 1^А,
V —вещественный двумерный массив, размерность (N, 2), перед обращением следует присвоить
V(I,1) = O., l^I^K, V(I,1)=L, K^I+l^N
V(I,2)=L, UI^K, V(I,2)=0., K^I+l^N
N —целое, число уравнений, равно п.
48348316*
483
483
A —вещественное, значение левого конца интервала интегрирования, равно а.
В —вещественное, значение правого конца интервала интегрирования, равно Ь,
Е —вещественное, абсолютная точность, равно 8,
F —имя внешней подпрограммы, вычисляющей вектор /i^^i? Уп\ ее параметры (X,Y, R), X—вещественное, значение х,
У—вещественный одномерный массив, размерность N, содержит вектор (у1? ..., уп),
R —вещественный одномерный массив, размерность N, на выходе должен содержать вектор (Л(х, у)> ...,fn(x, у))
М — цедое, максимально допустимое число узлов, М ^32, X —вещественный одномерный массив, размерность М, содержит начальные узлы
; А=Х^ХфК.<Х№=В,
N1—целое, содержит начальное число узлов Nl>4,
W—вещественный одномерный массив, размерность L, , рабочий массив,.
L —целое, размерность W, L^M(ЗУ2 + 6У+7) + 4У2 + 4У, J —целый одномерный массив, размерность К, рабочий массив,
К—целое, размерность J, К^М(27V+1) + У2+4А+2,
выходные:X —содержит значениявыходные:X —содержит значенияI —индекс ошибки, до обращения присвоить 1=110
выходные:
X —содержит значения
выходные:
X —содержит значения
узлов сетки, обеспечивающих за-
данную точность
Л = У(1)<У(2)<...<Х(У1) = В,
У —вещественный двумерный массив, размерность ^N. М\ содержит массив yia—приближенное решение в узлах X;,
N1—содержит число узлов сетки, обеспечивающих заданную точность;
0—нет ошибки,
1—входные параметры лежат вне допустимых пределов,
1= < 2 — нет сходимости метода Ньютона,
3 — слишком мало 8,
4—мало М.
Решение уравнений с частными производными
В8А0: решение эллиптического уравненияв прямоугольнике разностным методом
Программа находит решение разностной системы уравнений
<^j4j-i^biaui-vi*cia4j^dMuHva^4i4m=fM^
484\
которая получается при решении эллиптических уравнений (Лапласа, Пуассона и т. д.) методом сеток. Будем считать, что краевая задача сведена к решению разностной системы уравнений
си#0, l^i^nY) l^j^n2
Метод решения — итерационный, для начала вычислений следует задать начальное приближение гц^ \^i^nv \^j^n2.
SUBROUTINE B8AO(N1,N2,N,A,B,C,D,E,F,U,G,I1,I2,I3, N3,I4,I5,E1,E2,E3,E4,W1,W2,W3,I)
Параметры входные:
N1 —целое, число узлов по первой координате,
N2 —целое, число узлов по второй координате,
N —целое, число строк в массивах A,B,C,D,E,F,V,W1, W2,W3; N>N1,
А —вещественный двумерный массив, размерность ^N. Р), P^N2 на входе должен содержать массив ^ ? причем А(1, 1) = 0,
В ' —вещественный двумерный массив, размерность ^N, Р), P^N2, на входе должен содержать массив bid, причем B(1,J) = O,
С —вещественный двумерный массив, размерность ^N, Р), P^N2, на входе должен содержать массив Ct j,
D —вещественный двумерный массив, размерность ^N, Р), P^N2, на входе должен содержать массив dia, причем D(A1,J) = O.
Е —вещественный двумерный массив, размерность ^N. Р), P^N2, на входе должен содержать массив е1а, причем Е (I, NT) = 0,'
F —вещественный двумерный массив, размерность ^N, Р), P^N2, на входе содержит массив fia,
U —вещественный двумерный массив, размерность “ (А, Р), P^N2, на входе должен содержать начальное приближение и$,
G —вещественное, коэффициент ускорения итераций, обычно полагают G=l, если сходимость медленная—положить G = 0.1,
II—целое, максимальное число итераций,
12—целое, перед входом присвоить 12 = 0,
N3 —целое, перед входом положить N3 = 0; если N3/0, то это признак неединственности решения разностных уравнений, такую ситуацию мы не рассматриваем,
14,15 — целое, если N3 = 0, то эти параметры не имеют значения,
Е1 —вещественное, задаваемая точность выполнения алгебраических уравнений 8Х
gj = max | а1аи1а_х + ...+е1аи,_ >+ x -fia |/| cM |,
E2 —вещественное, задаваемая точность изменения решения при переходе от к-й итерации к (&+1)-й
е2 = шах | и^} 1} — и$ |
ij
вычисления прекращаются при достижении точности Е1 и Е2.
Wl, W2, W3 — вещественные двумерные массивы, размерность (N, Р), P>N2, рабочие массивы,
I —индекс ошибки, до обращения положить 1 = 0;
выходные:
U —содержит решение uUj,
12—содержит общее число итераций при нескольких вызовах В8А0,
13—целое, содержит число итераций в данном обращении к В8А0,
ЕЗ—вещественный одномерный массив, размерность II, содержит 8?} погрешность после к-й итерации,
56 ЕЗ (&) = 8^, ^=1, 2, II,
Е4—вещественный одномерный массив, размерность II, содержит 8^— погрешность после к-й итерации
£4(^ = 8^, ^=1,2, ..., II;
(0—нет ошибок,-
= < 1—4—параметры вне допустимых пределов,
15—сходимость не достигается за II итераций.
В8А1: решение одномерного параболическогоуравнения методом прямых
диTtдиTt1 дхтдх1 дхтдх- Программа интегрирует уравнение
ди
Tt
ди
Tt
1 дхтдх
1 дхтдх
mх ди\Jди
х q^x, t, и) — +/ х, t, и, — х 'дх) \дх
в области {/0^/^/1? а^х^Ь^. Показатель ^ = 0, 1, 2 соответствует трем координатным системам: прямоугольной, цилиндрической, сферической соответственно. Ищется решение и^х, /), удовлетворя-
486
ющее начальному условию и^х, t0)=u0(x), a^x^b, и граничным$о^м^ t)+g0(t)^(a, t)=r0(t, м),
»i $ЦЬ, ^+§х^^Ь’ ^=ri^ 4
Исходное уравнение дискретизацией по пространственным переменным (метод прямых) сводится к системе обыкновенных дифференциальных уравнений, которая затем интегрируется по t с переменным шагом, определяемым заданной точностью. Сетка по х—равномерная.
Дополнительные ограничения:
q^x, t, м)>0;
если q, / разрывны по х, точки разрыва следует включать в узлы сетки по х;
если т#0, то а^О, если а = 0, то граничное условие в этой дм точке —=0;
ах
si (/)+g?(/)/0;
если gt(/) = 0, то r^t, Ц = г^У
SUBROUTINE В8 А1 (М, А,В,Т0,Т 1 ,U,N,E,W,K,L,I)
Параметры входные:
М—целое, определяет координатную систему, равно т, А —вещественное, левый конец пространственного интервала, равно а,
В —вещественное, правый конец пространственного интервала, равно Ь,
ТО—вещественное, на входе должен содержать значение Zo, Т1—вещественное, конечное значение /15
U —вещественный одномерный массив, размерность N на входе должен содержать массив—начальный временной слой Мо^)о
^. = ^ + (/-1)^ /=1, 2, ..., N, h = (b-d)KN-V)
N —целое, число узлов пространственной сетки, А^З,
Е —вещественное, задает точность интегрирования по времени t на одном шаге. Вычисленная погрешность 8Х должна удовлетворять условию
81<E(l+max|U(7) |),
I
W — вещественный одномерный массив, размерность К, рабочий массив,
К —целое, размерность массива W, необходимо К> > 167V+40,
L —целое, индекс типа интегрирования;
ГО—интегрирование с началом в Zo,
L = < 1 —интегрирование с момента выхода из В8А1, в этом
I случае следует перед вызовом В8А1 задать Т1 и I,
I —индекс ошибки, перед входом положить 1 = 0; выходные:
ТО — значение текущего Z, если нет ошибок; если есть ошибка— значение Z, при котором возникла ошибка, Т1—знекение tv если нет ошибок; если есть ошибка—значение t, при котором возникла ошибка,
U —значение временного слоя в момент Z,
L —если нет ошибок, L=\;
ГО —нет ошибок,
I = < 1—3 — интегрирование по Z невозможно с заданной точностью, (4—параметры выходят за допустимые пределы.
Для применения программы В8А1 следует написать две подпрограммы, определяющие функции в дифференциальном уравнении и краевых условиях.
Вычисление значений функций /, q должна выполнять
SUBROUTINE PDEF(X,T,U,DU,F,Q)
Параметры вводные:
X — вещественное, Т — вещественное, U — вещественное,DU — вещественное,X — вещественное, Т — вещественное, U — вещественное,DU — вещественное,содержит х,
X — вещественное, Т — вещественное, U — вещественное,
DU — вещественное,
X — вещественное, Т — вещественное, U — вещественное,
DU — вещественное,
содержит Z,
содержит решение w(x, z), ди / х
содержит — (х, 1ь
выходные:
F—вещественное, должен содержать fix, t, и, —
Q—вещественное, должен содержать q(x, Z, w).
Вычисление значений функций st (z), gt (z), rf (z, w) должна выполнять
SUBROUTINE BNDY(T,U,I,S,G,R)
Параметры входные:
T—вещественное, содержит Z,
488488U—вещественное, содержит граничное значение и^х, z) в момент Z,
488
488
I —целое, индекс границы, на входе;
(О—должны вычислять s0, g0, г0,[1—должны вычислять ^1, g19 г^
выходные:
S—вещественное, должен содержать 50(z), если 1 = 0; либо ^ (z), если 1=1,
G—вещественное, должен содержать g0(z), если 1 = ^ либо ^(z), если 1=1,
R—вещественное, должен содержать r0(z, w), если 1 = 0; либо Г! (z, w), если I = 1
ЗАДАЧИ И УПРАЖНЕНИЯ
Задачи и упражнения разделены на три уровня в зависимости от необходимого уровня подготовки.
I уровень (минимальный) соответствует массовому обучению в группе. Задали распределены на 32 задания, что может соответствовать 32 неделям двух семестров. Завершающим этапом является типовой расчет «Исследование переходного процесса и оптимизация системы управления». Это достаточно типичная задача инженернотехнического содержания.
II уровень (средний). Задачи распределены по главам.
III уровень (углубленный). Задачи распределены по главам. Для решения предлагаемых задач и упражнений необходима работа с дополнительной литературой.
I УРОВЕНЬ .
Темы всех 32 заданий представлены в следующем списке.
Номер задания
^Тема
1.
Начальные сведения об операционной системе.
2.
Арифметические выражения фортрана.
3.
Ввод—вывод.
4.
Операторы передачи управления, циклы.
5.
Массивы.
6.
Функция-подпрограмма.
7.
Подпрограмма.
8.
Логические выражения.
9.
Аппроксимация. Интерполяция.
10.
Аппроксимация. Метод наименьших квадратов.
11.)
12.]
Численное интегрирование.
13.1
14.J
Системы линейных уравнений.
15.1
16. J
Решение нелинейных уравнений
17J
18.J
Нелинейная оптимизация.
19.1
Обыкновенные дифференциальные уравнения. Задача Коши.
20.J
\
490
Продолжение табл.
Номер задания
Тема
21.)
22.]
23.1
24.]
ОДУ. Краевая задача. Метод прогонки.
Задача Дирихле для уравнения Пуассона.
25.
Смешанная задача для одномерного уравнения теплопроводности.
26.
27.
Смешанная задача для двумерного уравнения теплопроводности.
Постановка задачи типового расчета (ТР).
Построение математической модели.
28.
29.)
30.J
31.1
32.]
Выбор численного метода. Блок-схема алгоритма ТР. Программирование. Отладка программ ТР Проведение вычислений на ЭВМ ТР.
Задание 1. 1) Представить клавиатуру дисплея. Отметить назначение основных клавиш.
Фортран-программа состоит из операторов К=10
WRITE (5, 1)К
1 FORMAT(I2) END
написать процесс прохождения фортран-программы в ОС РВ с полными спецификациями файлов и с сокращенными.
Заменить в 2) букву К на L, удалить две средние строки программы.
Распечатать содержимое каталога. Вывести на терминал файл листинга. Удалить файлы типа OBJ, LST, TSK.
Как войти в ОС РВ, выйти из ОС РВ?
Как вызвать файл для редактирования? Как выйти из редактора? В упражнениях 2) — 6) пользователь задает имя файла, совпадающее с тремя первыми буквами его фамилии.
Привести примеры символов фортрана.
Привести примеры констант.
Привести примеры переменных.
Упражнения 2)—6) оформляются в виде дисплейной карты, а затем выполняются в дисплейном классе.
Замечание. Если работа на ЭВМ выполняется в операционной системе, отличной от ОС РВ, упражнения 2) — 6) соответственно заменяются аналогичными действиями используемой ОС.
Задание 2. Написать программу вычисления значения функции F^ в точке х0. Значение хо = О,5 ввести оператором присваивания. Результат ^о = /(хо) вывести двумя операторами
WRITE (6, 1)YO
1 FORMAT(2X,E13.6)
Номерварианта
Функции F^
4.
12.
13.
14.
15.
16.
17.
18.
19.
20.
^/e2^—
sm+1’7 x + 2/3
^x4 + Ve^+ln 1^-20,5|
е’
^ sin х 2—1,3)
3,5 + х
1
^/х + е2х + | cosx|
6
г2 1п3Х \ .
+ х 4т sin 5х
‘ .1,6 + х4/
1
1 v | lnx3+1,3 | 25
1,6 + ln 4-tgsin-x 73
^ УГ^паП V^1^
2кх—| sin^/lO^x |
intvT^j+i^^^+v^
5 Д-2 + х1
x/x2 + x4 + ln | x —3,141
f /sin3-+ Ve1,3x+e-1,3A
W 2_]7l^+5/2|
(| xlnx—41 ^/x)-
, Г г X4-1/3
3 /e2x Jx| cos2,5x | VX
x34
——e^ln | l,33 + x3|+- V3.3
|7,2 —10x|4(x/3)
—7=- arctg - ._ - - Vх—+'ex a/1,13 + x2
3 + 1/x
+ ^/x2 sin 1,4x
(Vln2x+tgCOSE%) ln^ + g
Подготовить дисплейную карту и провести вычисление в дисплейном классе. Те же вычисления провести на персональной вычислительной технике (ВТ).
Задание 3. Написать программу ввода чисел с приглашением и вывода их с текстом. Сопроводить выдачу фамилией пользователя. Вывод организовать в столбец и в строку.
Номер варианта
Числа
1.
1=—37 А = 0,310"9
EPS=0,001
Kl = 13
CR = 0,27345-IO"5
2.
3 = 5765 В = 1,7-10"15
Q = 0,273
L2 = 56
QW = 1,37654 x x 10"10
3.
К = 24 С = 3,4-10"3
DEL =14,745
M=123
AB =-2,97927 x x 10"5
4.
L=-375 D=-l,2-108
QOR = 285,15
N = 54
BC = 3,84046-103
5.
М = 0Е=-2,37105
FI=-1,235
I=-748
CD =-4,73054 x x 104
6.
N=-1475F=0,27-1016
PSI = 3,412
J = 0
DE = 5,62033 10s
7.
IR=10G=—0,15-Ю"8
TAU = 0,01
K=-10
EF=-6,51027 106
8.
JA = 245 H = 274,l-106
AKOR=-27,13
L = 265
FG=-7,46035 x x 10“’
9.
KA =X=—0,1-Ю"10
= -31001
SOL= 14,11
M=100
GH = 8,35048 10"8
10.
Ll = 15 Y = 0,146-10"5
SW= 1,234
N=-14
HO=9,24059 IO2
11.
Ml = — 1752 = 14,1-IO3
SQ = -99,11
1 = 697
OP=-0,13064 x x 10“
12.
N1 = — 152U= — 1,23-Ю"14
DER = 0,001
J=-18
PQ=-1,02037 x x IO"3
13.
I=HV = 0,999 10"9
ARM =-0,02
К = 1000
QR = 2,91082-10"5
14.
J=101W=-l,21016
SOR = 9,743
L=1
RS =-3,00039 x x 10"6
15.
K=—31450= l,0-10"5
TOR =1456,1
M=-20
ST= -4,75095 X x 1012
16.
L = 27P=-2,51013
TER = 27,27
•N = 3
TU = 5,66046-10"2
17.
M=-9 R = 75,110"4
AQ = 0,034
1=175
UF= -6,49048 x x 10*
18.
N = 526 S = 30,110”
BEQ= 15,37
1 = 10000
FX = 7,37099-10"7
19.
11=T=2,010"6
= -10101
BEL = 0,0995
K=-27
XY=-8,20010 x x 108
20.
33 = 2 XI = -4,0-10"5
REQ=-14,1
L = 3421
YZ=9,10015-10"9
Подготовить дисплейную карту и провести сеанс в дисплейном классе.
Задание 4. Написать программу:
табулирования значений функции /(х) (задание 2) на интервале [хохо + Я], с шагом h
yi = f^0 + ih\ z" = 0, 1, .... [Я/A],
- :^- :^х0, Щ h задаются вводом, на терминал вывести таблицу с текстом х= , у =
- :^
- :^
Номер варианта
х0
Н
h
Номер варианта
х0
Н
h
1.
0,3
2
0,1
11.
0,3
0,7
0,02
2.
0,5
1,5
0,05
12.
0,4
0,8
0,02
3.
0,4
0,7
0,01
13.
0,2
0,5
0,01
4.
0,2
0,5
0,01
14.
0,6
0,9
0,01
5.
0,6
0,9
0,05
15.
0,2
0,6
0,02
6.
0,5 =
0,9
0,01
16.
0,3
0,6
0,025
7.
0,5*
. 0,8
) 0,5
0,05
17.
0,4
0,7
0,025
8.
0,1 ’
0,025
18.
0,5
0,8
0,02
9.
0,2
0,6
0,025
19.
0,5
0,9
0,01
10.
0,3
0,6
0,01
20.
0,2
0,6
0,02
Написать программу определения максимального и минимального значений у( с выдачей на терминал.
Написать программу вычисления суммы S ряда с точностью 8, значение 8 ввести. Вывести S и число слагаемых Л, при котором достигнута точность е;
Номер вариантаялНомер вариантаял1.16.cos (л/м)им2.17.1м!In (м+ 1)3.18.12”м(м + 2)(м + 3'4.19.1м(м+1)5.sin (л/м)10.1м3Номер вариантаялНомер вариантаял1.16.cos (л/м)им2.17.1м!In (м+ 1)3.18.12”м(м + 2)(м + 3'4.19.1м(м+1)5.sin (л/м)10.1м3Номер варианта^пНомер вариантаалИ.1 м1п(м+1) л16.1м2/л\212.13.sin— мл tg- мл17.18.arc sin-\ п// KV tg- \ п/ 1пм14.arc sin- м119.ме"”15.сйм20.м3Номер варианта^пНомер вариантаалИ.1 м1п(м+1) л16.1м2/л\212.13.sin— мл tg- мл17.18.arc sin-\ п// KV tg- \ п/ 1пм14.arc sin- м119.ме"”15.сйм20.м3
Номер варианта
ял
Номер варианта
ял
1.
1
6.
cos (л/м)
и
м
2.
1
7.
1
м!
In (м+ 1)
3.
1
8.
1
2”
м(м + 2)(м + 3'
4.
1
9.
1
м(м+1)
5.
sin (л/м)
10.
1
м3
Номер варианта
ял
Номер варианта
ял
1.
1
6.
cos (л/м)
и
м
2.
1
7.
1
м!
In (м+ 1)
3.
1
8.
1
2”
м(м + 2)(м + 3'
4.
1
9.
1
м(м+1)
5.
sin (л/м)
10.
1
м3
Номер варианта
^п
Номер варианта
ал
И.
1 м1п(м+1) л
16.
1
м2
/л\2
12.
13.
sin— м
л tg- м
л
17.
18.
arc sin-
\ п/
/ KV tg- \ п/ 1пм
14.
arc sin- м
1
19.
м
е"”
15.
сйм
20.
м3
Номер варианта
^п
Номер варианта
ал
И.
1 м1п(м+1) л
16.
1
м2
/л\2
12.
13.
sin— м
л tg- м
л
17.
18.
arc sin-
\ п/
/ KV tg- \ п/ 1пм
14.
arc sin- м
1
19.
м
е"”
15.
сйм
20.
м3
Следует учесть, что в знакопеременном ряде точность 8 определяется первым отброшенным членом.
Подготовить дисплейную карту и провести вычисления в дисплейном классе.
Задание 5. Написать программу вычисления матрицы X и свободного вектора b в системе уравнений Ха = Ь
494
N
Х=(Х( j) = £ x^+7, O^i^m, O^j^m;
k = 0
b = (bi) = E хкУю O^i^m,k = 0
по заданным массивам хь yk, (k = 0, 1, 2, ..., N); массивы вводить с терминала; матрицу X, вектор b выводить на терминал.
Номер варианта
Массивы
т
।
хк
о,1
0,3
0,4
0,6
0,7
0,9
Ук
-1,0
0,5
0,8
1,7
2,5
2,1
2
хк
-1
-0,5
0,1
0,4
0,8
Ук
1,0
2,2
1,7
0,8
0,3
^к
1,1
1,2
1,4
1,7
2,0
2,1
Ук
-2,0
-1,8
-1,3
-1,0
-0,5
-0,6
хк
-1
-0,5
0,0
0,3
0,7
Ук
0,9
0,7
0,4
0,8
1,0
хк
3
3,2
3,4
3,7
3,9
4,0
Ук
-14
-10
-8
-12
-16
-18
6.
хк
1,0
3,0
7,0
10,0
14,0
Ук
0,3
0,7
0,9
1,0
2,0
у.
хк
-10,0
-8,0
-5,0
-2,0
0,0
1,0
Ук
6,0
3,0
0,0
-4,0
-2,0
0,0
8.
хк
2,0
3,0
5,0
6,0
8,0
9,0
Ук
0,7
1,2
2,2
3,0
2,0
3,0
хк
0,7
1,2
2,2
3,0
3,1
Ук
0,8
1,0
1,3
1,2
1,4
10.
хк
100
ПО
125
130
140
150
Ук
0,01
0,03
0,08
0,12
0,10
0,09
11.
хк
Ук
-10
3
-8
4
-5- 0
-2
-2
1 -1
2
хк
1
4
9
15
17
20
Ук
0,1
-0,2
-0,3
0,0
0,1
-0,2
13.
хк
2,0
3,1
4,2
5,6
6,4
2
Ук
-15
-10
-8
-6
-7
14.
хк
Ук
-4
3
-3
4
-2
5
0*
4
1
3
2
1
3
15.
хк
Ук
10,5
-6
11,5
-7
12,5
-5
13,0 0
14,0 2
2
16.
хк
Ук
2
-3
4
-2
6
0
8
0
10
2
12
3
3
17.
хк
Ук
-о,з 5
-0,1 5
0,0 3
0,4 5
0,5 5
2
хк
-7,1
0,2
3,4
5,6
7,2
8,3
з
Ук
-4
-2
-2
0
1
2
19.
хк
Ук
1
10
2
20
3
15
- 4
20
5
10
2
20.
хк
Ук
-5 0,2
' -4
0,25
-2 0,23
0 0,19
1 0,16
3 0,12
3
Подготовить дисплейную карту, провести вычисления в дисплейном классе и на персональной ВТ.
Задание 6. Написать функцию-подпрограмму, определяющую по матрице Х=^Х(^ \<ij<m, вектору b = bb z=l, 2, ..., т,
ii
i
i
величину Q. В главной программе ввести с терминала X, Ь. обратиться к функции-подпрограмме, результат выдать на терминал. Значения для X. b взять из решения задачи задания 5.
Задание 7. Написать подпрограмму, определяющую по матрицам X, Y матрицу или вектор Z:
Хм, Yij, Zij(zi), l<z, j<m.
В главной программе вычислить элементы Xtj, Yij по формулам
. к \ / кsin- ) + | COS —
yit j=(cos л/) (cos лу), обратиться к подпрограмме, результат выдать на терминал. Подготовить дисплейную карту и провести вычисления в дисплейном классе.
внутри фигуры, ввести с терточек:внутри фигуры, ввести с терточек:Задание 8. Написать программу, определяющую количество
внутри фигуры, ввести с терточек:
внутри фигуры, ввести с терточек:
точек на плоскости, расположенных минала координаты следующих 10 Результат вывести на терминал.
496
Таблица к заданию 7
Номер варианта
т
Z
1омер варианта
m
z
1.
5
Zi,J = £ ЧкУм к = 1
11.
3
zi= Z kJ j=l
2.
7
zi.j=xi.j+yu
12.
4
2,=тт|^1}|
3.
10
zi j=max |л\ J
13.
zu= L КлУм k=l
4.
6
Zi= I Ум j=l
14.
6
Zj=max x^ j+min yi, j
5.
8
2i,i= I ЧкУка+Уи k=l
15.
5
Zi = Xi, i+Ks
6.
4
zi, j ~ X ^h k ^k- j k=l
16.
3
zf=max £ xiikykJ j k=l
7.
9
zj=min уitj
17.
4
zi = E ^.k k=l
8.
6
Zi = max (xi; j+k j)
18.
7
Zi= X ylk k=l
9.
5
Zi,j = X yi,kXkJ k=l
19.
6
zi= L ^t+j'Lli k=l
10.
7
Zi = min Хц j+max yit;
20.
4
zu=l-xul + lAjl
jj
Таблица к заданию 8
m
123
456*
7
8
9
10
X
00,10,5
1,5 -0,8 1,5
-1,8
-0,5
0,9
1,1
У
00,2 -0,3
1,0 -0,6 1,2
0,3
0,5
-1,3
2,3
Номер варианта
Описание фигуры
ix2+y2^l) и (х>0, у^1—х, у^х- f|x|<2, Ij'Kl) и (х2 + у2>1) i0^x^2, 0^у^2) или (|х|^1, |у|< |.х2/4+у2^1) и (|х|^1)
i|x|<2, |у|<1) или (|х|<1 |у|<2) —2^х^0, 0^у^2) или (0^х^2, i|x|^1, 0^у^2) и (х2+у^^1)
-1)
51)
Ы<1)
НомервариантаНомервариантаОписание фигурыОписание фигуры8.9.10.11.12.13.14.15.16.17.18.19.20.8.9.10.11.12.13.14.15.16.17.18.19.20.х2+у2(х2+у2х2+у2(х2+у22^4) и (внешность х2+у2^Й и (1x1^1)2^4) и (внешность х2+у2^Й и (1x1^1)
Номерварианта
Номерварианта
Описание фигуры
Описание фигуры
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
х2+у2
(х2+у2
х2+у2
(х2+у2
2^4) и (внешность х2+у2^Й и (1x1^1)
2^4) и (внешность х2+у2^Й и (1x1^1)
Решить задачу графически, построив фигуру на плоскости. Подготовить дисплейную карту и провести вычисления в дисплейном классе.
Задание 9. Построить интерполяционный полином Лагранжа L(x) по таблице задания 5. Вычислить приближенное значение р(х) г / \х2+х3
с помощью L^x) в точке х = —-—, выполнить вычисления на
персональной ВТ.
Оценить погрешность вычислений, если известно, что все производные F^ имеют оценку
|F(k)(x)|^l.
Принять, что абсолютная погрешность всех чисел таблицы задания 5 равна 0,001.
Задание 10. Приблизить функцию, заданную таблично (задание 5) полиномом Р2^ и Р3^ методом наименьших квадратов. Вычислить приближенное значение F^ с помощью Р2М и Р3(х) х2 + х3-
в точке х = —-—, выполнить вычисления на персональной ВТ.
Написать программу, определяющую коэффициенты Рз^>с\ Р4(х) методом наименьших квадратов (вычисление нормальной системы Гаусса, обращение к библиотечной программе решения системы линейных уравнений) и вычисляющую с помощью Р3^ и РДх^ приближенное значение F^ в точке х =
На терминал выдать значения коэффициентов полинома, значения Р^хУ Подготовить дисплейную карту и провести вычисления в дисплейном классе.
Задание 11. Проинтегрировать функцию /(х) на заданном интервале [я, /)] с точностью £. Точность оценивать по правилу Рунге.
Номер варианта
а
ь
£
Я*)
Используемый метод
1.
-1
0
10"2
*cos*
п, С
2.
0
1
0,5 Ю-2
*sin*
т, с
3.
1
2
10"2
^/1 +*
п, т
4.
-1
0
10”2
1 +*2
т, с
5.
2
3
0,5 10"2
In*
п, с
6.
0
1
10"2
tgx
т, с
7.
-2
-1
10’2
sin * cos *
п, т
8.
3
4
0,5 10"2
e~x
т, с
9.
-0,5
0,5
10-2
x2ex
т, с
10.
1
2
0,5 Ю"2
pnx)2 x
п, с
11.
4
5
ю-2
sin (In*)
п, с
12.
0
1
10’2
cos (In *)
т, с
13.
-1
0
10~2
x3e"x
п, т
14.
0
1
0,5-10-2
Vi+x2
т, с
15.
-1
0
10"2
sin2* cos*
т, с
16.
2
3
10-2
sin3*
п, с
17.
1
2
10’2
*2cos*
п, с
18.
0
1
0,5 10'2
x2 sin*
т, п
19.
-1
0
10'2
tg2*
т, с
20.
3
4
10'2
ctg*
п, с
Вычислить точное значение интеграла по таблицам интегралов. Определить точность приближенных вычислений. Сравнить с правилом Рунге.
Написать программу вычисления интеграла по формуле трапеций, закончить вычисления по условию
1Л-Л/2|<10-2£.
Структура программы — три модуля.
В главном: ввод а, Ь, е; вывод Л/2, если достигнута точность 10-2е; обращение к подпрограмме вычислений формулы трапеций;
подпрограмма вычислений формулы трапеций;
функция-подпрограмма вычисления /(х).
Подготовить дисплейную карту.
Задание 12. Провести вычисления в дисплейном классе интеграла по программе задания 11, а также с использованием библиотечной программы по методу Гаусса.
Задание 13. Решить с точностью £=10-3 систему линейных уравнений методом простой итерации на персональной ВТ
— ОДл^ — 15х2 + 0,1*3 =Ьц
<10*! +0,1*2 — 0,05*з = /)2>
*х —0,02*2 + 20*з =Ь3.
Оценить погрешность решения, если элементы матрицы и свободного вектора заданы с абсолютной погрешностью 0,01.
Номер варианта
bi
Ьг
6з
Номер варианта
^i
^2
*3
1.
5,0
7,0
17,0
11.
6,0
8,0
16,0
2.
5,1
7,1
16,9
12.
6,1
8,1
15,9
3.
5,2
7,2
16,8
13.
6,2
8,2
15,8
4.
5,3
7,3
16,7
14.
6,3
8,3
15,7
5.
5,4
7,4
16,6
15.
6,4
8,4
15,6
6.
5,5
7,5
16,5
16.
6,5
8,5
15,5
7.
5,6
7,6
16,4
17.
6,6
8,6
15,4
8.
5,7
7,7
16,3
18.
6,7
8,7
15,3
9.
5,8
7,8
16,2
19.
6,8
8,8
15,2
10.
5,9
7,9
16,1
20.
6,9
8,9
15,1
Задание 14. Написать подпрограмму решения систем линейных уравнений методом Зейделя. Подготовить дисплейную карту для решения системы уравнений задания 13 методом Зейделя и библиотечной программой решения систем линейных уравнений. Провести вычисления в дисплейном классе, оценить погрешность полученных решений.
Задание 15. Решить систему нелинейных уравнений методом простой итерации и методом Ньютона с точностью £, выполнить вычисления на персональной ВТ
Номер варианта
Система уравнений
ТочностьE
1.
хг =0,25лт(0,Зх,)+2; x2 = 0,5cos0,5x1
10”3
2.
%! =0,5 sin (0,3*2) + 2; *2 = 0,5008 0,3*!
10"4
3.
хг = 0,5sin(0,2*2) + 2; *2 = 0,5cos0,5*i
10-5
4.
хг = 0,5sin(0,2*2)+3; *2 = 0,5cos0,5*i
10"5
5.
хг = 0,25 sin(0,3*2) + 2; *2 = cos0,3*!
10"3
6.
*i = 0,25 sin (0,3^7) + 3; *2 = 0,1 cos 0,25* x
10"4
7.
хг = 0,5 sin (0,3*2) +1; x2 = 0,2 cos 0,25* j
10‘4
8.
xY = 0,5 sin (0,2*2) + 3; *2 = 0,3 cos 0,25*!
10"5
9.
*! = 0,25 sin (0,3*7) +1; *2 = 0,5 cos 0,3*x
IO"3
10.
*i =0,5 sin (0,3*2) + 2; *2 = 0,5cos0,5*2
10"4
11.
*! = 0,5 sin (0,2*2) + 3; *2 = 0,1 cos 0,2*2
10"4
12.
*! =0,25 sin(0,25*2) +1; *2 = 0,2cos0,4*2
10"5
13.
*! =0,3 sin (0,1*2) + 2; *2 = 0,3 cos0,4*2
10"3
14.
*! =0,4 sin 0,2*21 + 3; *2 = 0,l cosO,l*2
10"4
15.
*! =0,3 sin (0,5*2)+ 1? •x2 = 0,2 cos 0,3*2
10"3
16.
*! =0,2 sin (0,25*7)+2; *2 = 0,3cos0,l*2
IO"5
17.
*1 =0,4 sin (0,1*2) +2; *2 = 0,l cos0,2*2
10'4
18.
*! =0,1 sin (0,2*21 + 3; *2 = 0,1 cos 0,3*2
10"4
19.
*! = 0,2 sin 10,3*2) + 2; x2 = 0,4 cos 0,3*2
10'3
20.
*! = 0,3 sin (0,4*2) +1; *2 = 0,3 cos 0,2*2
10"4
Задание 16. Написать программу решения задачи задания 15 с помощью библиотечной подпрограммы. Провести вычисления в дисплейном классе для трех значений начальных векторов
(^О) = 0, 4°> = 0); (xi0) = 2, х^=-3); (^О)=102, 4О)=102).
Предусмотреть выдачу на терминал последовательных приближений (х], х^), и = 0, 1, 2, ....
Задание 17. Минимизировать функцию Г(х1? х2) методом перебора в квадрате (O^x^l, 0^х2^1) с точностью определения точки минимума £=10-2. Ту же задачу решить методом градиентного спуска в квадрате (|х1|^2, |х2|^2)
F(xn х2) = Лх1 + Вх2 + ехр(сх2 Н-Лхг).
Номер варианта
А
В
С
D
Номер варианта
А
В
С
D
1.
1,2
-1,4
0,01
0,11
11.
11,2
-0,4
1,00
0,21
2.
2,2
-1,3
0,04
0,12
12.
12,2
-0,3
1,21
0,22
3.
3,2
-1,2
0,02
0,13
13.
13,2
-0,2
1,44
0,23
4.
4,2
-1,1
0,16
0,14
14.
14,2
-0,1
1,69
0,24
5.
5,2
-1,0
0,25
0,15
15.
15,2
0,0
1,96
0,25
6.
6,2
-0,9
0,36
0,16
16.
16,2
0,0
1,99
0,26
7.
7,2
-0,8
0,49
0,17
17.
17,2
0,1
2,56
0,27
8.
8,2
-0,7
0,64
0,18
18.
18,2
0,2
2,89
0,28
9.
9,2
-0,6
0,81
0,19
19.
19,2
о,з
3,24
0,29
10.
10,2
-0,5
0,94
0,20
20.
20,2
0,4
3,81
0,30
Написать программу перебора, реализующую два этапа: 1-й перебор — определение точки минимума с точностью £= 10-1; 2-й перебор (в окрестности найденной точки минимума) — определение точки минимума с точностью £=10-2.
Написать программу минимизации градиентным спуском с помощью библиотечной подпрограммы. Подготовить дисплейную карту.
Задание 18. Провести вычисления в дисплейном классе по двум программам. В качестве начальных приближений для градиентного спуска взять четыре различные точки и точку, найденную перебором. Все точки спуска вывести на терминал.
Задание 19. Дано дифференциальное уравнение, описывающее линейный колебательный процесс
x+co2x=/(z)
с вынуждающей силой /(/) на интервале [а, 6 ]. В точке t = a задаются начальные условия х(а) = хо, х(а)=у0.
Записать аналитическое решение x^t).
Разбить интервал [я,/)] узлами Ц с шагом h = (b — а)/10.
Используя формулу аналитического решения, вычислить точное решение в узлах на персональной ВТ. Построить график точного решения.
Найти приближенное решение в узлах х?, х^2 методом Эйлера. Найти погрешность в точке t = b сравнением с точным значением и по правилу Рунге. Построить график приближенного решения.
Написать программу интегрирования для нелинейного колебательного процесса
х+со2х+5х3=/(t\ /(z) = sinco1z.
Номер варианта
а
ь
х0
Уо
со
5
8
1.
-1
1
1,0
-1,0
2л
1
0,1
КГ3
2.
0
1
-1,0
0,0
1,5л
1
-0,2
10"4
3.
1
2
0,5
-0,5
1,8л
2
0,2
кг4
4.
-1
0
-0,5
1,0
0,5л
3
0,8
10"3
5.
’ 2
3
2,0
0,0
л
2
-0,3
10'4
6.
0
1
0,0
-1,0
2л
1
0,6
10'3
7.
•Л2
-1
1,0
1,0
1,5л
3
1,0
10"4
8.
3
4
-2,0
1,0
1,8л
1
-1,0
кг3
9.
-0,5
0,5
0,1
0,3
0,5л
2
0,7
10'4
10.
• 1
2
-0,6
1,0
л
1
0,4
10'4
11.
‘ 4
5
2,0
3,0
2л
3
0,2
10'4
12.
0
1
-3,0
0,0
1,5л
2
0,1
10'4
13.
-1
0
1,0
2,0
1,8л
2
-0,3
10'3
14.
0
1
2,0
3,0
0,5л
1
-0,1
кг3
15.
2
3
-0,2
0,1
л
1
-0,5
10'4
16.
1
2
0,8
1,2
2л
4
1,0
10’3
17.
0
1
2,1
-3,0
1,5л
3
0,6
10"4
18.
-1
0
0,5
0,5
1,8л
1
0,7
10'3
19.
3
4
-1,0
-1,0
0,5л
1
-0,8
10'4
20.
0
1
0,4
0,8
л
1
0,2
10'4
Использовать библиотечную программу. Задать начальный шаг й, точность 8. Подготовить дисплейную карту.
Задание 20. Провести вычисления по программе задания 19 в дисплейном классе. Для выдачи графика нелинейного колебательного процесса на терминал (АЦПУ) использовать программу типа PRPLOT (Отнес Р., Эноксон Л. Прикладной анализ временных рядов.— М.: Мир, 1982. С. 387).
Задание 21. Дано дифференциальное уравнение, описывающее процесс управления
У -vpW'4qW=ukx\
где м(х)—функция управления на интервале [а, h]. Требуется найти управляемый процесс у(х) такой, что
У^ = Ао, y^ = dv.
Здесь х играет роль времени.
Разбить интервал \а, й] узлами xt с шагом h = {b — а^5, построить разностную схему для определения приближенного решения в узлах xi-*yi.
Методом прогонки решить полученную трехдиагональную систему линейных уравнений для й и й/2. Найти погрешность по правилу Рунге. Выполнить вычисления на персональной ВТ. Построить график для у^2.
Номер варианта
а
ь
^0
di
Pto
1.
-1
0
1
1
sinx
-(1+х2)
ex
2.
0
1
2
3
1п(1 +х)
— е х
1
3.
1
2
3
1
cosx
-5
xsinx
4.
-1
0
-1
2
2х
-(1+х2)
2
5.
2
3
2
3
х2
—xlnx
x2cosx
6.
0
1
3
4
1 +х
-4
sin(2 + x)
7.
-2
-1
2
1
1+ех
— 5 —sin2x
3
8.
3
4
3
2
sinx
-4
3
9.
-0,5
0,5
0
-2
X
-10
3х
10.
1
2
1
1
cos2x
— 7 +cosx
ln(l+x2)
И.
4
5
2
1
—ех
-6
sinx
12.
0
1
1
4
XCOSX
—ех
1 + x
13.
-1
0
3
2
sinx
cosx—5
1
14.
0
1
-1
-1
ех
-2
X
15.
2
3
2
3
х3
-6
16.
1
2
-3
2
1п(1 +х)
sinx—8
1
17.
0
1
-2
1
(1+х/
-3
2cos2x
18.
-1
0
3
1
1п(1+х2)
-(!+x3)
-3
19.
3
4
2
2
х2
— 10 + x
e x
20.
0
1
3
3
sinx
-4
cosx
Написать программу решения краевой задачи с использованием библиотечной подпрограммы. Подготовить дисплейную карту.
Задание 22. Провести вычисления по программе задания 21 в дисплейном классе. Оценить погрешность вычислений по правилу Рунге. Построить график приближенного решения.
Задание 23. Найти стационарное распределение температуры в прямоугольной пластине, все стороны которой поддерживаются при нулевой температуре. Пластина нагревается постоянным током, выделяющим в единице объема тепло Q. Задача сводится к решению уравнения Пуассона в прямоугольнике (О^х^я, O^y^Z?)
д2и д2и _ Qдх2 Sy2 к
(где к—коэффициент внутренней теплопроводности) с условиями Дирихле
м(0, х) = 0, ЦЬ, х) = 0, Цу, 0) = 0, Цу, а) = 0.
Здесь Цх, j’)—температура пластины в точке х, у. Аналитическое решение задачи (см. гл. 5)
/ бА 8а2 ”а2а
«(^) 2Л^(« *) ,зЕ (2„+1)э'^(2п+1)п6‘
2а
Разбить область G сеткой с шагом hx = al3, hy = bl3. Построить разностную схему. Найти приближенное решение в узлах. Вычисления выполнить на персональной ВТ. Построить график в оксонометрической проекции.
Вычислить в одном из узлов значение точного решения, используя аналитическую формулу.
Номер варианта
а
b
Q(k
Номер варианта
а
ь
Q(k
1.
0,5
0,5
1,0
11.
0,4
0,5
2,0
2.
0,8
1,0
1,1
12.
0,8
0,1
1,9
3.
1,0
0,2
1,2
13.
0,4
0,3
1,8
4.
1,0
0,8
1,3
14.
0,6
1,0
1,7
5.
0,2
0,3
1,4
15.
0,2
1,0
1,6
6.
0,8
0,1
1,5
16.
0,8
1,0
1,5
7.
0,2
1,0
1,6
17.
0,3
0,2
1,4
8.
0,3
0,4
1,7
18.
1,0
0,8
1,3
9.
0,5 . l,0’J
0,5
1,8
19.
1,0
0,2
1,2
10.
0,2
1,9
20.
0,2
, 0,5
1,1
3) Написать программу решения задачи с помощью библиотечной подпрограммы. Положить, что изменение мощности источников тепла от координаты пластины описывается законом
к ^(х, у) = я(х2+у2) + 1>.
Абсолютная погрешность вычислений 8= 10 "Л
Задание 24. Провести вычисления по программе задания 23 в дисплейном классе. Построить график приближенного решения.
Задание 25. Найти изменение распределения температуры со временем в тонком однородном стержне. На концах стержня задаются температурные режимы. Начальная температура всего стержня постоянная.
Задача сводится к решению уравнения теплопроводности
ди _ 2д2и dt Х дх2’
где х2—коэффициент температуропроводности, 0^^/^ О^х^а;ы(х, 0)=но, м(0, z) = Ho(O’ «(«, 0 = Н10),
O^Z^Zi, где и^х, О — температура стержня в точке х в момент времени Z;
Ио(0)=Ц1(0)=ио.
Аналитическое решение задачи (см. гл. 5) имеет вид
z) = ho(0+^(Hi(0-Ho(0)+
~ t а оо£\
+ -ff X е W 1 'sin—xsm—Н -(Ho-Hi)-Ui №<к.
а оо п=1а а \а/
где ц означает дифференцирование по т.
Построить двухслойную явную схему, приняв hx = a(10; ht выбрать из условия устойчивости. Вычислить два временных слоя на персональной ВТ. Построить графики.
\
Вычислить точное значение температуры в пятом узле на втором временном слое, используя аналитическую формулу. Взять в сумме 3—4 слагаемых, результат сравнить.
Номер варианта
а
G
к2
Wo
РоИ
МО
1.
1,2
2,0
1,1
10
w0 + 0,1 sin 2л/
и0 + 0,2 sin 4л/
2.
1,1
2,1
1,2
11
мо + 0,2/
и0 —0,3/е~*
3.
0,8
2,2
1,3
12
мо + 0,1/е"г
и0—0,1 8т2л/
4.
0,6
2,3
1,4
13
мо + 0,4/
«О+ 0,3 8ШЛ/
5.
1,4
2,4
1,5
14
М0 + 8Ш2л/
6.
1,6
2,5
1,6
15
м0 + 81п4л/
м0-2/
7.
0,9
2,6
1,7
16
«о
м0 + 8тл/
8.
0,7
2,7
1,8
17
«0 е'
uoe-t
9.
1,3
2,8
1,9
18
м0 + 8шЗл/
“о „
10.
1,2
2,9
2,0
19
М0 + 8ШЛ/
мое 21
11.
1,1
3,0
1,9
20
м0 + 2/
u0 — 3t
12.
1,2
2,9
1,8
21
u0e2t
М0 + 8ШЛ/
13.
1,3
2,8
1,7
22
и0
«0-4<
14.
1,4
2,7
1,6
23
и0-Не 1
«о
15.
1,5
2,6
1,5
24
u0 — 3t
«ое‘
16.
1,6
2,5
1,4
25
м0+4зт4л/
и0 — 6 sin л/
17.
1,5
2,4
1,3
24
«о
«ое?
18.
1,4
2,3
1,2
23
м0+ 3 sin л/
«ое *
19.
1,3
2,2
1,0
22
w0e"2t
мое 31
20.
1,2
2,1
0,9
21
м0 + 5зт2л/
и0
Написать программу решения задачи с помощью библиотечной подпрограммы. Выдачу на терминал организовать через пять временных слоев. Абсолютная погрешность вычислений £=10“4.
Провести вычисления в дисплейном классе. Построить графики временных слоев.
Задание 26. Найти изменение температуры w(x, у, /) во времени для однородной квадратной пластины; на сторонах поддерживаются заданные температурные режимы. Начальное распределение температуры задано. Задача сводится к решению уравнения теплопроводности
ди _ 2 /д2и д2и\dt Х I дх2 ду2 J
в области {0 ^ х ^ 1, 0 ^ у ^ 1, 0 ^ t < tY}. Начальное распределение для и*. и(х, у. 0) = х+у. Краевые условия
ф,ьО1у=о =хе~а*, Цх, у, t)|y-l =(лЧ-1)е“', O^x^lO^x^l
Цх, у, /)|х=0 =уе~а1, и(х, у, /)|х=1 =(j+l)e’a‘.
O^y^l0^.у^1
Построить явную и неявную разностные схемы (метод дробных шагов). Принять hx, /zy = 0,l; 0,01; в явной схеме ht выбрать из условия устойчивости и заданной точности. Значения параметров х2, /1? а взять из таблицы задания 25.
Составить блок-схему алгоритма для явной и неявной схем.
Написать программу решения задачи по явной схеме с точностью £=10~3.
Провести вычисления в дисплейном классе. На терминал выдавать каждый 5-й временной слой. Построить график распределения температуры при t = tY в оксонометрической проекции.
Задание 27. Постановка технической задачи типового расчета принадлежит доценту МЭИ Ю. Ю. Зуеву.
Для перемещения захвата автоматического манипулятора батискафа применяется следящая система, упрощенная схема которой показана на рис. Т.1. Система состоит из следующих основных частей: рукоятки управления (РУ), блока формирования управляющего входного сигнала (БФУС), электронного усилителя (ЭУ), электромеханического преобразователя (ЭМП), золотникового гидроусилителя (ЗГУ), гидроцилиндра (ГЦ), шток которого соединен с захватом»автоматического манипулятора (ЗАМ), а также цепи обратной связи (ОС), включающей датчик обратной связи (ДОС), блок усиления сигнала обратной связи (БУОС) и сумматор (СУМ).
Система работает следующим образом. При отсутствии управляющего входного сигнала g(z) равно нулю, перемещение входной тяги БФУС z^, входное напряжение сумматора ивх(Д входное напряжение ЭУ ^(z), ток ЭМП /(/), смещение золотника x(z). Золотник занимает среднее положение относительно втулки ЗГУ. К средней расточке втулки ЗГУ от насоса подводится жидкость с высоким давлением Рн. Левая и правая проточки втулки соединяются с трубопроводом низкого давления Рсл, по которому жидкость поступает в гидравлический бак. При x(z) = 0 давления в обеих полостях гидродвигателя равны друг другу и их разность Р^ = 0. Поршень неподвижен и находится в положении, которое считается исходным: y(z) = O. Напряжение мдос(/), снимаемое с датчика обратной связи, пропорциональное перемещению штока у^ с коэффициентом пропорциональности А:дос, а также напряжение БУ ОС woc(z), являющееся усиленным мдос(г) с коэффициентом усиления кос, равны нулю. Система неподвижна.
При появлении входного управляющего сигнала, т. е. перемещении РУ, входная тяга БФУС перемещается на величину z^, пропорциональную g(z), с коэффициентом пропорциональности кг. Выходное напряжение БФУС wBX(z) вследствие значительного быстродействия усилителя допустимо считать пропорциональным k^ty Рост тока управления ЭУ при увеличении их (z) подчиняется соотношению
Ty/+/=A:yM1(z), где Гу, ку— соответственно электромагнитная постоянная времени и коэффициент усиления ЭУ по току.
506506Наличие тока управления приводит к появлению электродвижущей силы кэмп1, действующей на золотник. Эта сила, преодолевая инерционную составляющую силы сопротивления Т^х, \
506
506
составляющую силы вязкого трения ^х и силу, пропорциональную смещению золотника, обусловливает перемещение последнего на величину х^ (например, вправо, как показано на рис. Т. 1). Под действием давления Рн жидкость через щель, образованную кромками проточки во втулке и буртов золотника, поступает в полость гидроцилиндра (левую на рис. Т. 1). В результате давления в этой полости, действующего на площадь поршня F, последний перемещается (вправо на рис. Т. 1) с координатой y^t\ скоростью у и ускорением у(^), выдавливая жидкость из другой полости гидроцилиндра (правой на рис. Т. 1)
Рис. Т.1Рис. Т.1в ЗГУ и далее через щель (правую на рис. Т. 1) в трубопровод низкого давления Рсл. Количество жидкости, поступающее из ЗГУв ЗГУ и далее через щель (правую на рис. Т. 1) в трубопровод низкого давления Рсл. Количество жидкости, поступающее из ЗГУв гидроцилиндр за единицу времени и равное величине xk3JРн — Рсл — Р. частично расходуется на движение поршня со скоростью g\t\ Часть расхода, определяемая как Т3Р, тратится на заполнение объемов в трубопроводах и гидроцилиндре, которые образуются в результате изменения давлений жидкости при ее прохождении по гидравлическому тракту системы. И наконец, часть расхода из ЗГУ, пропорциональная Р с коэффициентом пропорциональности к4, уходит через уплотнения, сальники, зазоры в трубо
Рис. Т.1
Рис. Т.1
в ЗГУ и далее через щель (правую на рис. Т. 1) в трубопровод низкого давления Рсл. Количество жидкости, поступающее из ЗГУ
в ЗГУ и далее через щель (правую на рис. Т. 1) в трубопровод низкого давления Рсл. Количество жидкости, поступающее из ЗГУ
провод низкого давления.
При перемещении поршня и соединенцого с ним ЗАМ преодолеваются инерционная составляющая силы сопротивления, пропорциональная массе подвижных частей /и, и другие составляющие внешней нагрузки, объединенные в функционал, имеющий в данном случае вид
Явн = к5 У + к6у +кч у2 + к6 у2.
Одновременно ДОС, входное звено которого соединено со штоком гидроцилиндра, вырабатывает напряжение датчика мдос, которое затем усиливается БУ ОС до значения woc, поступающей на сумматор системы, где происходит ее вычитание из u^t). Напряжение woc(z) пропорционально мдос(/), а последнее—смещению .y(z), поэтому разность напряжений wflOC(z) обращается в нуль при условии мвх(0 = мос(0> т- е- ПРИ перемещении захвата на некоторую величину, пропорциональную g^ и z(z). Уравнения, описывающие динамический процесс системы, имеют следующий вид:
уравнение РУ z^=Lg^;'
уравнение БФУС uBX(t)=k2z^
уравнение СУМ Wi(z) = wBX(z)-woc(z);
уравнение ЭУ Гу —+Z=A:yw1(z); ^ хdx
уравнение ЭМП -VT1 —+х = А:эмп/; dtdt
уравнение ЗГУ k3xJ Рн-Рси — Р=Р^--\-Т3^1-А-к4Р; vdt dt
d2y / dy \
уравнение гидроцилиндра PF=m-^ + RBR[ t, y, — к
*^dy 7(dy\2
уравнение Rm RBB=k5y-Vk6—+k1y2+k8l — ; dt\dt J
уравненре ДОС ндос=^досу;
уравнение- БУ ОС иос=кж идос.
Ориентировочные значения параметров таковы:
Рн=(10 = 20)Ю6 Н/м2; ^ = 0,14-0,5; k5 = S • 103-5 • 104 Н/м;
Г=(5 = 20)Ю~4м2; £2=1 = 10В/м; к6 = 0-103 Нс/м;
/и = 50 —500 кг; Т2 = 103-10"2 с; fc7=0-105 Н/м2;
&у = 0,01—0,05 a/в; Т1=0,2• IO"3-10"3 с; ка=0-105 Нс2/м2;
Т3 = 10-5-10”4с; ^эмп= 10 2 —5-10^2 м/а; као = 1 -10 В/м;
^3 = 10"4-10"6M3H-1/2/c; ^4 = 0-10712м5/Нс; ^ос=1-10;
*^(0=^о = 0-0,5 м.
Величины входных сигналов mbx(z) = 0,01—0,1 в.
Порядок установившихся значений переменных определяется по математической модели для z-^oo.
Характерный вид получаемых сводящихся переходных процессов
Управления изображен на рис. Т. 2.
Критерии динамического качества системы (рис. Т. 2):
508
Номер варианта
Критерий
Параметры
Номер варианта
Критерий
Параметры
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
о%-пере
а tn п
о
tn и
а
tn
:регулирова:
F, Ря
F, к»
^ДОС
F, кх
F, кЭмп
F, к
F, к" Ря, Рн» ^дос Р н> ^1
ние, о= —
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
100;
У,
и
а tn п
о tn И
Р к 1 н> ^эмп Рн, к Рн, кг kg, кдос к^ > к^
^эмп fe, к, к^, к2 ^доо ^дос > ^эмп
Zn—время переходного процесса (время, за которое процесс полностью «входит» в ± 5%-ную трубку около у^;
и — число переходов процесса через асимптоту у^ до «входа» в 5%-ную трубку;
^ = 1п ——декремент затухания.
А
Техническая задача: исследовать качество переходного процесса в зависимости от параметров системы управления. Провести оптимизацию системы. При выполнении расчетов следует, варьируя заданные параметры, добиться сходящегося процесса и минимизировать какой-либо из заданных частных критериев качества: и, zn, п или ^.
Определить входные и выходные данные задачи: константы, переменные. Указать их возможный диапазон изменения.
Привести уравнения, описывающие динамический процесс системы управления (переходный процесс), к каноническому виду
^=МУ1,Уг, -,У„,1\
у^=Уи X^i^n, O^z^z1? tY—задать.
Привести каноническую систему дифференциальных уравнений к безразмерному виду, выполнить масштабирование.
Интегрируя систему дифференциальных уравнений и варьируя параметры системы уравнений, найти значения параметров, при которых имеет место сходящийся переходный процесс.
Расходящийся переходный процесс определяет решения, для которых существует Z*:
lXf*)l > К’ 0<z*<?i> К—задать.
Построить графики сходящихся переходных процессов y(z), O^Z^Z1? в зависимости от параметров системы управления (от двух параметров).
Найти значение критерия качества переходного процесса для нескольких значений параметров системы управления.
Вычислить оптимальное значение критерия качества, варьируя двумя параметрами системы управления.
Построить график оптимального переходного процесса.
Точность вычислений — относительная, равна 3%.
К отчету по типовому расчету следует представить:
Анализ технической задачи.
Постановку математической задачи: приведение ее к канонической форме.
Обоснование выбора метода интегрирования системы обыкновенных дифференциальных уравнений, выбора начального шага интегрирования.
Обоснование выбора метода оптимизации.
Блок-схему алгоритмов.
ФортрАн-лрограммы.
Распечатки с выдачей результатов.
Графики переходных процессов.
Замечание. 1) Исследование переходного процесса (построение графика) рекомендуется проводить по безразмерной величине
—, где ^00=lim^(/) — установившееся положение захвата. Для У 00со
нахождения у^ нужно решить систему нелинейных уравнений, получающуюся из системы дифференциальных уравнений заменой всех производных нулем.
Грубый выбор параметров сходящихся процессов из заданных диапазонов осуществляется решением линеаризованной системы уравнений переходного процесса.
Задание 28. Найти установившийся режим, решая нелинейную систему уравнений. Решить линеаризованную систему уравнений переходного процесса, определить грубо параметры сходящихся переходных процессов. Выбрать численный метод интегрирования дифференциальных уравнений с учетом значения коэффициента жесткости. Представить полную блок-схему алгоритма, используя приемы структурной алгоритмизации.
Задания 29—30. Написать программу в соответствии с блок-схемой задания 28, придерживаясь технологии структурного программирования. Провести отладку программы на ЭВМ.
Задания 31 — 32. Провести вычисления по программе заданий 29—30 на ЭВМ и подготовить отчет.
II УРОВЕНЬ
Задачи и упражнения к главе 1
510510П.1.1. Описать архитектуру используемой вычислительной машины.
510
510
\
П.1.2. Каковы технические характеристики центрального процессора, оперативной памяти и других уровней памяти используемой ЭВМ?
1.3. Какие устройства ввода-вывода применяются на ЭВМ?
П.1.4. Описать систему адресации используемой ЭВМ.
1.5. Какие элементы новых архитектурных решений присутствуют в Вашей ЭВМ?
1.6. Какова стоимость аренды 1 ч процессорного времени и дисплейного времени на Вашей ЭВМ?
Каким образом можно осуществить перенос результатов вычислений, данных, программ с Вашей ЭВМ на другую. Что для этого необходимо выполнить?
П.1.8. Может ли работать Ваш терминал в автономном режиме? Каковы его возможности в этом режиме?
Задачи и упражнения к главе 2
Спроектировать алгоритм указанного ниже численного метода, взяв за основу элементарный алгоритм гл. 3 так, чтобы он обладал некоторыми универсальными свойствами. Для этого следует включить в структуру алгоритма по крайней мере два блока: блок диагностики возможных ошибок (деление на ноль, зацикливание и т. п.) и блок контроля точности вычислений.
П.2.1. Метод градиентного спуска.
П.2.2. Метод Симптона численного интегрирования.
П.2.3. Метод прогонки.
П.2.4. Метод Рунге — Кутта 4-го порядка.
П.2.5. Метод прогонки решения краевой задачи для линейного дифференциального уравнения 2-го порядка.
П.2.6. Фурье-анализ.
П.2.7. Метод Ньютона решения нелинейных уравнений.
Указание. В качестве ориентира для создания проекта универсального алгоритма можно взять тексты фортран-программ соответствующих методов, входящие в стандартные библиотеки или из [15, 26, 27, 32].
Задачи и упражнения к главе 3
П.3.1. Решить задачи 14-57, представленные в [6, с. 25—44].
П.3.2. Написать программу, придерживаясь правил структурного программирования, реализующую проект алгоритма П.2.1—II.2.7. Комментарии в программе должны полностью описывать алгоритм и программу.
П.3.3. Написать программу с тестовой задачей для П.3.2.
Задачи и упражнения к главе 4
П.4.1. Описать все этапы прохождения фортран-программы в операционной системе Вашей ЭВМ. Подготовить краткую инструкцию для работы на машине.
П.4.2. Представить структуру файловой системы. Какова спецификация файлов системы. Указать соглашения, принимаемые по умолчанию.
IL4.3. Какие команды следует применить, чтобы переписать информацию с магнитной ленты на магнитный диск (кассетный, гибкий), магнитную ленту.
IL4.4. Представить основные команды текстового редактора. Подготовить краткую инструкцию для работы на машине.
IL4.5. Описать последовательность Ваших действий, если диагностика транслятора с фортрана указывает на допущенные ошибки.
IL4.6. Описать последовательность Ваших действий, если обнаружены ошибки во время выполнения программы.
П.4.7. Кафе действия следует предпринять, если есть подозрение, что Ваша программа зациклилась.
Какие средства отладки фортран-программ имеются в Вашем распоряжении.
Задачи и упражнения к главе 5
П.5.1. Найти координаты, в которых у функции y = xftx2 А-^У11, |е| <к 1 в окрестности х = 0 устраняется особенность по 8 производной ^(х/е).
П.5.2. Произвести масштабирование координат так, чтобы сильно вытянутый по оси z эллипсоид
X2+y2+82Z2 = 1, 8 <$: 1, преобразовался ь в сферу. Каков смысл этого преобразования в задачах оптимизации?
IL5.3. Каков смысл перечисленных ниже чисел в математических моделях технических задач? Выбрать из них то число, которое встречается в Ваших моделях, дать его определение. Число: Маха, Рэлея, Пекле, Нуссельта, Струхала, Кнудсена.
IL5.4. Привести пример точно решаемой задачи и ее аналитическое решение из следующих семейств:
корни полиномов (степени л ^5);
суммирование рядов;
решение СЛУ (порядка и ^10);
решение ОДУ (краевая задача).
П.5.5. Показать, что:
I 1 sine/'1
dt = z — — 83 + <?(е5), 8->0;
/18 v 7
о J
о
П.5.6. На основе аналитического решения задачи IL5.4 построить два первых приближения к решению методом возмущений в соответствующей возмущенной задаче.
П.5.7. Как можно использовать аналитические решения предыдущих задач при построении численных методов в той области параметра возмущения, где методы возмущений неприменимы? Привести пример.
Перечислить методы оценки погрешности суммирования сходящегося ряда, выполняемого на ЭВМ. Как найти вклад погрешности вычислений в общую погрешность?
П.5.9. Привести пример ускорения серийных вычислений за счет предвычислений.
П.5.10. Привести пример ускорения серийных вычислений за счет перехода к целочисленной арифметике. Оценить вычислительную погрешность, связанную с таким переходом.
Задачи и упражнения к главе 6
Задана функция юо ^(х) = X exp(cos(w-1x)), O^x^l. п= 1
П.6.1. Построить интерполяционный параболический сплайн с погрешностью аппроксимации в равномерной норме 8=10-3, 8=W4. Оценить ускорение вычисления значения >>(х) с помощью сплайна в сравнении с исходной формулой.
П.6.2. Решить задачу II.6.1 построением кубического сплайна.
П.6.3. Построить для j^(x) полином 1-й степени наилучшего равномерного приближения. Найти оценку погрешности в равномерной норме.
П.6.4. Построить для >>(х) полином наилучшего среднеквадратичного приближения с погрешностью аппроксимации 8=10"3, 8=10"4.’
П.6.5. Чем определяется выбор нормы в задачах аппроксимации функций?
П.6.6. Используя библиотечную подпрограмму аппроксимации, написать программу вычисления значения функции >>(х) в произвольной точке х с заданной точностью 8.
Задачи и упражнения к главе 7
П.7.1. Привести пример функций /(х), g(x), имеющих в узлах х( квадратурной формулы совпадающие значения f^x^g^x^ точные интегралы которых отличаются на сколь угодно большую величину.
П.7.2. Определить наименьшее из возможных значений шага h интегрирования методом Симпсона на Вашей ЭВМ в арифметике одинарной точности.
Написать программу вычисления несобственных интегралов вида J00 Дх^х, в основу которой следует положить библиотечную подпрограмму вычисления |л Дх^х и алгоритм увеличения предела А с остановом по заданной точности. Провести вычисления для интегралов
е dx.е dx.sinx1 +х2sinx1 +х2dx.dx.
е dx.
е dx.
sinx
1 +х2
sinx
1 +х2
dx.
dx.
Как;) оценить погрешность численного интегрирования в задаче II.7.3?
IL7.5. Определить, какая из библиотечных подпрограмм позволяет максимально далеко продвинуться по со, со-юо, при вычислении интеграла
с заданной относительной точностью 1%.
Задачи и упражнения к главе 8
Задана матрица
/312\
А = 432.
*\142/
IL8.1. Показать, что число обусловленности матрицы не изменится, если ее умножить на ненулевую константу.
П.8.2. Определить число обусловленности матрицы А.
П.8.3. Найти L[/-разложение матрицы А.
П.8.4. Определить погрешность решения системы линейных уравнений Ах = Ь с вектором & = (1, 2, 3), компоненты которого заданы с абсолютной погрешностью 0,05: 1) матрица А задана точно; 2) матрица А имеет абсолютную погрешность элементов 0,01. Погрешность вычислений не учитывать.
IL8.5. Решить СЛУАх = ЬзадачиП.8.4методомпростой
итерации, погрешность в евклидовой норме е=10-2.
П.8.6. Решить- СЛУАх^ЬзадачиП.8.4методомЗейделя,
погрешность в евклидовой норме е=10-2.
П.8.7. Найти собственные значения и собственные векторы матрицы А, применяя библиотечные подпрограммы. Записать решение ОДУ
^ = Ах-Ь, х(0)=0.dt>\ /
\
Найти, используя библиотечную подпрограмму, минимум целевой функции
5хх + 2х2 —Зх3+х4
при ограничениях
2xt — х2+х3 + х4^5, xi + х2—х3—х4^2, 5хх — 8х2 + 2х3 + 4х4^3.
Задачи и упражнения к главе 9
П.9.1. В основе активационного анализа состава вещества лежит поиск показателей экспонент ab Y^i^m, и коэффициентов сь минимизирующих невязку
IIX ^ехр(«(х)||,
где /(х)—экспериментально измеренная функция. Вывести систему уравнений, определяющих искомые сь аь если || ||—дискретная среднеквадратичная норма на узлах Хр i^j^n.
П.9.2. Сколько вещественных, комплексных решений имеет система уравнений
Х1+Х2 —4 = 0, Xi —х2 + 0,1 sinx2 = 0?
П.9.3. Найти вещественные решения системы уравнений задачи П.9.2. методом простой итерации с абсолютной точностью е= 10-3. Уточнить решения (точность £=10"6) методом Ньютона.
П.9.4. Найти комплексные решения системы уравнений задачи П.9.2.
П.9.5. Привести задачу П.9.2 к задаче минимизации целевой функции и решить ее, применяя библиотечную подпрограмму минимизации.
П.9.6. Показать, что метод градиентного спуска минимизации Ф(х1? ..., х„) эквивалентен методу Эйлера для системы ОДУ ^=-grad®(x), х(0)=х°.
П.9.7. Показать, что целевые функции Ф (х), поверхности уровней которых имеют вид сильно вытянутых эллипсоидов, приводят к жестким системам ОДУ (см. гл. 10) в задаче П.9.6.
Задачи и упражнения к главе 10
Задачи II.10.1—II.10.5 входят в типичный пакет тестов программ интегрирования задачи Коши для ОДУ. Требуется проинтегрировать уравнение или систему с заданной относительной локальной точностью 8=10"2, 10 "4 на интервале 0^х^20 двумя библиотечными подпрограммами, дополнив их просчетом числа Q вычисле-
ний правых частей уравнений на всем интервале интегрирования.
Сравнить эффективность подпрограмм по числу Q.
IL10.L Одно уравнение
1)У=-у, ИО)^!;
^у’=-у , ^(o^i;
y^ycosx, у(о)=1;
у’ = (у-х\1(у+х), j(0)=4;
5)У=(У4)(1-У20), у(0)=1.
10.2. Система малой размерности
fj-'l =2<V1 — ^^г), ?Г=1, (Л = -^г - Л У2^ У^} = 3 (рост двух враждующих популяций);
р'1 = -^1+Ь.У1(0) = 2, { У> =У1- 2^2 +Ь> У г (0) = о, <Уз=У2-Уз, Уз(0)=1
(линейная химическая реакция);
(7i=-JWi(0)=l, V2=y.-y2, У2 (0)=0, ^з=я, ь(°)=° (нелинейная химическая реакция);
У1 = -У2+У1Уз/(У1 ^УгУ'2, Ут (0) = 3, У2=У1-У2Уз5^У1+У2У12, Уг(О) = О, У'з=У11(у2+У2У12, Уз^ = ° (интегральная поверхность тора);
У1=У2Уз, У1(0) = 0,
У2=-У1Уз. Уг(0)=1, y'3=-0,5\yvy2, у3(0)=1. (эйлеровы уравнения движения твердого тела).
10.3. Система умеренной размерности
10о10о
1
0
о
1
0
о
П.10.4. Уравнение орбиты
/1=^3, л(0) = 1-е,
У2=У4, У2 (0) = 0,
Уз=-У1/(У1+У2)3'2, Уз (0) = 0, У4=-У2/(У21+У1ПУ4(ОН1^2/(М^ е = 0,1 — эксцентриситет орбиты.
Уравнение второго порядка, приведенное к системе
у'1=у2, ^1(0) = 2,
/г = (1 -У 1)^2 ~Уи У2 (0) = 0
(уравнение Ван дер Поля, описывающее процессы в электронных схемах).
Для систем уравнений задач II. 10.2—II. 10.3 поставить краевые задачи, которые решить численно, используя библиотечные подпрограммы, с точностью 8= 10-2.
Задачи и упражнения к главе 11
ПЛ 1.1. Найти форму равновесия однородной прямоугольной мембраны, закрепленной по краям, если к ней приложено нормальное давление Р(х, у) на единицу площади. Указать те функции Р^х,у^, для которых задача решается аналитически, численно. Решить задачу численно с относительной точностью 1%. Профиль мембраны представить в графической форме.
ПЛ 1.2. Задача об управлении тепловым процессом в стержне состоит в определении функции g(r) такой, чтобы решение уравнения теплопроводности u^t, х^— распределение температуры
би д2иdt дх2
с условиями
м(х, 0) = sinx+cosx, O^x^l, илил
в момент времени Z=1 совпадало с заданным распределением температуры
w(l, х) = е-1 (sinx+cosx).
Найти точное решение задачи.
Найти численно решение, используя явную схему, с абсолютной точностью 10 "3 в равномерной норме.
U.11.3. Задача об определении критической температуры детонирующего стержня описывается уравнением
диTtдиTtд2и/1\д2и/1\
ди
Tt
ди
Tt
д2и/1\
д2и/1\
в области O^x^l, O^t^T; cv с2—константы с условиями w(x, 0)-^; и(0, t) = u0, и(1, t) = ut, м0, и^—константы (и0>и1\ Критическая температура ик определяется так, что при и0<ик решение при г^оо стремится к стационарному м(оо, х)^и0 для всех точек O^x^l, в то время как при и0>ик в некоторой точке х*е(0, 1) имеет место неравенство u^t, x^>uQ (происходит зажигание). Пусть C1^2=h м^ОД.
Найти величину w0, приводящую к зажиганию, считая tcr = Т. ы - б2и Использовать уетод прямых с разностной аппроксимацией
Точность вычислений—относительная и составляет 1%. Интегрировать систему ОДУ библиотечной программой для жестких уравнений.
Определение и0 выполнить перебором и методом деления отрезка [0, wj пополам.
III УРОВЕНЬ
Задачи и упражнения к главе 1
Ш.1.1. Предложить архитектуру ЭВМ, наиболее подходящую для решения задач Вашей предметной области. Обосновать выбор и указать близкую по параметрам ЭВМ (из имеющихся на мировом рынке).
Ш.1.2. Указать недостатки грубой классификации архитектур, представленной четырьмя типами ЭВМ из 1.3.
1.3. Какие средства графического отображения информации имеются на Вашей ЭВМ. Описать их возможности.
1.4. Каким образом можно расширить вычислительные ресурсы Вашей ЭВМ (подключение специальных процессоров (каких?); дополнительной памяти (какой?)). Обосновать экономическую целесообразность предлагаемого расширения.
Задачи и упражнения к главе 2
Спроектировать алгоритм указанного ниже численного метода, взяв за основу алгоритм (текст) соответствующего метода, входящего в стандартную библиотеку, так, чтобы он удовлетворял требованиям серийных вычислений. Для этого необходимо: 1) заменить по возможности наиболее емкие вычислительные блоки \
блоками предвычислений (см. гл. 5); 2) описать структуру алгоритма; 3) описать поток данных алгоритма; 4) описать структуру программы.
2.1. Метод градиентного спуска.
Ш.2.2. Метод прогонки.
Ш.2.3. Метод решения жестких ОДУ.
Ш.2.4. Метод типа Ньютона решения нелинейных уравнений.
Задачи и упражнения к главе 3
Ш.3.1. Написать программу в соответствии с проектом алгоритма Ш.2.1—Ш.2.4, придерживаясь правил структурного программирования на языке фортран 77 в двух вариантах: 1) в одинарной точности; 2) в двойной точности.
Ш.3.2. Написать программы с тестовой задачей для Ш.3.1.
Ш.З.З. Провести вычисления на ЭВМ для теста и сравнить эффективность Вашей программы с библиотечной, сравнить объем необходимой памяти.
Задачи и упражнения к главе 4
Ш.4.1. Объем Вашей программы и/или данных превышает выделяемый пользователю ресурс памяти. Какой режим работы позволяет в Вашей ОС выполнять некоторые программы такого сорта? Привести пример программы, требующей больших ресурсов, и показать, как готовится ее выполнение.
Ш.4.2. Какие средства Вашей ОС позволяют составить цепочку команд (трансляция, компоновка, загрузка, исполнение и т. п.), а затем запустить всю цепочку одной командой?
Ш.4.3. Собрать из стандартных библиотек или из литературы [3, 9, 15, 26, 27, 30, 32], тексты фортран-программ, наиболее часто применяемых в Вашей работе по специальности в форме, удобной для ввода в ЭВМ. Подготовить личную библиотеку объектных файлов отобранных фортран программ.
Задачи и упражнения к главе 5
Ш.5.1. Какие невозмущенные решения используются в Ваших моделях, когда следующие числа велики (малы): число Маха, Рэлея, Пекле, Нуссельта, Струхала, Кнудсена и т. д. Привести пример.
Ш.5.2. Привести пример точно решаемой задачи и ее аналитическое решение из следующих семейств:
нелинейные системы уравнений;
собственные значения и собственные векторы матриц;
решение уравнений с частными производными.
IIL5.3. Показать, что
х->оо,х->оо,
х->оо,
х->оо,
flnxeiXxt/x~ —Х^оо
JXX
о
где у= —Je HnxtZx. о
IIL5.4. На оЬнове аналитического решения III.5.1 построить первое приближение к решению методом возмущения.
Арифметика с подсчетом числа значащих цифр состоит в указании после арифметической операции верных значащих цифр результата по числу верных значащих цифр операндов. Как можно реализовать программно такую арифметику на ЭВМ? В каких вычислениях она может быть полезна?
Задачи и упражнения к главе 6
Ш.6.1. Написать программу одномерной параболической сплайн- интерполяции, предназначенную для серийных вычислений. За основу взять программу из [9].
Написать программу одномерной кубической сплайн-ин- терполяции для серийных вычислений. За основу взять программу из [9].
Ш.б.З. На основе библиотечной подпрограммы двумерной аппроксимации написать программу графического вывода поверхности по заданным узловым точкам. Это элемент проектирования в диалоговом режиме поверхностей сложных форм [3].
Задачи и упражнения к главе 7
Ш.7Л. Вычислить интегралы следующих функций с интегрируемой особенностью, применяя аналитические и численные методы и используя библиотечные подпрограммы.
1
1Ге~х3
f In хех dx, —— dx.
о J
о
Абсолютная точность вычислений 8=10"4, 8=10~5.
IIL7.2. Правило Рунге применяется с фиксированным шагом к. Привести пример функции, для которой оценка погрешности по правилу Рунге неприменима для /z~10"2 и применима для /z~10"6.
IIL7.3. Написать программу вычисления интеграла с выбором локального шага по заданной точности в соответствии с алгоритмом, изложенным в 7.3. Показать (на тестах) примеры функций, для которых программа оказывается эффективнее библиотечных подпрограмм интегрирования (каких?).
IIL7.4. Используя библиотечную подпрограмму интегрирования функций двух переменных, написать программу вычисления координат центра масс, моментов инерции неоднородных плоских фигур.
Задачи и упражнения к главе 8
Ш.8.1. Привести пример СЛУ, для которой метод простой итерации сходится, а метод Зейделя расходится.
Ш.8.2. Привести пример СЛУ, для которой метод Зейделя сходится, а метод простой итерации расходится.
IIL8.3. Написать программу метода исключения Гаусса с выбором ведущего элемента по строкам на языке фортран 77 в арифметике двойной точности.
IIL8.4. Написать программу задачи III.8.3 в арифметике целых чисел.
Написать программу определения областей локализации собственных значений матрицы А с выводом границ областей на графический дисплей или графопостроитель.
Задачи и упражнения к главе 9
Ш.9.1. Определить, какой сложности целевые функции Ф(х) (размерность х, объем арифметических операций) и с какой точностью определения точки минимума можно оптимизировать на Вашей ЭВМ перебором.
Ш.9.2. Написать программу минимизации целевой функции, объединяющую алгоритм грубого перебора с дальнейшим уточнением точки минимума наискорейшим градиентным спуском.
Ш.9.3. Написать программу поиска пнпф(х) интегрированием системы ОДУ
^=—gradФ(x), х0 = х°
с контролем коэффициента жесткости (см. гл. 10) и выбором соответствующего метода интегрирования.
Задачи и упражнения к главе 10
Задачи III. 10.1—III. 10.5 входят в типичный пакет тестов программ интегрирования задачи Коши для жестких ОДУ. Требуется проинтегрировать уравнения с заданной локальной относительной
точностью 5= 10"2, 5= 10”4 на интервале O^x^Xi с начальным шагом /z0 двумя библиотечными подпрограммами, одна из которых ориентирована на жесткие уравнения. Определить число Q вычислений правых частей уравнений на интервале О^х^х^ Сравнить эффективность подпрограмм по числу Q.
ШЛ0.1. Линейные системы с вещественными собственными значениями:
yv = -0,5^, ^(0) = 1, хх = 20, /z0 = 10”2,
у^-УгЛгк^х,
/з=-100^3, у3(0)=1,
У4=—90у4, у4(0)=1;
y1 = -18d0y1+900j2,^1(0)=0, xj = 120, Ао = 5 ■ 104, У=.Уг-1-2уг+л+1,У;(0)=0, 2^г^8, ^9=1 OOOjg -2000у9 +1000, /9(0)=0.
I.10.2. Линейные системы с комплексными собственными зна
чениями:
Vi^-Vi+Jz, J1(O)=1, ^1=20, Ао = 7 -10-3,
У2= -100^! -у2, у2(0)=0.
Уз = - ЮО^з +у4, у3(0)=1, у4 = -100 000у3 -100у4, у4(0)=0;
/1 = -10.у+ау2, У!(0) = 1, Xj = 20, Ао= 10-2, уЧ = — ajj — Юу2, у2(0)= 1, а=3; 8; 25; 100, Уз=-4у3,Уз^=\,
У4=-У4, Уа(0)=1, /5=-0,5^5, у5(0)=1, у'б= —0,1^6, у6(0)= 1.
ШЛО.З. Нелинейные системы, эквивалентные линейным:
У1 = -У1+У2+Уз+У4, ^1(0)= 1; xt = 20; Ao = 1O-2,
У 2= -10у2 + 10(yj+y4), у2(0)=1, у'з=-40у3+40у4, у3(0)=1, у'4= -100у4+2, у4(0) = 1;
У1 = -У1 +2, ь(0)= 1; xt = 20; Ао= 10~2, y2=-10^ + p^L у2(0)=1; Р=О,1; 1; 10; 20, Уз= -40у3+4р(у2!+у^), у3(0)=1, У4= -100^+ 10Р(^2+}’^ +jf), j4(0)= 1.
Ill Л 0.4. Нелинейные системы с вещественными собственными значениями якобиана:
У1 = 0,2^2-ь),ь(0)=0; %! =400; /г0= 1,7 • 10"2, ^'2 = 10^1-(60-0,125уз)у2 + 0,125уз,у2(0) = 0, ^'з = 1, ь(0)=0
(моделирование атомного реактора);
522' х
/) = — 0,04/i+0,01/2/3, /i(0)= 1; х1=40; й0= IO-5, /2=400/1 -100/2/3 - 3000/2, /2 (0)=0, /з = 30/2, /3(0)=0 (химическая модель)
/'i =-0,013/1-1000/1/3,/i(0)= 1; Xj = 50; ЛО = 2,9Ю’4, /2=-2500/2/3,/2(0)=1, /з= -0,013/i-1000/i/3-2500/2/3, /3(0)=1 (химическая модель)
Ш.10.5. Нелинейные системы с комплексными собственными значениями якобиана:
У1=У2, л(0) = 2, %1 = 1, Ао = 1О-3, /2 = 5(1 -/1)/2-/1,/2(0) = 0 (уравнение Ван дер Поля)
/1 = -(55+/3)/1 + 65/2,/1(0) =1, %i = 500, Ло=0,02,
' /'2 = 0,0785(/i-/2),/2(0)=1, /з = 0,1/1,/3(0) = 0 (физическая модель)
Ш.10.6. Для систем уравнений III. 10.1—III. 10.5 поставить краевые задачи, которые решить численно с точностью 8=10-2.
Задачи и упражнения к главе 11
11.1. Подстановка
w(z, х) = — 2a2lnv(t, х) сводит нелинейное уравнение
ди 1 / ди V7d2u
dt 2 \дху dx2 к линейному
Указать, какие задачи для нелинейного уравнения можно решить аналитически, численно и каким образом, используя указанную подстановку.
Ш.11.2. Тримолекулярная модель химической кинетики (брюс- селятор) описывается системой уравнений
^=я-(£+1)м-|-м2У+^dt х ’dx2
Sv2 d2v
dtdx2
где a, b, dx. d2— константы. Решение w(z, x), p(z, x) ищется в области (O^Z^T, O^x^l). Граничные условия w(z, O) = w(z, l) = zz; y(Z, O) = y(Z, l) = b{a.
Линеаризовав уравнения заменой
u = a-Vux. v^bfa+v^
найти для линейных уравнений относительно w1? vt условия, при которых
w^z, х)^0, p^z, х)^0, z^oo,
для любых начальных условий мДО, х), ^(О, х).
В области параметров (а, Ь) потери устойчивости численным интегрированием найти предельные (Z оо) решения (w(oo, х), d(oo, х)) для различных начальных условий w(0, х), р(0, х).
Значения констант в расчетах принять а ^2, ^ = 1,6 • 10-3, б/2 = 6 10-3. -J
АНГЛО-РУССКИЙ СЛОВАРЬ
ACCEPT принять, ввести ACCESS доступ ACCESS MODE режим доступа ADDITION сложение
BYTE байт
CALL вызвать
CHARACTER символ
CLOSE
закрыть
ADDRESS адрес ALLOCATION распределение памяти .AND.
логическая операция .И.
APPLICATION PROGRAM прикладная программа ARGUMENT аргумент
ARRAY . массив
COMMAND•
команда COMMON общий COMPILER компилятор COMPLEX комплексный"
CONTINUATION LINE строка продолжения CONTINUE продолжить
ARRAY REFERENCE ссылка на массив
CONTROL CHARACTER управляющий символ
ASSIGN назначить
COUNTER счетчик
BACKSPACE
возврат к началу предыдущей записи
BATCH PROCESSING
пакетная обработка
CPUо
центральный процессор CURSOR курсор
BIT бит
DATA
данные
DEBUGGING
BLOCKDATA блок данных
отладка
DEFINE FILE
BLOCK SIZE размер блока
определение размера и структуры файла
BUFFER буфер
DELETE удалить
DIAGNOSTICS диагностика DIMENSION размер
DIRECT ACCESS прямой доступ
DIRECTORY каталог
DISK диск
DISPLAY
терминал с электронно-лучевой трубкой
DIVISION деление;
DO делать
DOUBLE PRECISION двойная точность
EDIT редактирование EDITOR редактор ELSE иначе
ELSEIF... THEN иначе, если ...то*
END конец ENDFILE признак конца файла
ENDIF конец если END OF BLOCK (EOB) конец блока
END OF FILE (EOF) конец файла
ENTRY вход .EQ. операция отношения .равно. EQUIVALENCE эквивалентность
.EQV.
логическая операция .равно.
ERASE CHARACTER символ удаления
ERROR ошибка
ERROR MESSAGE сообщение об ошибке
EXECUTE выполнение
EXIT выход EXPONENT порядок EXTERNAL внешний
FALSE ложь
FILE запись
FIND найти
FLOATING-POINT OPERATION операции с плавающей точкой FORMAT формат FORMAT SPECIFICATION спецификация формата FUNCTION функция .GE.
операция отношения .больше или равно.
GO ТО идти к .GT. операция отношения .больше чем. HARDWARE аппаратное обеспечение ЭВМ IF если
IF ... THEN если ... то
IMPLICIT неявный
I/O ввод — вывод
INPUT ввод INQUIRE опросить INSTRUCTION команда
\
INTEGER целый INTERRUPT прерывание INTRINSIC внутренний JUMP переход к другой команде LABEL метка .LE. операция отношения .меньше или равно. LIBRARY библиотека
LIST список LISTING распечатка LOCATION ячейка LOGICAL логический
LOOP цикл LOOP NESTING вложенные циклы LOSS потеря .LT. операция отношения .меньше чем. MAIN главный
МАР карта, схема MARK маркер, знак MEGAFLOP мегафлоп =106оп/с с плавающей точкой
.NEQV.
логическая операция .не равно. .NOT.
логическая операция отрицание .не. NUMBER число
OBJECT CODE
объектный код
OPEN открыть .OR. логическая операция .или. OUTPUT вывод
OVERFLOW переполнение
PAGE страница PARAMETER параметр PARANTHESES скобки
PASSWORD
пароль
PAUSE
пауза
PERMISSION
разрешение
PRECISION
точность
PRINT печатать
PRINTER
печатающее устройство
PRIORITY
приоритет
PROGRAM программа
MEMORY память
READ читать
MESSAGE сообщение
MULTIPLICATION
умножение
NAME
имя
REAL вещественный REAL-TIME реальное время RECORD запись
.NE.
операция отношения .не равно.
RECORD FORMAT формат записи
RETURN
ТАРЕ
возврат
лента
REWIND
TIME
возврат к началу файла
время
ROOT
TIME SHARING
корень
разделение времени
ROUNDING
TRANSLATION
округление
перевод
ROUTINE
TRAP
стандартная, системная программа
• прерывание
RUN
TRUE
прогон, запуск, (программы)
истина
SAVEJ
ТУРЕ
сохранять
напечатать
SEQUENCE
UNDERFLOW
последовательноц*гь
потеря точности
SIGN
UNIT
знак, символ, признак
устройство
SOFTWARE
USER
программное обеспечение ЭВМ
пользователь
STATEMENT
VALUE
оператор
значение, величина
STOP
VARIABLE
стоп
переменная величина
STORAGE
VOLUME
память
том
STRING
WARNING
строка51
предупреждение
SUBROUTINE
WORD
подпрограмма
слово
SUBTRACTION
WRITE
вычитание
писать
SYMBOL
ZERO
символ, знак
нуль
ПримерыПримерыPROGRAM TRAP EXTERNAL FI CALL S [(...)] ENDPROGRAM TRAP EXTERNAL FI CALL S [(...)] ENDINTEGER K(15),N REAL X,Y(10) CHARACTER *60WOR(16) LOGICAL BOOLDOUBLE PRECISION Z(8),W COMPLEX Z(6),U(8) IMPLICIT REAL(A-Z) PARAMETER (E=2.7) DIMENSION K(15),Y(10) EQUIVALENCE (A,B,C) EXTERNAL FI,A1AO INTRINSIC DSIN DATA M,N/l,3/X/0.1/INTEGER K(15),N REAL X,Y(10) CHARACTER *60WOR(16) LOGICAL BOOLDOUBLE PRECISION Z(8),W COMPLEX Z(6),U(8) IMPLICIT REAL(A-Z) PARAMETER (E=2.7) DIMENSION K(15),Y(10) EQUIVALENCE (A,B,C) EXTERNAL FI,A1AO INTRINSIC DSIN DATA M,N/l,3/X/0.1/
Примеры
Примеры
PROGRAM TRAP EXTERNAL FI CALL S [(...)] END
PROGRAM TRAP EXTERNAL FI CALL S [(...)] END
INTEGER K(15),N REAL X,Y(10) CHARACTER *60WOR(16) LOGICAL BOOL
DOUBLE PRECISION Z(8),W COMPLEX Z(6),U(8) IMPLICIT REAL(A-Z) PARAMETER (E=2.7) DIMENSION K(15),Y(10) EQUIVALENCE (A,B,C) EXTERNAL FI,A1AO INTRINSIC DSIN DATA M,N/l,3/X/0.1/
INTEGER K(15),N REAL X,Y(10) CHARACTER *60WOR(16) LOGICAL BOOL
DOUBLE PRECISION Z(8),W COMPLEX Z(6),U(8) IMPLICIT REAL(A-Z) PARAMETER (E=2.7) DIMENSION K(15),Y(10) EQUIVALENCE (A,B,C) EXTERNAL FI,A1AO INTRINSIC DSIN DATA M,N/l,3/X/0.1/
Фортран 77
Текст программ на фортране состоит из строк.
Операторы занимают позиции 7—72 в строке.
Символы: буквы верхнего регистра А — Z, цифры 0—9, спец, символы = Ч*/()'.$,: пробел.
Символы С или * в первой позиции обозначают строку — комментарий.
Символ, отличный от нуля и пробела в б-й позиции, означает, что строка есть продолжение предыдущей.
Метка оператора помещается в позиции 1—5.
Применяемые обозначения
(...) = (элемент, включаемый в программу пользователем)
[...] = [необязательная часть оператора]
{...} = (последовательность из нуля или более элементов}
(список) = (элемент списка, элемент списка, ..., элемент списка)
Конструкции фортрана
Программа
PROGRAM (имя программы) {невыполняемый оператор} {выполняемый оператор}
END
Невыполняемые операторы
INTEGER (список)
REAL (список)
CHARACTER [*(длина>]
LOGICAL (список)
DOUBLE PRECISION (список)
COMPLEX (список)
IMPLICIT (список)
PARAMETER ((список описания» DIMENSION (список описания) EQUIVALENCE (список эквивалент.) EXTERNAL (список имен) INTRINSIC (список имен) DATA (список имен)/(список констан)/
{[,](список имен)/(список конст.)/} (метка) FORMAT ((список спецификаций» 10 FORMAT (F6.2,I3)
Выполняемые операторы
(имя) = (выражение)
PRINT *, (список вывода)
READ *, (список ввода)
PRINT (метка формата), (список вывода)
READ (метка формата), (список ввода)
IF ((логич. выр.)) THEN
{( выполняемый оператор )}
ELSE IF ((логич. выр.» THEN {( выполняемый оператор >} [ELSE]
{{(выполняемый оператор)}}
ENDIF
Y = А * SQRT(B) + 0.3
PRINT *,М,Х
READ *,С
PRINT 10,X,Y
READ 5,R,T,I
IF (M.EQ.l) THEN
X = Y*Y —2.
ELSE IF (M.EQ.2) THEN
X = SIN(Y)
ELSE
X = COS(Y)+1.
ENDIF
DO (метка) [,] (диапазон индекса) DO 1,I = 4*K,ABS(A), —1
{(выполняемый оператор)} (метка) CONTINUE1
CALL (имя подпрогр) [((список
факт, пар.»]
GO ТО (метка)
X(I) = X(I)+L CONTINUE CALL SIM(X,0.5)
GO TO 10
IF ((логич. выр.» (выполн. оператор) IF (M.GT.1) Х = Х+ 1 IF ((арифм. выр.)) (метка), (метка), IF (W) 1,10,100
(метка)
ASSIGN (метка) TO (имя)
GO TO (имя)
Процедуры
SUBROUTINE (имя)
[((список форм, пар.»] {(невыполняемый оператор)} {(выполняемый оператор)}
END
[(тип)] FUNCTION (имя) [((список форм, пар.»] {(невыполняемый оператор)} {(выполняемый оператор)}
END
ENTRY (имя входа) [((список форм, пар»]
SAVE [(список локальных переменных) ]
ASSIGN 10 ТО К GO ТО К
SUBROUTINE SIM(A,B)
REAL А,В
IF (B.LT.0.) RETURN END
REAL FUNCTION S(A) REAL A
S = ABS(COS(A)) RETURN END ENTRY V(X,Y)
SAVE /TOR/,I
Операторы ввода—вывода с файлами
WRITE ((управляющий список» (список)
READ ((управляющий список)) (список)
WRITE (3,1) Y,(X(I),I = 9,l,-2)
READ (N,'(A)') К
OPEN ((устр-во), (список открытия» OPEN (3,FILE = 'DATA')
CLOSE ((устр-во), (список закрытия»
INQUIRE ((устр-во), (список опроса))
CLOSE (3)
INQUIRE (2,EXIST = LOG)
530
\
INQUIRE «файл), (список onpoca»INQUIRE (VAP,OPENED = L)
BACKSPACE (устройство)
ENDFILE (устройство)
BACKSPACE 5
ENDFILE 3
Управление вводом—выводом файла
Элементы (управляющего списка) ввода—вывода
[UNIT = ] (целое выражение) [FMT = ] (текстовое выражение) или
[FMT = ] (форматная метка)
REC = (целое выражение)
END = (метка)
Ю8ТАТ = (имя целой переменной)
Элементы (списка открытия)
[UNIT = ] (целое выражение) FILE = (текстовое выражение) ACCESS = (текстовое выражение) STATUS = (текстовое выражение) FORM = (текстовое выражение) RECL = (целое выражение) BLANK = (текстовое выражение) ERR = (метка)
Ю8ТАТ = (имя целой переменной)
Элементы (списка закрытия)
[UNIT = ] (целое выражение) STATUS = (текстовое выражение) ERR = (метка)
Ю8ТАТ = (имя целой переменной)
Элементы (списка опроса)
[UNIT = ] (целое выражение)
FILE = (текстовое выражение)
EXIST = (имялогической пере
менной)
OPENED = (имя логической переменной)
NUMBER = (имя целой переменной)
NAMED = (имя логической переменной)
NAME = (имя текстовой переменной)
ACCESS = (имя текстовой переменной)
SEQUENTIAL=(имя логич. переменной)
DIRECT = (имя логической переменной)
FORM = (имя текстовой переменной) FORMATTED = (имя логической переменной)
UNFORMATTED = (имя логич. переменной)
RECL = (имя целой переменной)
NEXTREC = (имя целой переменной)
BLANK = (имя текстовой переменной)
ERR = (метка)
Ю8ТАТ = (имя целой переменной)
<список спецификаций формата)
необязательные элементы
повторяемые
неповторяемые
•J
1(кол-во позиций) 415
1(кол-во позиций).(цифры) 16.3 А(кол-во позиций) Аб Е(кол-во позиций) L2
Р(кол-во позиций).(цифры) F6.3
Е(кол-во позиций).(цифры) Е13.6 О(кол-во позиций).(цифры) D10.5 О(кол-во позиций).(цифры) G10.3 (масштабный множитель) Р ЗРЕ13.6 (текстовая константа) 'VARIANT' (холлеритова константа)
7HVARIANT
Т(номер позиции) Т8 ТЕ(число позиций) TL5 TR(hhcho позиций) TR6 (число позиций) X ЗХ S SP SS BN BZ /
Определение глобальных данных
COMMON [/имя общего блока/] (список) *
COMMON /STAR/X,Y(10)
BLOCK DATA [(имя блока данных)] BLOCK DATA DEF {(невыполняемые операторы)} COMMON /S/I,J,K
END
DATA I,J,K/3,4,5/ END
Операторы возврата, паузы, останова
RETURN [(целое выражение)]RETURN 1
PAUSE [...]PAUSE 5
STOP
Прочие конструкции
(имя) 1—б букв и/или десят. цифр, начинается с буквы
(метка) последовательность 1—5 десят. цифр
(целое выражение)
(арифм. выражение)
арифметические операции
текстовая операция
выражение, содержащее арифм. операции над целыми
выражение, содержащее арифм. операции над числами
+ сложение
— вычитание
* умножение
/ деление
** возведение в степень
// объединение
подцепочка
(имя текстовой переменной)((целое выражение):(целое выражение))
операции отношения
.EQ. равно
.NE. не равно
.LT. меньше чем
.GT. больше чем
.LE. меньше или равно
.GE. больше или равно
логические операции
.NOT. отрицание
.AND. истина, если оба—истина
.OR. истина, если один или оба истина
.EQV. истина, если значения операндов одинаковы
.NEQV. истина, если значения операндов различны
Логические константы
.TRUE.
.FALSE.
Числовые константы
целая вещественная двойной точности комплексная
текстовая константа
холлеритова константа
'(последовательность символов)'
( целое > Н ( последовательность символов)
((целое)—длина последовательности)
(описание массива) (границы размерности) (элемент массива) (неявное описание) (диапазон индекса)
(имя)((список границ размерности» (нижняя граница):(верхняя граница) (имя)((список индексов» (тип)((буквы, диапазон букв))
(имя целой перем. > = (целое выражен.),
(целое выражение) [,(целое выражение)]
(неявный цикл)
((список выражений), (диапазон индекса»
(эквивалентность )
((список имен»
ЛИТЕРАТУРА
Ахо А., ^опкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М., 1979.
Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. М., 1987.
Банковский Ю. М., Галактионов В. А., Михайлова Т. Н. Графор. Графическое расширение фортрана. М., 1985.
Березин И. С., Жидков Н. П. Методы вычислений. М., 1959. Т. 1. 1960. ,Т. 2.
Бирюков В. В., Рыбаков А. В., Шаку ла Ю. П. Введение в систему программирования ОС РВ. М., 1986.
Боровин Г. К., Комаров М. М., Ярошевский В. С. Ошибки-ловушки при программировании на фортране. М., 1987.
Валикова Л. И., Вигдорчик Г. В., Воробьев А. Ю., Лукин А. А. Операционная система СМ ЭВМ РАФОС. М., 1984.
Волков Е. А. Численные методы. М., 1982.
Де Бор К. Практическое руководство по сплайнам. М., 1985.
Калиткин И. Н. Численные методы. М., 1978.
Камке Э. Справочник по обыкновенным дифференциальным уравнениям. М., 1971.
Кейлингерт П. Элементы операционных систем. М., 1985.
Колдербэнк В. Программирование на фортране. М., 1986.
Кристиан К. Введение в операционную систему UNIX М., 1985.
Мак-Кракен Д., Дорн У. Численные методы и программирование на фортране. М., 1977.
Марчук Г. И. Методы вычислительной математики. М., 1989.
Меткалф М. Оптимизация в фортране. М., 1985.
Митчел Э., Уэйт Р. Метод конечных элементов для уравнений с частными производными. М., 1981.
Найфэ А. Введение в методы возмущений. М., 1984.
Ортега Дж., Пул У. Введение в численные методы решения дифференциальных уравнений. М., 1986.
Прудников А. П., Брычков Ю. А., Маричев О. И. Интегралы и ряды. Элементарные функции. М., 1981.
Прудников А. П., Брычков Ю. А., Маричев О. И. Интегралы и ряды. Специальные функции. М., 1983.
Прудников А. П., Брычков Ю. А., Маричев О. И. Интегралы и ряды. Дополнительные главы. М., 1986.
Самарский А. А. Введение в численные методы. М., 1987.
Самарский А. А., Николаев Е. С. Методы решения сеточных уравнений. М., 1978.
Сборник научных программ на фортране. Вып. 1. Статистика / Пер. с англ. С. Я. Виленкина. М., 1974.
Сборник научных программ на фортране. Вып. 2. Матричная алгебра и линейная алгебра/Пер. с англ. С. Я. Виленкина. М., 1974.
Системы параллельной обработки / Под ред. Д. М. Ивенса, 1985.
Тихонов А. Н., Арсенин В. Я. Методы решения некорректных задач. М., 1986.
Тихонов А. Н., Гончарский А. В., Степанов В. В., Ягола А. Г. Регуляризирующие алгоритмы и априорная информация. М., 1983.
Тихонов А. Н., Самарский А. А. Уравнения математической физики. М., 1972.
Форсайт Дж., Малькольм М., Моу лер К. Машинные методы математических вычислений. М., 1980.
Янке Е., Эмде Ф., Леш Ф. Специальные функции. Формулы, графики, таблицы. М., 1977.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Абсолютная погрешность 242
Автоматический выбор шага 395
Адрес 18
— виртуальный 1 19
Адресация 21'
Алгол 10
Алгоритм 9, 11
— базовый 48
— QR определения собственных векторов 333
— ———значений 333
Алфавитно-цифровое печатающее устройство (АЦПУ) 37
Алфавитно-цифровой терминал 38
Альтернативная схема 47
Анализ размерностей 172
Аналитические методы 165, 166
Англо-русский словарь терминов 525
Апостериорная оценка погрешности 326
Аппроксимация 248, 383
Априорная оценка погрешности 325
Арифметическое выражение 68
— и логическое устройство 17
Архитектура адресации 21
— алгоритма 46
— ЭВМ 16
——на основе потока данных
26
Асимптотические разложения интегралов от быстроосциллирующих функций 228
— формулы 224
Асимптотический ряд 225
Ассемблер 10
Базовые логические схемы 46
Базовый алгоритм 48
Байт 18
Бейсик 10
Библиотечная программа 69
— функция 69
Бит 18
— операнда 20
Блок-схема 46
Буфер 19
Вариационные методы 416
Ввод — вывод 37, 39
Ввод с терминала 147
Вводной файл 145
Вектор невязки краевых условий 411
— собственный 188
Вес в квадратурной формуле 277
Вещественное «-мерное пространство 187
Виртуальный адрес 19
Влияние ошибок округления 245
Внешняя программа 59
Второе поколение ЭВМ 8
Вход в систему ОС РВ 148
Выбор ведущего элемента исключения в методе Гаусса 318
Выводной файл 145
Выполнение программы 149
Выполняемый оператор 67
Выражение арифметическое 68
— логическое 80
Вырожденная матрица 192
\
Выход из системы ОС РВ 148
Вычисление обратной матрицы 316
— определителя матрицы 316
— произведения двух матриц 78
— специальных функций 42
— элементарных функций 41
——комплексного переменного
42
Вычисления параллельные 23
— с двойной точностью 131
— серийные 246
Вычислительная задача обратная 236
——прямая 236
— математика 164
Вычислительный конвейер 24
— метод 11
— процесс 54
Глобальный минимум 365
Граница сеточной области 424
Дамп 141
Дефект сплайна 256
Диагностика 160
Диск магнитный 33
— —гибкий 34
Дискретизация непрерывной задачи 238
— обыкновенного дифференциального уравнения 375
— Ритца 420
— уравнения с частными производными вариационным методом 420
— ——— —конечными
разностями 423, 433
— — —— —методом
прямых 440
Диспетчер 138
Доступ последовательный 128
— прямой 128
Драйвер 140
Евклидова норма 187
Жесткое уравнение 396
Загрузчик 143
— начальный 143
Задача возмущений 308
— вычислительная обратная 236
——прямая 236
— Дирихле 216
— интерполяции 252
— корректно поставленная 216
— Коши для линейного дифференциального уравнения второго порядка 402
— ——обыкновенного диф
ференциального уравнения 375
— ——системы линейных
дифференциальных уравнений 408
————нелинейных
дифференциальных уравнений 413
— линейная 250, 375
— линейной оптимизации каноническая 335
— нелинейная 251, 375
— равномерного приближения 250
— среднеквадратичного приближения 250
Замена переменных в модели задачи 176
Значащая цифра 243
Золотое сечение 372
Идентификатор 64
Инструментальные программы 133
Интеграл Римана 277
Интегральное уравнение 195
——вырожденное 196
Интегрирование численное 276 °
— функции двух переменных 297
Интерполяция 252
— линейная 92
— полиномами Лагранжа 252
— сплайнами 257
Интерпретатор языка команд 142
Искусство вычислений 172
Исправленный метод Эйлера 388
Исходный файл 149
Итерация Зейде ля 326
— простая 323
Канал 139
— мультиплексный 139
Каноническая задача линейной оптимизации 335
Карта данных 52
— памяти 53
Каталог библиотеки фортран-про- грамм 445
— файлов 141
Качественные методы 165
Квадратурная формула 278
Квант времени 139
Классификация архитектуры ЭВМ
— задач теории приближений 250 Код идентификации пользователя 145
Команды текстового редактора 152
Компилятор 136
Константа фортрана 64
——вещественная 64
——двойной точности 65
——комплексная 65
——логическая 66
——текстовая 66
——целая 64
Корректность постановки задачи 216
Коэффициент жесткости 399, 413
— Фурье 184
Критерий локализации собственных значений 194
— Чебышева 265
Кубический сплайн 258
Линеаризация 347
Линейная задача 250, 375
— оптимизация 335, 337
Линейное программирование 335
Логические выражения 80
— операции 80
— переменные 80 «
Локальный минимум 365
Магнитная лента 35
Мантисса числа 32
Массив 58, 67
Масштабирование 172
Математическая модель И Матрица вращения 332 — вырожденная 192 — невырожденная 192 — отражения 330
— положительно определенная 317
— почти треугольная 329
— разреженная 428, 429
— симметричная 317
— трех диагональная 329
Метка 71
Метод аналитический 165, 166
——решения обыкновенных
дифференциальных уравнений 200
———систем линейных ура
внений 190
———уравнений с частными
производными 213
——суммирования ряда 182
——Фурье-анализа 183
— бисекции решения нелинейных уравнений 361
— вариационный 416
— возмущений 165, 167
——в линейной алгебре 308
——вычисления интегралов 227
——регулярный 168
——решения обыкновенных
дифференциальных уравнений 231
——сингулярный 170
— градиентного спуска 109, 368, 370
— дробных шагов 438
— Зейделя 326
— золотого сечения 372
— исключения Гаусса 312
——с полным упорядочением
319
— итераций решения нелинейных уравнений 350
———систем линейных ура
внений 322
— касательных 357
— качественный 165
— конечных элементов 422
— Куммера 182
— наименьших квадратов 268
— Ньютона решения нелинейных уравнений 356
— перебора 365
— подобия 213, 223
— покоординатного спуска 367
— полудискретный 440
— приближенный 312
— прогонки дискретной 114, 406
——непрерывной 210
— прямой решения систем линейных уравнений 312
— прямых с конечно-разностной аппроксимацией 442
— Рунге—Кутта 389
— —четвертого порядка 113, 391
— сведения к интегральному уравнению 212
— стационарной фазы 229
— стрельбы 411
— точный 312
— Фурье решения уравнений с частными производными 213, 217, 219, 221
— численный 165, 170
——теоретический 235
— Эйлера решения дифференциального уравнения исправленный 388
—————явный 112,
388
— суммирования тригонометрических рядов 185
Минимум глобальный 365
— локальный 365
Мультиплексный канал 139
Мультипрограммирование 137, 138
Насыщение численного метода 293
Невыполняемый оператор 67, 87
Невырожденная матрица 192
Нелинейная задача 251, 375
— оптимизация 108, 363
Нестационарное уравнение 215
Неустойчивые схемы 386
Неявный цикл 79
Норма вектора 187
— евклидова 187
— матрицы 187
— равномерная 250
— сеточная 381
— среднеквадратичная 250
Нормализованная запись числа 32
Обратная прогонка 114
Обратный ход 314
Общая шина 29
Объектный файл 149
Оператор ввода—вывода
READ —WRITE 71
— внешней процедуры EXTERNAL 87
— возврата RETURN 83
— вызова подпрограммы CALL 85
— выполняемый 67
— конца программы END 71
— начальных данных DATA 87
— невыполняемый 67, 87
— общих блоков COMMON 84, 87
— описания типа 67
— —COMPLEX 67
— —DOUBLE PRECISION 67
— —INTEGER 67
— —LOGICAL 67
— —REAL 67
— передачи управления GO TO 76
——IF арифметический 76
——IF логический 81
— присваивания 60
——логический 81
— продолжения CONTINUE 77
— структурный логический 125
— формата FORMAT 72
— цикла DO 77
— эквивалентности EQUIVALENCE 87
Операторы фортрана 77, 124, 529
Операционная система 134
Операция арифметическая 68
— логическая 80
Описание библиотечной программы А1А0 451
———А1А1452
———А1А2452
———А1АЗ452
—
—
—А1А4
452
—
—
—А1А5
453
—
—
—А1А6
453
—
—
—А1А7
453
—
—
—А1А8
454
—
—
— А1А9
454
—
—
—А1В0
454
—
—
—АЗ АО
455
—
—
—АЗА1
456
—
—
—АЗА2
456
—
—
—А4А0
458
—
—
—А4А1
458
—
—А4А2
—А5А0
459
459
—
—
—А5А1
460
—
—
—Д5А2
—А6А0
460
462
—
—
—А6А1
462
—
—
—А7А0
463
—
—
— А7А1
463
—
—
—А7А2
464
—
—
—А8А0
464
—
—
—А8А1
465
—
—
—А8А2
466
—
—
—А8АЗ
466
—
—
—А8А4
466
—
—
—А8А5
467
—
—
—А9А0
468
—
—
—А9А1
. 469
—
—
— ВО АО
.470
—
—
— В0А1
470
—
—
— В0А2
471
—
—
— ВО АЗ
471
—
—
— В1А0
472
—
—
— В2А0
474
—
—
—B3A0
475
—
—
— В4А0
475
—
—
— В4А1
476
—
—
— В4А2
477
—
—
— В5А0
477
—
—
— Вб АО
479
—
—
— В6А1
480
—
—
— В7А0
481
—
—
— В7А1
483
—
—
— В8А0
484
—
—
— В8А1
486
—
данных
58
—
потока
данных
алгоритма 52
Оптимизация ввода — вывода 122
— линейная 335
——в геометрической интерпре
тации 337
— нелинейная 108, 363
— программ 116
Организация памяти 18
Ортогональные полиномы 262
Особенности версии фортрана 77, 123
Отладка программы 137, 160
Относительная погрешность 242
Оценка погрешности квадратурной формулы 279, 281, 282
——метода простой итерации
325
——определения собственных
векторов 308
————значений 307,
308
——решения обыкновенного
дифференциального уравнения 392
— ——системы линейных
уравнений 303
— ——уравнения с частными
производными 429, 437
— числа операций метода Гаусса 320
Ошибка округления 245
Память ЭВМ 18
Параболический сплайн 257
Параллельные вычисления 23
Параметр фактический 82
— формальный 82
Пароль пользователя 148
Паскаль 10
Первое поколение ЭВМ 7
Переменная безразмерная 173
— логическая 80
— фортрана 66
Планировщик задач 138
Повторная схема 47
Погрешность абсолютная 242
— аппроксимации 382
— вычислений 241
——функции 244
— модели 240
— округления 245
— относительная 242
— численного метода 240
Подпрограмма 85
Поиск минимума методом градиентного спуска 109, 368, 370
———золотого сечения372
———перебора 365
———покоординатного
спуска 367
— эмпирических закономерностей 249 .
Полином Лежандра 293
— наилучшего равномерного приближения 251
——среднеквадратичного диск
ретного приближения 251
— наименее уклоняющийся от нуля 264
— Чебышева 261
По л у дискретный метод 440
Пользователь 15
Порядок числа 32
Последовательная схема 47
Построение разностной схемы 383, 403, 423
Построитель задач ОС РВ 157
Почти треугольная матрица 329
Правило Крамера 167
— Рунге 290
Предвычисления 246
Представление букв и символов в памяти 32
Прерывание 139
Приближение равномерное 261
— среднеквадратичное 268
——дискретное 271
——интегральное 268
Приведение матрицы к почти треугольному виду 329
Прикладные программы 133
Применение библиотечной программы A3A0 256
— — —АЗА1 259
——— АЗА2274
——— А4А0292
——— А4А1296
——— А4А2299
— — — А8А5 321
— — — А9А0 321
— — —ВО АО 334
— — — ВОАЗ 335
— — —В1А0 343
——— В4А0363
——— В4А1359
——— В4А2360
——— В5А0373
——— В5А1370
——— В6А0396
— — —В6А1 401
——— В7А0412
— — —В7А1 414
——— В8А0431
— — —В8А1 443
— рядов Тейлора 387
Пример некорректно поставленной задачи 216
Примеры задач линейной оптимизации 336
— методов аналитических 166
——возмущений 167
——качественных 170
——численных 165
Принцип максимума 426
Прогонка обратная 114
— прямая 114
Программа 10, 11
— библиотечная 69
— внешняя 59
— инструментальная 133
— компилятор 136
— модульной структуры 86
— прикладная 133
— работы с файлами 158
— редактор 135
— системная 133
— транслятор 135, 136
— элементарная 90
——аппроксимации 92
——градиентного спуска 109
——золотого сечения 108
—— интегрирования 94
—— интерполяции 92
——матричной алгебры 102
——метода бисекции 107
———прогонки 114
—— —Рунге — Кутта 113
—— —Эйлера 112
——решенияинтегрального
уравнения 105
———краевой задачи 115
———нелинейного уравне
ния 106
———системы линейных
уравнений 104
——суммирования рядов96
——табулирования 91
——Фурье-анализа 99
——численног^) дифференцирования 101‘
Программирование 54
— структурное ;58
Проектирование алгоритма 48
Процедура 55
Процесс 54
— вычислительный 54
— экономизации 267
Прямая прогонка 114
Прямой ход 313
Пятое поколение ЭВМ 8
Работа на ЭВМ 12
Равномерное приближение 261
Равномерность асимптотических формул 226.
Раздел памяти 137
Разложение асимптотическое 225
——интегралов 227
— матриц на треугольные множители 317
— LU матриц 315
— QR матриц 332
Размерность массива 67
Разностная схема 383
Разреженная матрица 428, 429
Реализация численного метода 235
Регистр 18, 29
Регулярный метод возмущений 168
Редактор 135, 151
— связей 136
Ресурс ЭВМ 16
Решение разностных уравнений 427
Свертка функций 196
Семейство вычислительных алгоритмов 41
Серийные вычисления 246
Сетка 381
Сеточная норма 381
— область 423
Сжимающее отображение 349
Символ О большое 224
— о малое 224
Симметричная матрица 317
Симплекс-метод 340
Сингулярный метод возмущений 170
Система ограничений канонической задачи линейного программирования 335, 336
— операционная 134
— реального времени 143, 144
— счисления 30
——восьмеричная 31
——двоичная 31
— —десятичная 31
— управления базой данных 133
— файлов 140
Системные программы 133
Слабое решение краевой задачи 420
Собственная функция 218
Собственное знмнение 188, 218
Собственный вектор 188
Советы по применению курса 14
Спецификация 72
— файла 145
Сплайн 251, 256
— кубический 258
— параболический 257
Справочник файлов 141
Сравнение линейных и нелинейных уравнений 344
Среднеквадратичная норма 250
Среднеквадратичное приближение 268
Стационарное уравнение 215
Структура программы 70
Структурная алгоритмизация 52
Структурное программирование 58
Схема альтернативная 47
— базовая логическая 46
— Горнера 84
— Кранка—Николсона 436
— повторная 47
— последовательная 47
— разностная 383
——для двумерного уравнения
теплопроводности 437
———уравнений с частными
производными нестационарных 433
стационарных 422
——задачи Коши для обыкно
венного дифференциального уравнения 383
—-—краевой задачи для обык
новенного дифференциального уравнения 402 '
——неявная 384
——явная 384
— Эйткена 255
Сходимость разностной схемы 383, 385
Теорема Пуанкаре 232
— Чебышева 264
Тип данных 67
Типы погрешностей 240
Точка чебышевского альтернанса 265
Точность аппроксимации 382
Транслятор 135, 136
Третье поколение ЭВМ 8
Трех диагональная матрица 329
Узел в квадратурной формуле 277
— интерполяции 252
— сетки 381, 423
——внутренний 423
——граничный 424
——соседний 423
Улучшение структуры циклов 120
Унимодальная функция 371
Управление памятью 137
— потоком данных 26
— процессором 138
— устройствами 139
— файлами 140
Уравнение волновое 213
— Гельмгольца 423
— жесткое 396
— интегральное 195
— Лапласа 216
— нестационарное 215
— обыкновенное дифференциальное 375
— Пуассона 216
— разностное трехточечное 405
— стационарное 215
— с частными производными 115
— теплопроводности двумерное 437
——одномерное 214, 435
Ускорение на передачах управления 121
Устойчивость прогонки 407
— разностной схемы 383, 385
Устройство арифметическое и логическое 17
— управления 17
Файл 36
— вводной 145
— выводной 145•
— готовый к исполнению 149
— исходный 149
— листинга 156
— объектный 149
— с последовательным доступом 128
— —прямым доступом 128
Формула асимптотическая 224
— квадратурная 278
——Гаусса 278
— ——для квадрата 297
——простейшая 279
——прямоугольников 279
—— составная 282
——с переменным шагом 286
———постоянным шагом
282
— —Симпсона 281
——точная 278
——трапеций 281
— Фробениуса 191
— численного дифференцирования 382
—— интегрирования 228
Фортран 10, 61
— 66 61
— 77 62
— 8х 62
Функционал 416
Функция библиотечная 69
— комплексного переменного 180
— специальная 180
— унимодальная 371
— целевая 336, 363
— элементарная 178
Функция-подпрограмма 83
Функция-формула 82
Фурье-анализ 43, 99, 183
Ход обратный 314
— прямой 313
Целевая функция 336, 363
Центральный процессор 20, 29
Цикл 77
— неявный 79
Цифра значащая. 243
——верная 24^
Четвертое поколение ЭВМ 8
Численное дифференцирование 382
— интегрирование 276
Численные методы 165
Число верных значащих цифр 243
— нормализованное 32
— обусловленности 304
— —матрицы 305
— —системы 304
— Рейнольдса 176
Шаблон 428
Шаг сетки 381
— симплекс-метода 341
Шар нормированного пространства 302
Экономизация степенных рядов 266
Экстраполяция Ричардсона 292
Элементарные программы 90
— функции 178
Этапы дискретизации 375
Явный метод Эйлера 388
Ядро операционной системы 137
Язык команд системы 142
— программирования 10
Учебное издание
Боглаев Юрий Павлович
ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКАИ ПРОГРАММИРОВАНИЕ
Зав. редакцией Е. С. Гридасова. Редактор Ж. И. Яковлева.
Художественный редактор В. И. Пономаренко. Технический редактор Н. В. Яшукова. Корректор Г. И. Кострикова
ИБ № 8155
Изд. № ФМ-971. Сдано в набор 04.12.89. Подп. в печать 04.07.90. Формат 60x90/16.
Бум. офс. № 2. Гарнитура тайме. Печать офсетная. Объем 34,0 усл. печ. л. 34,0 усл. кр.-отт. 33,52 уч.-изд. л. Тираж 50000 экз. Зак. № 3519. Цена 1 р. 30 к.
Издательство «Высшая школа», 101430, Москва, ГСП-4, Неглинная ул., д. 29/14
Ордена Октябрьской Революции и ордена Трудового Красного Знамени МПО«Первая Образцовая типография» Государственного комитета СССР по печати.113045, Москва, Валовая, 28
У^ 3’ У4 5(yS?>)3 + 2’ У^5(у?>)3 + 2-
,1 acoswx+wsmwx ,
е cos тхах=е
к (ог+т2)