Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices*From*: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>*Date*: Wed, 24 Feb 2010 10:44:09 +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 :from:date:message-id:subject:to:content-type; bh=AJEoRodGzXs89hstgOTQoQPzOac0jRlwPPbsiQvxhfM=; b=q5FXKBW/soynHIOW/tujD8A9VKYlc6TGvDhQ/Z3Ta2aS9IOnYnS3OYdQulkHZ1PV9G 0uTyhBxkTkFA5OdoM1vQXligDGYUBfMRBjM4DY5DhtIpzrhC8bekNBufrG2GF3gAgq48 uTMtcy/HuDF/bYCsRXYlUA07Z0e3MEVOqlEIE=*Domainkey-signature*: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; b=o0AIjgyA3IPZkXdFyiXCQ3Y3bczKl/xrTkjgMl0gI8kqSahARfi+FcrH6VPLNl16L5 Cpg3jmDD/SYDQbEpjELD4gnsGmZPHqVQaUvcJYMIk7E9A56+JPtQ3VqOZPTsuUFvtjXA +qEEggo1YuSt7h8554lraBZBTDGlFxR7jiemk=

Hi,

note that the LDLT decomp does pivoting, so it is normal that you don't get the same diagonal matrix. If you reconstruct the matrix from the decomp you will see that in this case the decomp is correct.

In the devel branch I've just added a reconstructedMatrix() to LDLT for that precise purpose, so you can do:

cout << (A - A_factored.reconstructedMatrix()) << endl;

As a side note,

A.diagonal().setOnes();

works as expected ;) (simpler than a home made for loop)

gael.

On Wed, Feb 24, 2010 at 3:29 AM, Ben Goodrich <bgokgm@xxxxxxxxxxxxxx> wrote:

Hi,

I have found another robustness problem with ldlt() in the current

development branch. Some combination of rank-deficiency, constant

diagonal, pivoting, and double precision can make it impossible to

roundtrip a matrix through the LDLt decomposition. I am attaching

another test case that yields the output below.

Thank you,

Ben

A = LDL' has a unit diagonal (apart from numerical noise)

1

1

1

1

1

This is a numerical disaster (compare the second cells).

Here is the true D

1

0.915092

0

0

0

Here is the calculated D

1

0.0785762

2.01553e-16

7.97973e-17

1.39591e-15

This is good (because the diagonal of A is forced to have 1.0 in all its cells).

Here is the true D

1

0.915092

0

0

0

Here is the calculated D

1

0.915092

-6.06069e-16

-8.0296e-16

-8.4893e-16

**Follow-Ups**:**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices***From:*Jitse Niesen

**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices***From:*Benoit Jacob

**References**:**[eigen] [patch] LDLt decomposition with rank-deficient matrices***From:*Ben Goodrich

**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices***From:*Benoit Jacob

**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices***From:*Ben Goodrich

**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices***From:*Benoit Jacob

**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices***From:*Ben Goodrich

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] a branch for SMP (openmp) experimentations** - Next by Date:
**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices** - Previous by thread:
**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices** - Next by thread:
**Re: [eigen] [patch] LDLt decomposition with rank-deficient matrices**

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