1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
Rys polynomials depend on their order, n, and a continuous parameter, x (the
independent variable of the polynomial is customarily called t, but sometimes
it's the other way around). So for any value of x there is a family of
orthogonal polynomials given by the order n.
For large enough values of x, the roots of the Rys polynomials and the
corresponding weights for the quadrature can be obtained from the roots and
weights of Hermite polynomials of double order, with a proper x-dependent
scaling. The script "asymptotic.py" computes the value of x from which the
error in this procedure falls below a specified threshold, which will be
different for each order n.
For values of x below the "asymptotic limit", the roots and weights of the Rys
polynomials can be precomputed at certain values of x, divided by intervals and
results within each interval can be fitted by an m-degree polynomial. Rys
polynomials of n degree have n roots and n associated weights, so they will
require 2*n different fitting polynomials. In addition, different intervals or
ranges of x will require different sets of fitting polynomials. The script
"genfit.py" generates these fitting polynomials (with predefined m) to ensure
that the roots and weights at some finer-grained x values can be reproduced
with a specified accuracy. The (trimmed) output can be used as the "rysrw" file
for Molcas. The script "testfit.py" Takes a rysrw-formatted file and computes
the actual errors generated by the fitting polynomials.
For higher orders of n not tabulated in rysrw, or as an alternative approach,
the roots and weights can be computed from the alpha and beta coefficients of
the three-term recurrence of the Rys polynomials. These alpha and beta
coefficients are infinite series and depend on x, but only the first n of them
are needed to compute the roots and weights of Rys polynomials of order n. The
script "genab.py" calculates the first members of the alpha and beta series for
a range of x values. The x values are not evenly spaced, but follow a seemingly
arbitrary rule. The output can be used as the "abdata" file for Molcas.
|