Текст подпрограммы и версий ( Фортран ) ids3r.zip |
Тексты тестовых примеров ( Фортран ) tids3r.zip |
Текст подпрограммы и версий ( Си ) ids3r_c.zip |
Тексты тестовых примеров ( Си ) tids3r_c.zip |
Текст подпрограммы и версий ( Паскаль ) ids3r_p.zip |
Тексты тестовых примеров ( Паскаль ) tids3r_p.zip |
Вычисление значений первых производных вещественной табличной функции от одного переменного в узлах неравномерной сетки методом интерполирующих кубических сплайнов при известных значениях первых производных в концевых точках.
Пусть в узлах сетки xk : x1 < ... < xN известны значения yk = y (xk), а в концевых точках также значения первых производных y'i = y' (xi), y'N = y' (xN). Интерполирующая функция y (x) на каждом из отрезков [xk, xk + 1] представляется кубическим полиномом Эрмита [1], построенным по значениям yi , y'i и yi + 1, y'i + 1, где y'i = y' (xi) определяются из условия непрерывности второй производной функции y (x) в узлах сетки [2]. Это обеспечивает гладкость второго порядка функции y (x) на всем отрезке [xi, xN].
1. | И.С.Березин, Н.П.Жидков, Методы вычислений, т. 1, Физматгиз, 1962. |
2. | Дж.Алберг, Э.Нильсон, Дж.Уолш, Теория сплайнов и ее приложения, M., "Мир", 1972. |
SUBROUTINE IDS3R (N, X, Y, Y1, F, G)
Параметры
N - | число узлов сетки, N ≥ 3 (тип: целый); |
X - | одномерный массив значений узлов сетки размерности N (тип: вещественный); |
Y - | одномерный массив значений табличной функции размерности N (тип: вещественный); |
Y1 - | одномерный массив вычисляемых значений первых производных в узлах сетки размерности N; на входе Y1 (1) = y'1, Y1 (N) = y'N (тип: вещественный); |
F, G - | одномерные рабочие массивы размерности N (тип: вещественный). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию: нет
на сетке xk = (k-1)*π/5 брались значения yk = cos(xk) , k = 1,...6 , y'1 = -y1 , y'6 = -y6 . DIMENSION X(6), Y(6), Y1(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 Y1(1) = 0. Y1(N) = -SIN(X(N)) CALL IDS3R (N, X, Y, Y1, F, G) Результат: Y1 = ( 0.00, -0.59, -0.95, -0.95, -0.59, 0.00 )