function x=tri(n,a,d,c,b) %TRI Solve an n by n tridiagonal system. %>> x=tri(n,a,d,c,b) %where % n = number of unknowns % d = diagonal elements (n length vector) % a = sub-diagonal (n-1 length vector) % c = super-diagonal (n-1 length vector) % b = right side of system A x = b (n length vector) % x = solution (n length column vector) % %ELB 10/31/04; based on procedure "tri" in Cheney & Kincaid x=zeros(n,1); % create column vector for solution for i=2:n if abs(d(i-1))<10*eps, warning('very small diagonal entry'); end xmult=a(i-1)/d(i-1); d(i)=d(i)-xmult*c(i-1); b(i)=b(i)-xmult*b(i-1); end x(n)=b(n)/d(n); for i=n-1:-1:1 if abs(d(i))<10*eps, warning('very small diagonal entry'); end x(i)=(b(i)-c(i)*x(i+1))/d(i); end