Текст подпрограммы и версий
sfa1r_c.zip  sfa1d_c.zip 
Тексты тестовых примеров
tsfa1r_c.zip  tsfa1d_c.zip 

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

Назначение

Вычисление комплексной интегральной показательной функции.

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

Подпрограмма sfa1r_c вычисляет значение комплексной интегральной показательной функции

     W(k, z)  =  Re W + i Im W  =
                                         
                         =  zk  ez   ∫  e - t / zk  dt ,
                                        z

где  z  =  x + i y,  а  k - вещественный параметр.

Вычисления проводятся по следующим рекуррентным формулам для   n = 2, 3, 4, ...

             Dn  =  z / (z + m Dn - 1) ,
             Rn  =  (Dn - 1) Rn-1 ,
             Cn  =  Cn-1 + Rn , 

 где D1  =  R1  =  C1  =  1 ,
             m  =  k - 1 + (n - 2)/2 ,  если  n - четное 
             m  =  (n + 2)/2 ,           если  n - нечетное 

Вычисления прекращаются, когда модуль разности между Cn и Cn - 1 становится меньше заданной точности EPS.

Сходимость имеет место на всей комплексной плоскости, за исключением начала координат и отрицательной вещественной оси. Сходимость замедляется для  | z | < 0.05  и для некоторой области, зависящей от  k,  внутри полосы  | y | < 2,  x < 0 .

Абрамовиц M., Стиган И. Справочник по специальным функциям. М.: Наука, 1979.

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

    int sfa1r_c (real *x, real *y, real *rk, real *eps, real *rew,
            real *rimw, integer *n)

Параметры

x, y - вещественная и мнимая части заданного значения аргумента  z  (тип: вещественный);
rk - заданное значение параметра  k  (тип: вещественный);
eps - заданная точность вычисления комплексной интегральной показательной функции (тип: вещественный);
rew -
rimw  
вещественные переменные, которым присваиваются вычисленные вещественная и мнимая части комплексной интегральной показательной функции;
n - целая переменная, значение которой полагается равным количеству итераций по рекуррентным расчетным формулам, выполненным для достижения заданной точности eps.

Версии

sfa1d_c - вычисление комплексной интегральной показательной функции в режиме удвоенной точности; при этом параметры x, y, rk, eps, rew, rimw должны иметь тип doubleereal.

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

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

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

int main(void)
{
    /* Local variables */
    static float rimw;
    extern int sfa1r_c(float *, float *, float *, float *, float *, float *,
                       int *);
    static int n;
    static float x, y, rk, eps, rew;

    x = 1.f;
    y = 1.f;
    rk = 1.f;
    eps = 1e-6f;
    sfa1r_c(&x, &y, &rk, &eps, &rew, &rimw, &n);

    printf("\n %16.7e %16.7e \n", rew, rimw);
    printf("\n %5i \n", n);
    return 0;
} /* main */


Результаты:

       rew = 0.6733211 , 
       rimw = 0.1478637 ,  
       n = 34