Choi Matrix of the Amplitude-Damping Channel

Mathematical Foundations, numerical solution.

Open In Colab

Choi Matrix of the Amplitude-Damping Channel


Background

A quantum channel can be specified by listing its action on every input state, but that is an unwieldy object to test or compare. A tidier description packs the whole channel into one matrix. Prepare a maximally entangled pair, send one half through the channel while the other half waits untouched, and the joint state that comes out, the Choi matrix, encodes everything the channel can do. The Choi-Jamiolkowski isomorphism makes the dictionary between channel and matrix exact, and it trades a hard requirement for an easy one. Complete positivity, the demand that the channel stay physical even when applied to part of a larger entangled system, becomes the single statement that the Choi matrix has no negative eigenvalues.

The channel studied here is amplitude damping, which models an excited qubit leaking energy to its environment and settling toward its ground state. This is the \(T_1\) relaxation familiar from nuclear magnetic resonance and from superconducting qubits, where an excitation decays over time. Because every state is drawn toward \(|0\rangle\), the channel is non-unital and does not leave the maximally mixed state in place, unlike isotropic noise that has no preferred direction. A single parameter, the probability that the excitation is lost, sets how strong the damping is.

Reading the channel off its Choi matrix turns an abstract condition into a concrete calculation. Once the matrix is built, checking that it describes a valid channel is a matter of inspecting a four-by-four spectrum, and the rank of that matrix reports how many Kraus operators the channel genuinely needs, which in turn signals whether the channel is reversible or has begun to lose information.

This exercise builds the Choi matrix from the Kraus operators, finds its spectrum \(\{2-\gamma,\gamma,0,0\}\) and confirms that it stays non-negative for every damping strength, and reads the limiting cases of no damping and full reset off the rank of the matrix.

Mathematical background

The Choi-Jamiolkowski isomorphism turns a channel into a state on a doubled space. Acting with the channel on one half of the unnormalized maximally entangled vector \(|\Omega\rangle = \sum_i |i\rangle|i\rangle\) produces the Choi matrix

\[ J(\mathcal{E}) = (\mathcal{E} \otimes \mathrm{id})\,|\Omega\rangle\langle\Omega| = \sum_{i,j} \mathcal{E}(|i\rangle\langle j|) \otimes |i\rangle\langle j| . \]

The map \(\mathcal{E}\) is completely positive if and only if \(J(\mathcal{E})\) is positive semidefinite, and trace preserving if and only if \(\mathrm{Tr}_1 J(\mathcal{E}) = \mathbb{I}\), so channel properties become spectral properties of a matrix. The amplitude-damping channel models relaxation from \(|1\rangle\) to \(|0\rangle\) with probability \(\gamma\) through the Kraus operators

\[ K_0 = \begin{pmatrix}1 & 0 \\ 0 & \sqrt{1-\gamma}\end{pmatrix}, \qquad K_1 = \begin{pmatrix}0 & \sqrt{\gamma} \\ 0 & 0\end{pmatrix}, \]

and its Choi matrix has eigenvalues that expose how the channel both preserves and damps the basis states. Reading channel properties off \(J(\mathcal{E})\) is the device that lets the rest of the tutorial treat noisy evolutions and states on the same footing.

Exercise

The amplitude-damping channel has Kraus operators

\[ K_0 = \begin{pmatrix} 1 & 0 \\ 0 & \sqrt{1-\gamma} \end{pmatrix}, \qquad K_1 = \begin{pmatrix} 0 & \sqrt{\gamma} \\ 0 & 0 \end{pmatrix}, \]

where \(\gamma \in [0,1]\) is the damping probability.

(a) Construct the Choi matrix \(J(\mathcal{E}) = \sum_{j,k} \mathcal{E}(|j\rangle\langle k|) \otimes |j\rangle\langle k|\).

(b) Show the eigenvalues of \(J\) are \(\{2-\gamma,\, \gamma,\, 0,\, 0\}\). Verify \(J \geq 0\) for \(\gamma \in [0,1]\).

(c) Interpret the limiting cases \(\gamma = 0\) (identity) and \(\gamma = 1\) (reset to \(|0\rangle\)).

Solution

Prerequisite: Trace preservation

Before constructing the Choi matrix, we verify that the Kraus operators satisfy the trace-preservation condition \(\sum_\mu K_\mu^\dagger K_\mu = I\):

\[ K_0^\dagger K_0 = \begin{pmatrix} 1 & 0 \\ 0 & 1-\gamma \end{pmatrix}, \qquad K_1^\dagger K_1 = \begin{pmatrix} 0 & 0 \\ 0 & \gamma \end{pmatrix}. \]

\[ K_0^\dagger K_0 + K_1^\dagger K_1 = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = I. \quad \checkmark \]

Part (a): Constructing the Choi matrix

The Choi matrix lives on \(\mathbb{C}^2 \otimes \mathbb{C}^2\) and is constructed by applying the channel to one half of a maximally entangled state. Equivalently, we compute \(\mathcal{E}(|j\rangle\langle k|)\) for all basis elements and assemble:

