Сплайны

Пусть интервал [a,b] разбит узлами xi, как и выше, на n отрезков, 0 £ i £ n Сплайном Sn(x) называется функция, определенная на [a, b], принадлежащая Ck[a, b] и такая, что на каждом отрезке [xi, xi+1], 0 £ i £ n–1 – это полином n-й степени.

В частности, это могут быть, построенные специальным образом, многочлены 3-й степени (кубический сплайн), которые являются математической моделью гибкого тонкого стержня, закрепленного в двух точках на концах с заданными углами наклона a и b.

В данной физической модели стержень принимает форму, минимизирующую его потенциальную энергию. Пусть форма стержня определяется какой-то функцией y = S(x). Из курса сопротивления материалов известно, что уравнение свободного равновесия имеет вид S(IV)(x) = 0. А этому состоянию соответствует многочлен третьей степени между двумя соседними узлами интерполяции. Его выбирают в виде

S(x) = ai + bi(x xi–1) + ci(x xi–1)2 + di(x xi–1)3 ; xi–1 £ х £ xi . (31)

Стоит проблема нахождения ai, bi, ci, di. Для определения их на всех n элементарных участках интервала [a,b] необходимо составить 4n уравнений. Часть этих уравнений в составе 2n получают из условия прохождения S(x) через заданные точки, т.е.

S(xi–1) = yi–1; S(xi) = yi .

Эти условия можно записать, используя (31) в виде:

(32)

(33)

Уравнения в количестве (2n–2) получают из условия непрерывности первых и вторых производных в узлах интерполяции. Условие гладкости.

Вычислим производные многочлена (31)

(x) = bi + 2ci(x xi–1) + 3di(x xi–1)2,

(x) = 2ci + 6di(x xi–1); при xi–1 £ х £ xi . (34)

Приравнивая в каждом внутреннем узле x = xi значения этих производных, вычисленных на концах рассматриваемого отрезка, получают (2n–2) уравнений

bi+1 = bi + 2hici + 3hdi ; i=1,2,…,n–1; (35)

ci+1 = ci + 3hidi ; i=1,2,…,n–1 . (36)

Оставшиеся 2 уравнения получают из естественного предположения условия о нулевой кривизне этой функции на концах отрезка.

(37)

Система, составленная из (32) – (37), решается одним из методов решения СЛАУ.

Для упрощения машинных расчетов эта система уравнений приводится к более удобному виду посредством следующего алгоритма.

1. Из условия (32) можно сразу найти ai.

2. Из (36) – (37) находят:

(38)

3. После подстановки (38) и (32) в (33) находят коэффициенты bi.

bi = ;

bn = . (39)

4. Учитывая (38) и (39) из уравнения (35) исключаются di и bi, тогда исходная система приводится к трехдиагональной матрице, содержащей только коэффициенты ci. Получаем систему

hi–1ci–1 + 2(hi–1 + hi)ci + hici+1 = 3(), i=2,3,…,n. (40)

При этом c1 = 0, cn+1 = 0. Система (40) может быть решена методом прогонки. Зная ci по (38) и (39), определяют bi и di. Тогда кубический многочлен определяется для всех интервалов.

Пример составления системы (40). Пусть функция f(x) задана таблицей

i
x 0,1 0,15 0,19 0,25 0,28 0,30
y = f(x) 1,1052 1,1618 1,2092 1,2840 1,3231 0,3499
h   0,05 0,04 0,06 0,03 0,02

 

с1 = 0;

0,05c1+0,18c2+0,04c3 = 3

(коэффициент при c2 получен следующим образом: 2×(0,05+0,04) = 0,18;)

0,04c2 + 0,2c3 + 0,06c4 = 3;

0,06c3 + 0,18c4 + 0,03c5 = 3

0,03c4 + 0,1c5 = 3

c6 = 0.

В результате получим систему относительно c2 ¸ c5:

´ = .

Найдя ci по (38), находят di и затем по (39) – bi.