Интерполяция и аппроксимация данных
Интерполяция – это нахождение промежуточных значений для зависимости представленной в отдельных точках. Интерполяционная формула сопоставляет с функцией 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)