![]()
Предположим, что система функций
такова, что при любом выборе узлов
![]()
отличен от нуля определитель системы:

Тогда по заданным
однозначно определяются коэффициенты
.
Изложение метода
Интерполяция кубическими сплайнами является частным случаем кусочно-полиномиальной интерполцией. В этом специальном случае между любыми двумя соседними узлами функция интерполируется кубическим полиномом. Eго коэффициенты на каждом интервале определяются из условий сопряжения в узлах:
![]()
Кроме того, на границе при x=x0 и x=xn ставятся условия
( 2 )
Будем искать кубический полином в виде
( 3 )
Из условия fi=yi имеем
( 4 )
Вычислим производные:
![]()
и потребуем их непрерывности при x=xi:
( 5 )
Общее число неизвестных коэффициентов, очевидно, равно 4n, число уравнений (4) и (5) равно 4n-2. Недостающие два уравнения получаем из условия (2) при x=x0 и x=xn :
![]()
Выражение из (5)
,
подставляя это выражение в (4) и исключая аі=уі-1, получим
![]()
Подставив теперь выражения для bi, bi+1 и di в первую формулу (5), после несложных преобразований получаем для определения ci разностное уравнение второго порядка
( 6 )
С краевыми условиями
( 7 )
Условие cn+1=0 эквивалентно условию cn+3dnhn=0 и уравнению ci+1=ci+dihi. Разностное уравнение (6) с условиями (7) можно решить методом прогонки, представив в виде системы линейных алгебраических уравнений вида A*x=F, где вектор x соответствует вектору { ci }, вектор F поэлементно равен правой части уравнения (6), а матрица A имеет следующий вид:

где
![]()
и
.
Метод прогонки
Метод прогонки основан на предположении, что искомые неизвестные связаны рекуррентным соотношением:
( 8 )
Используя это соотношение, выразим xi-1 и xi через xi+1 и подставим в i-e уравнение:
,
где Fi - правая часть i-го уравнения. Это соотношение будет выполняться независимо от решения, если потребовать
![]()
![]()
Отсюда следует:
![]()
![]()
Из первого уравнения получим:
![]()
![]()
После нахождения прогоночных коэффициентов α и β, используя уравнение (1), получим решение системы. При этом,
![]()
Пример: интерполирование неизвестной функции
Построим интерполянту для для функции f, заданной следующим образом:
|
|
1 | 1.0002 |
2 | 1.0341 |
3 | 0.6 |
4 | 0.40105 |
5 | 0.1 |
6 | 0.23975 |

Вводные значения для задачи интерполяции
В результате интерполяции были рассчитаны следующие коэффициенты интерполянты:
|
|
|
| Интервал |
1,0002 | -0,140113846 | 0,440979231 | -0,266965385 |
|
1,0341 | -0,291901538 | -0,359916923 | 0,217718462 |
|
0,6 | -0,22553 | 0,293238462 | -0,266658462 |
|
0,40105 | -0,100328462 | -0,506736923 | 0,306015385 |
|
0,1 | -0,134456154 | 0,411309231 | -0,137103077 |
|
Результат интерполяции
Ошибка интерполяции
Нас будет интересовать поведение максимального уклонения сплайна от интерполируемой функции в зависимости от максимального расстояния между соседними узлами интерполирования, т. е. зависимость величины
![]()
от шага h, где
.
Известно, что если функция [s][f](x) имеет четыре непрерывные производные, то для ошибки интерполяции определенным выше кубическим сплайном s(x) верна следующая оценка
![]()
причем константа
в этом неравенстве является наилучшей из возможных
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |



