22 0 X 21 32 0 x131 b(2:n)-x1L(2:n,1) n3 bn -x,. nn Saxpy b(j+1: n)<b(j+l: n)-, l(i+l: n,j)
(2 : ) (2 : ,1) 0 0 0 1 1 1 3 1 3 1 2 1 2 1 3 2 2 3 3 2 3 3 2 2 b n x L n b x l b x l b x l x x x l l l l l l n n n n n n n = − − − − = 1 1 11 x = b /l j j jj x = b / l b( j 1: n) b( j 1: n) x L( j 1: n, j) + + − j + saxpy
function x- LTriSol(L, b) n= len ngth(b) X=zeros(n forj=l: n-1 x=b(/Lg,j) b(+1n)=b(j+1n)-L(+1:nj)*x(j end x(n) =b(n/L(n,n) The version involves n2 flops, just like the row-oriented dot product version developed eariler
function x = LTriSol(L,b) n = length(b); x = zeros(n,1); for j=1:n-1 x(j) = b(j)/L(j,j); b(j+1:n) = b(j+1:n) - L(j+1:n,j)*x(j); end x(n) = b(n)/L(n,n); The version involves n 2 flops, just like the row-oriented, dot product version developed eariler
Backward Substitution 13 b 0 22 23 2 00 b 33 x2=(b2-l23x3)/2 3=(b1-4
Backward Substitution = 3 2 1 3 2 1 3 3 2 2 2 3 1 1 1 2 1 3 0 0 0 b b b x x x u u u u u u 3 1 1 2 2 1 3 3 1 1 2 2 2 3 3 2 2 3 3 3 3 ( )/ ( )/ / x b u x u x u x b u x u x b u = − − = − =
x(n)=b(n)/U(n,n) fori=n-1:-1:1 x()-(b()-U(i,i+1:n)*x(i+1n)/U(i,1) ent Backward Substitution function x= UTriSol(U, b) n= length(b) ⅹ= zeros for j=n: 1: 2 Column-oriented Saxpy x()=bj)U〔j); b(1」-1)=b(1」-1)-X(j)*U(1j-1j) end x(1)=b(1)/U(1,1)
x(n)=b(n)/U(n,n); for i=n-1:-1:1 x(i)=(b(i)-U(i,i+1:n)*x(i+1:n))/U(i,i) end function x = UTriSol(U,b) n = length(b); x = zeros(n,1); for j=n:-1:2 x(j) = b(j)/U(j,j); b(1:j-1) = b(1:j-1) - x(j)*U(1:j-1,j); end x(1) = b(1)/U(1,1); Column-oriented saxpy Backward Substitution
Multiple right-Hand sides lX= B LX( k)=B(k) X=zeros(nr) for kl. r ⅹ= zeros( X( k)-LTriSol(L, B( k);For k-1: r end for j=l: n-1 X(, k)=B0, kLG j BG+l: n, k)=BG+l n, k)-LO+l: n,j)*XGk) ene X(n, k)=B(n, kL(n,n) End
Multiple Right-Hand Sides LX = B LX (:, k) = B(:, k) X=zeros(n,r); for k=1:r X(:,k)=LTriSol(L,B(:,k)); end x = zeros(n,1); For k=1:r for j=1:n-1 X(j,k) = B(j,k)/L(j,j); B(j+1:n,k) = B(j+1:n,k) - L(j+1:n,j)*X(j,k); end X(n,k) =B(n,k)/L(n,n); End