2.2.6. Программная реализация
Описанный выше алгоритм построения бикубического сглаживающе
сплайна и вычисления его значений в произвольной точке реализо
в виде подпрограммы
написанной на языке Фортран:
(см. скан)
(см. скан)
Обращение к программе имеет вид:
Входные данные;
число узлов сетки по оси
массив длины
содержит узлы сетки по оси
число узлов сетки по оси у у - массив длины
содержит узлы сетки по оси
одномерный массив длины
содержит значения сглаживающего сплайна в узлах сетки; значение сплайна в узле сетки
содержится в элементе
- код типа граничных условий на прямых
на прямых
- условия
типа
массив длины
элемент
содержит значение
частной производной по х в узлах
для граничных условий 1-го типа,
массив длины
элемент
содержит значение 1-й частной производной по х в узлах
для граничных условий 1-го типа,
массив
элемент
содержит значение 1-й частной производной по у в узлах
для граничных условий 1-го типа,
массив длины
элемент
содержит значение 1-й частной производной по у в узлах
граничных условий 1-го типа,
массив длины 4, содержит значения смешанных производных в угловых точках сетки в случае граничных условий 1-го типа,
- массив длины
содержит значения весовых коэффициентов,
массив длины
содержит значения весовых коэффициентов,
рабочие массивы длины
рабочие массивы длины
рабочие массивы длины
рабочие массивы длины
код режима работы:
программа вычисляет параметры сплайна,
параметры сплайна известны,
координаты точки, в которой вычисляются параметры сплайна.
Результат;
значение сплайна в точке с координатами
В процессе работы программа
обращается к программам
и
Чтобы показать, как пользоваться программой
рассмотрим следующий пример, имитирующий сглаживание экспериментальных данных.
Пример? Предположим, что фунция
"измеряется" в узлах сетки
с погрешностью которая распределена равномерно на отрезке [0.1, 0.1]. Для весовых коэффициентов примем значения
Программа для решения этой задачи может иметь следующий вид
(см. скан)
(см. скан)
Замечание
Сравнение слаживающего сплайна с интерполяционным, построенным на том же массиве исходных данных и удовлетворяющим тем же граничным условиям, показывает, что осциляции, присущие интерполяционному сплайну, практически полностью отсутствуют в сглаживающем сплайне.
Приведенная ниже программа сначала создает массив "экспериментальных" данных, а затем строит сглаживающий сплайн, удовлетворяющий граничным условиям 2-го типа.
(см. скан)
(см. скан)
Следующая программа сначала создает массив "экспериментальных" данных, а затем строит сглаживающий сплайн, удовлетворяющий граничным условиям 3-го типа,