What you describe is very weird, no doubt about that. I don't have the stats
module installed, so I cannot test. However, Maggie and Chris put a lot of
work into the matrix inversion code a few months back due to strange results
with PDL:: Stats. The problem may be fixed in the latest cpan packages.

What versions of PDL and PDL:: Stats are you using?

David
On Jun 10, 2011 6:21 AM, "Stéphane Lévy" <[email protected]> wrote:
> Thank you Chris.
> I would rather suspect a bug in the cov_table() function, based on your
> answer.
> cov_table is a function that computes covariance matrix (transposed). To
> use it, you have to do : use PDL::Stats
> If PDL::Stats is installed on your machine, you will be able to
> reproduce the bug.
> Thanx again for your help.
> Stéphane
>
> Le 10/06/2011 12:57, chm a écrit :
>> Hi-
>>
>> I can't reproduce this problem since I'm
>> not familiar with the cov_table() routine
>> (at least it doesn't show up on my PDL
>> install). See BUGS from the PDL distribution
>> or at
>>
>> http://cpansearch.perl.org/src/CHM/PDL-2.4.9/BUGS
>>
>> for some additional information that you'll
>> need to include for better diagnosis and
>> help with problems. Some possibilities that
>> come to mind are:
>>
>> (1) Multiple variables of the same name
>> where the lexical one might be "hiding"
>> the other expected value. Compiling
>> with 'use strict;' might help catch
>> these.
>>
>> (2) Dataflow is changing data in unexpected
>> ways (i.e., withing the cov_table() call)
>>
>> (3) Bug in the inv() routine. A number of
>> issues were addressed in the latest
>> PDL-2.4.9 release. Which PDL version
>> are you using? You could check against
>> the matinv() routine from PDL::Slatec.
>>
>> If you are using an old version of PDL, I
>> suggest upgrading to the current release.
>> There have been many bugs fixed and some
>> very nice feature and usability improvements
>> over the last year.
>>
>> Cheers,
>> Chris
>>
>> On 6/10/2011 5:54 AM, Stéphane Lévy wrote:
>>> Hello,
>>> I have found unexpected, astonishing results using the PDL matrix inv()
>>> function by 2 different ways.
>>> In the first way I manipulate PDL objects all the way, in the second way
>>> I recreate objects by pasting values of the original PDL object into a
>>> new PDL object.
>>> First way gives unexpected, wrong result, second way leads to accurate
>>> result. I do not understand this and it worries me a bit as I am
>>> supposed to use intensively PDL matrix functions.
>>> Anybody can give me an explanation of this, and tell me what I should do
>>> differently when I manipulate objects?
>>> Here is what I did :
>>>
>>> # step 1A : creating a (2,2) matrix
>>> Perl> my $m = random(2,2)
>>> $PDL1 =
>>> [
>>> [0.65707276 0.12124598]
>>> [0.95303134 0.43850649]
>>> ]
>>> ;
>>>
>>> # step 1B : computing cov table of the matrix
>>> Perl> my $c = $m->cov_table()
>>> $PDL1 =
>>> [
>>> [0.071777584 0.068924048]
>>> [0.068924048 0.066183954]
>>> ]
>>> ;
>>>
>>> # step 1C : testing if the the matrix multiplied by its inverse is equal
>>> to identity matrix
>>> Perl> $c x inv($c)
>>> $PDL1 =
>>> [
>>> [ 1 0]
>>> [-0.125 1.125]
>>> ]
>>> ;
>>> # we observe that step 1C leads to unexpected result
>>>
>>> # step 2A : pasting the content of PDL obtained in step 1B to a new PDL
>>> object : the 2 PDL objects are supposedly perfectly identical
>>> Perl> $m = pdl([0.071777584,0.068924048],[0.068924048,0.066183954])
>>> $PDL1 =
>>> [
>>> [0.071777584 0.068924048]
>>> [0.068924048 0.066183954]
>>> ]
>>> ;
>>>
>>> # step 2B : same as step 1C, testing if the the matrix multiplied by its
>>> inverse is equal to identity matrix
>>> Perl> $m x $m->inv()
>>> $PDL1 =
>>> [
>>> [1 0]
>>> [0 1]
>>> ]
>>> ;
>>> # we observe that step 2B leads to expected result
>>>
>>> Thank you.
>>> Best regards.
>>> Stéphane
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Perldl mailing list
>>> [email protected]
>>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>>
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to