- •3. Моделирование поверхностей и кривых при помощи сплайнов
- •1. Построение локальных сплайнов.
- •2. Построение интерполяционных сплайнов.
- •3.1. Интерполирование кривых и поверхностей с помощью локальных сплайнов
- •3.1.1. Построение сплайнов по однократным узлам
- •3.1.2. Интерполирование по двукратным узлам
- •3.2. Построение интерполяционных сплайнов
- •3.2.1. Общая постановка задачи. Решение методом неопределённых коэффициентов
- •3.2.2. Кубические интерполяционные сплайны
- •3.3. Интерполяция с помощью в-сплайнов
3.2.2. Кубические интерполяционные сплайны
Как уже отмечалось, на практике наибольшее приме-нение нашли сплайны нечётной степени. При k=1 интерпо-ляционные сплайны совпадают с локальными, поскольку отсутствуют условия на производные во внутренних точках. В случае k=3 локальные сплайны более точно приближают исходную функцию (с точностью до первых производных), однако имеют гладкость в узлах только первой степени. Интерполяционные кубические сплайны менее точно при-ближают функцию (только её значения), но имеют глад-кость в узлах степени 2. Также они обладают следующим важным свойством. Если наложить на сплайн краевые усло-вия S (х0)= S (хn)=0, то он будет минимизировать функ-ционал
к
оторый
можно интерпретировать как потенциальную
энергию изгиба упругого стержня
постоянного сечения, закреплённого в
узлах интерполяции. Также рассмотренный
функционал оценивает осцилляцию
интерполирующей кривой.
Рассмотрим построение интерполяционного сплайна. В предыдущем разделе дано общее решение по методу не-определённых коэффициентов, однако в данном случае задачу можно решить намного проще с использованием кубических сплайнов Эрмита (локальных). Данные сплайны имеют гладкость степени 1 и у них помимо значений уi во всех узлах xi заданы также величины первых производных уi . Поскольку у интерполяционного сплайна на первые производные никаких исходных условий не накладывается,
80
то непрерывность второй производной во внутренних узлах
и выполнение краевых условий можно обеспечить за счёт варьирования именно этих величин.
Зафиксируем внутренний узел xi (i=1, . . . , n-1). Усло-вие непрерывности второй производной в нём принимает вид: Si (xi) = Si+1 (xi). Переходя к безразмерным норми-рованным переменным, представим его в форме: h2i Si (1) = h2i+1 Si+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 ),
Si(t)= уi-1 (-6+12t) / h2i+ уi ( 6 –12t) / h2i + уi-1 ( - 4+ 6t) / hi + уi ( - 2 + 6t ) / hi,
Si (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 ] - постоянный коэффициент.
81
Рассмотрим краевые условия 1) (п.3.2.1), при кото-рых заданы условия на первые производные в начальной и конечной точках сплайна: S1 1(t0)=f 1(х0), Sn 1(tn)=f 1(хn ). Их учёт приводит к тому, что в уравнениях для узлов x1 и xn вместо у0 , уn необходимо подставить, соответственно, заданные величины f 1(х0) и f 1(хn ). После переноса соответствующих слагаемых в правую часть эти уравнения примут вид:
2(1+1 )у1 + у2 = b1 - 1 f 1(х0) ,
n-1 уn -2 + 2(1+ n-1 )уn-1 = bn-1 - f 1(хn ). (3.9)
Краевые условия 2) (п.3.2.1) обычно для уменьшения осцилляции сплайна применяют в виде: S111(х0)=Sn 11(хn)=0. Раскрывая их, после сокращения на 2 получим следующие дополнительные уравнения:
-3у0 / h21 + 3 у1 / h21 -2 у0 / h1 - у1 / h1 = 0,
3у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,51 )у1 + у2 = b1 +1,51 (у1 - у0 ) / h1 ,
n-1 уn -2 +(1,5+2 n-1 )уn-1 =bn-1+1,5 (уn-1 -уn )/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 1(х0) ,
С n-1 =2(1+n -1 ), bn-1 = bn-1 - f 1(хn ) ,
82
для условий 2-го вида:
С1 =2+1,51 , b1 = b1 + 1,51 (у1 - у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 б)
где
Матрица системы трёхдиагональна, поэтому для упро-щения её решения применяют специальную модификацию
83
метода Гаусса – метод прогонки. Он также имеет прямой и обратный ход.
При прямой прогонке для всех величин у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-го рода являются нулевыми: у0=уn =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 при фиксированных зна-чениях по х.
84
