home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / ssp / polysptp / tcnp.for < prev    next >
Text File  |  1985-11-29  |  3KB  |  91 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE TCNP
  5. C
  6. C        PURPOSE
  7. C           A SERIES EXPANSION IN CHEBYSHEV POLYNOMIALS WITH INDEPENDENT
  8. C           VARIABLE X IS TRANSFORMED TO A POLYNOMIAL WITH INDEPENDENT
  9. C           VARIABLE Z, WHERE X=A*Z+B.
  10. C
  11. C        USAGE
  12. C           CALL TCNP(A,B,POL,N,C,WORK)
  13. C
  14. C        DESCRIPTION OF PARAMETERS
  15. C           A     - FACTOR OF LINEAR TERM IN GIVEN LINEAR TRANSFORMATION
  16. C           B     - CONSTANT TERM IN GIVEN LINEAR TRANSFORMATION
  17. C           POL   - COEFFICIENT VECTOR OF POLYNOMIAL (RESULTANT VALUE)
  18. C                   COEFFICIENTS ARE ORDERED FROM LOW TO HIGH
  19. C           N     - DIMENSION OF COEFFICIENT VECTORS POL AND C
  20. C           C     - GIVEN COEFFICIENT VECTOR OF EXPANSION
  21. C                   COEFFICIENTS ARE ORDERED FROM LOW TO HIGH
  22. C                   POL AND C MAY BE IDENTICALLY LOCATED
  23. C           WORK  - WORKING STORAGE OF DIMENSION 2*N
  24. C
  25. C        REMARKS
  26. C           COEFFICIENT VECTOR C REMAINS UNCHANGED IF NOT COINCIDING
  27. C           WITH COEFFICIENT VECTOR POL.
  28. C           OPERATION IS BYPASSED IN CASE N LESS THAN 1.
  29. C           THE LINEAR TRANSFORMATION X=A*Z+B OR Z=(1/A)(X-B) TRANSFORMS
  30. C           THE RANGE (-1,+1) IN X TO THE RANGE (ZL,ZR) IN Z, WHERE
  31. C           ZL=-(1+B)/A AND ZR=(1-B)/A.
  32. C           FOR GIVEN ZL, ZR WE HAVE A=2/(ZR-ZL) AND B=-(ZR+ZL)/(ZR-ZL)
  33. C
  34. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  35. C           NONE
  36. C
  37. C        METHOD
  38. C           THE TRANSFORMATION IS BASED ON THE RECURRENCE EQUATION
  39. C           FOR CHEBYSHEV POLYNOMIALS T(N,X)
  40. C           T(N+1,X)=2*X*T(N,X)-T(N-1,X),
  41. C           WHERE THE FIRST TERM IN BRACKETS IS THE INDEX,
  42. C           THE SECOND IS THE ARGUMENT.
  43. C           STARTING VALUES ARE T(0,X)=1, T(1,X)=X.
  44. C           THE TRANSFORMATION IS IMPLICITLY DEFINED BY MEANS OF
  45. C           X = A*Z+B TOGETHER WITH
  46. C           SUM(POL(I)*Z**(I-1), SUMMED OVER I FROM 1 TO N)
  47. C           =SUM(C(I)*T(I-1,X), SUMMED OVER I FROM 1 TO N).
  48. C
  49. C     ..................................................................
  50. C
  51.       SUBROUTINE TCNP(A,B,POL,N,C,WORK)
  52. C
  53.       DIMENSION POL(1),C(1),WORK(1)
  54. C
  55. C        TEST OF DIMENSION
  56.       IF(N-1)2,1,3
  57. C
  58. C        DIMENSION LESS THAN 2
  59.     1 POL(1)=C(1)
  60.     2 RETURN
  61. C
  62.     3 POL(1)=C(1)+C(2)*B
  63.       POL(2)=C(2)*A
  64.       IF(N-2)2,2,4
  65. C
  66. C        INITIALIZATION
  67.     4 WORK(1)=1.
  68.       WORK(2)=B
  69.       WORK(3)=0.
  70.       WORK(4)=A
  71.       XD=A+A
  72.       X0=B+B
  73. C
  74. C        CALCULATE COEFFICIENT VECTOR OF NEXT CHEBYSHEV POLYNOMIAL
  75. C        AND ADD MULTIPLE OF THIS VECTOR TO POLYNOMIAL POL
  76.       DO 6 J=3,N
  77.       P=0.
  78. C
  79.       DO 5 K=2,J
  80.       H=P-WORK(2*K-3)+X0*WORK(2*K-2)
  81.       P=WORK(2*K-2)
  82.       WORK(2*K-2)=H
  83.       WORK(2*K-3)=P
  84.       POL(K-1)=POL(K-1)+H*C(J)
  85.     5 P=XD*P
  86.       WORK(2*J-1)=0.
  87.       WORK(2*J)=P
  88.     6 POL(J)=C(J)*P
  89.       RETURN
  90.       END
  91.