- •6.1. Общая постановка задачи 318
- •0. Введение
- •0.1. Приближенные вычисления
- •0.2. Численные методы и программирование
- •0.3. Особенности машинных вычислений
- •0.4. Структура учебного пособия
- •1. Специальные классы математических объектов и операции над ними
- •1.1. Комплексные числа
- •1.1.1. Основные понятия
- •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.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.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 и отображать графики зависимостей
- •Литература
- •324050, Кривой Рог-50, пр. Металлургов, 28.
2.2.3. Метод наименьших квадратов (мнк)
Мы размещаем этот метод, относящийся к методам аналитического приближения функций, заданных в табличной форме, в матричном классе просто потому, что он базируется на конструировании матриц и на матричных операциях – такое размещение приводит к уменьшению накладных расходов на вызов метода по сравнению с размещением его в отдельном классе.
Описание метода.
В задачах моделирования при определении статических характеристик объектов (зависимости скалярной выходной переменной y от векторной входной переменной x) может стоять обратная рассмотренной выше задача – определить вектор коэффициентов линейной алгебраической модели a; в этом случае решению подлежит система y=Xa, где X – матрица полученных экспериментально значений (или значений некоторых функций от экспериментальных данных) составляющих вектора входа, y – соответствующие строкам X значения составляющих вектора, a – подлежащий определению вектор коэффициентов модели, составляющие которого надо вычислить так, чтобы обеспечить наилучшее приближение вычисленных по модели значений yi(xi) (здесь уi – скаляр, xi – вектор).
Термин «наилучшее приближение» в МНК трактуется как критерий Гаусса – минимум суммы Q квадратов отклонений вычисленных (модельных) значений ymt=axt от измеренных y, где t=1, 2, …, N – номер или момент времени отсчета значений x и у.
Очевидно, что Q есть функция вектора a:
Q(a)=
=(y–Xa)T(y–Xa)=yTy–
–2yTXa+aTXTXamin.
Определение значений аргумента, обеспечивающих минимум функции Q(a), осуществим как в обычном анализе:
дQ/дa=–2XТy+2XTXa=0,
или
XTy=XTXa.
Это обычная система линейных уравнений с симметричной матрицей коэффициентов XTX (носит название матрицы Грамма), столбцом свободных членов XTy и искомым вектором a.
Решение этой системы линейных уравнений дает значение вектора a, обеспечивающее минимум суммы квадратов отклонений (в силу положительности второй производной), если ранг матрицы наблюдений X равен размерности вектора a:
a=(XTX)-1XTy.
Порядок N матрицы X обычно значительно больше ее ранга
N>(rank(X)=m) (m – размерность вектора a),
чтобы была возможность выполнения усреднения решения по значительному числу измерений и соответственно эффективного «сглаживания» случайных выбросов.
Вычисление непосредственно по последней формуле, связанное с необходимостью обращения матрицы, как правило, не выполняют. Для решения таких систем разработан ряд эффективных специальных методов – разложения по сингулярным числам, разложение матрицы с применением метода Хаусхолдера и др. Мы не будем рассматривать эти методы, а в нашем матричном классе решение выполнено одним из описанных выше методов – методом Гаусса.
Решение задачи может быть значительно упрощено, если вектор-столбцы матрицы измерений Х будут представлять собой взаимно-ортогональные векторы, удовлетворяя условию (xj, xk)=0 при j≠k. Так как элементами матрицы линейных уравнений XTX являются скалярные произведения этих векторов, то все ее элементы, кроме диагональных, обратились бы в нуль и система уравнений распалась бы на отдельные уравнения. Составляющие вектора а можно было бы вычислить простым делением столбца свободных членов на диагональные элементы соответствующих строк:
ai=
.
Если измерения проводятся в режиме активного эксперимента, когда есть возможность формировать матрицу измерения по усмотрению исследователя, последовательности значений составляющих векторов х задают из условия обеспечения ортогональности, а значения у просто фиксируют как отклик объекта на заданные значения х. Соответствующие методы рассматриваются в теории ортогонального планирования эксперимента и не входят в наш курс.
Мы же рассмотрим другой подход к проблеме ортогонализации. Пусть для простоты входная переменная х – скаляр, а выходную мы хотели бы представить как линейную комбинацию некоторых функций этой скалярной переменной:
y=(a, f(x)),
где a – вектор коэффициентов, f(x) – вектор функций заданного типа.
Матрица измерений F будет содержать в этом случае вектор-столбцы значений выбранных функций и для получения диагональной матрицы FTF системы линейных уравнений нам понадобятся функции, удовлетворяющие условию
(fj(x), fk(x))=0 при j≠k.
Системы таких функций называются ортогональными и среди них есть класс ортогональных полиномов, а в этом классе наиболее простой системой являются ортогональные полиномы Чебышева с весовой функцией 1. Строятся они так:
полином нулевой степени выбирается единичным t0(x)=1,
полином первой степени t1(x)=x–a1, где a1 определяется из условия ортогональности (t1, t0)=0, что дает
=0
или Na1+
=0
и a1=–(1/N)
(среднее арифметическое).
Все последующие полиномы строятся по рекуррентной формуле по двум предыдущим:
tr+1(x)=(x+br+1)tr(x)+gr+1tr-1(x),
где
br+1=–
,
gr+1=
.
Теперь коэффициенты модели будут определяться без решения системы уравнений:
ar=
,
r=1,
2, ..., m.
Удобство использования ортогональных функций еще и в том, что при необходимости повысить степень полинома нет необходимости пересчитывать уже найденные коэффициенты модели – мы просто строим полином tm+1, определяем его коэффициенты, достраиваем к матрице F один столбец значений этого полинома и вычисляем коэффициент am+1.
Результирующая сумма квадратов отклонений может быть вычислена по формуле:
.
Рассчитанные коэффициенты обычно подвергают проверке на значимость по критерию Стьюдента, незначимые коэффициенты (соответствующие им члены модели практически не влияют на значение выходной переменной) желательно удалить из модели. При использовании ортогональных базовых функций пересчет оставшихся коэффициентов не нужен, а в остальных вариантах – обязателен. Полученные в результате вычисления коэффициентов математические модели (они называются уравнениями регрессии у на х) требуют проверки на адекватность реальным данным. Эта проверка выполняется на отдельной, не участвовавшей в расчетах коэффициентов контрольной выборке данных, по отношению остаточной дисперсии у к общей дисперсии (остаточные отклонения опытных данных вычисляются по отношению к модельным, а общие – по отношению к оценке математического ожидания); полученное отношение сравнивается с критериальным, определяемым по распределению вероятностей Фишера. Но это предмет математической статистики, а не численных методов и мы не будем на этом подробнее останавливаться.
