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

Простейшие локальные сплайны из справочника Дьяконова на Borland TurboBasic'е

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

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

В справочнике Дьяконова "Справочник по алгоритмам и программам на языке бэйсик для персональных ЭВМ", в "Главе 4. Алгоритмы и программы реализации основных численных методов", в параграфе "§ 4.2. Интерполяция и экстраполяция", приводится описание вычисления простейших локальных сплайнов 1-й (кусочно-линейный сплайн), 2-й (квадратичный сплайн) и 3-й степени (кубический сплайн). Там же приведена "Программа 4.8." на бэйсике для карманной ПЭВМ (Pocket Computer) CASIO FX-702P. Для применения этой программы на компьютерах с ОС Windows автором было сделано переиздание исправленного параграфа § 4.2 с переводом программы 4.8 с бэйсика CASIO FX-702P на Borland TurboBasic 1.1.

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

Рис.1. Формулы вычисления первых производных численным дифференцированием по трём равно отстоящим по оси абцисс точкам.

-2

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

Формула для вычисления значений локального кубического сплайна для равно отстоящих абцисс из книжки Волкова верная и её смысл - сделать все четыре члена положительными, а смысл формулы для равно отстоящих абцисс из справочника Дьяконова - расставить все x в порядке убывания x_{i+1} >= x >= x_i. Четвёртый член в такой формуле должен быть отрицательным, но в справочнике Дьяконова в четвёртом члене формулы бес перепутал x_{i+1} и x местами.

-3

Рис.3. Снимок с экрана результата прогона контрольного примера из справочника Дьяконова.

В результате прогона программы 4.8 приведены: начальное значение интерполируемых сплайном данных - X0=A, шаг - H, число шагов - N, значения входных данных в девяти узлах Y[N] и результаты интерполяции упрощённым локальным кубическим сплайном Y[X] в 2-х точках X и экстраполяции упрощённым локальным кубическим сплайном Y[X] в 2-х точках X.

Для запуска программы файл с архивом CSD48.rar скачивается, помещается в отдельную папку, распаковывается в ту же папку и прямо из папки запускается файл TB.EXE. Далее: File->Load-><Enter>->CSD48<Enter->Run.

Степень сплайна (1, 2 или 3) определяет переменная P. Другие значения P и X в точках интерполяции или экстраполяции выбираются снятием апострофа <'> в строках программы с переменной P= и данными DATA в начале программы в режиме редактора Edit.

-4

Рис.4. Снимок с экрана монитора результата прогона версии программы с графическим выводом P4-8G на Borland C++ 5.5 WinAPI с контрольным примером из справочника Дьяконова, разработанной с помощью DIDE bc2.

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

Литература:

1. Амосов А.А., Дубинский Ю.А., Копченова Н.В. Вычислительные методы для инженеров: Учеб. пособие. — М.: Высш. шк., 1994. — 544 с. § 11.11. Интерполяция сплайнами. (Для разно отстоящих абцисс. История возникновения сплайн-функций.) Файл: PPFsrza9PEZHq.djvu

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

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

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

Приложения:

1. Файл с архивом: CSD48.rar

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

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

1.2. Программа 4.8 на Borland TurboBasic'е.: файл CSD48.BAS

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

1.4. Исправленное переиздание параграфа § 4.2. Интерполяция и экстраполяция из справочника Дьяконова с программой 4.8 на Borland TurboBasic'е: файл CubicSpline48.pdf, файл CubicSpline48.odt и другие вспомогательные файлы.

Версия 2024.01.07.

#it technologies #splines #cubic splines #programms #Basic #TurboBasic #Borland TurboBasic #Численные методы #Сплайны #Кубические сплайны #программы