[ODE] Choleski factorization

Russ Smith russ at q12.org
Fri Mar 21 23:16:01 2003


hi,

it sounds like you're getting close to the "principal pivoting"
algorithm for LCP solving. the PP algorithm works like this:

	solve the LCP problem:  A*x=b+w, x>=0, w>=0, x'*w=0
	where A is n*n, x and w are n*1

	S = a set of indexes, initially empty

	while(1) {
	  // form a 'principle submatrix' and solve for x(S)
	  x = 0
	  x(S) = inv(A(S,S)) * b(S);

	  // compute the residual
  	  w = 0
      	  w(!S) = A(!S,S)*x(S)-b(!S);

	  // find the first violated index and switch it
	  if any elements of x are < 0 then
	    remove index of first x element that is < 0 from S
	  else if any elements of w are < 0 then
	    add index of first w element that is < 0 to S
	  else return		// we're done
	}

in this notation, !S is the set of indexes that are not in S. this
algorithm will converge for all positive definite matrices A and has
'expected' polynomial running time.

> My question is, is a Cholesky Factorization also a factorization for
> all of its sub-matrices?

if you have the factorization A=L*L', then you also have the
factorizations A(1:n,1:n)=L(1:n,1:n)*L(1:n,1:n)' for all n (in matlab
notation). other submatrix factorizations can be gotten incrementally,
see the ODE source for an incremantal factorization updater.

russ.

-- 
Russell Smith
http://www.q12.org