Miller's recurrence algorithm

From testwiki
Jump to navigation Jump to search

Template:Short description Miller's recurrence algorithm is a procedure for the backward calculation of a rapidly decreasing solution of a three-term recurrence relation developed by J. C. P. Miller.[1] It was originally developed to compute tables of the modified Bessel function[2] but also applies to Bessel functions of the first kind and has other applications such as computation of the coefficients of Chebyshev expansions of other special functions.[3]

Many families of special functions satisfy a recurrence relation that relates the values of the functions of different orders with common argument x.

The modified Bessel functions of the first kind In(x) satisfy the recurrence relation

In1(x)=2nxIn(x)+In+1(x).

However, the modified Bessel functions of the second kind Kn(x) also satisfy the same recurrence relation

Kn1(x)=2nxKn(x)+Kn+1(x).

The first solution decreases rapidly with n. The second solution increases rapidly with n. Miller's algorithm provides a numerically stable procedure to obtain the decreasing solution.

To compute the terms of a recurrence a0 through aN according to Miller's algorithm, one first chooses a value M much larger than N and computes a trial solution taking initial conditionaM to an arbitrary non-zero value (such as 1) and taking aM+1 and later terms to be zero. Then the recurrence relation is used to successively compute trial values for aM1, aM2 down to a0. Noting that a second sequence obtained from the trial sequence by multiplication by a constant normalizing factor will still satisfy the same recurrence relation, one can then apply a separate normalizing relationship to determine the normalizing factor that yields the actual solution.

In the example of the modified Bessel functions, a suitable normalizing relation is a summation involving the even terms of the recurrence:

I0(x)+2m=1(1)mI2m(x)=1

where the infinite summation becomes finite due to the approximation that aM+1 and later terms are zero.

Finally, it is confirmed that the approximation error of the procedure is acceptable by repeating the procedure with a second choice of M larger than the initial choice and confirming that the second set of results for a0 through aN agree within the first set within the desired tolerance. Note that to obtain this agreement, the value of M must be large enough such that the term aM is small compared to the desired tolerance.

In contrast to Miller's algorithm, attempts to apply the recurrence relation in the forward direction starting from known values of I0(x) and I1(x) obtained by other methods will fail as rounding errors introduce components of the rapidly increasing solution.[4]

Olver[2] and Gautschi[5] analyses the error propagation of the algorithm in detail.

For Bessel functions of the first kind, the equivalent recurrence relation and normalizing relationship are:[6]

Jn1(x)=2nxJn(x)Jn+1(x)
J0(x)+2m=1J2m(x)=1.

The algorithm is particularly efficient in applications that require the values of the Bessel functions for all orders 0N for each value of x compared to direct independent computations of N+1 separate functions.

References

Template:Reflist

  1. Cite error: Invalid <ref> tag; no text was provided for refs named Miller
  2. 2.0 2.1 Cite error: Invalid <ref> tag; no text was provided for refs named Olver
  3. Cite error: Invalid <ref> tag; no text was provided for refs named Nemeth
  4. Cite error: Invalid <ref> tag; no text was provided for refs named Hart
  5. Cite error: Invalid <ref> tag; no text was provided for refs named Gautschi
  6. Cite error: Invalid <ref> tag; no text was provided for refs named Arkfen