chol() say matrix is not positive defnite even though all eigenvalues are positive
    11 views (last 30 days)
  
       Show older comments
    
    Morten Nissov
 on 29 Oct 2019
  
    
    
    
    
    Commented: Morten Nissov
 on 20 Nov 2019
            Title exaplins it more or less. I need to make the cholesky decomposition of a matrix and the function, chol(), returns an error saying that the matrix is not positive definite.
The code in question:
Qd = [
    0.0106,    0.0178;
    0.0097,    0.0195
];
chol(Qd)
The Qd matrix is calcualted with through some more complex means but this is one example of a Qd matrix that returns the following outputs:
K>> Qd
Qd =
    0.0106    0.0178
    0.0097    0.0195
K>> chol(Qd)
Error using chol
Matrix must be positive definite. 
K>> eig(Qd)
ans =
    0.0011
    0.0289
K>> 
0 Comments
Accepted Answer
  Steven Lord
    
      
 on 29 Oct 2019
        You're not factorizing the matrix you think you're factorizing. From the documentation for the chol function: "If A is nonsymmetric , then chol treats the matrix as symmetric and uses only the diagonal and upper triangle of A."
Is your Qd matrix symmetric?
issymmetric(Qd) % false
So what matrix are you actually trying to factorize?
A = triu(Qd) + triu(Qd, 1).'
That matrix is symmetric but is not positive definite.
More Answers (0)
See Also
Categories
				Find more on Linear Algebra in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
