PartialTranspose

PartialTranspose is a function that computes the partial transpose of a matrix. The transposition may be taken on any subset of the subsystems on which the matrix acts.

Syntax

 * XPT = PartialTranspose(X)
 * XPT = PartialTranspose(X,SYS)
 * XPT = PartialTranspose(X,SYS,DIM)

Argument descriptions

 * X: A matrix to have its partial transpose returned.
 * SYS (optional, default 2): A scalar or vector containing the indices of the subsystems on which the transpose is to be applied.
 * DIM (optional, by default has all subsystems of equal dimension): A specification of the dimensions of the subsystems that X lives on. DIM</tt> can be provided in one of three ways:
 * If DIM</tt> is a scalar, it is assumed that X</tt> lives on the tensor product of two spaces, the first of which has dimension DIM</tt> and the second of which has dimension length(X)/DIM</tt>.
 * If $X \in M_{n_1} \otimes \cdots \otimes M_{n_p}$ then DIM</tt> should be a row vector containing the dimensions (i.e., DIM = [n_1, ..., n_p]</tt>).
 * If the subsystems aren't square (i.e., $X \in M_{m_1, n_1} \otimes \cdots \otimes M_{m_p, n_p}$) then DIM</tt> should be a matrix with two rows. The first row of DIM</tt> should contain the row dimensions of the subsystems (i.e., the mi's) and its second row should contain the column dimensions (i.e., the ni's). In other words, you should set DIM = [m_1, ..., m_p; n_1, ..., n_p]</tt>.

A bipartite square matrix
By default, the PartialTranspose</tt> function performs the transposition on the second subsystem:

By specifying the SYS</tt> argument, you can perform the transposition on the first subsystem instead:

Applying the transpose to both the first and second subsystems results in the standard transpose of X</tt>: