On 10/23/13 8:03 PM, Ted Dunning wrote:
> On Wed, Oct 23, 2013 at 8:33 PM, Sean Owen wrote:
>
>> it feels a little funny just
>> because then we should have similar logic for other decompositions. I
>> think I remember the LU one stops early, always.
>>
> The stopping early is definitely an option
On Wed, Oct 23, 2013 at 8:33 PM, Sean Owen wrote:
> it feels a little funny just
> because then we should have similar logic for other decompositions. I
> think I remember the LU one stops early, always.
>
The stopping early is definitely an option with QR. With LU, it isn't so
clear.
Ah I see so you can just stop computing the eigenvectors when the
eigenvalues are too small. That does seem more efficient and then the
zero values are left as literally 0. I think I should back up and
implement the patch that way.
The original question stands then -- what to do about the singular
On Wed, Oct 23, 2013 at 3:14 PM, Sean Owen wrote:
> EigenDecomposition resembles QR in this respect, as far as they are
> implemented here. This argues for them to treat arguments similarly.
>
Actually not. It is quite reasonable for the EigenDecomposition to stop
when singularity is reached.
Yeah it's a tricky one. I agree with the functionality, because the QR
decomposition can happily operate on a singular matrix. R will be
singular if A is, AFAIK. So the singularity threshold business belongs
more in the bit that uses R, yes.
The same could be said of the SVD. But it provides no si
Hi Sean,
while looking at the QRDecomposition, it is interesting that the threshold
value provided to the constructor of QRDecomposition is only used to pass
it on the the Solver created by getSolver().
Imho, it would be more logical to chose the singularity threshold when
calling getSolver() for
In MATH-1045 (https://issues.apache.org/jira/browse/MATH-1045) we have
discussed adding a zero threshold tolerance to EigenDecomposition just
like QRDecomposition has. This involves adding a new constructor with
a new double parameter.
Just one problem: there's already such a constructor:
/**