From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1387 invoked by alias); 20 Nov 2007 20:50:03 -0000 Received: (qmail 1379 invoked by uid 22791); 20 Nov 2007 20:50:03 -0000 X-Spam-Check-By: sourceware.org Received: from network-theory.com (HELO mail.network-theory.co.uk) (66.199.228.187) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 20 Nov 2007 20:49:56 +0000 Date: Tue, 20 Nov 2007 20:50:00 -0000 Message-ID: <87sl307idd.wl%bjg@network-theory.co.uk> From: Brian Gough To: gsl-discuss@sourceware.org Subject: Re: gsl_multifit_linear fails in a certain case In-Reply-To: <20071120060732.GB8438@hippogriff.physics.drexel.edu> References: <20071120060732.GB8438@hippogriff.physics.drexel.edu> User-Agent: Wanderlust/2.14.0 (Africa) Emacs/22.1 Mule/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Message-Mac: 5d9da71241bbda3b54efb94e2356afe5 Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org X-SW-Source: 2007-q4/txt/msg00033.txt.bz2 At Mon, 19 Nov 2007 23:07:32 -0700, Patrick Alken wrote: > > This post is a continuation of a discussion on help-gsl. Basically > gsl_multifit_linear will fail if the following 2 conditions are met: > > (1) the matrix X has no inverse (ie: it has a singular value of 0 in its > SVD decomp) > > and > > (2) the RHS of the fit is a zero vector > > In this case, we are solving the equation X c = 0 and X has no inverse, > but gsl_multifit_linear still tries to compute the psuedo-inverse > and fudges the zero singular value to force it to make an inverse. > The result returned by the routine is c = 0 which is not the desired > solution. > > A possible fix would be to check for a singular value of zero and if > one is found, check to see if the RHS vector is 0. If it is, then > don't try to compute S^{-1} but instead compute the null space of > X which is the corresponding column of the matrix V. > > I'm not really sure what to do if there is more than one zero singular > value. > Perhaps the manual needs to be clearer about what is computed, which is the unique least squares solution that has minimum norm solution coefficients |c|^2 (this only comes into play if there's a null space - otherwise there's only one solution anyway). The idea is to minimise any spurious components of the solution. This is usually what is needed when fitting data and pretty standard. When the rhs=0 and there is one singular value there is still an infinite number of solutions, as the overall scale is undetermined. The least squares choice is to return the minimum norm solution, i.e. zero. In the help-gsl question, which was about fitting the equation for a plane, the appropriate method is orthogonal regression rather than linear regression, as there's no dependent variable. -- Brian Gough