>> load hwk7 >> who Your variables are: G g >> p = colmmd(G); >> [L,U] = lu(G(:,p)); >> nnz(L)+nnz(U), ans = 7697 >> p = symmmd(G); >> [L,U] = lu(G(p,p)); >> nnz(L)+nnz(U), ans = 12013 >> p = symrcm(G); >> [L,U] = lu(G(p,p)); >> nnz(L)+nnz(U), ans = 11451 >> p = colperm(G); >> [L,U] = lu(G(:,p)); >> nnz(L)+nnz(U), ans = 4986 >> % this appears to be best >> x = U\(L\g); >> x(p) = x; >> norm(G*x-g) ans = 9.5397e-14 >> % to do even better >> [p,q,r,s] = dmperm(G); >> r,s r = 1 21 41 51 61 81 91 111 121 s = 1 21 41 51 61 81 91 111 121 >> size(G) ans = 120 120 >> % find out how much fill in generated in the block factorization >> H = G(p,q); >> totnnz = 0; >> for i=1:8 Hi = H(r(i):r(i+1)-1,s(i):s(i+1)-1); pi = colmmd(Hi); [li,ui] = lu(Hi(:,pi)); totnnz = totnnz + nnz(li) + nnz(ui) - nnz(Hi); end >> totnnz+nnz(G) ans = 4410 >> % this has even smaller fill-in than colperm, so should use it >> % however, too lazy to show how to do block back substitution.