методичка по КП. 3. Метод наименьших квадратов и специальные интерполяционные многочлены
Скачать 2.21 Mb.
|
3.2. Лабораторная работа № 4. Аппроксимация функции по методу наименьших квадратовОчень часто при анализе эмпирических данных необходимо найти явную функциональную зависимость между двумя величинами и , полученными в результате измерений. Поскольку опытные данные всегда содержат ошибки, то строить интерполяционный многочлен не рационально, так как при интерполяции ошибки повторяются. Желательно по возможности сгладить и минимизировать ошибки наблюдений. Этот результат достигается построением многочлена наилучшего среднего квадратического приближения по методу наименьших квадратов. Итак, если аппроксимируется многочленом вида , так что система базисных функций имеет вид , то неизвестные коэффициенты многочлена по методу наименьших квадратов определяются из решения системы (3.1.7). В подразделе 3.1 описан пример «ручного» вычисления коэффициентов линейной и квадратичной модели по методу наименьших квадратов. Решим аналогичную задачу средствами пакета Mathcad различными способами. Сформируем вначале вектора исходных данных. В алгебре матриц в среде Mathcad доступны несколько очень удобных встроенных функций, например, submatrix, stack и augment. Функция извлекает из матрицы подматрицу, содержащуюся в со строки по строку и со столбца с номером по номер . Функции , наоборот, формируют одну матрицу из двух. После работы получается массив, сформированный расположением над , при этом матрицы и должны иметь одинаковое число столбцов. Функция располагает матрицы и рядом, справа от ; эти матрицы должны иметь одинаковое число строк. Введем с клавиатуры Функции возвращают число столбцов и строк матрицы , соответственно наименьшее и наибольшее значение элементов в , - число элементов в векторе , - индекс последнего элемента в векторе с учетом значения переменной . Построим линейную и квадратичную модель по формулам (3.1.8) и (3.1.9). Для этого вычислим следующие величины. Введем еще одну предопределенную переменную пакета Mathcad . Она определяет допустимую погрешность для различных алгоритмов аппроксимации, интегрирования, решения уравнений и так далее. По умолчанию . Вычислим следующие величины: Коэффициенты системы нормальных уравнений линейной модели, то есть системы (3.1.8), находятся в матрице , коэффициенты квадратичной модели (3.1.9) - в матрице . Решение обеих систем линейных уравнений произведено с помощью обратной матрицы. Вектор содержит коэффициенты линейной модели, вектор - квадратичной. Далее вычисляются невязки по обеим моделям и находятся средние квадратические ошибки . Видно, что исходным данным хорошо удовлетворяет квадратичная модель Этот факт отчетливо виден и на приведенном графике. Mathcad не назывался бы математическим пакетом, если бы не умел решать алгебраические системы различными, в том числе и более эффективными способами. Одним из таких способов является конструкция Given – Find. Это две команды: Given (Дано) и Find (Найти). Сначала задается какое-нибудь начальное приближение, например, для квадратичной модели затем за ключевым словом Given нужно записать анализируемую систему, связывая левые и правые части уравнений знаком «эквивалентно» (жирным знаком «равно» из панели равенств и отношений или же нажимая сразу обе клавиши ), после этого должно идти второе ключевое слово Find. Эта функция возвращает решение анализируемой системы: Неудобство применения пары Given – Find в том, что решаемая система уравнений должна быть записана в скалярной форме. Вместо функции Find можно использовать пару Given – MinErr. Функция дает решение системы уравнений, которое приводит к минимальным невязкам. Число неизвестных системы должно быть равно числу аргументов функции MinErr. В нашем случае Наконец, для решения линейных систем алгебраических уравнений можно использовать встроенную функцию lsolve. Она возвращает вектор решения системы, записанной в матричном виде: Заметим, что функцию lsolve можно использовать в программируемых конструкциях, тогда как пары Given – Find и Given – MinErr этого не допускают. Приведем в заключение подпрограмму, реализующую вычисления по формуле (3.1.7) в общем случае коэффициентов сглаживающего многочлена заданной степени. Все операторы этой подпрограммы легко отождествляются с той или иной частью формулы (3.1.7). Параметры подпрограммы: - вектора исходных данных, - число точек сетки таблично заданной функции, - требуемая степень сглаживающего многочлена. В результате работы подпрограмма МНК выдает вектор коэффициентов многочлена , записанных в следующем порядке: . Последняя компонента вектора результата содержит среднюю квадратическую ошибку представления исходных табличных данных построенным сглаживающим многочленом: Для нашего примера Видно, что для исходной таблично заданной функции многочленом наилучшего приближения является уже полученный ранее многочлен второй степени . Дальнейшее усложнение модели (повышение степени многочлена) практически не изменяет среднюю квадратическую ошибку и, следовательно, не является оправданным. Задание № 1. По методу наименьших квадратов аппроксимировать таблично заданную функцию многочленом наилучшего среднеквадратического приближения . Т а б л и ц а 1
Т а б л и ц а 2
Т а б л и ц а 3
|