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 15:17:02 +0000 (UTC)
Organization: Xoran Technologies
Lines: 21
Message-ID: <h22opd$3mf$1@fred.mathworks.com>
References: <h22iil$a5s$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 1246029422 3791 172.30.248.37 (26 Jun 2009 15:17:02 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Fri, 26 Jun 2009 15:17:02 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1440443
Xref: news.mathworks.com comp.soft-sys.matlab:550917


"Thomas Clark" <t.clark@remove.spamcantab.net> wrote in message <h22iil$a5s$1@fred.mathworks.com>...
> Hello all,
> 
> I have a large, sparse, rectangular (overdetermined) matrix A.
> 
> I'm solving Ax = b, where all elements of A, x and b are nonnegative.


Here's a very simple Majorize-Minimize approach. How fast it will be depends on the structure of A, of course

 Curvs=A'*(sum(A,2)); %majorizing curvatures

 x=x0; %Initialize x with some vector x0>=0

for i=1:NumIterations  %MAIN LOOP

 gradient=A.'*(Ax-b);
 x=x-gradient./Curvs;
 x(x<0)=0;

end