Текст подпрограммы и версий ( Фортран ) sf74r.zip |
Тексты тестовых примеров ( Фортран ) tsf74r.zip |
Текст подпрограммы и версий ( Си ) sf74r_c.zip |
Тексты тестовых примеров ( Си ) tsf74r_c.zip |
Текст подпрограммы и версий ( Паскаль ) sf74r_p.zip |
Тексты тестовых примеров ( Паскаль ) tsf74r_p.zip |
Вычисление модифицированных функций Бесселя первого рода In (x) для последовательности целых индексов.
SF74R вычисляет значения модифицированных функций Бесселя первого рода Ip (x) для действительного аргумента x и последовательности целых индексов p от n до 0. Расчеты осуществляются по рекуррентной формуле:
Ip-1(x) = (2p/x)*Ip(x) + Ip+1(x) .
Ошибка вычисления Ip (x) не возрастает в pекуppентном процессе, применяемом при убывании p.
Вычисления начинаются с задания значений Ik + 1 = 0, Ik = 1 и числа k.
Величина k выбирается в зависимости от значений x и n. Затем последовательно вычисляются значения функций для p = k - 1, k - 2, ..., 0. Для достижения заданной точности eps рекурсия повторяется с большим k до тех пор, пока разность между pезультатами двух последних рекурсий не станет меньше eps.
1. | Абрамовиц М., Стиган И. Справочник по специальным функциям - М. Наука, 1979. |
2. | Goldstein M., Thaler R.M. Recurrence techniques for the calculation of Bessel functions. - M TAC, 1959, V. 13, N 66. |
SUBROUTINE SF74R (X, N1, EPS, S, T, T1)
Параметры
X - | заданное значение аргумента x (тип: вещественный); |
N1 - | максимальный порядок последовательности функций Ip (x), увеличенный на единицу (тип: целый); |
EPS - | относительная точность вычисления последней функции последовательности In (x) (тип: вещественный); |
S - |
логическая переменная, задающая режим работы
подпрограммы; при этом: если S = .TRUE., то вычисляются функции Ip(x), если S = .FALSE., то вычисляются функции e - x Ip(x); |
T - | вещественный вектоp длины N1 вычисленных значений функций Бесселя порядков от 0 до n; Ij (x) = T (j + 1), j = 0, ..., N (N = N1 - 1); |
T1 - | вещественный вектоp длины N1, используемый как рабочий. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
Для значений x, при которых e - x меньше положительного наименьшего представимого в машине числа, значение S полагается равным .FALSE. |
DIMENSION T(21), T1(21) LOGICAL S X = 5 N1 = 21 EPS = 1.E-9 S = .TRUE. CALL SF74R (X, N1, EPS, S, T, T1) Результаты: T(5) = 5.1082347636E+00 T(11) = 4.580044192E-03 T(16) = 1.0479776754E-06 T(21) = 5.0242393580E-11