Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧисМетЗад.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
15.86 Mб
Скачать

1.2. Метод наименьших квадратов

Интерполяция позволяет легко аппроксимировать функцию у(х). Однако точность такой интерполяции гарантирована лишь в небольшом интервале порядка нескольких шагов сетки. Для другого интервала приходится заново вычислять коэффициенты интерполяционной формулы. В практической же деятельности всегда желательно иметь единую приближённую формулу y   (x), пригодную для большого отрезка a xb.

Имеется ещё одна причина стремления получить общую формулу интерполяции для всего интервала изменения х. При интерполяции мы приравниваем значения у(х) и (х) в узлах сетки. Но если значения y(xi) определены неточно – например, из эксперимента,  то точное приравнивание неразумно. Поэтому нередко целесообразней приближать функцию не по точкам, а в среднем для всего интервала изменения х.

В этом и состоит основная идея метода наименьших квадратов. Пусть аппроксимирующая функция (х) представляет собой множество в линейном пространстве функций

(1.8)

где функции k(x) – линейно-независимые. В каждом i-том узле таблицы эта функция будет давать несколько отличную от значения y(xi)  yi величину, образуя узловую невязку Ri = (xi) – yi. Так как узловые невязки могут иметь разные знаки, то суммарная погрешность формулы (1.8) будет характеризоваться выражением

(1.9)

где i = 1, 2, , I – номер узла таблицы, а n характеризует степень аппроксимирующего полинома. Основное уравнение метода наименьших квадратов формулируется как требование выбрать "настроечные параметры" ak таким образом, чтобы был обеспечен минимум квадратичного отклонения, т.е.

R 2 = min. (1.10)

Очевидным следствием этого требования является система уравнений

(1.11)

В том часто используемом случае, когда k(x) = xk, систему уравнений (1.11) можно переписать в виде

(1.12)

Здесь введена весовая функция i – позволяющая учесть относительную значимость узлового значения функции. Очевидно, чем точнее это значение, тем больший вес оно должно иметь по сравнению с менее точными данными.

Поскольку степени на любом отрезке образуют чебышевскую систему функций, то задача (1.12) имеет единственное решение. Но система степеней не ортогональна, и при больших значениях n задача (1.12) плохо обусловлена. Чтобы обойти эту трудность, обычно ограничиваются невысокими степенями n  2  5, когда обусловленность задачи (1ю12) удовлетворительна.

Таким образом, задача интерполяции при описанном подходе сводится к задаче решения системы алгебраических уравнений относительно коэффициентов ak с последующей записью аналитического выражения и выполнением всех вычислений на основе этого выражения. Так как решению систем линейных алгебраических уравнений посвящено отдельное задание, то здесь рассмотрим другую возможность.

В настоящее время вопросы интерполяции в плане подбора аппроксимирующего выражения решаются элементарно. Практически в любом математическом пакете обязательно имеется команда, функция или процедура интерполяции экспериментальных данных в смысле метода наименьших квадратов. В качестве примеров использования таких команд (или функций) рассмотрим решение задачи примера 1.3 в рамках пакетов Mathcad, Maple и MATLAB.

В пакете Mathcad сначала формируются векторы узловых координат и узловых значений функции; обозначим их через Х и Y. Дальнейшая процедура показана на рис. 1.2.

Рис. 1.1. Решение задачи интерполяции в рамках пакета Mathcad

Располагая аналитическим описанием функции, теперь нетрудно ответить на все вопросы, поставленные в условиях задачи (см. рис. 1.2). Можно наглядно убедиться в близости аппроксимации к заданным узловым значениям функции, построив график, а можно вычислить коэффициент корреляции (точнее, корреляционное отношение), характеризующий степень близости исходных данных и результатов расчёта по аппроксимирующему полиному. Как видно из данных рис. 1.2, этот коэффициент оказался равен 1, т.е. полином точно описывает табличные данные.

В рамках пакета Maple задачу интерполяции можно решить двумя способами. Во-первых, для этого имеется специальная команда interp(X, Y, v), где Х и Y имеют тот же самый смысл, что и в Mathcad, а параметр v указывает имя аргумента интерполяционного полинома. По умолчанию степень полинома на единицу меньше количества вводимых узлов, т.е. если ввести все значения исходной таблицы, то пакет определит коэффициенты полинома девятой степени.

Рис. 1.2. Решение задачи интерполяции и оценка точности решения

В рамках пакета Maple имеется возможность проверить утверждение о низкой надёжности (плохой обусловленности) полиномов высокой степени. Приведём фрагмент интерактивной работы с пакетом для случая, когда заданы все данные исходной таблицы (рис. 1.3).

Можно видеть, что в данном случае, когда интерполируемая функция изменяется плавно, использование полинома высокой степени не искажает фактической зависимости. Вопрос о том, приводит ли повышение порядка интерполяционного полинома к увеличению точности интерполяции, может быть решён лишь при сопоставительных расчётах. На рис. 1.4 показаны результаты таких расчётов (по крайней мере, в графическом представлении) для тех же исходных данных, когда исключено каждое чётное узловое значение функции. Вряд ли результаты стали хуже; в то же время выполнять расчёты с полиномом четвёртого порядка намного проще.

Рис. 1.3. Решение задачи интерполяции в пакете Maple

Рис. 1.4. Решение той же задачи при меньшем числе точек

Вычисление значений функции в заданных точках интерполяции при известном уравнении функции не вызывает затруднений, поэтому на этом вопросе мы не останавливаемся. Отметим только, что решение уравнения в рамках пакета Maple также осуществляется специальной командой solve. При этом команда выдаёт вообще все решения для заданного уравнения, а не только для интервала таблицы.

В рамках пакета MATLAB задача интерполяции для всей области, заданной таблицей, решается с использованием команды polyfit(X,Y,n), где n – степень полинома. Команда возвращает коэффициенты полинома в порядке убывания степеней. Результаты работы команды сохраняются в рабочей области пакета и могут быть использованы в других командах без явного указания. Вычисления по аппроксимирующему полиному выполняются командой polyval(p, X), где р – вектор коэффициентов полинома. Здесь можно сразу выполнить оценку погрешности аппроксимации, как это показано на рис. 1.5.

Рис. 1.5. Решение задачи интерполяции в пакете MATLAB

Можно также проиллюстрировать результаты интерполяции соответствующим графиком (рис. 1.6):

>> plot(X, Y, 'ob', X, y)

Рис. 1.6. Оценка точности интерполяции

Можно задачу аппроксимации решать и в рамках программы Excel. Для этого, прежде всего, необходимо уяснить себе вычислительную суть метода наименьших квадратов. Предположим, что мы ожидаем квадратичной зависимости табулированной функции y(xi) от аргумента xi, т.е.

y(x) = a + bx + cx2.

Чтобы обеспечить выполнение условия

R2 =

где yi = y(xi), необходимо подобрать неизвестные коэффициенты a, b и c из условий отыскания экстремума

откуда получаем систему уравнений

Дальнейший расчёт по этим уравнениям приведён ниже.