Текст подпрограммы и версий ( Фортран ) ids0r.zip |
Тексты тестовых примеров ( Фортран ) tids0r.zip |
Текст подпрограммы и версий ( Си ) ids0r_c.zip |
Тексты тестовых примеров ( Си ) tids0r_c.zip |
Текст подпрограммы и версий ( Паскаль ) ids0r_p.zip |
Тексты тестовых примеров ( Паскаль ) tids0r_p.zip |
Вычисление значений вторых производных вещественной табличной функции от одного переменного в узлах неравномерной сетки методом интерполирующих кубических сплайнов при известных значениях вторых производных в концевых точках.
Пусть в узлах сетки xk : x1 <x2 < ... < xN заданы значения yk = y (xk), а в концевых точках также значения вторых производных y''(x1) = y''1, y''(xN) = y''N. Интерполирующая функция 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 IDS0R (N, X, Y, Y2, F, G)
Параметры
N - | число узлов сетки, N ≥ 3 (тип: целый); |
X - | одномерный массив значений узлов сетки размерности N (тип: вещественный); |
Y - | одномерный массив значений табличной функции размерности N (тип: вещественный); |
Y2 - | одномерный массив вычисляемых значений вторых производных в узлах сетки размерности N (тип: вещественный); на входе Y2 (1) = y1, Y2 (N) = yN |
F, G - | одномерные рабочие массивы размерности N (тип: вещественный). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию: нет
На сетке x = (k-1)*π/5
брались значения y = cos (xk) ,
k = 1, ..., 6 ,
y''1 = -y1 ,
y''6 = -y6.
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) Y2(N) = -Y(N) CALL IDS0R (N, X, Y, Y2, F, G) Результат: Y2 = ( -1.00, -0.85, -0.32, 0.32, 0.85, 1.00 )