Текст подпрограммы и версий ( Фортран ) sf76r.zip |
Тексты тестовых примеров ( Фортран ) tsf76r.zip |
Текст подпрограммы и версий ( Си ) sf76r_c.zip |
Тексты тестовых примеров ( Си ) tsf76r_c.zip |
Текст подпрограммы и версий ( Паскаль ) sf76r_p.zip |
Тексты тестовых примеров ( Паскаль ) tsf76r_p.zip |
Вычисление функций Эйри 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