commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lecomte (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (MATH-1417) weird result in RRQR decomposition.
Date Tue, 09 May 2017 14:16:04 GMT

     [ https://issues.apache.org/jira/browse/MATH-1417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lecomte updated MATH-1417:
--------------------------

Ok, i got the source.
I'm not a QR specialist. I took a look at the code and I've found what gave me that weird
result.

In performHouseholderReflection:(RRQRDecomposition.java:111), just change
for (int j = 0; j < qrt[i].length; j++) {
(Norm is computed against the whole column )
By
for (int j = minor; j < qrt[i].length; j++) {
(Norm is computed under the current pivot )

 In performHouseholderReflection:(QRDecomposition.java:139-143) the norm is calculated again
using  the column starting from minor pivot, 
then in my case, I have a column whose values are before the diagonal ( then before the pivot
). This gives a "full norm" that is not null but that is null beside pivot.
This column is given for computing a reflector but this calculous failed ( a == 0) because
"restricted norm" is null.

If norms are computed always the same manner, the pivoting is ok and the result is ok in my
test case.

Further testing should be done but maybe it can be a quick fix.

Hope this can help.

I'm also surprised to see a test (a!=0) in QR Decomposition with double values.

-----Message d'origine-----
De : Gilles (JIRA) [mailto:jira@apache.org] 
Envoyé : mardi 9 mai 2017 14:07
À : LECOMTE Jean-Francois
Objet : [jira] [Commented] (MATH-1417) weird result in RRQR decomposition.


    [ https://issues.apache.org/jira/browse/MATH-1417?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16002571#comment-16002571
] 

Gilles commented on MATH-1417:
------------------------------

bq. Is common math easily compiled once i checked it out from git ?

Asumimg that you have "maven" installed, it should just be a matter of running this command:
{noformat}
mvn compile
{noformat}





--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
__________________________
Avant d'imprimer, pensez à l'environnement ! Please consider the environment before printing
! 
Ce message et toutes ses pièces jointes sont confidentiels et établis à l'intention exclusive
de ses destinataires. Toute utilisation non conforme à sa destination, toute diffusion ou
toute publication, totale ou partielle, est interdite, sauf autorisation expresse. IFP Energies
nouvelles décline toute responsabilité au titre de ce message. This message and any attachments
are confidential and intended solely for the addressees. Any unauthorised use or dissemination
is prohibited. IFP Energies nouvelles should not be liable for this message.
__________________________


> weird result in RRQR decomposition.
> -----------------------------------
>
>                 Key: MATH-1417
>                 URL: https://issues.apache.org/jira/browse/MATH-1417
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.6.1
>         Environment: linux RH6
> netbeans 8.2 
> java 1.8
>            Reporter: Lecomte
>
> When using RRQRDecomposition on rank deficient matrix, results are wrong.
> double[][] Xi = {
>             {0, 0, 0, 0, 0, 0, 0, 0, 0},
>             {0, 1, 0, 0, 0, 0, 0, 0, 0},
>             {0, 0, 1, 0, 0, 0, 0, 0, 0},
>             {0, 0, 1, 0, 0, 0, 0, 0, 0},
>             {0, 0, 1, 0, 0, 0, 0, 0, 0},
>             {0, 0, 0, 1, 0, 0, 0, 0, 0},
>             {0, 0, 0, 0, 0, 0, 1, 0, 0},
>             {0, 0, 0, 0, 0, 0, 0, 0, 0},};
> With this matrix, i obtain: 
> rank 6
> R:
> |1,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 1,000 1,000 1,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 1,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 1,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> Q:
> |0,000 0,000 1,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |1,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 1,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 1,000 0,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 1,000 0,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 1,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 1,000 0,000 0,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 0,000 1,000 0,000|
> |0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 1,000|
> Where Scipy (lapack) or ejml gives me:
> rank 4
> Type = dense real , numRows = 9 , numCols = 8
> -1,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000  -1,000   0,000   0,000  -1,000   0,000  -1,000   0,000  
>  0,000   0,000  -1,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000  -1,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
> Type = dense real , numRows = 9 , numCols = 9
>  0,000   0,000   0,000   0,000   0,000   0,000   1,000   0,000   0,000  
> -1,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000  -1,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000  -1,000   0,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   1,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   1,000   0,000   0,000   0,000  
>  0,000   0,000   0,000  -1,000   0,000   0,000   0,000   0,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   0,000   0,000   1,000   0,000  
>  0,000   0,000   0,000   0,000   0,000   0,000   0,000   0,000   1,000  
> That are the results i expect.
>  



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message