c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
*=*=*=*= sys3.html =*=*=*=*
subroutine sys3(n,a,b,d,e,y) c....................................................................... c c Inversion d'un systeme lineaire tridiagonal c c | b1 d1 | | y1 | | e1 | c | a2 b2 d2 | | y2 | | e2 | c | a3 b3 d3 | * | y3 | = | e3 | c | .... | | | | | c | an bn | | yn | | en | c c in : * n,a,b,d,e c out : * y c c....................................................................... implicit double precision (a-h,o-z) parameter (nmax=300) c....................................................................... dimension a(nmax),b(nmax),d(nmax),e(nmax),y(nmax) c....................................................................... dimension as(nmax),ds(nmax),x(nmax) c....................................................................... if (n.gt.nmax) print *,'Oh ! (1) --> sys3.f' if (dabs(a(1)).gt.0.d0) print *,'Oh ! (2) --> sys3.f' if (dabs(d(n)).gt.0.d0) print *,'Oh ! (3) --> sys3.f' c....................................................................... as(n)=a(n)/b(n) ds(n)=e(n)/b(n) do 10001 i=n-1,1,-1 x(i)=1.d0/(b(i)-d(i)*as(i+1)) as(i)=a(i)*x(i) ds(i)=(e(i)-d(i)*ds(i+1))*x(i) 10001 continue y(1)=ds(1) do 10002 i=2,n y(i)=ds(i)-as(i)*y(i-1) 10002 continue c....................................................................... return end