Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: nonnegative Ax=b lsq for large, sparse A.
Date: Fri, 26 Jun 2009 16:36:02 +0000 (UTC)
Organization: Cambridge Univ
Lines: 42
Message-ID: <h22tdi$em2$1@fred.mathworks.com>
References: <h22iil$a5s$1@fred.mathworks.com> <h22k59$om8$1@fred.mathworks.com> <h22ot5$bca$1@fred.mathworks.com> <h22q2l$sdn$1@fred.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: webapp-02-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1246034162 15042 172.30.248.37 (26 Jun 2009 16:36:02 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Fri, 26 Jun 2009 16:36:02 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 870214
Xref: news.mathworks.com comp.soft-sys.matlab:550939


@Tim,

Thanks very much, you're more than welcome to add it to your collection - if you like, I can submit it via the online interface.
I've resubmitted the matrix in text file form (A and b) at the same link, the .mat file must have become corrupted.
www2.eng.cam.ac.uk/~thc29/lsqnonneg_sparse/

@Matt,

Unfortunately, the hessian is not diagonally concentrated, so I'm trying the solution out without a preconditioner. 

However, I am getting some very good results. This is standing up extremely well against an alternative (iterative) approach to the same overall problem... It's also  reasonably quick even without preconditioning. I'm on the way, and will invest more time testing this rigorously.

Thanks, both of you :)

Tom Clark



"Matt " <xys@whatever.com> wrote in message <h22q2l$sdn$1@fred.mathworks.com>...
> "Thomas Clark" <t.clark@remove.spamcantab.net> wrote in message <h22ot5$bca$1@fred.mathworks.com>...
> 
> > Unfortunately, lsqlin isn't quite there... The solution is pathologically slow for this matrix - my feeling is that the preconditioning isn't working well. I've tried increasing the PrecondBandWidth option, but to little avail.(increasing it to Inf causes a direct factorisation which leaves me out of memory, of course). 
> --------
> 
> If the Hessian A.'*A is diagonally concentrated, you might be able to get away with pre-conditioning by inverting the Hessian diagonal. Here's a modification of the Maj-Min approach incorporating this idea.
> 
> W=sum(A.^2,2); %Hessian diagonal
> W=1./W; %invert
> 
> 
> 
>  Curvs=A'*(sum(A,2).*W); %majorizing curvatures
> 
>  x=x0; %Initialize x with some vector x0>=0
> 
> for i=1:NumIterations %MAIN LOOP
> 
>  gradient=A.'*((Ax-b).*W);
>  x=x-gradient./Curvs;
>  x(x<0)=0;
> 
> end