\[ J = \sum_{j,k=0}^1 \mathcal{E}(|j\rangle\langle k|) \otimes |j\rangle\langle k|, \]

where \(\mathcal{E}(\rho) = K_0 \rho K_0^\dagger + K_1 \rho K_1^\dagger\).

Computing each block:

\[ \mathcal{E}(|0\rangle\langle 0|) = K_0|0\rangle\langle 0|K_0^\dagger + K_1|0\rangle\langle 0|K_1^\dagger = |0\rangle\langle 0| + 0 = |0\rangle\langle 0|. \]

\[ \mathcal{E}(|0\rangle\langle 1|) = \sqrt{1-\gamma}\,|0\rangle\langle 1|, \qquad \mathcal{E}(|1\rangle\langle 0|) = \sqrt{1-\gamma}\,|1\rangle\langle 0|. \]

\[ \mathcal{E}(|1\rangle\langle 1|) = (1-\gamma)|1\rangle\langle 1| + \gamma|0\rangle\langle 0|. \]

The last equation is the key: the \(K_1\) Kraus operator transfers population from \(|1\rangle\) to \(|0\rangle\) with probability \(\gamma\).

Assembling in the ordered basis \(\{|00\rangle, |01\rangle, |10\rangle, |11\rangle\}\):

\[ \boxed{J = \begin{pmatrix} 1 & 0 & 0 & \sqrt{1-\gamma} \\ 0 & \gamma & 0 & 0 \\ 0 & 0 & 0 & 0 \\ \sqrt{1-\gamma} & 0 & 0 & 1-\gamma \end{pmatrix}.} \]

Part (b): Eigenvalue analysis

The Choi matrix is block-diagonal with respect to the subspaces \(\{|00\rangle, |11\rangle\}\) and \(\{|01\rangle, |10\rangle\}\).

The \(|01\rangle\) entry is simply \(\gamma\), and the \(|10\rangle\) entry is \(0\). These contribute eigenvalues \(\gamma\) and \(0\).

The \(2 \times 2\) block in the \(\{|00\rangle, |11\rangle\}\) sector is

\[ B = \begin{pmatrix} 1 & \sqrt{1-\gamma} \\ \sqrt{1-\gamma} & 1-\gamma \end{pmatrix}. \]

Its trace and determinant:

\[ \mathrm{Tr}(B) = 2 - \gamma, \qquad \det(B) = 1 \cdot (1-\gamma) - (\sqrt{1-\gamma})^2 = 0. \]

Since \(\det(B) = 0\) and \(\mathrm{Tr}(B) = 2-\gamma\), the eigenvalues of \(B\) are \(\{2-\gamma, 0\}\).

Full spectrum:

\[ \boxed{\mathrm{spec}(J) = \{2-\gamma,\; \gamma,\; 0,\; 0\}.} \]

For \(\gamma \in [0,1]\): both \(2-\gamma \geq 1 > 0\) and \(\gamma \geq 0\), so \(J \geq 0\). This confirms complete positivity via the Choi theorem.

Part (c): Limiting cases

\(\gamma = 0\) (identity channel): Eigenvalues \(\{2, 0, 0, 0\}\), rank 1. The Choi matrix is \(J = 2|\Omega\rangle\langle\Omega|\) where \(|\Omega\rangle = (|00\rangle + |11\rangle)/\sqrt{2}\) is the maximally entangled state. A rank-1 Choi matrix is the hallmark of a unitary channel.

\(\gamma = 1\) (reset channel): Eigenvalues \(\{1, 1, 0, 0\}\), rank 2. The channel completely erases the input: \(\mathcal{E}(\rho) = |0\rangle\langle 0|\) for all \(\rho\). The two nonzero eigenvalues reflect the two Kraus operators needed.

The transition from rank 1 to rank 2 as \(\gamma\) increases from 0 reflects the onset of genuine decoherence, the channel can no longer be undone by a unitary.


Symbolic Verification (SymPy)

Code
import sympy as sp

g = sp.Symbol('gamma', real=True, positive=True)

# Kraus completeness: K₀†K₀ + K₁†K₁ = I
K0dK0 = sp.Matrix([[1, 0], [0, 1 - g]])
K1dK1 = sp.Matrix([[0, 0], [0, g]])
completeness = K0dK0 + K1dK1
print("K₀†K₀ + K₁†K₁ =", completeness.tolist())
assert completeness == sp.eye(2)
print("Trace preservation")
K₀†K₀ + K₁†K₁ = [[1, 0], [0, 1]]
Trace preservation
Code
# 2x2 block eigenvalues: trace = 2-γ, det = 0
tr_B = sp.simplify(1 + (1 - g))
det_B = sp.simplify(1*(1 - g) - sp.sqrt(1 - g)**2)
print(f"2×2 block: trace = {tr_B}, det = {det_B}")
assert det_B == 0
print(f"Eigenvalues of block: {{{tr_B}, 0}}")
print(f"Full spectrum: {{{tr_B}, γ, 0, 0}}")
2×2 block: trace = 2 - gamma, det = 0
Eigenvalues of block: {2 - gamma, 0}
Full spectrum: {2 - gamma, γ, 0, 0}

