1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
function test20
%TEST20 test chol_updown2
%
% Example:
% test20
% See also: testall
% CXSparse, Copyright (c) 2006-2022, Timothy A. Davis. All Rights Reserved.
% SPDX-License-Identifier: LGPL-2.1+
clear functions
rand ('state', 0) ;
maxerr = [0 0 0 0] ;
for trials = 1:100
n = fix (100 * rand (1)) ;
A = rand (n) ;
if (~ispc)
if (mod (trials, 2) == 0)
A = A + 1i*rand(n) ;
end
end
A1 = A*A' + n*eye (n) ;
try
L1 = chol (A1)' ;
catch
continue ;
end
err1 = norm (L1*L1'-A1) ;
w = rand (n,1) ;
A2 = A1 + w*w' ;
L2 = chol (A2)' ;
err2 = norm (L2*L2'-A2) ;
% try an update
L2b = chol_updown2 (L1, +1, w) ;
err2b = norm (L2b*L2b'-A2) ;
% try a downdate
L1b = chol_updown2 (L2, -1, w) ; %#ok
err1b = norm (L1b*L1b'-A1) ;
fprintf ('%3d: %6.2e %6.2e : %6.2e %6.2e\n', n, err1, err2, err2b, err1b) ;
% pause
maxerr = max (maxerr, [err1 err2 err2b err1b]) ;
end
fprintf ('maxerr: %g\n', maxerr) ;
|