Текст подпрограммы и версий ( Фортран )
ids1r.zip
Тексты тестовых примеров ( Фортран )
tids1r.zip
Текст подпрограммы и версий ( Си )
ids1r_c.zip
Тексты тестовых примеров ( Си )
tids1r_c.zip
Текст подпрограммы и версий ( Паскаль )
ids1r_p.zip
Тексты тестовых примеров ( Паскаль )
tids1r_p.zip

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

Назначение

Вычисление значений вторых производных вещественной табличной функции от одного переменного в узлах неравномерной сетки методом интерполирующих кубических сплайнов при известных условиях на вторые производные в концевых точках.

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

Пусть в узлах сетки  xk :  x1 <x2 <  ... < xN заданы значения  yk = y (xk), а также значения  u и  v, определяющие линейные условия  y''1 = u*y''2,  y''N = v*y''N - 1, где  y''i = y''(xi). Интерполирующая функция  y (x) на каждом из отрезков  [xk, xk + 1] представляется кубическим полиномом Эрмита [1], построенным по значениям  yi,  y''i и  yi + 1,  y''i + 1, где  y''i = y''(xi) определяются из условия непрерывности первой производной функции  y (x) в узловых точках [2]. Это обеспечивает гладкость второго порядка  y (x) на всем отрезке  [x1, xN].

1. 

И.С.Березин, Н.П.Жидков, Методы вычислений, т. 1, Физматгиз, 1962.

2.  Дж.Алберг, Э.Нильсон, Дж.Уолш, Теория сплайнов и ее приложения, M., "Мир", 1972.

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

    SUBROUTINE  IDS1R (N, X, Y, Y2, F, G) 

Параметры

N - число узлов сетки, N ≥ 3 (тип: целый);
X - одномерный массив значений узлов сетки размерности N (тип: вещественный);
Y - одномерный массив значений табличной функции размерности N (тип: вещественный);
Y2 - одномерный массив вычисляемых значений вторых производных в узлах сетки размерности N; на входе  Y2 (1) = u,  Y2 (N) = v; (тип: вещественный);
F, G - одномерные рабочие массивы размерности N (тип: вещественный).

Версии: нет

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

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

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

На сетке  x = (k-1)*π/5 ,  k = 1, ..., 6  брались значения  yk = cos (xk),  u = y1/y2,  v = y6/y5

       DIMENSION  X(6), Y(6), Y2(6), F(6), G(6)
       PI = 3.141592653/5.
       N = 6
       DO 1  K = 1, N
       X(K) = (K - 1)*PI
       Y(K) = COS( X(K) )
    1 CONTINUE
       Y2(1) = Y(1)/Y(2)
       Y2(N) = Y(N)/Y(N-1)
       CALL  IDS1R (N, X, Y, Y2, F, G)

Результат:    Y2  =  ( -1.03,  -0.84,  -0.32,  0.32,  0.84,  1.03 )