logo search
Аппроксимация 2012_верстка

Глава 3. Интерполяция и экстраполяция

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

y

Рис. 1. Задача интерполяции

Если в качестве интерполирующей функции взять полином n-ной степени

(20)

то условие прохождения интерполирующей функции по узлам (число i-тых узлов равно n+1) можно записать в виде:

(21)

Получили систему линейных алгебраических уравнений (СЛАУ) из n+1 уравнений с n+1 неизвестными , которая имеет единственное решение:

A = М-1B (22)

где

В программе 8 показано решение задачи интерполяции для набора из 6 экспериментальных точек.

Программа 8

Из текста программы видно, что интерполяционный полином проходит через узлы заданной таблицы, а любое интерполяционное значение функции можно вычислить, подставляя значение аргумента в интерполирующий полином. Как показывает практика, если количество узлов таблицы больше 7, использование полинома для интерполяции (нахождение промежуточных значений функции) становится некорректным. Интерполирующая функция, точно проходя по узлам таблицы, в промежуточных интервалах выписывает большие минимумы и максимумы, как говорят, «осциллирует» около экспериментальных данных. Поэтому для целей глобальной интерполяции полином (20) можно использовать лишь для небольшого числа данных.

Если вместо полинома (20) взять интерполяционный полином Лагранжа (23), то вычисления неизвестных параметров ai не потребуется:

(23)

Вычисление интерполяционных значений по уравнению (23), (программа 9), кроме формы представления полинома не отличается от программы 8 и обладает теми же недостатками. Однако для целей локальной интерполяции полином Лагранжа используется часто.

Наиболее известны частные случаи интерполяционного полинома Лагранжа – когда n = 1 и n = 2, которые называются соответственно линейной и квадратичной интерполяцией:

(24)

(25)

Программа 9

С необходимостью решения задачи интерполяции химики встречаются очень часто. Например, при приготовлении растворов кислот и щелочей необходимо пользоваться табличными данными. Пусть приготовленный раствор серной кислоты оказался плотностью 1.118 г/см3 при 20оС. Какова его молярная концентрация? Для решения этой задачи воспользуемся таблицей из справочника Лурье [8] (табл. 4).

Таблица 4

Плотности и концентрации растворов серной кислоты (фрагмент)

Плотность,

г/мл при 20 оС

Концентрация,

моль/л

1.105

1.110

1.115 xi

x=1.118

1.120 xi+1

1.125

1.130

1.735

1.820

1.905 yi

C = ?

1.990 yi+1

2.075

2.161

Плотность раствора здесь изменяется с постоянным шагом, равным 0.005 г/мл. Поэтому для нашего случая плотности, равной 1.118 г/мл значения концентрации нет. В таблице можно найти значения функции (концентрации раствора) для двух ближайших значений плотности – 1.115 г/мл и 1.120 г/мл, молярные концентрации для которых равны соответственно 1.905 М и 1.990 М. Если использовать линейную интерполяцию (24), то

(26)

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

Если требуется использовать таблицу для целей интерполяции часто, то лучше один раз завести всю таблицу в MathCad и использовать встроенную функцию linterp для линейной интерполяции, как это сделано в программе 11. На экран в MathCad выводится только 15 строк таблицы, поэтому для объединения таблиц использована функция stack.

Программа 10

В системе MathCаd нет квадратичной интерполяции, однако в ней очень широко представлены сплайн-интерполяции.

Алгоритм сплайн-интерполяции заключается в том, что в промежутках между точками осуществляется аппроксимация в виде зависимости кубической параболой A(t)=at3 +bt2 +ct +d. Коэффициенты a,b,c,d рассчитываются независимо для каждого промежутка, исходя из значений хii в соседних точках. Очевидно, что для вычисления четырех параметров нужны четыре узла. В зависимости от того, в каком промежутке находится интерполируемое значение, для интерполяции выбирается соответствующее уравнение. Поэтому интерполяция происходит с помощью двух функций – первая формирует сплайн, вторая его интерпретирует (распознает). Для формирования сплайна используются три функции:

s = lspline(x,y) s = pspline(x,y) или s = cspline(x,y)

отличающиеся методикой формирования плавных стыков между отдельными отрезками сплайна. Для использования в задаче интерполяции или для построения графика используется функция A(t) = interp(s,x,y,t) (программа 11).

Программа 11

Экстраполяция. В отличие от задачи интерполяции, в которой находят промежуточное значение функции внутри таблицы, в задаче экстраполяции ищут значение функции за пределами таблицы. Следует сразу сказать, что во многих случаях эта задача не является корректной, поскольку неизвестно будет ли выполняться закон изменения функции за пределами таблицы. Часто предполагают (с большой долей осторожности), что закон выполняется за пределами экспериментальных данных и тогда применяют либо формулы интерполяции, либо решают задачу аппроксимации и используют полученные зависимость для целей экстраполяции. Так, например, строя линейную зависимость, мы ищем отсекаемый на оси ординат отрезок с помощью линейной регрессии, то есть ищем значение у при х=0, а это значение, как правило, выходит за границы исследованных значений х, т. е. мы решаем задачу экстраполяции. Когда отсекаемый отрезок очень мал, то относительные ошибки его определения могут быть очень велики.

В MathCad имеется хорошо развитый инструмент экстраполяции, который учитывает распределение данных вдоль всего интервала значений аргумента. В функцию predict встроен линейный алгоритм предсказания поведения функции, основанный на анализе в том числе осцилляций. Синтаксис функции: predict (y,m,n), где y – вектор действительных чисел, взятых через равные промежутки значений аргумента; m – количество последовательных элементов вектора y, согласно которым строится экстраполяция; n – количество элементов вектора предсказаний. Пример использования функции предсказания приведен в [9], однако в практике анализа данных химического эксперимента функцию предсказаний практически не используют.