Evaluates a sequence of exponentially scaled modified Bessel functions of the second kind of fractional order.
XNU — Fractional
order of the function. (Input)
XNU must be less than
1.0 in absolute value.
X — Argument for which the sequence of Bessel functions is to be evaluated. (Input)
NIN — Number of elements in the sequence. (Input)
BKE — Vector of length NIN containing the values of the function through the series. (Output)
Generic: CALL BSKES (XNU, X, NIN, BKE)
Specific: The specific interface names are S_BSKES and D_BSKES.
Single: CALL BSKES (XNU, X, NIN, BKE)
Double: The double precision name is DBSKES.
Function BSKES evaluates exKv+k−1(x), for k = 1, …, n. For the definition of Kv(x), see BSKS.
Currently, ν is restricted to be less than 1 in absolute
value. A total of |n| values is stored in the array BKE.
For n positive, BKE(1)
contains exKν
(x), BKE(2)
contains exKν
+
1(x), …, and BKE(N)
contains exKν
+ n
−1(x). For n negative, BKE(1)
contains exKν(x), BKE(2)
contains
, …, and BKE(|n|)
contains . This routine is particularly
useful for calculating sequences for large x provided n ≤
x. (Overflow becomes a problem if n << x.) n
must not be zero, and x must not be greater than zero. Moreover, |ν| must
be less than 1.
Also, when |n| is large compared with x,
|ν+ n| must not be so large that overflows.
BSKES is based on the work of Cody (1983).
1. If NIN is positive, BKE(1) contains EXP(X) times the value of the function of order XNU, BKE(2) contains EXP(X) times the value of the function of order XNU + 1, …, and BKE(NIN) contains EXP(X) times the value of the function of order XNU + NIN − 1.
2.
If NIN is
negative, BKE(1)
contains EXP(X) times the value of
the function of order XNU, BKE(2) contains EXP(X) times the value of
the function of order XNU − 1, …, and BKE(ABS(NIN)) contains EXP(X) times the value of
the function of order
XNU + NIN + 1.
In this example, Kν−1∕2(2.0), ν= 1, …, 6 is computed and printed.
USE BSKES_INT
USE UMACH_INT
IMPLICIT NONE
! Declare variables
INTEGER NIN
PARAMETER (NIN=6)
!
INTEGER K, NOUT
REAL BKE(NIN), X, XNU
! Compute
XNU = 0.5
X = 2.0
CALL BSKES (XNU, X, NIN, BKE)
! Print the results
CALL UMACH (2, NOUT)
DO 10 K=1, NIN
WRITE (NOUT,99999) X, XNU+K-1, X, BKE(K)
10 CONTINUE
99999 FORMAT (' exp(', F6.3, ') * K sub ', F6.3, &
' (', F6.3, ') = ', F8.3)
END
exp( 2.000) * K sub 0.500 ( 2.000) = 0.886
exp( 2.000) * K sub 1.500 ( 2.000) = 1.329
exp( 2.000) * K sub 2.500 ( 2.000) = 2.880
exp( 2.000) * K sub 3.500 ( 2.000) = 8.530
exp( 2.000) * K sub 4.500 ( 2.000) = 32.735
exp( 2.000) * K sub 5.500 ( 2.000) = 155.837
PHONE: 713.784.3131 FAX:713.781.9260 |