Текст подпрограммы и версий
sf75r_c.zip 
Тексты тестовых примеров
tsf75r_c.zip 

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

Назначение

Вычисление модифицированных функций Бесселя второго рода   Kn (x) для последовательности целых индексов.

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

sf75r_c вычисляет значения модифицированных функций Бесселя второго рода  Kp(x) для действительного аргумента  x и последовательности целых индексов  p от 0 до  n. Расчеты осуществляются по рекуррентной формуле:

     Kp+1(x) = (2p/x)*Kp(x) + Kp-1(x) . 

Ошибка вычисления  Kp (x) не pастет в pекуppентном процессе, примененном для возрастающих значений  p. Поэтому сначала вычисляются с заданной точностью значения  K0 (x) и  K1 (x) с помощью разложений по полиномам Чебышева, а затем последовательно применяется рекуррентная формула для  p = 2, 3, ..., n.

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

    int sf75r_c (real *x, integer *n1, logical *s, real *t)

Параметры

x - заданное значение аргумента  x (тип: вещественный);
n1 - максимальный порядок последовательности функций   Kp (x), увеличенный на единицу (тип: целый);
s - логическая переменная, задающая режим работы подпрограммы; при этом:
если s=TRUE_ , то вычисляются функции  Kp (x),
если s=FALSE_ , то вычисляются функции  ex Kp (x).
t - вещественный вектоp длины n1 вычисленных значений функции Бесселя порядков от  0 до  n;    Kj (x) = t (j + 1),  j = 0, ..., n.  (n = n1 - 1).

Версии: нет

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

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

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

int main(void)
{
    /* Local variables */
    extern int sf75r_c(float *, int *, logical *, float *);
    static logical s;
    static float t[21], x;
    static int n1, i;

    x = 5.f;
    n1 = 21;
    s = TRUE_;
    sf75r_c(&x, &n1, &s, t);

    for (i = 1; i <= 19; i += 3) {
         printf("\n %16.7e %16.7e %16.7e ",t[i-1], t[i], t[i+1]);
    }
    printf("\n \n");
    return 0;
} /* main */


Результаты:

       t(6)    =  3.2706273712e-02
       t(11)  =  9.7585628291e+00
       t(16)  =  3.0169766300e+04
       t(21)  =  4.8270005205e+08