Интерполяция сплайнами

Полиномиальная интерполяция не всегда дает удовлетворитель­ные результаты при аппроксимации зависимостей. Так, например, при представлении полиномами резонансных кривых колебательных си­стем большая погрешность возникает на концах ("крыльях") этих кри­вых. Несмотря на выполнение условий Лагранжа в узлах интерполя­ционная функция может иметь значительное отклонение от аппрокси­мируемой кривой между узлами. При этом повышение степени интер­поляционного полинома приводит не к уменьшению, а к увеличению погрешности. Возникает так называемое явление волнистости [4].

Для проведения гладких кривых через узловые значения функции чертежники используют упругую металлическую линейку, совмещая ее с узловыми точками. Математическая теория подобной аппроксима­ции развита за последние тридцать лет [5, 6] и называется теорией сплайн-функций. Разработано и обширное программное обеспечение для применения сплайнов в различных областях науки и техники [1,7].

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

(2.18)

Функцию и будем использовать для аппроксимации зависимости f(x), заданной в узлах ,...,хпзначениями .

Если в качестве функции выбрать полином, то в соответствии с уравнением (2.18) степень полинома должна быть не выше третьей. Этот полином называют кубическим сплайном, который на интервале записывают в виде

, (2.19)

где и — коэффициенты сплайна, определяемые из дополни­тельных условий; i= 1,2,..., п— номер сплайна.

В отличие от полиномиальной интерполяции, когда вся аппрокси­мируемая зависимость описывается одним полиномом, при сплайновой интерполяции на каждом интервале строится отдельный полином третьей степени(2.19) со своими коэффициентами.

Коэффициенты сплайнов определяются из условий сшивания со­седних сплайнов в узловых точках:

1) Равенство значений сплайнов и аппроксимируемой функ­ции f(x) в узлах — условия Лагранжа

. (2.20)

2) Непрерывность первой и второй производных от сплайнов в уз­лах

(2.21)

 

(2.22)

Кроме перечисленных условий необходимо задать условия на кон­цах, т.е. в точкахx0 иxn. В общем случае эти условия зависят от кон­кретной задачи. Часто используют условия свободных концов сплай­нов. Если линейка не закреплена в точках вне интервала[x0, xn], то там она описывается уравнением прямой, т.е. полиномом первой степени. Следовательно, исходя из условий (2.22), т.е. непрерывности вторых производных сплайнов на концах интервала, запишем соотношения:

(2.23)

(2.24)

Для улучшения гладкости аппроксимирующей кривой используют и другие граничные условия. Например, строят так называемые нагру­женные сплайны, которые в механической модели соответствуют под­вешиванию грузов к металлической линейке на ее концах.

Получим алгоритм определения коэффициентов кубических сплай­нов из условий (2.20) – (2.24). Условия (2.20) в узлах xi-1и xi после подстановки i-гo сплайна принимают вид

ai = ƒi-1 , (2.25)

ai + bihi +cihi2 + dihi3 = ƒi, (2.26)

гдеhi= xi— xi-1, 1 ≤ i ≤ n.

Продифференцируем дважды сплайн (2.19) по переменной x:

φ′i(x) = bi+ 2ci (x— xi-1) + 3di (x— xi-1)2, (2.27)

φ″i(x) = 2ci+ 6di (x— xi-1). (2.28)

Из условий непрерывности производных (2.21) и (2.22) при пере­ходе в точке xiот i-го к i1сплайну с учетом выражений (2.27) и (2.28) получим следующие соотношения:

bi + 2ci hi +3dihi2= bi+1 , (2.29)

ci + 3dihi= ci + 1. (2.30)

И, наконец, из граничных условий (2.23) и (2.24) на основании вы­ражения для второй производной (2.28) получим, что

c1 = 0, (2.31)

cn+ 3dnhn= 0. (2.32)

Соотношения (2.25), (2.26), (2.29) — (2.32) представляют собой полную систему линейных алгебраических уравнений относительно ко­эффициентов сплайнов ai, bi,ci иdi. Но прежде чем решать эту систе­му, выгодно преобразовать ее так, чтобы неизвестными была только одна группа коэффициентов ci.

Из уравнений (2.30) коэффициенты diвыразим через коэффициен­ты ci:

