1function L = choldn (Lold,w) 2%CHOLDN Cholesky downdate 3% given Lold and w, compute L so that L*L' = Lold*Lold' - w*w' 4% 5% Example: 6% L = cholnd (Lold,w) 7% See also: testall 8 9% Copyright 2006-2012, Timothy A. Davis, http://www.suitesparse.com 10 11n = size (Lold,1) ; 12L = Lold ; 13 14alpha = 1 ; 15beta = 1 ; 16 17wold = w ; 18wnew = zeros (n,1) ; 19 20for i = 1:n 21 22 a = w (i) / L(i,i) ; 23 alpha = alpha - a^2 ; 24 if (alpha <= 0) 25 error ('not pos def') ; 26 end 27 beta_new = sqrt (alpha) ; 28 b = beta_new / beta ; 29 c = (a / (beta*beta_new)) ; 30 beta = beta_new ; 31 32 % L (i,i) = b * L (i,i) ; 33 34 wnew (i) = a ; 35 36 for k = i:n 37 w (k) = w (k) - a * L (k,i) ; 38 L (k,i) = b * L (k,i) - c * w(k) ; 39 end 40 41end 42 43% w 44% wnew 45disp (wnew - Lold\wold) 46