Пусть задана таблица значений функции yiв узлах х0 < х1 < ... < хп.Обозначим hi = xi – xi-1, i = 1, 2, ... , п.
Сплайн– гладкая кривая, проходящая через заданные точки (хi, yi), i = 0, 1, ... , п.Интерполяция сплайнамизаключается в том, что на каждом отрезке [хi-1, xi]используется многочлен определенной степени. Наиболее часто применяется многочлен третьей степени, реже – второй или четвертой. При этом для определения коэффициентов многочленов используются условия непрерывности производных в узлах интерполяции.
Интерполяция кубическими сплайнамипредставляет собой локальную интерполяцию, когда на каждом отрезке [хi-1, xi], i = 1, 2, ... , п применяется кубическая кривая, удовлетворяющая некоторым условиям гладкости, а именно, непрерывности самой функции и ее первой и второй производных в узловых точках. Использование кубической функции вызвано следующими соображениями. Если предположить, что интерполяционная кривая соответствует упругой линейке, закрепленной в точках (хi, yi),то из курса сопротивления материалов известно, что эта кривая определяется как решение дифференциального уравнения f(IV)(x) = 0 на отрезке [хi-1, xi](для простоты изложения мы не рассматриваем вопросы, связанные с физическими размерностями). Общим решением такого уравнения является многочлен 3-й степени с произвольными коэффициентами, который удобно записать в виде Si(x) = аi + bi(х - xi-1) + сi(x - xi-1)2+ di(x - xi-1)3, хi-1 £ х £ хi, i = 1, 2, ... , п.(4.32)
Коэффициенты функций Si(x)определяются из условий непрерывности функции и ее первой и второй производных во внутренних узлах xi, i = 1, 2,..., п - 1.
Из формул (4.32) при х = хi-1 получим
Si(xi-1) = yi-1 = ai, i = 1, 2,..., п,(4.33)
а при х = хi
Si(xi) = аi + bihi + сihi2+ dihi3,(4.34)
i = 1, 2,..., n.
Условия непрерывности интерполяционной функции записываются в виде Si(xi) = Si-1(xi), i = 1, 2, ... , n - 1 и из условий (4.33) и (4.34) следует, что они выполнимы.
Найдем производные функции Si(x):
S'i(x) = bi + 2сi(х - xi-1) + 3di(х – xi-1)2,
S"i(x) = 2ci + 6di(x - xi-1).
При x = xi-1, имеем S'i(xi-1) = bi, S" (xi-1) = 2сi, а при х = хi получим
Условия непрерывности производных приводят к уравнениям
S'i(xi) = S'i+1(xi) Þ bi+ 2сihi+ 3dihi2 = bi+1,
i = l, 2,... , п - 1. (4.35)
S"i (xi) = S"i+1(xi) Þ 2сi + 6dihi= 2ci+1,
i = l, 2,..., n - 1. (4.36)
Всего имеем 4n – 2 уравнений для определения 4n неизвестных. Чтобы получить еще два уравнения, используют дополнительные краевые условия, например, требование нулевой кривизны интерполяционной кривой в концевых точках, т. е. равенства нулю второй производной на концах отрезка [а, b] а = х0, b = хn:
Систему уравнений (4.33)–(4.37) можно упростить и получить рекуррентные формулы для вычисления коэффициентов сплайна.
Из условия (4.33) имеем явные формулы для вычисления коэффициентов ai:
ai = yi-1, i= 1,..., n. (4.38)
Выразим diчерез ciс помощью (4.36), (4.37):
; i = 1, 2,...,n; .
Положим сn+1= 0, тогда для diполучим одну формулу:
, i = 1, 2,...,n. (4.39)
Подставим выражения для аi и di в равенство (4.34):
, i = 1, 2,..., n.
и выразим bi, через сi:
, i = 1, 2,..., n. (4.40)
Исключим из уравнений (4.35) коэффициенты biи diс помощью (4.39) и (4.40):
,
i = 1, 2,..., n -1.
Отсюда получим систему уравнений для определения сi:
(4.41)
Система уравнений (4.41) может быть переписана в виде
(4.42)
Здесь введено обозначение
, i =1, 2,..., n - 1.
Решим систему уравнений (4.42) методом прогонки. Из первого уравнения выразим с2через с3:
c2 = a2c3 + b2, , . (4.43)
Подставим (4.43) во второе уравнение (4.42):
h2(a2c3 + b2) + 2(h2 + h3)c3 + h3c4 = g2,
и выразим с3 через с4:
с3 = a3с4 + b3, (4.44)
Предполагая, что сi-1= ai-1ci + bi-1 из i-го уравнения (4.42) получим
ci = aiсi+1 + bi
, i = 3,..., n – 1, an = 0, (4.45)
, i = 3,..., n.
Сформулируем алгоритм интерполяции с помощью кубического сплайна.
Исходные данные: значения функции у0, у1,..., упв узлах х0, х1,..., хп(х0 < х1< ... < хn).
0. Вычислим значения hiи gi:
hi = xi – xi-1 i = 1, 2,..., n,
, i =1, 2,..., n - 1. (4.46)
1. Прямой ход прогонки для вычисления коэффициентов ci. Вычислим коэффициенты прогонки ai и bi:
, ,
, i = 3,..., n – 1, an = 0, (4.47)
, i = 3,..., n.
2. Обратный ход прогонки для вычисления коэффициентов сi. Вычислим коэффициенты ci:
cn+1 = 0,
ci = aiсi+1 + bi, i = n, n -1,..., 2, (4.48)
c1 = 0.
3. Вычисление коэффициентов аi, bi, di:
ai = yi-1,
, (4.49)
i = 1, 2,..., n.
4. Вычисление значения функции с помощью сплайна. Для этого найти такое значение i,что данное значение переменной х принадлежит отрезку [xi-1, xi] и вычислить