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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE PECS
  5. C
  6. C        PURPOSE
  7. C           ECONOMIZATION OF A POLYNOMIAL FOR UNSYMMETRIC RANGE
  8. C
  9. C        USAGE
  10. C           CALL PECS (P,N,BOUND,EPS,TOL,WORK)
  11. C
  12. C        DESCRIPTION OF PARAMETERS
  13. C           P     - COEFFICIENT VECTOR OF GIVEN POLYNOMIAL
  14. C           N     - DIMENSION OF COEFFICIENT VECTOR
  15. C           BOUND - RIGHT HAND BOUNDARY OF INTERVAL
  16. C           EPS   - INITIAL ERROR BOUND
  17. C           TOL   - TOLERANCE FOR ERROR
  18. C           WORK  - WORKING STORAGE OF DIMENSION N
  19. C
  20. C        REMARKS
  21. C           THE INITIAL COEFFICIENT VECTOR P IS REPLACED BY THE
  22. C           ECONOMIZED VECTOR.
  23. C           THE INITIAL ERROR BOUND EPS IS REPLACED BY A FINAL
  24. C           ERROR BOUND.
  25. C           N IS REPLACED BY THE DIMENSION OF THE REDUCED POLYNOMIAL.
  26. C           IN CASE OF AN ARBITRARY INTERVAL (XL,XR) IT IS NECESSARY
  27. C           FIRST TO CALCULATE THE EXPANSION OF THE GIVEN POLYNOMIAL
  28. C           WITH ARGUMENT X IN POWERS OF T = (X-XL).
  29. C           THIS IS ACCOMPLISHED THROUGH SUBROUTINE PCLD.
  30. C           OPERATION IS BYPASSED IN CASE OF N LESS THAN 1.
  31. C
  32. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  33. C           NONE
  34. C
  35. C        METHOD
  36. C           SUBROUTINE PECS TAKES AN (N-1)ST DEGREE POLYNOMIAL
  37. C           APPROXIMATION TO A FUNCTION F(X) VALID WITHIN A TOLERANCE
  38. C           EPS OVER THE INTERVAL (0,BOUND) AND REDUCES IT IF POSSIBLE
  39. C           TO A POLYNOMIAL OF LOWER DEGREE VALID WITHIN TOLERANCE
  40. C           TOL.
  41. C           THE COEFFICIENT VECTOR OF THE N-TH SHIFTED CHEBYSHEV
  42. C           POLYNOMIAL IS CALCULATED FROM THE RECURSION FORMULA
  43. C           A(K) = -A(K+1)*K*L*(2*K-1)/(2*(N+K-1)*(N-K+1)).
  44. C           REFERENCE
  45. C           K. A. BRONS, ALGORITHM 37, TELESCOPE 1, CACM VOL. 4, 1961,
  46. C           NO. 3, PP. 151.
  47. C
  48. C     ..................................................................
  49. C
  50.       SUBROUTINE PECS(P,N,BOUND,EPS,TOL,WORK)
  51. C
  52.       DIMENSION P(1),WORK(1)
  53.       FL=BOUND*0.5
  54. C
  55. C     TEST OF DIMENSION
  56. C
  57.     1 IF(N-1)2,3,6
  58.     2 RETURN
  59.     3 IF(EPS+ABS(P(1))-TOL)4,4,5
  60.     4 N=0
  61.       EPS=EPS+ABS(P(1))
  62.     5 RETURN
  63. C
  64. C     CALCULATE EXPANSION OF CHEBYSHEV POLYNOMIAL
  65. C
  66.     6 NEND=N-1
  67.       WORK(N)=-P(N)
  68.       DO 7 J=1,NEND
  69.       K=N-J
  70.       FN=(NEND-1+K)*(N-K)
  71.       FK=K*(K+K-1)
  72.     7 WORK(K)=-WORK(K+1)*FK*FL/FN
  73. C
  74. C        TEST FOR FEASIBILITY OF REDUCTION
  75. C
  76.       FN=ABS(WORK(1))
  77.       IF(EPS+FN-TOL)8,8,5
  78. C
  79. C     REDUCE POLYNOMIAL
  80. C
  81.     8 EPS=EPS+FN
  82.       N=NEND
  83.       DO 9 J=1,NEND
  84.     9 P(J)=P(J)+WORK(J)
  85.       GOTO 1
  86.       END
  87.