Найти тему
Андрей Куликов

Простейший локальный кубический сплайн с не равно отстоящими абциссами на Borland TurboBasic'е

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

Значение первой производной (наклон) в каждом узле находится путём численного дифференцирования по трём точкам с не равно отстоящими по оси абцисс узлами:

Рис. 1. Формулы числового дифференцирования по трём не равно отстоящим на оси абцисс точкам, h_i=h_{i+1}-h_i.

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

Интерполяция и экстраполяция производится по формуле интерполяции локальным кубическим сплайном входных данных с не равно отстоящими по оси абцисс узлами, приведённой в [1]. В приведённой формуле применена не удобная нумерация узлов сплайна (i-1, i), при которой, если i=0, то нужны значения x(i-1) и y(i-1) в точке с номером -1, а в большинстве языков программирования нумерация массивов начинается с 0, а в некоторых и вовсе с 1. Преобразованная формула с удобной для языков программирования нумерацией узлов (i = 0, 1, 2, ..., n-1) выглядит так:

-2

Рис. 2. Формула интерполяции локальным кубическим сплайном, S3(x)=f(x), y=f(x), S3(x)=y'=f '(x)=df/dx (значение первой производной в узле).

-3

Рис. 3. Снимок с экрана результата прогона программы CSA11-11.BAS в режиме Mode=0 (не линейная экстраполяция за пределами отрезка).

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

-4

Рис. 4. Результат прогона тех же входных данных в режиме Mode=1 (линейная экстраполяция за пределами отрезка с наклоном равным наклону в крайних точках сплайна).

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

При X<X[0] или X>X[N] проводится линейная экстраполяция, которая, чем дальше от отрезка определения сплайна, тем больше не соответствует параболе.

Для запуска программы CSA11-11.BAS на рабочем столе размещается DOSBox 0.74-3 и файл с TurboBasic'ом: TB.EXE из папки перетаскивается на значок (ярлык) DOSBox.

Локальный кубический сплайн проще глобального кубического сплайна и во многих случаях вполне достаточен.

Так как кубический сплайн является функцией заданной в аналитическом виде, то с ним можно производить многие аналитические действия: складывать, вычитать, умножать, делить, возводить в степень, извлекать корень, дифференцировать, интегрировать, свёртывать с другой функцией (конволюцировать), развёртывать с другой функцией (деконволюцировать) и производить другие действия.

Литература:

1. Амосов А.А., Дубинский Ю.А., Копчёнова Н.В. Вычислительные методы для инженеров: Учеб. Пособие. - М.: Высш. шк., 1994. - 544 с.: ил. ISBN 5-06-000625-5. § 11.11. Интерполяция сплайнами. Файл: PPFsrza9PEZHq.djvu

2. Д ь я к о н о в В. П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ: Справочник. — М.: Наука. Гл. ред. физ.-мат. лит., 1989. — 240 с. — ISBN 5-02-014530-0. Файл: diakonovvp8.djvu

3. В о л к о в Е. А. Численные методы: Учеб. пособие для вузов. — 2-е изд., испр. — М.: Наука. Гл. ред. физ.-мат. лит., 1987. — 248 с. Файл: Численные методы Волков.djvu

4. Кубический сплайн. Википедия.

5. Численное дифференцирование. Википедия.

Приложения:

1. Файл с архивом: CSA11-11.rar

В архиве CSA11-11.rar находятся:

1.1. Borland TurboBasic 1.1: файл TB.EXE и файл конфигурации TBCONFIG.TB

1.2. Программа CSA11-11.BAS на Borland TurboBasic'е.

1.3. Справочник по Borland TurboBasic'у: файл TBASIC.TXT

1.4. Переиздание параграфа § 11.11. Интерполяция сплайнами из учебного пособия Амосова, Дубинского и Копчёновой, исправленное и дополненное, с программой на Borland TurboBasic'е: файл Амосов2.odt, файл Амосов2.pdf и другие вспомогательные файлы.

Версия 2024.01.20.