Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Исправленная методичка.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

1.2. Сплайн-интерполяция.

При интерполяции функции по ее значениям в узлах полиномы Лагранжа высокого порядка применяются сравнительно редко. Гораздо чаще функция интерполируется в интервалах между несколькими соседними опорными точками полиномами низких степеней. Такая интерполяция называется кусочной. Примером может служить кусочно-линейная интерполяция по двум соседним точкам на интервале или кусочно-параболическая по трем соседним точкам . Однако многие численные методы требуют определения производной, а производные в вышеприведенных методах будут терпеть разрыв в узлах кусочной интерполяции.

Эти трудности преодолеваются при использовании методов интерполяционных сплайнов, получивших значительное развитие, начиная с 60-х годов ХХ века. Из них наиболее распространены кубические сплайны, у которых в узлах достигается непрерывность первой и второй производных.

Кубический сплайн строится следующим образом. Пусть заданы узлов интерполяции функции (в общем случае неэквидистантные). На каждом интервале кубический сплайн является алгебраическим полиномом третьей степени:

(1)

Причем эти многочлены подобраны так, что при всех непрерывны и сами сплайны (1) и их первая и вторая производные.

Наша цель получить многочленов , т.е. вычислить все неизвестные коэффициенты . Эти неизвестные коэффициентов определяются из следующих требований:

1. Сплайн-полиномы должны проходить через узловые точки:

, (2.1)

2. Первые производные должны быть непрерывны во внутренних узлах:

, (2.2)

3. Вторые производные должны быть непрерывны во внутренних узлах:

, (2.3)

В (2.1)-(2.3) сформулировано ограничений, а число неизвестных составляет . Поэтому, для однозначного определения коэффициентов необходимы еще два дополнительных условия. Чаще всего используются естественные граничные условия:

, (2.4)

т.е. через крайние точки сплайны должны проходить с нулевой кривизной.

Запишем полиномы в форме, которая значительно упростит все операции с полиномами:

, (3)

где - расстояние между соседними узлами,

, - относительные расстояния от левого ого и правого ого узла,

- тангенс угла наклона прямой,

- неизвестные константы, подлежащие определению.

При таком представлении сплайна получим, что при , а при , а для производных - и . Вычисление полинома (3) в точках показывает, что ограничений (2.1) удовлетворяются автоматически.

Первая производная полинома (3) равна

, (4)

Из (4) видим, что требование (2.2) при и также выполняется.

Наконец, вычисляя вторую производную полинома (3), получим

.

Тогда во внутренних узлах получаем

, .

Приравнивая эти производные друг к другу в соответствии с требованием (2.3), приходим к следующей системе уравнений:

, (5)

где .

Оставшееся условие (2.4) дает еще два уравнения

, (5.1)

Вместе взятые (5) и (5.1) можно записать в форме симметричной трехдиагональной системы уравнений:

(6)

Эта система уравнений обычно хорошо обусловлена и может быть легко решена относительно констант . После нахождения коэффициентов можно определить коэффициенты по формулам:

,

,

, (7)

,

Для решения системы уравнений (6) можно воспользоваться методом исключения Гаусса. Однако его целесообразно адаптировать под специальный вид трехдиагональной системы уравнений (6). Нужно учитывать, что в системе уравнений (6) заполняются только главная диагональ и две дополнительные диагонали (наддиагональ и поддиагональ). Поэтому коэффициенты системы уравнений целесообразно запоминать не в двумерном массиве, а в двух одномерных: DIAG (диагональ) и UPDIAG (наддиагональ и поддиагональ). Решение системы можно получать на месте столбца свободных членов.

Вообще-то во всей литературе для решения таких систем рекомендуется использовать метод прогонки

Так как , то наибольшие по модулю коэффициенты уже стоят на главной диагонали и перестановка уравнений, которая обычно производится в алгоритме Гаусса, здесь не нужна. Следует учитывать также, что при прямой подстановке на каждом шаге исключаются только коэффициенты, стоящие над главной диагональю, а остальные коэффициенты равны нулю изначально.. В ходе прямой подстановки изменяться будут только диагональные и свободные члены.. при обратной подстановке из последнего уравнения находится , из предпоследнего - и т.д.

Задание

Разработать программу, производящую сплайн-интерполирование таблично заданной функции . В состав программы должны входить:

Процедура вычисления коэффициентов сплайна SPLINE_COEFFICIENT(x, y, N, A, B, C, D), в которой вычисляются коэффициенты трехдиагональной системы уравнений (6). В ней осуществляется привидение системы к верхней треугольной форме (прямая подстановка), нахождение (обратная подстановка) и расчет коэффициентов по формулам (7).

Процедура SPLINE_VALUE(x, y, N, A, B, C, D, xx, P, P1) , будет служить для вычисления в точке хх значения кубического сплайна и его производной . В процедуре находится рабочий интервал . Значения сплайна и его производная в процедуре вычисляются по схеме Гориера

,

, .

Проверку работы программы можно осуществить, сравнивая значения некоторой исходной функции со значениями сплайн-функции, построенной по ее опорным точкам , а также по значениям ее производных.