![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Специальным видом кусочной интерполяции является интерполяция с помощью сплайн-функции. Образованные в процессе такой интерполяции кривые обладают достаточным приближением и образуют кусочно-кубический полином. Сплайн-интерполяция по сравнению с другими методами интерполяции обеспечивает наилучшее приближение. Ниже исследуется сплайн-интерполяция с помощью кубических полиномов [10].
Пусть имеется некоторая кривая f(x), а для неё известен набор опорных точек xi, yi (i=0..n), где n - количество интервалов между ними. На каждом интервале исходная функция аппроксимируется кубическим полиномом (сплайном)
(2.26)
Для n интервалов необходимо найти 4*n неизвестных, поскольку для каждого интерполирующего сплайна Sj вычисляются значения коэффициентов ai, bi, ci, di.
Любой сплайн должен удовлетворять четырем условиям:
1. В каждой нижней границе интервала сплайн проходит через опорную точку.
(2.27)
2. В каждой верхней границе интервала сплайн проходит через опорную точку.
(2.28)
Ширина интервала
3. Для каждой нижней граничной точки интервала сплайн имеет одинаковую крутизну в обоих граничащих интервалах.
(2.29)
4. Для каждой верхней граничной точки интервала сплайн имеет одинаковую крутизну в обоих граничащих интервалах.
(2.30)
Для вычисления коэффициентов n интерполирующих сплайнов требуется ещё два условия. Эти условия назовём граничными и выберем произвольно:
а). через обе граничные точки кривая должна проходить с нулевой кривизной, превращаясь в прямую.
б) крутизна любого интерполирующего сплайна в обеих граничных точках фиксирована.
Вывод коэффициентов.
Вычислим 4*n коэффициентов с помощью заданных опорных точек. Проще всего определить коэффициенты а из первого условия.
Подставляя в (2.27) x = xi, получаем
di = yi, i = 0,1,…,n-1 (2.35)
Из второго условия подставляем уравнение (2.28) и x = xi + hi в (2.26) с учётом (2.35) получаем
Согласно третьему условию:
Подставляя в выражение (2.37) уравнение (2.29) имеем:
Для удовлетворения четвёртого условия вычислим вторую производную интерполирующего сплайна:
Подставляя в это выражение уравнение (2.30), получаем:
Посредством исключения коэффициентов а и с из уравнений (2.38), (2.36) и (2.40) вместе с граничными условиями (2.31), (2.32) или (2.33), (2.34) получаем систему линейных уравнений для всех b. Теперь решим (2.40) относительно
Подставив (2.41) в (2.36):
Это уравнение в свою очередь решим относительно
Для первого члена в правой части (2.43) в дальнейшем будем пользоваться сокращением
Опорные точки должны быть сопоставимы с непрерывной функцией, т.е. функция не должна иметь скачков, поскольку из-за hi=0 значение ei стремилось бы к бесконечности.
Чтобы исключить коэффициенты ai, ci подставим в уравнения (2.41) и (2.43) в уравнение (2.38) и после преобразования запишем:
Оставшиеся два уравнения, необходимые для вычисления всех коэффициентов bi получаем с помощью граничных условий. Таким образом задаются две системы уравнений.
Граничное условие А.
Подставляя уравнение (2.31) при i = 0 и x = xi в уравнение (2.39), получаем
b1 = 0 (2.46)
Для упрощённого расчёта граничного условия (2.32) допустим, что за опорной точкой xn существует другой интерполирующий сплайн, для которого условия (2.27), (2.29) и (2.30) выполняются. Согласно последнему условию
Подставляя это выражение при i = n и x = xn в уравнение (2.39) получаем
bn = 0 (2.47)
Аналогичным образом можно записать (2.45) и для i = n-1, т.е.:
Уравнения (2.41) и (2.44) представляют собой систему линейных уравнений, с помощью которой вычисляется n-1 сплайн-коэффициентов b1...bn-1. В матрице коэффициентов заполненными оказываются только главная диагональ и две соседние диагонали, а все остальные элементы равны 0. Такая система уравнений называется трёхдиагональной.
После решения системы уравнений, приведённой выше, предполагается, что все коэффициенты bi известны. С помощью уравнения (2.41) вычисляются все n ai, а с помощью (2.43) - все коэффициенты ci.
Граничное условие Б.
С учётом граничных условий (2.33) и (2.34) создаётся система из n уравнений для коэффициентов bi. Подставляя (2.33) для i = 1 и x = x1 получаем
c1 = ma (2.50)
Из уравнения (2.43)
Таким образом, получаем систему уравнений
которую необходимо решить относительно bn-1 и bn-2
Уравнения (2.45), (2.51) и (2.57) образуют систему линейных уравнений всех сплайн-коэффициентов b1...bn-1. Сиcтема трёхдиагональна, однако её матрица коэффициентов в отличии от уравнения (2.49) не симметрична. После решения этой системы по уравнениям (2.53) и (2.41) рассчитаем коэффициенты ai, а по уравнению (2.38) коэффициенты ci.
Моделирование сплайн-интерполяции.
Для исследования сплайн-интерполяции составим программу, вычисляющую сплайн-коэффициенты по граничному условию А.
Функция Spline реализует алгоритм вычисления сплайн-коэффициентов с учётом граничного условия А. Результатом вычисления является матрица размерностью n*4 в строках которой записаны коэффициенты a, b, c, d для каждой из n сплайн функции. Входные параметры - векторы x, y - исходные опорные точки.
Функция Function(x) вычисляет для заданного x значения сплайна.
Дата публикования: 2014-11-04; Прочитано: 1561 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!