|Re: [eigen] Machine precision<> too coarse|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Machine precision<> too coarse
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Tue, 3 Feb 2009 17:59:00 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=nDkU5aL8RoW0yZ9bRu67aX38rqX1O/wvZKhbR/1W4Ak=; b=PSQ1reYulqBXk+0vKh7j71bOyGB1e+c8WonGYok0NK14NimPdyLi8Oo1dX1et4TYlk vu6siEPCw6XuZIV8eh7B35SlBzvqltNj9rN9GoDreGZ7YHrSjydbEO+ULdllN7ET2A92 wuKy0Lll167G4ow0bVdkz9qDTpBiYW7+0LcQY=
- 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=aDYvksJx9wt/cV+vQMN068MdaUdCyFi+frhTtW1hxD33Z7EPPyjQlEkwNlbNgLE/YP m1BMcnzm9rTAnk7NVjxLvMhcnkZJcDgNAF8eeEL8eBYzbktYVqDIacO7CGgndxwFO+We WvMV6eMSAhLLI77Oa5qPEIifTRmp0Uvz4etnY=
Also, look at things this way:
Suppose that you have a NxN matrix of doubles, with entries between -1
and 1, except in one row where entries are smaller than 1e-12.
For example (N=2):
Do you want to consider this matrix invertible or not?
* if you consider it invertible, there's a risk that the 1e-12 entries
were just noise and were meant to be zeros
* if you consider it non invertible, there's a risk that the 1e-12
entries were really precise and were not just noise around zero
There's no way to tell in general. This isn't math -- from the math
point of view, "invertibility" only makes sense if you have infinite
precision, because invertible matrices form a dense subset i.e. any
matrix can be approached arbitrarily closely by invertible ones.
Since this isn't math, what it is? It's just a matter of common sense.
A matrix like discussed here is probably just a noisy non-invertible
matrix. Moreover: since 1e-12 is already dangerously close to the
machine epsilon, it would be crazy for the user to rely on it being
considered invertible. Which means that we (Eigen) can expect the user
to NOT rely on this matrix being considered invertible. E.g. the user,
if he's sane, won't call inverse() on it.
That's why i'm being liberal in taking a coarse precision.