Re: [eigen] Problem inverting a Matrix4f with Eigen 2.0.0
• To: eigen@xxxxxxxxxxxxxxxxxxx
• Subject: Re: [eigen] Problem inverting a Matrix4f with Eigen 2.0.0
• From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
• Date: Sat, 17 Jul 2010 12:18:46 -0400
• Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=AsC6MGst8C/wN40Q/Wr1JlKl1tZPipcS7OVvUJfob5FEqLzZFkLY/5696+4wbZNn5J 1+9OeXLj6lW78gSR6BxGo5S0ocyDVI26qSnS2ViybFCuXDbzSpoXfLtznML3ACMNSzQ6 aoOoI9VMHxBEEHYS4EaIWovlUd83zBCd+BAFM=

But here as usual, I think it's LAPACK who is right, not MATLAB and NumPy!

Even if the mutually inequivalent notions of condition numbers used by
LAPACK feel complicated and inelegant, they are actually more relevant
to the problems at hand, than a single unified notion of condition
number can be.

Another reason why we decided not to expose condition numbers in Eigen
is that for the main purpose they're used for, namely checking if a
result is reliable, there is a better approach which is: check the
result itself. For example, if you want to check how accurate your
matrix inverse is, just compute matrix*inverse and see how close it is
to the identity matrix. Nothing beats that! When it comes to more
general solving with potentially non full rank matrices, this is even
better, because the condition number of the lhs matrix alone doesn't
tell all you need to know (it also depends on your particular rhs), so
the approach we're recommending in Eigen, to compute lhs*solution and
compare with rhs, is the only way to know for sure how good your
solution is.

Benoit

> I admit that pointing to LAPACK was a bad example (I am least familiar
> with that package of those mentioned), however, MATLAB and NumPy are
> far more common these days as computational interfaces than LAPACK
> (even if they are built on top of its routines).
>
> A
>
> On Sat, Jul 17, 2010 at 6:55 PM, Aron Ahmadia <aja2111@xxxxxxxxxxxx> wrote:
>> Hi Benoit,
>>
>> Sorry, I meant the inverse in this sense, this is something that
>> arises when solving the two problems:
>>
>> Ab = x
>> Ax = b
>>
>> Where I leave the unknown as x, and the fixed as b.  Both problems can
>> be bound by a condition number that depends on the perturbations of x
>>
>> \kappa = ||A||*||b||/||x||     <= ||A||*||A^-1|| (forward)
>> \kappa = ||A^-1||*||b||/||x|| <= ||A||*||A^-1|| (backward)
>>
>> The term ||A||*||A^-1||, since it arises in both forward and backward
>> problems, is called the condition number of A.  This is pretty solidly
>> in the literature, and you wouldn't confuse anybody if you had a
>> general "calculate the condition number of a matrix" function and more
>> specialized ones for calculating the condition numbers of other
>> specific operations.
>>
>> A
>>
>
>
>



 Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/