function klu_demo % KLU demo % % Example: % klu_demo % % See also klu, btf % KLU, Copyright (c) 2004-2022, University of Florida. All Rights Reserved. % Authors: Timothy A. Davis and Ekanathan Palamadai. % SPDX-License-Identifier: LGPL-2.1+ load west0479 A = west0479 ; n = size (A,1) ; b = rand (n,1) ; clf subplot (2,2,1) ; spy (A) title ('west0479') ; subplot (2,2,2) ; [p, q, r] = btf (A) ; drawbtf (A, p, q, r) ; title ('BTF form') ; [x,info,c] = klu (A, '\', b) ; matlab_condest = condest (A) ; matlab_cond = cond (full (A)) ; fprintf ('MATLAB condest: %g KLU condest: %g cond: %g\n', ... matlab_condest, c, matlab_cond) ; fprintf ('\nKLU with scaling, AMD ordering and condition number estimate:\n') ; [LU,info] = klu (A, struct ('ordering',0, 'scale', 1)) ; x = klu (LU, '\', b) ; resid = norm (A*x-b,1) / norm (A,1) ; rgrowth = full (min (max (abs ((LU.R \ A (LU.p,LU.q)) - LU.F)) ./ ... max (abs (LU.U)))) ; fprintf ('resid: %g KLU condest: %g rgrowth: %g\n', resid, c, rgrowth) ; disp (info) ; subplot (2,2,3) ; spy (LU.L + LU.U + LU.F) ; title ('KLU+AMD factors') ; fprintf ('\nKLU with COLAMD ordering\n') ; [LU,info] = klu (A, struct ('ordering',1)) ; x = klu (LU, '\', b) ; resid = norm (A*x-b,1) / norm (A,1) ; fprintf ('resid: %g\n', resid) ; disp (info) ; subplot (2,2,4) ; spy (LU.L + LU.U + LU.F) ; title ('KLU+COLAMD factors') ; fprintf ('\nKLU with natural ordering (lots of fillin)\n') ; [x,info] = klu (A, '\', b, struct ('ordering',2)) ; resid = norm (A*x-b,1) / norm (A,1) ; fprintf ('resid: %g\n', resid) ; disp (info) ; try fprintf ('\nKLU with CHOLMOD(A''*A) ordering\n') ; [x,info] = klu (A, '\', b, struct ('ordering',3)) ; resid = norm (A*x-b,1) / norm (A,1) ; fprintf ('resid: %g\n', resid) ; disp (info) ; fprintf ('\nKLU with CHOLMOD(A+A'') ordering\n') ; [x,info] = klu (A, '\', b, struct ('ordering',4)) ; resid = norm (A*x-b,1) / norm (A,1) ; fprintf ('resid: %g\n', resid) ; disp (info) ; catch fprintf ('KLU test with CHOLMOD skipped (CHOLMOD not installed)\n') ; end