Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60247.doc
Скачиваний:
21
Добавлен:
01.05.2022
Размер:
4.22 Mб
Скачать

4.8 Интерполяция сплайнами

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

В основе сплайн-интерполяции лежит следующий принцип. Интервал интерполяции разбивается на небольшие отрезки, на каждом из которых функция задается полиномом третьей степени. Коэффициенты полинома подбираются таким образом, чтобы выполнялись определенные условия (какие именно, зависит от способа интерполяции). Общие для всех типов сплайнов третьего порядка требования - непрерывность функции и, разумеется, прохождение через предписанные ей точки. Дополнительными требованиями могут быть линейность функции между узлами, непрерывность высших производных и т.д.

Основными достоинствами сплайн-интерполяции являются её устойчивость и малая трудоемкость. Системы линейных уравнений, которые требуется решать для построения сплайнов, очень хорошо обусловлены, что позволяет получать коэффициенты полиномов с высокой точностью. В результате даже про очень больших N вычислительная схема не теряет устойчивость. Построение таблицы коэффициентов сплайна требует O(N) операций, а вычисление значения сплайна в заданной точке - всего лишь O(log(N)).

4.9 Линейный сплайн

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

На графике рис. 10 приведен пример линейного сплайна, интерполирующего функцию f = cos(0.5·π·x) на отрезке [-1, 1].

Рис. 10. Пример интерполяции линейным сплайном.

4.10 Сплайн Эрмита

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

На графике рис. 11 приведен пример сплайна Эрмита, интерполирующего функцию f = cos(0.5·π·x) на отрезке [-1, 1]. Можно видеть, что точность интерполяции значительно лучше, чем у линейного сплайна.

Рис. 11. Пример интерполяции кубическим сплайном (сплайном Эрмита).

4.11 Кубический сплайн

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

Если известно точное значение первой производной на обеих границах, то такой сплайн называют фундаментальным. Погрешность интерполяции таким сплайном равна O(h 4).

Если значение первой (или второй) производной на границе неизвестно, то можно задать т.н. естественные граничные условия S''(A) = 0, S''(B) = 0, и получить естественный сплайн. Погрешность интерполяции естественным сплайном составляет O(h 2). Максимум погрешности наблюдается в окрестностях граничных узлов, во внутренних узлах точность интерполяции значительно выше.

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

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

На графике рис. 12 приведен пример кубического сплайна, интерполирующего функцию f = cos(0.5·π·x) на отрезке [-1, 1]. Можно видеть, что точность интерполяции близка к точности Эрмитова сплайна.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]