Текст подпрограммы и версий ( Фортран )
sf76r.zip 
Тексты тестовых примеров ( Фортран )
tsf76r.zip 
Текст подпрограммы и версий ( Си )
sf76r_c.zip 
Тексты тестовых примеров ( Си )
tsf76r_c.zip 
Текст подпрограммы и версий ( Паскаль )
sf76r_p.zip
Тексты тестовых примеров ( Паскаль )
tsf76r_p.zip

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

Назначение

Вычисление функций Эйри  Ai и  Bi и их производных  Ai ' и  Bi '.

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

Данная подпрограмма вычисляет функции Эйри  Ai (z) и  Bi (z) и их производные  Ai ' (z) и  Bi ' (z) для вещественных значений аргумента при помощи разложений в ряды Чебышева.

(a) Для z ≤ -7 используются такие асимптотические разложения:

              Ai (-z) ~ z -1/4 ( sf(z) - cg(z) );
              Ai ' (-z) ~ -z 1/4 ( cp(z) + sq(z) );
              Bi (-z) ~ z -1/4 ( cf(z) + sg(z) );
              Bi ' (-z) ~ z 1/4 ( sp(z) - cg(z) ); 

где s = sin (ζ + π/4), c = cos (ζ + π/4), ζ = 2/3 z3/2, а функции f, g, p, q приближаются следующими чебышевскими разложениями

               m1                                     m2
        f ~  ∑  ar Tr*(t)  ,        g ~ ζ -1 ∑  br Tr*(t)  ,
              r=0                                    r=0

                m3                                    m4
        p ~  ∑  cr Tr*(t)  ,       q ~ ζ -1 ∑  dr Tr*(t)  ,
               r=0                                    r=0

Здесь t = -(7/z)3, Tr* являются чебышевскими полиномами со сдвигом; ar, br, cr и dr являются заданными коэффициентами Чебышева.

(б) Для -7 ≤ z ≤ 0 используются следующие разложения в ряды Тейлора

  Ai = e1 f(z) - e2 g(z)   ;                  Ai ' = e1 f '(z) - e2 g'(z) 
  Bi = sqrt( 3(e1 f(z) + e2 g(z) ) )  ;   Bi ' = sqrt( 3(f '(z) + e2 g'(z) ) )
где  e1 и  e2 - заданные константы и

               m1                                       m2
        f ~  ∑  ar Tr*(t)  ,              g ~ z  ∑  br Tr*(t)  ,
              r=0                                       r=0

                     m3                                m4
        f ' ~ z2  ∑  cr Tr*(t)  ,        g ' ~ ∑  dr Tr*(t)  ,
                    r=0                                r=0

Здесь t = - (z/7)3. 

(в)    Для  0 < z < 7 предыдущие разложения в ряды Тейлора не позволяют вычислить функции с достаточной точностью во всех точках интервала, поскольку на интервале имеют место значительные отклонения по абсолютной величине значений функций. Поэтому используются следующие чебышевские разложения для взвешенных функций:

                                    m1
        Ai exp (1.75z)  ~  ∑  ar Tr*(t)  ;
                                    r=0
                                      m3
        Ai ' exp (1.75z)  ~  ∑  cr Tr*(t) ;
                                      r=0
                                      m2
        Bi exp (- 1.75z)  ~  ∑  br Tr*(t)  ;
                                      r=0
                                        m4
        Bi ' exp (- 1.75z)  ~  ∑  dr Tr*(t)
                                        r=0
Здесь t = z / 7.

(г) Для z ≥ 7 используются следующие асимптотические разложения:

                                             m1
        Ai (z) ~ z - 1/4 exp(- ζ)  ∑  ar Tr*(t)  ;
                                            r=0
                                               m3
        Ai ' (z) ~ - z 1/4 exp(- ζ)  ∑  cr Tr*(t) ;
                                              r=0
                                          m2
        Bi (z) ~ z - 1/4 exp(ζ)  ∑  br Tr*(t)  ;
                                         r=0
                                          m4
        Bi ' (z) ~ z 1/4 exp(ζ)  ∑  dr Tr*(t)
                                         r=0

Здесь t = (7 / z) 3/2.  

B каждом из рассмотреных случаях степени аппроксимации  mi выбираются такими, чтобы значения функций вычислялись по крайней меpе с девятью значащими цифрами, если функции по абсолютной величине больше единицы, и с девятью десятичными знаками в противном случае.

B случае (a) окончательная точность ограничена точностью, с которой могут быть вычислены значения функций синуса и косинуса от  ζ + π / 4.

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

    SUBROUTINE  SF76R (Z, AI, BI, AID, BID, L1, L2, IERR) 

Параметры

Z - заданное значение аргумента (тип: вещественный);
AI, BI - вещественные переменные, содержащие вычисленные значения функций Эйри  Ai и  Bi  в точке  Z;
         AID -
            BID  
вещественные переменные, содержащие вычисленные значения производных функций Эйри  Ai ' и  Bi ' в точке  Z;
L1 - задает режим работы подпрограммы (тип: целый);
L1 = -1 - если необходимо вычислить только  Ai ' и  Bi ';
L1 =  0 - если необходимо вычислить  Ai, Bi, Ai ' и  Bi ';
L1 =  1 - если необходимо вычислить только  Ai и  Bi;
L2 - задает режим масштабирования (тип: целый);
L2 = 0 - если масштабирование не должно осуществляться;
L2 = 1 - если необходимо осуществить следующее масштабирование:
(Ai, Ai ') = (Ai, Ai ') exp (ζ) ,
(Bi, Bi ') = (Bi, Bi ') exp (- ζ) ,   где ζ = 2/3 z 3/2 .
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы, при этом:
IERR=1 - когда значение  ABS (Z) > SYS053 1/3, где SYS053 - максимальное число, представимое на данной машине; значение функций Эйри и их производных полагаются равными нулю;
IERR=2 - когда возможна потеря точности вычисления функций синуса и косинуса от промежуточных величин;
IERR=3 - когда значение  Z 3/2 > SYS053, где  SYS053 - максимальное число, представимое на данной машине; значения функций Эйри и их производных полагаются равными нулю;
IERR=4 - когда значение  2/3 Z 3/2 > SYS076, где  SYS076 - максимальная степень экспоненты для данной машины; значения  AI и  AID полагаются равными нулю, а значения  BI и  BID полагаются равными 3.4E38.

Версии: нет

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

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

  B качестве рабочих используются подпрограммы SF76R1, SF76R2, SF76R3, SF76R4, SF76R5.

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

         L1 = 0
         L2 = 0
         Z = 0.99
         CALL  SF76R (Z, AI, BI, AID, BID, L1, L2, IERR)

Результаты:

       AI     =   0.13689065925
       BI     =   1.198159251377
       AID  =  -0.1605015275572
       BID  =   0.9204681806696