Построение кубического интерполяционного сплайна Шонберга.
При большом количестве узлов интерполяции сильно возрастает степень интерполяционных многочленов, и они не удобны для вычисления. Высокой степени можно избежать, разбив отрезок интерполяции на несколько частей и на каждой части построить интерполяционный многочлен некоторой степени. Но есть недостаток: в точках стыка разных интерполяционных многочленов будет разрывной их первая производная. В этом случае удобно использовать особым видом кусочно-полиномиальной интерполяции – интерполяции сплайнами.
Сплайн – это функция, которая на каждом частичном отрезке интерполяции является алгебраическим многочленом, а на всем заданном отрезке непрерывна вместе с несколькими своими производными. Рассмотрим способ построения кубических сплайнов (сплайны третьей степени), которые наиболее распространены на практике.
хi |
х0 |
х1 |
… |
хn |
f(xi) |
f0 |
f1 |
… |
fn |
Пусть интерполируемая функция f задана
значениями fi в
узлах xi, i=. Длину
частичного отрезка [xi–1, xi] обозначим hi=xi –xi–1, i=
. Будем искать кубический сплайн на каждом из отрезков
в виде: S(x)=ai
+ bi (x–xi–1)
+ ci (x–xi–1)2+di (x–xi–1)3, где ai, bi, ci, di 4 неизвестных
коэффициента (всего коэффициентов 4n). Можно
доказать, что задача на нахождение кубического сплайна имеет единственное
решение. Потребуем совпадений значений S(x)
в узлах с табличными значениями
функции fi.
S(xi–1)=fi–1=ai (1), S(xi)=fi=ai+bihi+cihi2+dihi3 (2)
Число
этих уравнений 2n – это в 2 раза меньше числа неизвестных
коэффициентов. Для получения дополнительных условий потребуем непрерывности и
во
всех точках, включая узлы. Для этого приравняем левые и правые производные: S’(xi+0), S’(xi–0), S’’(xi+0), S’’(xi–0) во
внутреннем узле xi. Сначала продифференцируем производные по х:
S’(x)=bi+2ci(x–xi–1)+3di(x–xi–1)2 ; S’’(x)=2ci+6di(x–xi–1)
S’(xi–0)=bi+2ci hi+3di hi2 ; S’(xi+0)=bi+1 (для b, c, d, xi–1 увеличиваем индекс i на 1, тогда x–xi–1~ x–xi=0) ; S’’(xi–0)=2ci+6dihi ; S’’(xi+0)=2ci+1
Приравниваем
левые и правые части производных: bi+1=bi+2ci
hi+3di
hi2(3), ci+1=ci+3di
hi (4),
i=. Эти уравнения дают 2(n–1) условий => не хватает ещё 2-х. Их берут из
требования поведения сплайна в граничных точках x0 и xn. Потребуем нулевой кривизны сплайна на концах, т.е.
равенство нулю второй производной: c1=0, cn+3dn
hn=0.(5)
Перепишем уравнения (2)-(5), исключив n неизвестных ai согласно (1).
bi hi–ci h2–di
hi3=fi–fi–1 (i=)
bi+1–bi–2ci hi–3di
hi2=0 (i=)
ci+1–ci–3di hi=0
(i=)
c1=0, cn+3dn hn=0
Система
состоит из n+2(n-1)+2 уравнений. Решив её, получим значения неизвестных ci, bi, di Получим Si(x)=fi–1+bi(x–xi–1)+ci(x–xi–1)2+di(x–xi–1)3 (i=)
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.