73HFADEL.gif (1594 bytes)                                                            A.П. Полищук, С.А. Семериков

МЕТОДЫ ВЫЧИСЛЕНИЙ в классах языка С++

Учебное пособие для студентов вузов

Кривой Рог

Издательский отдел КГПИ

1999

Полищук А.П., Семериков С.А.

Методы вычислений в классах языка С++: Учебное пособие. – Кривой Рог: Издательский отдел КГПИ, 1999. – 350 с., ил.

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

Для студентов высших учебных заведений, аспирантов, научных и инженерно-технических работников.

Рецензенты:

д-р техн. наук, проф. А.Н. Марюта,

канд. физ.-мат. наук, доц. Н.А. Рашевский

©А.П. Полищук, С.А. Семериков, 1999

Оглавление

0.Введение

0.1.Приближенные вычисления *

0.2. Численные методы и программирование

0.3. Особенности машинных вычислений *

0.4. Структура учебного пособия *

1. Специальные классы математических объектов и операции над ними *

1.1. Комплексные числа *

1.1.1. Основные понятия *

1.1.2. Операции над комплексными числами *

1.1.2.1. Операции сравнения *

1.1.2.2. Алгебраические операции *

1.1.2.2.1. Сложение и вычитание*

1.1.2.2.2. Умножение*

1.1.2.2.3. Деление*

1.1.2.2.4. Возведение в степень (формула Муавра)*

1.1.3. Определение программного класса комплексных чисел *

1.2. Векторы *

1.2.1. Основные понятия *

1.2.2. Определение программного класса многомерных векторов *

1.3. Полиномы *

1.3.1. Общие сведения *

1.3.2. Операции над полиномами *

1.3.3. Вычисление значений полиномов *

1.3.4. Вычисление корней полиномов *

1.3.5. Определение программного класса полиномов *

2. Матрицы и задачи линейной алгебры*

2.1. Общие сведения о матрицах и матричных операциях*

2.2. Методы решения основных задач линейной алгебры *

2.2.1. Методы решения систем линейных алгебраических уравнений (СЛАУ)*

2.2.1.1. Метод Гаусса для решения СЛАУ, вычисления определителей и обращения матриц*

2.2.1.2. Предварительная факторизация матриц (разложение в произведение двух матриц) в задачах решения СЛАУ*

2.2.1.2.1. Факторизация матриц по методу Холецкого*

2.2.1.3. Метод ортогонализации для решения СЛАУ*

2.2.1.4. Итерационные методы решения СЛАУ*

2.2.1.4.1. Проблема сходимости итерационных методов*

2.2.2. Методы вычисления собственных значений матриц*

2.2.2.1. Метод неопределенных коэффициентов*

2.2.2.2. Метод Данилевского*

2.2.2.3. QR-алгоритм для несимметрических матриц*

2.2.2.4. Метод Леверрье-Фаддеева*

2.2.2.5. Итерационный степенной метод*

2.2.2.6. Метод Крылова*

2.2.3. Метод наименьших квадратов (МНК)*

2.3. Программная реализация матричного класса *

2.3.1. Общее описание структуры матричного класса *

2.3.2. Интерфейсный файл реализации матричного класса matrix.h*

2.4. Программная реализация методов вычисления собственных значений и собственных векторов матриц*

2.4.1. Метод неопределенных коэффициентов*

2.4.2. Программная реализация метода Крылова вычисления собственных значений*

2.4.3. Метод Леверрье-Фаддеева вычисления коэффициентов характеристического полинома*

2.5. Элементы линейного программирования*

2.5.1. Общая постановка задачи *

2.5.2. Примеры задач линейного программирования*

2.5.2.1. Задача о пищевом рационе*

2.5.2.2. Задача о распределении ресурсов*

2.5.2.3. Задача планирования перевозок (транспортная задача)*

2.5.3. Симплекс-метод решения задачи линейного программирования*

2.5.3.1. Приведение системы к стандартной, удобной для преобразований форме*

2.5.3.2. Алгоритм замены базисных переменных*

2.5.3.3. Алгоритм поиска опорного решения ОЗЛП*

2.5.3.3.1. Алгоритм выбора разрешающего элемента для приближения к опорному решению*

2.5.3.4. Алгоритм поиска оптимального решения*

2.5.4. Транспортная задача линейного программирования*

2.5.4.1. Общие сведения*

2.5.4.2. Формирование опорного плана*

2.5.4.3. Циклические переносы перевозок для улучшения плана*

2.5.4.4. Метод потенциалов*

2.5.5. Транспортная задача при небалансе запасов и заявок*

2.5.6. Транспортная задача с временным критерием*

2.6. Программная реализация задач линейного программирования*

2.6.1. Симплекс-метод решения ОЗЛП*

2.6.2. Программная реализация метода решения транспортной задачи*

3. Аналитическое приближение функций, заданных таблично *

3.1. Общая постановка задачи*

3.2. Общая методика решения задач аппроксимации*

3.2.1. Алгебраическая интерполяция*

3.2.1.1. Классический интерполяционный полином*

3.2.1.2. Метод интерполяции Лагранжа*

3.2.1.3. Интерполяционный полином Ньютона*

3.2.1.4. Интерполяция сплайнами*

3.2.1.5. Аппроксимация функций по методу наименьших квадратов*

3.2.2. Программная реализация класса аппроксимирующих функций*

4. Численное интегрирование и дифференцирование табличных функций*

4.1. Численное интегрирование*

4.1.1. Вычисление определенных интегралов*

4.1.1.1. Классификация методов *

4.1.2. Программная реализация методов численного интегрирования*

4.2.Численное дифференцирование*

5. Введение в численные методы решения дифференциальных уравнений*

5.1. Обыкновенные дифференциальные уравнения (общие сведения)*

5.2. Процессы как объект исследования и управления*

5.3. Операционное исчисление и его применение к исследованию динамики линейных систем*

5.3.1. Общие сведения*

5.3.1.1. Правила операционного исчисления*

5.3.2. Решение линейных уравнений с постоянными коэффициентами*

5.3.2.1. Передаточные функции линейных динамических систем*

5.3.2.2. Частотные характеристики динамических систем*

5.3.2.3. Фазовые портреты динамических систем*

5.3.2.4. Ограничения области применения символического метода*

5.3.3. Программная реализация класса символического метода*

5.4. Конечно-разностные методы решения задачи Коши для линейных и нелинейных ОДУ *

5.4.1. Одношаговые методы*

5.4.1.1. Метод Эйлера*

5.4.1.2. Методы Рунге-Кутта 2-го порядка*

5.4.1.3. Метод Рунге-Кутта 4-го порядка*

5.4.2. Многошаговые методы (методы Адамса)*

5.4.3. Проблема устойчивости*

5.4.4. Программная реализация численных методов решения задачи Коши*

5.5. Двухточечные краевые задачи*

5.5.1. Метод конечных разностей для линейных краевых (граничных) задач*

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

5.5.3. Программная реализация класса граничных задач*

6. Численные методы решения систем нелинейных уравнений (СНУ) и поиска экстремумов функций*

6.1. Общая постановка задачи*

6.2. Решение нелинейных уравнений*

6.2.1. Функция одной переменной при отсутствии помех*

6.2.1.1. Методы последовательного сокращения интервала неопределенности*

6.2.1.2. Рекуррентные методы уточнения текущей оценки значения корня*

6.2.2. Уточнение корня функции одной переменной в условиях помех*

6.2.2.1. Методы стохастической аппроксимации*

6.3. Методы поиска экстремума функций*

6.3.1. Унимодальные функции одного аргумента при отсутствии помех*

6.3.1.1. Метод дихотомии*

6.3.1.2. Метод Фибоначчи*

6.3.1.3. Метод золотого сечения*

6.3.2. Многомерный поиск экстремума *

6.3.2.1. Метод координатного спуска*

6.3.2.2. Метод градиента (наискорейшего спуска или крутого восхождения или метод Бокса-Уилсона)*

6.3.2.3. Последовательный симплексный поиск (ПСМ) субоптимальной области в многомерном пространстве*

6.3.2.3.1. Вводные замечания*

6.3.2.3.2. Алгоритм последовательного симплексного метода*

6.3.2.3.3. Подготовительные операции*

6.3.2.3.4. Алгоритм поиска*

6.3.2.3.5. Преимущества метода*

6.3.2.3.6. Недостатки метода*

6.4. Программная реализация класса подпрограмм для поиска экстремума унимодальных в заданном интервале функций одной еременной*

6.5. Программная реализация класса подпрограмм для многомерного поиска экстремума унимодальных функций*

Приложение. Как переносить данные в Ехсеl и отображать графики зависимостей*

Литература*