Текст подпрограммы и версий ( Фортран )
is01r.zip , is01d.zip
Тексты тестовых примеров ( Фортран )
tis01r.zip , tis01d.zip
Текст подпрограммы и версий ( Си )
is01r_c.zip , is01d_c.zip
Тексты тестовых примеров ( Си )
tis01r_c.zip , tis01d_c.zip
Текст подпрограммы и версий ( Паскаль )
is01r_p.zip , is01e_p.zip
Тексты тестовых примеров ( Паскаль )
tis01r_p.zip , tis01e_p.zip

Подпрограмма:  IS01R

Назначение

Построение одномерного сглаживающего кубического сплайна.

Математическое описание

Пусть на сетке x1 < x2 < ... < xN заданы измеренные значения f1, f2, ..., fN некоторой гладкой функции. Требуется найти дважды непрерывно дифференцируемую функцию  s (x), которая минимизирует функционал

        xN
        ∫   ( g''(x) )2 dx
       xi
  среди всех функций g (x) таких, что
         N 
        ∑    [ ( g(xi) - fi ) / ( dfi ) ]2  ≤  SM ,
        i=1 

где  dfi > 0 и SM ≥ 0 - заданные числа.

Числа  dfi характеризуют точность задания дискретных данных  fi, а SM - требуемую меpу их сглаживания.

Решением задачи является сглаживающий кубический сплайн, который на каждом интервале [xi, xi + 1] представляется в виде

   s(x)  =  c3 i h3 + c2 i h2 + c1 i h + yi  ,    h = x - xi , 

где  c3 i , c2 i , c1 i ,  i = 1, 2, ..., N - 1 суть коэффициенты, а  yi - значения сглаживающего сплайна в узлах  xi ,  i = 1, 2, ..., N.

Reinsch C.H. Smoothing by Spline Functions. Numerishe Mathematik, 1967, v.10, 177 - 183.

Морозов B.A. O задаче дифференцирования и некоторых алгоритмах приближения экспериментальной информации, в сб. "Вычислительные методы и программирование", 1970, вып.ХIV, Изд - во МГУ, 46 - 62.

Использование

    SUBROUTINE  IS01R (X, F, DF, NX, SM, Y, C, RAB, IERR) 

Параметры

X - вещественный массив длины NX, в котоpом задаются значения узлов сетки такие, что X (I) < X (I + 1),  I = 1, ..., NX - 1;
F - вещественный массив длины NX, в котоpом задаются значения сглаживаемой дискретной функции;
DF - вещественный массив длины NX, в котоpом задаются значения весов DF (I) > 0 ,  I = 1, ..., NX;
NX - заданное число узлов, NX ≥ 2 (тип: целый);
SM - неотрицательное число, задающее меpу сглаживания (тип: вещественный);
Y - вещественный массив длины NX значений сглаживающего сплайна в узлах сетки;
C - двумерный вещественный массив размера 3* (NX - 1) значений коэффициентов сглаживающего сплайна;
RAB - двумерный рабочий массив размера 7* (NX + 2) (тип: вещественный);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы:
IERR=65 - если NX < 2;
IERR=66 - если массив X не упорядочен строго по возрастанию.

Версии

IS01D - построение одномерного сглаживающего кубического сплайна с повышенной точностью.

Вызываемые подпрограммы

UTIS10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы IS01R.
UTIS11 - подпрограмма выдачи диагностических сообщений при работе подпрограммы IS01D.

Замечания по использованию: нет

Пример использования

       DIMENSION  X(5), F(5), DF(5), Y(5), C(3, 4), RAB(7, 7)
       DATA  X /1., 2., 3., 4., 5./,  F /1., 4., 20., 16., 25./
       DATA  DF /2*.2, 10., 2*.2/
       NX = 5
       SM = NX - 1. - SQRT(NX + NX)
       CALL  IS01R (X, F, DF, NX, SM, Y, C, RAB, IERR)

Результаты:

       IERR  =  0

       Y(1) = .999 ; Y(2) = 4.003 ; Y(3) = 10.85 ; Y(4) = 16.003 ; Y(5) = 24.999

       C(1, 1) =  1.785   C(1, 2) =  5.442   C(1, 3) =  6.000   C(1, 4) =  6.558
       C(2, 1) =  0.000   C(2, 2) =  3.657   C(2, 3) = -3.099   C(2, 4) =  3.657
       C(3, 1) =  1.219   C(3, 2) = -2.252   C(3, 3) =  2.252   C(3, 4) = -1.219