I'm using a Python library where I can specify a matrix by its eigendecomposition. It accepts $r$ eigenvectors of dimension $n$ ($r\leq n$) and $r$ corresponding eigenvalues, and outputs a matrix of dimension $n$. It does this by the following procedure:

  1. Arrange the r eigenvectors in a matrix of dimension $n\times r$ (so that the eigenvectors are columns) and then multiply each column of the resulting matrix by that eigenvector's associated eigenvalue

  2. Multiply the result of step 1 by the transpose of the original $n\times r$ matrix of eigenvectors in order to get an $n\times n$ matrix as a result.

I have not seen this matrix decomposition before. I attempted to calculate a test example where I "decomposed" a random matrix according to this procedure, and it definitely didn't give me the original matrix back.

What is this procedure known as and what are its properties and its properties of the resulting matrix?

  • $\begingroup$ Unless the eigenvectors are mutually orthogonal, the procedure that you describe does not correspond to the eigendecomposition of a matrix $\endgroup$ Commented Mar 4, 2022 at 21:12
  • 1
    $\begingroup$ Please state which Python library you're referring to $\endgroup$ Commented Mar 4, 2022 at 21:12
  • 1
    $\begingroup$ @BenGrossmann Ah sorry I forgot to mention they were mutually orthogonal! The code is the first code excerpt in this article dppy.readthedocs.io/en/latest/finite_dpps/definition.html $\endgroup$ Commented Mar 5, 2022 at 14:02

1 Answer 1


In general, suppose that we have an $n \times r$ matrix $$ V = \pmatrix{v_1 & \cdots & v_r} $$ where the vectors $v_1,\dots,v_r$ and eigenvalues $\lambda_1,\dots,\lambda_r$. Then the matrix $$ M = V\pmatrix{\lambda_1 \\ & \ddots \\ && \lambda_r} V^T = \lambda_1 v_1v_1^T + \cdots + \lambda_r v_rv_r^T $$ is a symmetric matrix with eigenvalues $\lambda_1,\dots,\lambda_r$ and associated eigenvectors $v_1,\dots,v_r$. The remaining eigenvalues of $M$ are equal to $0$.

Note: the product $$ V\pmatrix{\lambda_1 \\ & \ddots \\ && \lambda_r} $$ multiplies the $i$th column of $V$ by $\lambda_i$ for $i=1,\dots,r$.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .