Evaluates a sequence of odd, periodic, integer order, real Mathieu functions.
X — Argument for which the sequence of Mathieu functions is to be evaluated. (Input)
Q —
Parameter. (Input)
The parameter Q must be
positive.
N — Number of elements in the sequence. (Input)
SE — Vector of
length N
containing the values of the function through the
series.
(Output)
SE(I) contains the value
of the Mathieu function of order I at X for I = 1 to N.
Generic: CALL MATSE (X, Q, N, SE)
Specific: The specific interface names are S_MATSE and D_MATSE.
Single: CALL MATSE (X, Q, N, SE)
Double: The double precision function name is DMATSE.
The eigenvalues of Mathieu's equation are computed using MATEE. The function values are then computed using a sum of Bessel functions, see Gradshteyn and Ryzhik (1965), equation 8.661.
1. Workspace may be explicitly provided, if desired, by use of M2TSE/DM2TSE. The reference is
CALL M2TSE (X, Q, N, SE, NORDER, NEEDEV, EVAL0, EVAL1, COEF, WORK, BSJ)
The additional arguments are as follows:
NORDER — Order of the matrix used to
compute the eigenvalues. (Input)
It must be greater than N. Routine MATSE computes
NORDER by
the following call to M3TEE.
CALL M3TEE (Q, N, NORDER)
NEEDEV — Logical variable, if .TRUE., the eigenvalues must be computed. (Input)
EVAL0 — Real work vector of length
NORDER
containing the eigenvalues computed by MATEE with ISYM = 1 and IPER = 0.
(Input/Output)
If NEEDEV is .TRUE., then EVAL0 is computed by M2TSE; otherwise,
it must be set as an input value.
EVAL1 — Real work vector of length
NORDER
containing the eigenvalues computed by MATEE with ISYM = 1 and IPER = 1.
(Input/Output)
If NEEDEV is .TRUE., then EVAL1 is computed by M2TSE; otherwise,
it must be set as an input value.
COEF — Real work vector of length NORDER + 4.
WORK — Real work vector of length NORDER + 4.
BSI — Real work vector of length 2 * NORDER + 1.
2. Informational error
Type Code
4 1 The iteration for the eigenvalues did not converge.
In this example, sen(x = π/4, q = 10), n = 0, …, 9 is computed and printed.
Figure 12- 2 Plot of sen(x, q = 1)
USE CONST_INT
USE MATSE_INT
USE UMACH_INT
IMPLICIT NONE
! Declare variables
INTEGER N
PARAMETER (N=10)
!
INTEGER K, NOUT
REAL SE(N), Q, X
! Compute
Q = 10.0
X = CONST('PI')
X = 0.25* X
CALL MATSE (X, Q, N, SE)
! Print the results
CALL UMACH (2, NOUT)
DO 10 K=1, N
WRITE (NOUT,99999) K-1, X, Q, SE(K)
10 CONTINUE
99999 FORMAT (' se sub', I2, ' (', F6.3, ',', F6.3, ') = ', F6.3)
END
se sub 0 ( 0.785,10.000) = 0.250
se sub 1 ( 0.785,10.000) = 0.692
se sub 2 ( 0.785,10.000) = 1.082
se sub 3 ( 0.785,10.000) = 0.960
se sub 4 ( 0.785,10.000) = 0.230
se sub 5 ( 0.785,10.000) = -0.634
se sub 6 ( 0.785,10.000) = -0.981
se sub 7 ( 0.785,10.000) = -0.588
se sub 8 ( 0.785,10.000) = 0.219
se sub 9 ( 0.785,10.000) = 0.871
PHONE: 713.784.3131 FAX:713.781.9260 |