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

Интерполяция средствами MathCad

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

Функции интерполяции определяют кривую, точно проходящую через заданные точки. Из-за этого результат очень чувствителен к ошибкам данных. Кроме того, необходимо убедиться, что каждый элемент массива, который используется в любой из функций, описанных в этом разделе, содержит определенное значение. Поскольку MathCad присваивает значение 0 любым элементам, которые явно не определены.

 

Линейная интерполяция

При линейной интерполяции MathCad соединяет существующие точки данных прямыми линиями. Это выполняется функцией linterp.

 

Эта функция соединяет точки данных отрезками прямых, создавая таким образом ломаную. Интерполируемое значение для конкретного x: есть ордината y соответствующей точки ломаной.

Для значений x, расположенных перед первой точкой в векторе vx, MathCad продолжает ломаную прямой линией, проходящей через первые две точки данных. Для значений x, расположенных за последней точкой vx, MathCad продолжает ломаную прямой линией, проходящей через последние две точки данных.

Для получения наилучших результатов x должно находится между самыми большими и самыми   маленькими   значениями   vx   -   маловероятно,   что   будут   полезны   значения, вычисленные для  вне этого диапазона. Функция linterp предназначена для интерполяции, а не для экстраполяции. Рис. 8.2 показывает некоторые примеры линейной интерполяции.

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

 

Кубическая сплайн-интерполяция

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

MathCad поставляется с тремя сплайн функциями:

cspline (vx, vy)

pspline (vx, vy)

lspline (vx, vy)

Они возвращают вектор коэффициентов вторых производных, который мы будем называть vs. Этот вектор vs обычно используется в функции interp, описанной ниже. Аргументы vx и vy должны быть вещественными векторами одинаковой длины. Значения вектора vx должны быть расположены в порядке возрастания.

Эти три функции отличаются только граничными условиями:

· функция lspline генерирует кривую сплайна, которая приближается к прямой линии в граничных точках;

 

Рис. 8.3. Кубическая сплайн-интерполяция

 

· функция pspline  генерирует кривую сплайна, которая приближается к параболе в граничных точках.

· функция cspline генерирует кривую сплайна, которая может быть кубическим полиномом в граничных точках.

 Чтобы провести кубический сплайн через набор точек (рис. 8.3):

· создайте векторы  vx и vy, содержащие координаты  x  и  y,через которые нужно провести кубический сплайн. Элементы  vx  должны быть расположены в порядке возрастания. (Хотя мы используем имена vx, vy и vz, нет никаких ограничений на имена этих переменных; можно использовать любые имена);

· Вычислите вектор vs:= cspline (vx, vy).

 

Рис. 8.4. Экстраполяция

 

Вектор vs содержит    вторые    производные    интерполяционной    кривой    в рассматриваемых точках;

· чтобы   найти   интерполируемое   значение   в   произвольной   точке   x0,   вычислите interp(vs, vx, vy, x0), где  vs, vx, vy - векторы, описанные ранее.

Интерполируемое значение для конкретного x: есть ордината y соответствующей точки сплайна. Для значений x, расположенных перед первой точкой вектора vx, MathCad продолжает сплайн первой из составляющих его кубических парабол. Для значений x, расположенных за последней точкой vx, MathCad продолжает сплайн первой из составляющих его кубических парабол.

Для получения наилучших результатов x должно находится между самыми большими и самыми маленькими значениями vx - маловероятно, что будут полезны значения, вычисленные для х вне этого диапазона. Сплайны предназначены для интерполяции, а не для экстраполяции.

 

Линейное предсказание (экстраполяция)

Иногда необходимо оценить значения формул в точках, находящихся вне области расположения сетки, на которой заданы значения функции. В MathCad есть функция predict, которая позволяет это сделать.

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

Функция predict использует последние m исходных значений данных, чтобы вычислять коэффициенты предсказания. Как только это сделано она использует последние m точек, чтобы предсказать координаты (m+1)-ой точки, фактически создавая скользящее окно шириной в m точек (рис. 8.4).