RECCF
Computes recurrence coefficients for various monic polynomials.
Required Arguments
N — Number of recurrence coefficients. (Input)
B — Array of length N containing recurrence coefficients. (Output)
C — Array of length N containing recurrence coefficients. (Output)
Optional Arguments
IWEIGH — Index of the weight function. (Input)
Default: IWEIGH = 1.
IWEIGH |
wt(x) |
Interval |
Name |
1 |
1 |
(-1,1) |
Legendre |
2 |
|
(-1,1) |
Chebyshev 1st kind |
3 |
|
(-1,1) |
Chebyshev 2nd kind |
4 |
|
(-∞,∞) |
Hermite |
5 |
|
(-1,1) |
Jacobi |
6 |
|
(0,∞) |
Generalized Laguerre |
7 |
|
(-∞,∞) |
Hyperbolic Cosine |
ALPHA — Parameter used in the weight function with some values of IWEIGH, otherwise it is ignored. (Input)
Default: ALPHA=1.0.
BETAW — Parameter used in the weight function with some values of IWEIGH, otherwise it is ignored. (Input)
Default: BETAW=1.0.
FORTRAN 90 Interface
Generic: CALL RECCF (N, B, C [, …])
Specific: The specific interface names are S_RECCF and D_RECCF.
FORTRAN 77 Interface
Single: CALL RECCF (N, IWEIGH, ALPHA, BETAW, B, C)
Double: The double precision name is DRECCF.
Description
The routine RECCF produces the recurrence coefficients for the orthogonal polynomials for some of the most important weights. It is assumed that the orthogonal polynomials are monic; hence, the three-term recursion may be written as
where p0 = 1 and p-1 = 0. It is obvious from this representation that the degree of pi is i and that pi is monic. In order for the recurrence to give rise to a sequence of orthogonal polynomials (with respect to a nonnegative measure), it is necessary and sufficient that ci > 0.
Comment
The recurrence coefficients B(I) and C(I) define the monic polynomials via the relation P(I) = (X − B(I + 1)) * P(I − 1) − C(I + 1) * P(I − 2). The zero-th moment
of the weight function is returned in C(1).
Example
Here, we obtain the well-known recurrence relations for the first six monic Legendre polynomials, Chebyshev polynomials of the first kind, and Laguerre polynomials.
USE RECCF_INT
USE UMACH_INT
IMPLICIT NONE
INTEGER N
PARAMETER (N=6)
INTEGER I, IWEIGH, NOUT
REAL ALPHA, B(N), C(N), BETAW
! Get output unit number
CALL UMACH (2, NOUT)
!
CALL RECCF (N, B, C)
WRITE (NOUT,99996)
WRITE (NOUT,99999) (I,B(I),I,C(I),I=1,N)
!
IWEIGH = 2
CALL RECCF (N, B, C, IWEIGH=IWEIGH)
WRITE (NOUT,99997)
WRITE (NOUT,99999) (I,B(I),I,C(I),I=1,N)
!
IWEIGH = 6
ALPHA = 0.0
BETAW = 0.0
CALL RECCF (N, B, C, IWEIGH=IWEIGH, ALPHA=ALPHA)
WRITE (NOUT,99998)
WRITE (NOUT,99999) (I,B(I),I,C(I),I=1,N)
!
99996 FORMAT (1X, 'Legendre')
99997 FORMAT (/, 1X, 'Chebyshev, first kind')
99998 FORMAT (/, 1X, 'Laguerre')
99999 FORMAT (6(6X,'B(',I1,') = ',F8.4,7X,'C(',I1,') = ',F8.5,/))
END
Legendre
B(1) = 0.0000 C(1) = 2.00000
B(2) = 0.0000 C(2) = 0.33333
B(3) = 0.0000 C(3) = 0.26667
B(4) = 0.0000 C(4) = 0.25714
B(5) = 0.0000 C(5) = 0.25397
B(6) = 0.0000 C(6) = 0.25253
Chebyshev, first kind
B(1) = 0.0000 C(1) = 3.14159
B(2) = 0.0000 C(2) = 0.50000
B(3) = 0.0000 C(3) = 0.25000
B(4) = 0.0000 C(4) = 0.25000
B(5) = 0.0000 C(5) = 0.25000
B(6) = 0.0000 C(6) = 0.25000
Laguerre
B(1) = 1.0000 C(1) = 1.00000
B(2) = 3.0000 C(2) = 1.00000
B(3) = 5.0000 C(3) = 4.00000
B(4) = 7.0000 C(4) = 9.00000
B(5) = 9.0000 C(5) = 16.00000
B(6) = 11.0000 C(6) = 25.00000