[Fwd: Re: Cholesky Decomposition in JAMA vs Matlab]


Sender: Sione <sionep@xtra.co.nz>
Subject: Re: Cholesky Decomposition in JAMA vs Matlab



I have this  [2 x 2]  matrix below :
--------------------------------

double[][] array = {{0.0442 ,  -0.0232},  {-0.0233 ,   0.0222}};
Matrix A = new Matrix(array);
CholeskyDecomposition  cholesky = new CholeskyDecomposition(A);
System.out.println(" Symmetric and positive definite = "+cholesky.isSPD());

-------------------------------
where the  isSPD method return a false, ie, matrix  A is   NOT   
"Symmetric and positive definite".

In  Matlab , the same matrix gives  a   "p = 0" , which means that  
matrix  A  is
"Symmetric and positive definite".

Why is the difference  Cleve ?

Any hint would be appreciated.

Cheers,
Sione.


Cleve Moler wrote:
> Yes, I can see why you were confused.
> You can always look at the result and see if R'*R is equal to A.
>  -- Cleve
>
> -----Original Message-----
> From: jama@nist.gov [mailto:jama@nist.gov] On Behalf Of Sione
> Sent: Monday, March 03, 2008 2:09 PM
> To: Multiple recipients of list
> Subject: Re: Cholesky Decomposition in JAMA vs Matlab
>
> I have just read the matlab user-guide carefully and concluded that :
>
> p = 0  in Cholesky to mean that  matrix  A is symmetric and positive 
> definite which is "true" instead of being "false" (where a zero in 
> matlab traditionally means "false").  So, the cholesky in JAMA has 
> exactly the same output as in cholesky in Matlab, therefore my own 
> question has been sorted.
>
> Cheers,
> Sione.
>
>
> Sione wrote:
>> Please discard my previous message as my example matrix was wrong. 
>> Here is the correct codes:
>>
>> Does anyone know why the following output in JAMA is different from 
>> that in Matlab for cholesky decomposition?
>>
>> JAMA:
>> ----
>> public static void main(String[] args){
>>    double[][] d = {{1,    -1},{ -1,     2}};
>>    Matrix A = new Matrix(d);
>>    CholeskyDecomposition chol = new CholeskyDecomposition(A);
>>    Matrix R = chol.getL();
>>    System.out.println(" chol.isSPD = "+chol.isSPD());
>>  }
>>
>> The output is :==>  "chol.isSPD = true"
>>
>>
>> Matlab:
>> ------
>>
>> A = [1    -1; -1     2];
>> [R,p] = chol(A);
>>
>> The output for 'p' is :==>  p = 0
>>
>>
>> In Matlab, anything that is zero is regarded as  false (logical 
>> value), and this means that  'chol' function in matlab returns a 
>> "FALSE" (ie, p=0)  that A is not symmetric and positive definite,  
>> while that of  JAMA returns "TRUE".
>>
>> Is my interpretation of both the outputs in JAMA vs Matlab is correct 
>> here, that they are different for the same matrix A?
>>
>> Any hint (perhaps from Cleve Moler) would be appreciated.
>>
>> Cheers,
>> Sione.
>>
>>
>>
>>
>>
>>
>
>
>
>
>
>
>
>





Date Index | Thread Index | Problems or questions? Contact list-master@nist.gov