c
c     Second Edition
c     Numerical Analysis:
c     The Mathematics of Scientific Computing
c     D.R. Kincaid & E.W. Cheney
c     Brooks/Cole Publ., 1996
c     ISBN 0-534-33892-5
c     COPYRIGHT (c) 1996
c
c     Section 4.3
c
c     Example of tridiagonal system
c
c
c     file: tri.f
c
      parameter (n=10)
      real a(n),d(n),c(n),b(n),x(n) 
c       
      do 2 i=1,n 
         d(i) = 2.0
         a(i) = 0.5
         c(i) = 0.5      
         b(i) = 3.0   
 2    continue
      b(1) = 2.5
      b(n) = 2.5     
c       
      print *  
      print *,' Tridiagonal system example'
      print *,' Section 4.3, Kincaid-Cheney'
      print *
c
      call tri(n,a,d,c,b,x) 
c       
      do 3 i=1,n
         print 4,i,x(i)
 3    continue
c
 4    format (3x,'x(',i2,') =',e13.6)
      stop
      end
c  
      subroutine tri(n,a,d,c,b,x)     
c
c     tridiagonalize the matrix
c
      real  a(n),d(n),c(n),b(n),x(n) 
      real xmult
      integer i
c
      do 5 i = 2,n
         xmult = a(i-1)/d(i-1) 
         d(i) = d(i) - xmult*c(i-1)    
         b(i) = b(i) - xmult*b(i-1)    
 5    continue    
      x(n) = b(n)/d(n)      
      do 6 i = n-1,1,-1     
         x(i) = (b(i) - c(i)*x(i+1))/d(i)
 6    continue    
c
      return      
      end 