Numerical Verification (NumPy)

Code
import numpy as np

for gamma_val in [0.0, 0.1, 0.3, 0.5, 0.7, 1.0]:
    K0 = np.array([[1, 0], [0, np.sqrt(1 - gamma_val)]], dtype=complex)
    K1 = np.array([[0, np.sqrt(gamma_val)], [0, 0]], dtype=complex)

    J = np.zeros((4, 4), dtype=complex)
    for j in range(2):
        for k in range(2):
            jk = np.zeros((2, 2), dtype=complex)
            jk[j, k] = 1.0
            Ejk = K0 @ jk @ K0.conj().T + K1 @ jk @ K1.conj().T
            anc = np.zeros((2, 2), dtype=complex)
            anc[j, k] = 1.0
            J += np.kron(Ejk, anc)

    evals = sorted(np.linalg.eigvalsh(J))
    expected = sorted([0, 0, gamma_val, 2 - gamma_val])
    assert np.allclose(evals, expected, atol=1e-12)
    assert all(e >= -1e-12 for e in evals)

    print(f"γ={gamma_val:.1f}: eigenvalues = [{', '.join(f'{e:.4f}' for e in evals)}]")

print("\nAll eigenvalues ≥ 0 for γ ∈ [0,1]: complete positivity confirmed.")
γ=0.0: eigenvalues = [0.0000, 0.0000, 0.0000, 2.0000]
γ=0.1: eigenvalues = [-0.0000, 0.0000, 0.1000, 1.9000]
γ=0.3: eigenvalues = [0.0000, 0.0000, 0.3000, 1.7000]
γ=0.5: eigenvalues = [0.0000, 0.0000, 0.5000, 1.5000]
γ=0.7: eigenvalues = [0.0000, 0.0000, 0.7000, 1.3000]
γ=1.0: eigenvalues = [0.0000, 0.0000, 1.0000, 1.0000]

All eigenvalues ≥ 0 for γ ∈ [0,1]: complete positivity confirmed.
Code
# --- Visualization: amplitude damping pulls the Bloch ball toward |0> ---
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, 2, figsize=(9, 4))

# (a) x-z slice of the Bloch ball under amplitude damping:
#     r_x -> sqrt(1-g) r_x,   r_z -> (1-g) r_z + g   (non-unital: shifts up to |0>)
phi = np.linspace(0, 2 * np.pi, 200)
cx, cz = np.cos(phi), np.sin(phi)
for g, c in zip([0.0, 0.3, 0.6, 1.0], plt.cm.plasma(np.linspace(0.0, 0.8, 4))):
    ax[0].plot(np.sqrt(1 - g) * cx, (1 - g) * cz + g, color=c, label=rf"$\gamma={g:.1f}$")
ax[0].plot(0, 1, "k^", ms=7)  # |0>: the fixed point of the damping
ax[0].set_aspect("equal"); ax[0].set_xlim(-1.15, 1.15); ax[0].set_ylim(-1.15, 1.15)
ax[0].set_xlabel(r"$r_x$"); ax[0].set_ylabel(r"$r_z$")
ax[0].set_title(r"Bloch ball pulled toward $|0\rangle$")
ax[0].legend(fontsize=8, loc="lower left", framealpha=0.9)

# (b) Choi spectrum {2 - g, g, 0, 0}: rank rises 1 -> 2
g = np.linspace(0, 1, 100)
ax[1].plot(g, 2 - g, color="C0", lw=2, label=r"$2-\gamma$")
ax[1].plot(g, g, color="C3", lw=2, label=r"$\gamma$")
ax[1].plot(g, 0 * g, color="grey", lw=2, ls=":", label=r"$0$ (twice)")
ax[1].set_xlabel(r"damping $\gamma$"); ax[1].set_ylabel("Choi eigenvalues")
ax[1].set_title(r"rank $1\to2$ as damping sets in")
ax[1].set_xlim(0, 1); ax[1].legend(fontsize=9)

plt.tight_layout()
plt.show()


Takeaway

The Choi matrix of the amplitude-damping channel has spectrum \(\{2-\gamma,\, \gamma,\, 0,\, 0\}\), which stays non-negative for all \(\gamma \in [0,1]\), so the channel is completely positive. Its rank rises from one at \(\gamma = 0\) to two once damping sets in, marking the onset of irreversible decoherence.

References

  • Choi, Completely positive linear maps on complex matrices, Linear Algebra and its Applications (1975).
  • Jamiołkowski, Linear transformations which preserve trace and positive semidefiniteness of operators, Reports on Mathematical Physics (1972).
  • Nielsen and Chuang, Quantum Computation and Quantum Information, Cambridge University Press (2010).
  • Płodzień, Information Scrambling, Quantum Chaos, and Haar-Random States, lecture notes (2025). arXiv:2511.14397