logo
Компьютерная графика / МАШ_ГРАФИКА

2.2. Кубические интерполяционные сплайны

Как уже отмечалось, на практике наибольшее примене-ние нашли сплайны нечётной степени. При k=1 интерполяционные сплайны совпадают с локальными, поскольку отсутствуют условия на производные во внутренних точках. В случае k=3 локальные сплайны более точно приближают исходную функцию (с точностью до первых производных), однако имеют гладкость в узлах только первой степени. Интерполяционные кубические сплайны менее точно приближают функцию (только её значения), но имеют гладкость в узлах степени 2. Также они обладают следующим важным свойством. Если наложить на сплайн краевые условия S0)= Sn)=0, то он будет ми-нимизировать функционал

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

Рассмотрим построение интерполяционного сплайна. В предыдущем разделе дано общее решение по методу неоп-ределённых коэффициентов, однако в данном случае задачу можно решить намного проще с использованием кубичес-ких сплайнов Эрмита (локальных). Данные сплайны имеют гладкость степени 1 и у них помимо значений уi во всех узлах xi заданы также величины первых производных уi . Поскольку у интерполяционного сплайна на первые производные никаких исходных условий не накладывается,

83

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

и выполнение краевых условий можно обеспечить за счёт варьирования именно этих величин.

Зафиксируем внутренний узел xi (i=1, . . . , n-1). Условие непрерывности второй производной в нём принимает вид: Si (xi) = Si+1 (xi). Переходя к безразмерным нормирован-ным переменным, представим его в форме: h2i Si (1) = h2i+1 Si+1 (0), hi = xi - xi -1 ; hi+1 = xi+1 - xi . Найдем выражения для производных. Подставляя в формулу (3.5.а) полиномы Эрмита 1i (t) - 4i (t), , получим:

S(i+1)(t) = уi (1-3t2+2t3)+ уi+1 ( 3t2 –2t3)+ hi+1 уi (t - 2t2+ t3)+ hi+1 уi+1 ( - t 2 + t 3 ).

Отсюда следует:

S(i+1)(t)= уi (-6+12t) /h2i+1 + уi+1 ( 6 –12t) / h2i+1+ уi ( - 4+ 6t) / hi+1+ уi+1 ( - 2 + 6t ) / hi+1,

S(i+1)(0)= -6уi / h2i+1 + 6 уi+1 / h2i+1 - 4 уi / hi+1 - 2 уi+1 / hi+1.

Аналогично рассматриваем участок [xi-1, xi] :

Si (t)= уi-1 (1-3t2+2t3)+ уi ( 3t2 –2t3)+ hi уi-1 (t - 2t2+ t3)+

hi уi (- t 2 + t 3 ),

Si(t)= уi-1 (-6+12t) / h2i+ уi ( 6 –12t) / h2i + уi-1 ( - 4+ 6t) / hi + уi ( - 2 + 6t ) / hi,

Si (1)= 6уi-1 / h2i - 6 уi / h2i + 2 уi-1 / hi+ 4 уi / hi.

Приравнивая вторые производные, группируя слагаемые и сократив на 2, получим:

уi-1 /hi + 2(1/hi +1/hi+1)уi + уi+1 /hi+1 = 3[- уi-1 /h2i + (1/h2i -1/h2i+1 )уi+ уi+1 /h2i+1].

Домножая обе части выражения на hi+1 и введя коэф-фициент i = h i/hi+1 , представим уравнение связи величин уi-1 , уi , уi+1 (i=1, . . . , n-1) в виде:

i уi -1 +2(1+i )уi + уi+1 = bi ; (i=1, . . . , n-1) (3.8)

где bi =3[i ( уi - уi-1 ) / hi +( уi+1 - уi ) / hi+1 ] - постоянный коэффициент.

84

Рассмотрим краевые условия 1) (п.2.1), при которых заданы условия на первые производные в начальной и конечной точках сплайна: S1 1(t0)=f 10), Sn 1(tn)=f 1n ).

Их учёт приводит к тому, что в уравнениях для узлов x1 и xn вместо у0 , уn необходимо подставить, соответственно, заданные величины f 10) и f 1n ). После переноса соответствующих слагаемых в правую часть эти уравнения примут вид:

