112 views (last 30 days)

Show older comments

I have a positive definite matrix C for which R=chol(C) works well. I want to apply the chol function to a new matrix A = U*C*U' where U is a unitary matrix obtained as output from SVD, i.e. from [V,S,U] = dvd(T); but I get an error telling me that A is not positive definite. I checked that det(U) = 1.0 so I don't understand why the symmetric matrix A is not positive definite.

Given that C is positive definite then y'*C*y>0 and if I let y = U'*x then x'*U*C*U'*x>0 which implies that U*C*U'is also positive definite.

Is this problem due to round off or am I missing some important linear algebra concept. If not is there a way around this problem?

Zhiyong Niu
on 10 Nov 2017

John D'Errico
on 17 Jun 2014

Youssef Khmou
on 16 Jun 2014

this an interesting problem,

Generally, the matrix C must contain some negative and positive eigenvalues ( eig(C)) according the description, in the other hand, the matrix A is positive semi definite only if C is diagonal matrix with the diagonal elements being the eigenvalues corresponding the eigenvectors U(:,1),....U(:,N).

In this case you multiply C whether diagonal or not with non corresponding eigenvectors, so A can not be positive semi definite .

Matt J
on 17 Jun 2014

A is positive semi definite only if C is diagonal matrix with the diagonal elements being the eigenvalues corresponding the eigenvectors U(:,1),....U(:,N).

Not true. Suppose U=eye(N). Then A=C and both are positive (semi) definite simultaneously, regardless of whether C is diagonal.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!