Schmidt decomposition#
Let us assume a quantum state with two subsystems, labeled by physical indices \(i\) and \(j\), running over dimensions \(d_1\) and \(d_2\). In quantum notation
This quantum state has a minimal decomposition, called the Schmidt decomposition, which expresses the state as a convex combination of states in two orthogonal basis:
such that \(\langle\phi_k|\phi_j\rangle=\delta_{jk}\) and \(\langle\xi_k|\xi_j\rangle=\delta_{jk}\), with non-negative Schmidt weights $s_kgeq 0$.
From a tensor’s perspective, what we have achieved is a decomposition of the form
If the number of Schmidt vectors d is small, this decomposition is advantageous. This may be the case also when the weights \(|s_k|^2\) are small enough that they can be dropped above a certain size.
How are the Schmidt vectors computed? The orthogonal basis for the i and j subsystems are actually the eigenstates of the reduced density matrices. For instance
We could thus compute those matrices, diagonalize them and obtain the tensors \(\phi_{ki}\) and \(\xi_{kj}\).
However, a more efficient approach is to use the singular-value decomposition
or SVD, provided in Python by scipy.linalg.svd()
. This algorithm recreates
a matrix \(A\) as the product of two isometries \(U\) and \(V\),
and a diagonal matrix of weights \(\Sigma_{ij}=s_i\delta_{ij}\). thus
Using this decomposition
Now, if we identify the matrix \(A\) with our original tensor \(\psi\), we can identify the isometries with the Schmidt basis