(2.33)

 

Объединяя уравнения (2.25) и (2.26) с уравнением (2.33), предста­вим коэффициенты biтакже через коэффициенты ci:

f i — f i-1 (c i+1 + 2c i)h

bi = ———— - ————— . (2.34)

hi 3

После подстановки выражений (2.33) и (2.34) в соотношение (2.29) получим уравнение, в которое входят только неизвестные коэффици­енты ci. Для симметричности записи в полученном уравнении умень­шим значение индекса i на единицу:

(2.35)

где 2≤ in.

При i = n, учитывая условие свободного конца сплайна, в уравне­нии (2.35) следует положить

cn+1 = 0. (2.36)

Таким образом, уравнение вида (2.35) вместе с условиями (2.31) и (2.36) образует систему линейных алгебраических уравнений для определения коэффициентов ci. Коэффициенты di и biвычисляют­ся после нахождения ci по формулам (2.33) и (2.34), коэффициенты aiравны значениям аппроксимируемой функции в узлах в соответствии с формулой (2.25).

В каждое из уравнений типа (2.35) входит только три неизвестных с последовательными значениями индексов ci-1,ci,ci+1. Следователь­но, матрица системы линейных алгебраических уравнений относитель­но ci является трехдиагональной, т.е. имеет отличные от нуля элементы только на главной и двух примыкающих к ней диагоналях. Для реше­ния систем с трехдиагональной матрицей наиболее эффективно при­менять так называемый метод прогонки, являющийся частным случаем метода Гаусса.

Рассмотрим алгоритм метода прогонки применительно к решаемой задаче. Для сокращения записи уравнение (2.35) представим в виде

hi-1ci-1+sici + hici+1 = ri, (2.37)

гдеsi = 2 (hi-1 - hi).

ri= 3 . (2.38)

Так же, как и метод Гаусса, метод прогонки разделяется на два эта­па — прямой и обратный ходы. В процессе прямого хода метода про­гонки вычисляют значения коэффициентов линейной связи каждого предыдущего неизвестного ciс последующим ci+1.

Из уравнения (2.37) при i = 2 с учетом граничного условия (2.31) установим связь коэффициента с2 с коэффициентом с3:

 

c2 = k2- l2с3 , (2.39)

где k2 и l2 — прогоночные коэффициенты,

 

Затем, подставляя выражение (2.39) в уравнение (2.37) при i = 3, получим линейную связь коэффициента с3 с коэффициентом с4:

c3 = k3- l3с4.

Поступая аналогичным образом для любых соседних коэффициентов с номерами i и i + 1, можно установить линейную связь в виде

ci = ki- liсi+1. (2.40)

В процессе выполнения прямого хода метода прогонки необходимо вы­числить значения всех прогоночных коэффициентов ki и li, для кото­рых получим рекуррентные соотношения. Подставим формулу связи (i -1)-го и i-го коэффициентов

ci-1 = ki-1- li-1сi

в уравнение (2.37), в результате получим

.

Сравнение последнего соотношения с формулой (2.40) позволяет за­писать рекуррентные соотношения для определения прогоночных ко­эффициентов kiи li:

(2.41)

Учитывая граничное условие (2.31) и соотношение

c1 = k1- l1с2,

а также полагая c2≠0, задаем начальные коэффициенты k1 = 0 и l1 = 0. Затем по формуле (2.41) вычислим все ппар прогоночных ко­эффициентов ki и li..На основании соотношения cn = kn- lncn+1 и граничного условия (2.36) получим, что

cn = kn. (2.42)

Далее последовательно применим формулу (2.40) при i = n — 1,n— 2,.. и вычислим значения искомых величин cn-1, cn-2,…, c2.

Эта процедура называется обратным ходом метода прогонки.

Метод прогонки применяют не только для решения задач сплайн-интерполяции. Он широко используется и при численном интегрирова­нии граничных задач для линейных дифференциальных уравнений ме­тодом конечных разностей.

После определения всех коэффициентов сiдругие коэффициенты сплайна вычисляются по формулам (2.25), (2.33) и (2.34). Аппрокси­мирующую функцию φ(x)можно рассчитать с помощью соотношения (2.19) в любой точке xна интервале [х0, хn].