I understand that if two matrices are PSD, then the element-wise product of the two matrices is also PSD. However if a matrix in the form $K = A \odot B$ is PSD for any PSD matrix $A$. How about $B$? Must it be PSD? How to prove it?

I am thinking about the following proof.

Since $ A \odot B$ is PSD, we have:

for any column real vector $\mathbf{x}$, $\mathbf{x}^T(A \odot B)\mathbf{x} \geq 0$.

That is, trace($\mathbf{x}^T(A \odot B)\mathbf{x} $)$\geq 0$ $\implies$ trace($A*diag(\mathbf{x}^T)*B*diag(\mathbf{x}) $)$\geq 0$.

As A is PSD, we decompose it as $A = LL^T$. Then we have:

trace($L^T*diag(\mathbf{x}^T)*B*diag(\mathbf{x})*L $)$\geq 0$.

Then, for any column real vector $\mathbf{y}$,

$\mathbf{y}^T*$trace($L^T*diag(\mathbf{x}^T)*B*diag(\mathbf{x})*L $)$*\mathbf{y}$$\geq 0$.

$\implies$ $\mathbf{y}^T*L^T*diag(\mathbf{x}^T)*B*diag(\mathbf{x})*L*\mathbf{y} \geq 0$.

If we can show $\mathbf{y}^T*L^T*diag(\mathbf{x}^T)$ can represent any real vector, then we can prove $B$ is PSD.

The problem is how to prove $\mathbf{y}^T*L^T*diag(\mathbf{x}^T)$ can represent any real vector.



Let $A$ be a matrix such that for any positive semidefinite $B$ the matrix $A\odot B$ is positive semidefinite.

Consider matrix $$B=\begin{pmatrix}1&\dots&1\\\vdots&\ddots&\vdots\\1&\dots&1\end{pmatrix}.$$ It's positive semidefinite, so $A\odot B$ is positive semidefinite. On the other hand, $A\odot B=A$. Hence $A$ is positive semidefinite.

  • $\begingroup$ Thanks! Is it possible to theoretically prove it? $\endgroup$ – Wei Feb 12 at 2:39
  • $\begingroup$ I rephrased the answer to look like a proof. $\endgroup$ – Sergei Golovan Feb 12 at 9:02
  • $\begingroup$ Thanks! I am also thinking about the following proof: A⊙B is PSD, then for any x, we have x'(A⊙B )x >= 0. By applying bi-linear form, we have x'(A⊙B )x = trace(Adiag(x')*Bdiag(x)) >=0. Since A is PSD, we can decompose it: A = LL'; Then we obtain: trace(L'diag(x')*Bdiag(x)*L)>=0. For any y, we have: y' trace(L'diag(x')*Bdiag(x)*L)y >= 0. i,e. y'L'*diag(x')*Bdiag(x)*L*y>=0. If y'*L'*diag(x') can represent any real vector, then B is PSD. $\endgroup$ – Wei Feb 12 at 10:25
  • $\begingroup$ Notice that trace is a number, so you can't really multiply it by y' and y unless y is a number as well. But then it doesn't make much sense either. $\endgroup$ – Sergei Golovan Feb 12 at 10:29
  • $\begingroup$ y is a vector and trace is scalar, they can't multiply? $\endgroup$ – Wei Feb 12 at 10:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.