Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mathcad.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
2.94 Mб
Скачать

Лабораторная работа №5 Интерполяция функций Цель работы

Приобретение навыков решения на ЭВМ задачи локальной интерполяции функции и вычисления ее приближенного значения в промежутках между узловыми точками.

Методические указания

Аппроксимация функций заключается в приближенной замене заданной функции f(x) некоторой функцией  (x) так, чтобы отклонение функции (x) от f(x) в заданной области было наименьшим2. Функция  (х) при этом называется аппроксимирующей.

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

Одним из видов аппроксимации функций является задача интерполяции. Необходимость ее связана с тем, что для вычисления значений функции, ее производных в произвольных точках и величин интегралов необходимо аналитическое описание изучаемой функции, а оно либо достаточно сложно (случаи спецфункций – гамма-функция, эллиптическая функция и др.) либо вообще отсутствует (функция задана таблично).

Пусть на отрезке [a,b] задан дискретный набор точек , называемых узлами интерполяции, причем среди этих точек нет совпадающих, а также значения некоторой функции f(x) в этих точках:

f(x0) = y0, f(x1) =  y1,  . . ., f(xn) = yn.

Требуется построить функцию (х) (интерполяционная функция), принадлежащую определенному классу (например, полиномов, дробно-рациональных или гармонических функций) и принимающую в узлах интерполяции те же значения, что и f(x), т.е. такую, что:

(x0) = y0, (x1) = y1,  . . ., (xn) = yn. (5.1)

Геометрически это означает, что нужно найти кривую y =  (х) определенного типа, проходящую через заданную систему точек M(xi, yi) (i = 0, 1, ..., n) (рис. 9). В такой общей постановке задача может иметь бесконечное множество решений или совсем не иметь их. Задача становится однозначной, если вместо произвольной функции  (х) искать полином  (х) степени не выше n интерполяционный полином, удовлетворяющий условиям (5.1).

 

Рис. 9. К пояснению понятия аппроксимации

Рис. 10. Линейная интерполяция

Найдя интерполяционный полином, мы можем вычислить значения функции между узлами (провести интерполяцию в узком смысле слова), а также определить значение функции даже за пределами заданного интервала (провести экстраполяцию3). Если полином един для всей области интерполяции, то говорят о глобальной интерполяции, а если между различными узлами полиномы различны, то говорят о кусочной или локальной интерполяции.

Задача глобальной интерполяции обычно решается с помощью интерполяционной формулы Лагранжа:

. (5.2)

При нарастании числа точек (выше 6-8) полином Лагранжа становится достаточно громоздким и практически непригодным. Это связано с тем, что степень его лишь на единицу меньше числа дискретного набора точек (экспериментальных значений функции). Поэтому при значительном числе точек чаще решают задачу локальной интерполяции.

Простейшим видом локальной интерполяции является линейная интерполяция, заключающаяся в том, что заданные точки М(xi, yi) (i = 0, 1, ..., n) соединяются прямолинейными отрезками, и функция f(x) приближается ломаной с вершинами в данных точках (рис. 10). Задача линейной интерполяции в пакете MathCAD решается с помощью встроенной функции linterp(vx,vy,z), которая использует векторы данных vx и vy, чтобы возвратить интерполируемое значение, соответствующее третьему аргументу z. Аргументы vx и vy должны быть векторами одинаковой длины, и вектор vx должен содержать вещественные значения, расположенные по возрастания (если это не так, то их необходимо вначале упорядочить). Функция соединяет узловые точки отрезками прямых, создавая таким образом ломаную. Интерполируемое значение для конкретного z есть ордината у соответствующей точки ломаной.

Если величина x, расположена перед первой (или за последней) точкой в векторе vx, то MathCAD продолжает ломаную прямой линией, проходящей через первые две (последние две) точки данных. Пример проведения линейной интерполяции:

Усложнением метода линейной является квадратичная интерполяция – в качестве интерполяционной функции принимается квадратный трехчлен, причем интерполяция проводится по трем ближайшим точкам.

В настоящее время среди методов локальной интерполяции наибольшее распространение получила интерполяция кубическими сплайнами (от английского слова spline – гибкая линейка). Основные идеи теории сплайнов сформировались как результат математического описания поведения гибких реек из упругого материала (механические сплайны), которыми издавна пользовались чертежники при необходимости проведения через заданные точки достаточно

Рис. 11. Положение минимума энергии упругой рейки

гладкой кривой. Известно, что рейка из упругого материала, закрепленная в некоторых точках и находящаяся в положении равновесия, принимает форму, при которой ее энергия является минимальной (рис. 11). Положение гибкой тонкой балки между двумя узлами достаточно хорошо описывается кубическим полиномом, и поскольку она не разрушается, то аппроксимирующая функция должна быть, по меньшей мере, непрерывно дифференцируемой. Это означает, что функции (x), '(x), ''(x) непрерывны на отрезке [a, b].

Кубическая сплайн-интерполяция позволяет провести кривую, которая образуется путем создания и последующей «состыковки» ряда кубических полиномов, проходящих через наборы из трех смежных точек.

На каждом интервале кубический интерполирующий сплайн S(x) (полином третьей степени):

,

удовлетворяет условиям (5.1). Если всего задано n узлов, то число интервалов – ( ). Значит, требуется определить неизвестных коэффициентов кубических полиномов. Условие (5.1) дает нам n уравнений. Условие непрерывности функции и ее первой и второй производных во внутренних узлах интервала дает дополнительно уравнений

Всего имеем различных уравнений. Два недостающих уравнения можно получить, задавая условия на краях интервала: при этом можно считать, что кривая сплайна приближается в граничных точках к прямой линии, или к параболе или же к кубической кривой. В пакете MathCAD имеется три сплайн-функции: lspline (vx,vy), pspline(vx,vy), cspline(vx,vy) каждая из которых соответствует заданию линейных, квадратичных (параболических) или кубических условий на границах интервала. Аргументы vx и vy удовлетворяют тем же требованиям, что и в случае линейной интерполяции. Сплайн-функции возвращают вектор коэффициентов вторых производных, обозначаемый vs. Этот вектор используется в функции interp(vs,vx,vy,z), которая возвращает интерполируемое значение, соответствующее аргументу z.

Для получения наилучших результатов z должно находится между самыми большими и самыми маленькими значениями vx - маловероятно, что будут полезны значения, вычисленные вне этого диапазона. Сплайны предназначены для интерполяции, а не для экстраполяции. Задача экстраполяции вперед4 (линейного предсказания) решается в пакете MathCAD с помощью функции predict(v,m,n), которая использует линейный алгоритм предсказания. Она полезна, когда экстраполируемая функция является гладкой и монотонной или осциллирующей, хотя не обязательно периодической. Функция возвращает n предсказанных значений, основанных на m последовательных последних значениях вектора данных v. Вначале вычисляются коэффициенты предсказания, а затем используются последние m точек чтобы предсказать координаты (m+1) - ой точки, т.е. фактически создается скользящее окно шириной в m точек.

Пример построения в пакете MathCAD кубических сплайнов через узловые точки приведены в следующем документе:

Пример использования функции predict дан в следующем документе:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]