РОССИЙСКАЯ АКАДЕМИЯ НАУК
ДАЛЬНЕВОСТОЧНОЕ ОТДЕЛЕНИЕ
СЕВЕРО-ВОСТОЧНЫЙ НАУЧНЫЙ ЦЕНТР
СЕВЕРО-ВОСТОЧНЫЙ КОМПЛЕКСНЫЙ НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ ИНСТИТУТ
В. Ю. БЕЛАШОВ, Н.М. ЧЕРНОВА
ЭФФЕКТИВНЫЕ АЛГОРИТМЫ И ПРОГРАММЫ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ
Магадан 1997
УДК 681.3.06
Белашов В.Ю., Чернова Н.М. Эффективные алгоритмы и программы вычислительной математики. Магадан: СВКНИИ ДВО РАН, 1997. 160 с.
В книге представлены результаты работы авторов по отбору наиболее эффективных (оптимальных) алгоритмов, реализующих методы как традиционных, так и практически не встречающихся в монографической и справочной литературе разделов вычислительной математики, например вычислительные методы в теории чисел, комбинаторике, теории спецфункций, теории спектральных преобразований и т.п. Каждый тематический раздел включает краткое введение в теорию с постулированием основных положений и серию оптимальных алгоритмов, реализующих тот или иной метод, с подробными комментариями и примерами тестовых расчетов. В книге более 200 текстов процедур, написанных на языке Turbo Pascal.
Для специалистов, работа которых связана с решением задач на ЭВМ, аспирантов и студентов вузов по рекомендации Министерства общего и профессионального образования Российской Федерации.
Табл. 90. Ил. 25. Библиогр.: 97 назв.
Ответственный редактор
доктор физико-математических наук В.Н.Доровский
Утверждено к печати Ученым советом СВКНИИ ДВО РАН
Belashov V.Yu., Chernova N.M. Effective algorithms and programs of applied mathematics. Magadan: NEISRI FEB RAS, 1997. 160 р.
This book is a result of selection of the most effective (optimum) algorithms realizing the methods of traditional topics and nontraditional ones which are not found in the monograph and reference books (for example, calculational methods in the number theory, combinatorics, the theory of mathematical functions and theory of orthogonal transforms etc.). Each subject section includes brief summary of the theory with postulating of main principles and a number of optimum algorithms being provided with the detail comments and the examples of their testing. The book includes more than 200 procedures written in Turbo Pascal.
Ó Белашов В.Ю., Чернова Н.М., 1997 г.
ISBN 5-7442-1013-Х Ó СВКНИИ ДВО РАН, 1997 г.
Ó СВНЦ ДВО РАН, 1997 г.
Ó Оформление оригинал-макета Черновой Н.М., 1997 г.
ОГЛАВЛЕНИЕ Предисловие |
7 |
Глава 1. Численные методы алгебры |
9 |
§ 1. Элементарная алгебра |
9 |
1.1. Комплексная арифметика. Извлечение корней n-й степени из комплексного числа |
9 |
1.2. Комбинаторика. Бином Ньютона и родственные формулы |
10 |
1.3. Вычисление символа Якоби |
12 |
1.4. Разложение многочлена на множители |
13 |
1.5. Вычисление корней полиномов с целыми коэффициентами в форме простых дробей |
14 |
§ 2. Решение нелинейных алгебраических уравнений с одной переменной |
15 |
2.1. Задача отделения корней. Уточнение корней методом половинного деления (метод дихотомии) |
15 |
2.2. Приближенное решение уравнения F(x)=0 методом хорд (секущих) |
18 |
2.3. Приближенное решение уравнения F(x)=0 методом касательных (Ньютона) |
20 |
2.4. Приближенное решение уравнения F(x)=0 комбинированным методом (хорд и касательных) |
22 |
2.5. Приближенное решение уравнения F(x)=0 методом итераций |
23 |
2.6. Приближенное решение уравнения F(x)=0 методом парабол |
25 |
2.7. Методы ускорения сходимости |
27 |
§ 3. Методы решения систем линейных и нелинейных уравнений |
28 |
3.1. Метод исключения Гаусса для систем линейных уравнений |
28 |
3.2. Метод главных элементов |
31 |
3.3. Решение систем нелинейных уравнений методом Ньютона |
32 |
3.4. Решение систем линейных уравнений методом квадратного корня |
35 |
3.5. Решение систем линейных уравнений методом итераций |
36 |
3.6. Решение систем линейных уравнений методом Зейделя |
37 |
§ 4. Алгебра матриц |
38 |
4.1. Вычисление собственных векторов и собственных значений матриц по методу Крылова |
39 |
4.2.Вычисление собственных векторов и собственных значений матриц по методу Данилевского |
42 |
4.3. Вычисление собственных векторов и собственных значений симметрической матрицы методом Якоби |
47 |
4.4. Задача обращения матриц и вычисления главного определителя по схеме Гаусса |
49 |
4.5. Обращение симметрической матрицы методом квадратных корней |
50 |
4.6. Обращение матрицы и решение системы линейных алгебраических уравнений |
51 |
4.7. Умножение уплотненной симметрической матрицы на прямоугольную |
53 |
4.8. Корректировка обратной матрицы после изменения одного элемента в прямой матрице |
53 |
4.9. Матрица причинно-следственных отношений |
54 |
Глава 2. Интерполирование и экстраполирование функций |
55 |
§ 1. Построение интерполяционного полинома Лагранжа по заданным значениям функции |
55 |
§ 2. Построение интерполяционного полинома Ньютона по заданным значениям функции |
57 |
§ 3. Интерполяция по Эйткену |
60 |
§ 4. Интерполяция функции кубическими сплайнами |
60 |
§ 5. Тригонометрическая интерполяция |
64 |
§ 6. Полиномиальная аппроксимация производных любого порядка таблично заданной функции |
65 |
Глава 3.Численное дифференцирование и интегрирование |
67 |
§ 1. Численное дифференцирование с помощью интерполяционных формул Ньютона и Лагранжа |
67 |
§ 2. Численное интегрирование по простейшим формулам |
69 |
§ 3. Вычисление определенного интеграла методом Симсона |
71 |
§ 4. Интегрирование квадратурными формулами Ньютона - Котеса и методом “три восьмых” |
72 |
§ 5. Интегрирование с автоматическим выбором количества узлов методом Рунге |
74 |
§ 6. Интегрирование с автоматическим выбором количества узлов |
75 |
§ 7. Вычисление интеграла по Ромбергу |
76 |
§ 8. Интерполяция, дифференцирование и интегрирование функций в одной процедуре |
78 |
§ 9. Вычисление комплексного криволинейного интеграла |
79 |
Глава 4.Приближенные методы интегрирования обыкновенных дифференциальных уравнений и систем |
81 |
§ 1. Приближенное решение обыкновенного дифференциального уравнения методом Эйлера |
81 |
§ 2. Приближенное решение обыкновенного дифференциального уравнения методом Эйлера с уточнением |
82 |
§ 3. Приближенное решение обыкновенного дифференциального уравнения методом Адамса |
84 |
§ 4. Приближенное решение обыкновенного дифференциального уравнения методом Рунге - Кутта |
86 |
§ 5. Приближенное решение обыкновенного дифференциального уравнения методом прогонки |
87 |
Глава 5.Специальные функции и алгоритмы их вычисления |
90 |
§ 1. Гамма-функция и связанные с ней функции |
90 |
§ 2. Некоторые интегральные функции |
94 |
§ 3. Неполные эллиптические интегралы I и II рода |
97 |
§ 4. Полные эллиптические интегралы I и II рода |
97 |
§ 5. Функции Бесселя целого порядка |
98 |
§ 6. Модифицированные функции Бесселя |
103 |
§ 7. Функции Бесселя дробного порядка |
107 |
Глава 6. Математическая обработка экспериментальных данных (введение в математическую статистику) |
110 |
§ 1. Основные понятия математической статистики |
110 |
§ 2. Математические оценки экспериментальных данных. Проверка гипотезы нормального распределения |
110 |
§ 3. Классификация по одному признаку |
115 |
3.1. Введение. Типы факторов |
115 |
3.2. Классификация по одному признаку с разным количеством наблюдений |
115 |
3.2.1. Равное число наблюдений |
115 |
3.2.2. Неравное число наблюдений |
116 |
3.3. Пример проверки гипотезы |
116 |
3.4. Рациональные схемы вычислений |
117 |
§ 4. Классификация по нескольким признакам |
117 |
4.1. Двустороняя классификация с повторениями |
117 |
4.2. Удобные вычислительные формулы |
118 |
4.3. Иерархическая классификация по двум признакам |
119 |
4.4. Многосторонняя классификация с повторениями |
119 |
4.5. Рациональные вычислительные схемы для табл. 6.10 |
120 |
§ 5. Некоторые вопросы преобразования данных |
121 |
Глава 7. Математическая обработка экспериментальных данных (введение в регрессионный и корреляционный анализ) |
122 |
§ 1. Эмпирические линейные зависимости |
122 |
1.1. Методы построения линейных зависимостей и уточнение их параметров |
122 |
1.2. Вычислительный алгоритм, процедуры и формальные параметры |
123 |
1.3. Контрольный пример |
124 |
§ 2. Выбор эмпирических формул для анализа нелинейных зависимостей |
125 |
§ 3. Преобразование нелинейной зависимости в линейную методом преобразования координат |
127 |
§ 4. Гармонический анализ экспериментальных данных |
128 |
§ 5. Корреляционный анализ экспериментальных данных |
130 |
5.1. Построение корреляционной матрицы |
130 |
5.2. Вычислительный алгоритм, процедуры и формальные параметры |
131 |
5.3. Контрольный пример |
131 |
Глава 8. Математическая обработка экспериментальных данных (специальные методы анализа) |
133 |
§ 1. Анализ корреляционной матрицы методом корреляционных плеяд |
133 |
§ 2. Метод Буркова |
135 |
§ 3. Анализ корреляционной матрицы методом корреляционных профилей |
136 |
§ 4. Метод главных компонент (многофакторный анализ) |
137 |
Глава 9. Математическая обработка экспериментальных данных (спектральный анализ временных рядов) |
149 |
§ 1. Тестирование временных рядов на стационарность |
149 |
§ 2. Спектральный анализ временных рядов |
151 |
2.1. Ряд Фурье, преобразование Фурье, алгоритм БПФ |
151 |
2.2. Вычисление амплитудного спектра, спектра мощности и фазового спектра методом БПФ |
154 |
2.3. Вычисление корреляционных последовательностей и свертки методом БПФ |
155 |
2.4. Синтез сигналов с помощью БПФ |
157 |
Литература |
158 |
ПРЕДИСЛОВИЕ
В настоящее время существует обширная литература, в которой рассматриваются отдельные разделы вычислительной математики (численное интегрирование, в том числе интегрирование как обыкновенных дифференциальных уравнений, так и уравнений в частных производных, численное дифференцирование, методы решения задач линейной алгебры, обработка данных эксперимента и пр.). Однако все известные издания посвящены либо изложению теоретических аспектов соответствующих разделов вычислительной математики, т.е. в них отсутствуют указания на конкретные приложения и практически не включены примеры конкретных алгоритмов и текстов программ (не говоря уже о примерах тестовых расчетов), либо представляют собой сборники чисто алгоритмов и программ без какого бы то ни было, пусть элементарного, введения в теорию используемых методов вычислений. Все это создает искусственный барьер между специалистами в области вычислительной математики и пользователями не математиками, которым по роду своей деятельности в той или иной сфере (естественные и экономические науки, техника, система образования и т.п.) приходится решать задачи с помощью соответствующих методов вычислений.
К сожалению, в литературе часто не уделяется внимание уже разработанным и признанным весьма эффективными алгоритмам, которые широко использовались для решения прикладных задач на ЭВМ серий ЕС и БЭСМ.
Отметим также, что практически отсутствует специальная литература (включающая как теоретические аспекты методов, так и примеры программ), посвященная наиболее эффективным и оптимальным с точки зрения затрат машинного времени и памяти ЭВМ алгоритмам и доступная широкому кругу пользователей. Справочники или слишком элементарны (написаны на уровне первых версий языка Бейсик и программируемых микрокалькуляторов) или содержат описание методов и примеры программ лишь по отдельным разделам вычислительной математики. Этими же недостатками страдает как переводная, так и оригинальная иностранная литература, не говоря уже о разработках иностранных фирм (к сожалению, малодоступных широкому кругу отечественных пользователей).
Авторы сделали попытку в той или иной мере устранить отмеченные недостатки путем систематизированного изложения алгоритмов с краткими предварительными сведениями по теории используемых методов по всем, включенным в издание, разделам вычислительной математики.
Наряду с наиболее эффективными алгоритмами, разработанными в последнее время, книга содержит оригинальные полученные авторами результаты. Что касается алгоритмов, разработанных другими специалистами, то при подготовке настоящего издания их тщательно отбирали, учитывая эффективность, оптимальность (оценка проводилась по скорости получения результатов и затратам ресурсов ЭВМ). Мы повторили тестирование на персональных компьютерах типа IBM PC и выполнили решение контрольных примеров для широкого диапазона входных параметров.
Основное содержание книги составляют лекционные курсы “Численные методы”, “Вычислительная математика” и “Вычислительная физика”, которые авторы читают в течение последних пяти лет в Международном педагогическом университете г.Магадана для студентов физико-математического факультета и аспирантов соответствующих специальностей. О развитии методов вычислительной математики и построения алгоритмов численного решения прикладных задач мы неоднократно докладывали на различных отечественных и международных конференциях и симпозиумах.
Материал разбит на тематические разделы, соответствующие традиционно выделяемым областям с включением таких, практически не встречающихся в изданиях подобного плана разделов, как, например, вычислительные методы в теории чисел, комбинаторике, теорий спецфункций и спектральных преобразований и т.п. Каждый тематический раздел содержит краткое введение в теорию с постулированием основных положений (поэтому в книге отсутствует такой раздел, как общее введение) и серию оптимальных алгоритмов с их программной реализацией на языке Turbo Pascal того или иного метода с подробными комментариями и примерами тестовых расчетов.
Хотелось бы отметить, что мы старались построить книгу так, чтобы пользователь, работающий в конкретной предметной области и не являющийся специалистом непосредственно в вычислительной математике, мог без особого труда выбрать наиболее эффективный метод численного решения своей задачи. И, наконец, авторы надеются, что методика подбора и изложения материала позволит специалистам использовать это издание в качестве настольной книги-справочника по эффективным алгоритмам и программам вычислительной математики.
Главы 1-3 написаны авторами совместно, главы 4, 6-8 - Н.М.Черновой, предисловие, главы 5, 9 и заключение - В.Ю.Белашовым. Работа по отбору, написанию и тестированию алгоритмов проводилась соответственно.
Авторы выражают свою признательность Л.И.Измайлову за поддержку, без которой публикация книги вряд ли была бы возможной, а также М.А.Трумпе за техническую помощь в подготовке графического материала.