2(1+11 + у2 = b1 - 1 f 10) ,

n-1 уn -2 + 2(1+ n-1 n-1 = bn-1 - f 1n ). (3.9)

Краевые условия 2) (п.2.1) обычно для уменьшения осцилляции сплайна применяют в виде: S1110)=Sn 11n)=0. Раскрывая их, после сокращения на 2 получим следующие дополнительные уравнения:

-3у0 / h21 + 3 у1 / h21 -2 у0 / h1 - у1 / h1 = 0,

n -1 / h2n - 3 уn / h2n + уn-1 / hn + 2 уn / hn = 0.

Для приведения системы уравнений к однотипному виду выразим из этих уравнений, соответственно, у0 через у1, а уn - через уn-1 :

у0 = -1,5 у0 / h1 + 1,5 у1 / h1 - 0,5 у1 ,

уn = -1,5 уn -1 / hn + 1,5 уn / hn -0,5 уn-1 . (3.10)

Подставляя найденные выражения, соответственно, в уравнения для узлов х1 и хn-1, получим их в следующей форме:

(2+1,511 + у2 = b1 +1,511 - у0 ) / h1 ,

n-1 уn -2 +(1,5+2 n-1 n-1 =bn-1+1,5 (уn-1n )/hn . (3.11)

Очевидно, в обоих рассмотренных видах краевых усло-вий уравнения (3.9),(3.11) для узлов х1 и хn-1 качественно одинаковы. Их можно представить как:

С1 у1 + у2 = b1 ,

n-1 уn -2 + С n-1 уn-1 = bn-1 ,

где для условий 1-го вида:

С1 =2(1+1 ), b1 = b1 - 1 f 10) ,

С n-1 =2(1+n -1 ), bn-1 = bn-1 - f 1n ) ,

85

для условий 2-го вида:

С1 =2+1,51 , b1 = b1 + 1,511 - у0 ) / h1 ,

С n-1 =1,5+2n -1 , bn-1 = bn-1 +1,5 (уn-1 - уn ) / hn .

В итоге система уравнений для определения значений 1 , у2 , . . . , уn-1) примет вид:

С1 у1 + у2 = b1 ,

i уi -1 + 2(1+i )уi + уi+1 = bi ; (i=2, . . . , n-2) (3.12 а)

n-1 уn -2 + С n-1 уn-1 = bn-1 ,

В векторной форме:

АY =B , (3.12 б)

где

Матрица системы трёхдиагональна, поэтому для упро-щения её решения применяют специальную модификацию

86

метода Гаусса – метод прогонки. Он также имеет прямой и обратный ход.

При прямой прогонке для всех величин уi (i=1, . . . , n-2) путём последовательного исключения находят их линей-ные выражения через уi+1 вида:

уi = i уi+1 + i . (3.13)

При обратной прогонке:

1) из совместного решения линейного выражения вида (3.13) для уn-2 и последнего уравнения системы (3.12) находят величину уn-1 :

уn-1 =(bn-1 - n-1 n-1 ) / (cn-1 + n-1 n-1 ) ,

2) последовательно подставляя уn-1 , уn-2 , . . . в уравнения (3.13), определяют все искомые величины уi .

Значения у0, уn на краях в случае условий 1-го рода являются нулевыми: у0n =0. При условиях 2-го рода их рассчитывают по формулам (3.10).

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

Рассмотренные кубические интерполяционные сплайны, имеющие гладкость 2-й степени, называют сплайнами Фергюсона или сплайнами Шёнберга. Расчёт их значений производится так же, как и у сплайнов Эрмита по форму-лам (3.4 а,б).

Двухмерные сплайны Фергюсона, предназначенные для интерполирования поверхностей на прямоугольной сетке (xi, уj) (i = 0,1 ,..., n; j = 0,1 ,..., m), представляют собой такие же квадратичные формы, как и двухмерные сплайны Эрмита (3.5). Требуемые значения первых производных zxij , zуij в узлах сетки можно найти последовательно мето-дом одномерной прогонки – сначала zxij при фикси-рованных значениях по у , затем - zуij при фиксированных значениях по х.

87