Интерполяция и аппроксимация данных

Интерполяция – это нахождение промежуточных значений для зависимости представленной в отдельных точках. Интерполяционная формула сопоставляет с функцией y(x) заданной в точках xk, k = 0,… m функцию известного класса, зависящую от параметров: Y (x, a0, a1,…, an). Эти параметры выбираются таким образом, чтобы обе функции совпадали в узлах интерполяции: Y(xk) = y(xk) = yk. Самый простой в использовании полином, имеющий степень 1 создаёт многоугольный путь из отрезков прямых которые проходят через эти точки. Интерполяционная функция имеет вид:

, xk £ x £ xk+1

Sk(x)


При использовании полиномов более высокой степени число узловых точек определяет степень полинома. Если число узловых точек например k, то на них можно построить полином k-1. Степень полинома n равна n = k-1.

Сформируем матрицу: Xj,i = (xj)i, при этом Xj,0 = 1

Если i=0,1,…,n и j=0,1,…,n то это матрица вида n´n и коэффициенты полинома формально представляются в виде вектора: a = X –1×y. Формула для самого полинома будет иметь вид: P(x) = å am×xm, m = n, …, 0. Погрешность полиномиальной аппроксимации резко возрастает с ростом степени полинома, так что степень используемых полиномов обычно не превосходит 5.

Наиболее известна интерполяция полиномом Лагранжа:

Ещё одним методом является объединение фрагментов графиков, полиномов низкой степени и интерполирование между последовательными узлами.

Sk(x)
(xk,yk)


Две части графика соединены в узле (xk+1, yk+1) и совокупность функций Sk(x) формирует кусочно-полиномиальную кривую, которая и определяет S(x). Математически можно построить такие кубические функции Sk(x), на каждом интервале (xk, xk+1), чтобы полученная в результате кривая y(x) = S(x) не имела бы острых углов, а её первая и вторые производные были бы непрерывны на всём интервале от [x0,xN].

Непрерывность первой производной S'(x) означает что S(x) не имеет острых углов. Непрерывность второй производной S'' (x) означает что радиус кривизны определён в каждой точке. Предположим что {(xk, yk)}Nk=0 − это N+1 точка, где a £ x0 < x1 <x2< … < xN = b. Функция S(x) называется кубическим сплайном, если существует N кубических полиномов следующего вида:

S(x) = Sk(x) = Sk,0 + Sk,1(x – x1) + Sk,2(x – x2)2 + Sk,3(x – x3)3

xÎ[xk, xk+1 …], k = 0, …, N-1,

таких, что выполняются следующие 4 условия:

1. S(xk) = yk, k = 0, … N

2. Sk(xk+1) = Sk+1(xk+1), для всех k = 0, …N-2 − непрерывность

3. S'k (xk+1) = S'k+1(xk+1), k = 0, …N-2 − гладкость

4. S''k(xk+1) = S''k+1(xk+1)

Каждый полином имеет 4 коэффициента, так что всего их 4N. Заданные точки (узлы) интерполяции обеспечивают N+1 условие и каждое из свойств 2, 3 и 4 добавляют ещё N-1 условие, поэтому всего получается N+1+3(N-1)=4N-2 уравнений, которые можно использовать для нахождения коэффициентов сплайна. Нахватает двух уравнений или образуется две степени свободы, это ограничения в крайних точках. Поэтому кубический сплайн требует дополнительной стратегии для двух крайних точек. В связи с этим можно построить следующие типы сплайнов:

1. смыкающийся сплайн: S'(a) = d0

S' (b) = dN

2. естественный сплайн. Для него определяются нулевые вторые производные: S''(a) = S''(b) = 0 (сплайн со свободными концами)

3. экстраполяционный сплайн, для него вторая производная на левом конце ищется по узлам x1 , x2. Производная на правом ищется по xN-1, xN

4. Сплайн, заканчивающийся параболой, т.е. кубическая кривая на концах вырождается в параболу.

В MathCad имеется возможность линейной и кубической интерполяции сплайными.

Linear Interpolation f(x):=linterp(X,Y,x);

Cubic Spline Interpolation

S:=cspline(X,Y) − вектор коэффициентов

f(x):=interp(S,X,Y,x)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: