trisp.f 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. *DECK TRISP
  2. SUBROUTINE TRISP (N, A, B, C, D, U, Z)
  3. C***BEGIN PROLOGUE TRISP
  4. C***SUBSIDIARY
  5. C***PURPOSE Subsidiary to SEPELI
  6. C***LIBRARY SLATEC
  7. C***TYPE SINGLE PRECISION (TRISP-S)
  8. C***AUTHOR (UNKNOWN)
  9. C***DESCRIPTION
  10. C
  11. C This subroutine solves for a non-zero eigenvector corresponding
  12. C to the zero eigenvalue of the transpose of the rank
  13. C deficient ONE matrix with subdiagonal A, diagonal B, and
  14. C superdiagonal C , with A(1) in the (1,N) position, with
  15. C C(N) in the (N,1) position, and all other elements zero.
  16. C
  17. C***SEE ALSO SEPELI
  18. C***ROUTINES CALLED (NONE)
  19. C***REVISION HISTORY (YYMMDD)
  20. C 801001 DATE WRITTEN
  21. C 890831 Modified array declarations. (WRB)
  22. C 891214 Prologue converted to Version 4.0 format. (BAB)
  23. C 900402 Added TYPE section. (WRB)
  24. C***END PROLOGUE TRISP
  25. C
  26. DIMENSION A(*) ,B(*) ,C(*) ,D(*) ,
  27. 1 U(*) ,Z(*)
  28. C***FIRST EXECUTABLE STATEMENT TRISP
  29. BN = B(N)
  30. D(1) = A(2)/B(1)
  31. V = A(1)
  32. U(1) = C(N)/B(1)
  33. NM2 = N-2
  34. DO 10 J=2,NM2
  35. DEN = B(J)-C(J-1)*D(J-1)
  36. D(J) = A(J+1)/DEN
  37. U(J) = -C(J-1)*U(J-1)/DEN
  38. BN = BN-V*U(J-1)
  39. V = -V*D(J-1)
  40. 10 CONTINUE
  41. DEN = B(N-1)-C(N-2)*D(N-2)
  42. D(N-1) = (A(N)-C(N-2)*U(N-2))/DEN
  43. AN = C(N-1)-V*D(N-2)
  44. BN = BN-V*U(N-2)
  45. DEN = BN-AN*D(N-1)
  46. C
  47. C SET LAST COMPONENT EQUAL TO ONE
  48. C
  49. Z(N) = 1.0
  50. Z(N-1) = -D(N-1)
  51. NM1 = N-1
  52. DO 20 J=2,NM1
  53. K = N-J
  54. Z(K) = -D(K)*Z(K+1)-U(K)*Z(N)
  55. 20 CONTINUE
  56. RETURN
  57. END